Y29tbWl0IDgwYjgyN2MyYjc4MzI5YzY1MDNiMjcxZTQzZDllYjY5M2Q2NDQ3MTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gRmViIDIyIDIzOjQ1OjQwIDIwMDkgKzAxMDAKCiAgICBBUk06IHN5bmNocm9uaXplIG1hY2gtdHlwZXMuaCB3aXRoIGxpbnV4IHYyLjYuMjktcmM1LTMxNS1nNjgzZmRjNQoKICAgIFRoZSBmaWxlIHdhcyBnZW5lcmF0ZWQgZnJvbSBidWlsZGluZyB2ZXJzYXRpbGVfZGVmY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTQyMDlhYzEzZmY2MzFlMzZjOWE5ZGQ0MjZjNTljMmUyZjVkYWIwMApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVN1biBGZWIgMjIgMTQ6MjQ6MTEgMjAwOSArMDkwMAoKICAgIE1JUFM6IEZpeCBHQ0MtNC4yICdkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZScgd2FybmluZ3MKCiAgICBDb21waWxpbmcgZGJhdTF4MDAgYW5kIGd0aDIgYm9hcmRzIHdpdGggR0NDLTQuMiwgeW91IHdvdWxkIHNlZSBuZXcgd2FybmluZ3MKICAgIGxpa2UgdGhpczoKCiAgICBza3VyaWJheUB1YnVudHU6dS1ib290LmdpdCQgLi9NQUtFQUxMIGRiYXUxMDAwCiAgICBDb25maWd1cmluZyBmb3IgZGJhdTF4MDAgYm9hcmQuLi4KICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9zZW5kJzoKICAgIGF1MXgwMF9ldGguYzoxNTg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQogICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX3JlY3YnOgogICAgYXUxeDAwX2V0aC5jOjIxMTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfaW5pdCc6CiAgICBhdTF4MDBfZXRoLmM6MjUyOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9yZWN2JzoKICAgIGF1MXgwMF9ldGguYzoyMTE6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQogICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX2luaXQnOgogICAgYXUxeDAwX2V0aC5jOjI1Mjogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfc2VuZCc6CiAgICBhdTF4MDBfZXRoLmM6MTU4OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKCiAgICBXZSdyZSBwYXNzaW5nIGEgdm9sYXRpbGUgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdoaWNoIGlzIGV4cGVjdGluZyBhIG5vbi0KICAgIHZvbGF0aWxlIHBvaW50ZXIuICBUaGF0J3MgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzLCBzbyBnY2Mgd2FybnMgYWJvdXQgaXQuCiAgICBDb25maXJtZWQgd2l0aCBFTERLIDQuMiAoR0NDIDQuMi4yKSBhbmQgU291cmNleSBHKysgNC4yIChHQ0MgNC4yLjMpLgoKICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYSB2b2xhdGlsZSBhdHRyaWJ1dGUgdG8gdGhlIGFyZ3VtZW50IGluIHF1ZXN0aW9uLgogICAgVGhlIHZpcnRfdG9fcGh5cyBmdW5jdGlvbiBpbiBMaW51eCBrZXJuZWwgYWxzbyBkb2VzIHRoZSBzYW1lIHRoaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYWJhNDVjODViMjJmOGM1N2ZjMmZlZGJhOGU5NDhlMDZjMmUyZjViMwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTc6NTE6MjggMjAwOSArMDEwMAoKICAgIE9NQVAzOiBDbGVhbiB1cCBNTUMgY29kZQoKICAgIENsZWFuIHVwIE9NQVAzIE1NQyBjb2RlOgoKICAgICogQ29udmVydCByZWdpc3RlciBhY2Nlc3MgdG8gc3RydWN0ICYgcmVhZHgvd3JpdGV4IHN0eWxlCiAgICAqIFJlcGxhY2UgaGFyZGNvZGUgdmFsdWVzIGJ5IG1hY3JvcwogICAgKiBSZW1vdmUgbWFjcm8gZGVmaW5lZCB0d2ljZQoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgY2ZjZGY0YTliMzYxZDAxNWMwZGViYWM3M2ZiZjdjNTExZGY0YTkzNApBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgMTIgMTg6NTU6NDMgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBQYW5kb3JhOiBVcGRhdGUgcGluIG11eAoKICAgIENsb2NrIHBpbiBtdXN0IGhhdmUgaW5wdXQgZW5hYmxlZCBmb3IgTU1DMyB0byB3b3JrLgogICAgQWxzbyBlbmFibGUgcHVsbC11cHMgZm9yIGNtZC9kYXRhIGxpbmVzIHRvIGJlIGNvbnNpc3RlbnQKICAgIHdpdGggcmVtYWluaW5nIE1NQyBob3N0IHBpbiBzZXR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Cgpjb21taXQgNjUzMGE4YmY4YTAyNzRiOTQxOTE0MWU0YzJjNWEyMzVjY2U1MzgwZgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgMTIgMTg6NTU6NDIgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBBZGQgT01BUDMgYXV0byBkZXRlY3Rpb24KCiAgICBUaGlzIHBhdGNoIGFkZHMgT01BUDMgY3B1IHR5cGUgYXV0byBkZXRlY3Rpb24gYmFzZWQgb24gT01BUDMgcmVnaXN0ZXIKICAgIGFuZCByZW1vdmVzIGhhcmRjb2RlZCB2YWx1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IGY5NTZmZDAzMzhmNDk5MDc5M2ExMGY3Njc5MjliYTQ5NjM2NjUyNjEKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglUaHUgRmViIDEyIDE4OjU1OjQxIDIwMDkgKzAxMDAKCiAgICBPTUFQMzogQmVhZ2xlOiBBZGQgYm9hcmQgcmV2aXNpb24gZGV0ZWN0aW9uCgogICAgV2l0aCBCZWFnbGVCb2FyZCByZXZpc2lvbiBDIHNvbWUgSFcgY2hhbmdlcyBhcmUgaW50cm9kdWNlZCAoZS5nLiBQaW5NVVgpCiAgICB3aGljaCBtaWdodCBuZWVkIGRpZmZlcmVudCBzb2Z0d2FyZSBoYW5kbGluZy4gRm9yIHRoaXMsIEdQSU8gcGluIDE3MSAoR1BJTwogICAgbW9kdWxlIDYsIG9mZnNldCAxMSkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZm9yIGJvYXJkIHJldmlzaW9uLiBJZiB0aGlzIHBpbgogICAgaXMgbG93LCB3ZSBoYXZlIGEgcmV2IEMgYm9hcmQuIEVsc2UgaXQgbXVzdCBiZSBhIHJldmlzaW9uIEF4IG9yIEJ4IGJvYXJkLgoKICAgIFRvIGhhbmRsZSBib2FyZCBkaWZmZXJlbmNlcyB5b3UgY2FuIGNhbGwgZnVuY3Rpb24gYmVhZ2xlX2dldF9yZXZpc2lvbigpLgogICAgRS5nLjoKCiAgICBpZiAoYmVhZ2xlX2dldF9yZXZpc2lvbigpKSB7CgogICAgLyogZG8gc3BlY2lhbCByZXZpc2lvbiBDIHN0dWZmIGhlcmUgKi8KCiAgICB9CgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAyODhmM2NkOTEyOTE4Yjk3OTE5ZDEzYjZmN2ZiMTNmYmRkZjc0ZDY4CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MCAyMDA5ICswMTAwCgogICAgT01BUDM6IE92ZXJvOiBDbGVhbiB1cCBwaW4gbXV4IGFuZCBHUElPIGNvbmZpZ3VyYXRpb24KCiAgICAqIE1ha2UgT3Zlcm8gR1BJTzExNCBhbiBpbnB1dCBmb3IgdG91Y2hzY3JlZW4gUEVORE9XTgogICAgKiBNYWtlIE92ZXJvIEdQSU8xNDQtMTQ3IHJlYWRhYmxlCiAgICAqIE1ha2UgT3Zlcm8gRUhDSSBwaW5tdXggbWF0Y2ggYmVhZ2xlIHJldiBjIHNldHVwCiAgICAqIEFkanVzdCBwaW5tdXggZm9yIFNNU0M5MTFYIG5ldHdvcmsgY2hpcCBzdXBwb3J0CiAgICAqIFJlbW92ZSB1bm5lY2Vzc2FyeSBHUElPIHNldHVwCiAgICAqIEZpeCBtZXJnZSBlcnJvciBpbiBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCAyNTc5MDE5YjgyNDhlNWYxNjZlNjBlMzcwNjU3NjZlZmM4YTQ5ZGJjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAyMiAxNzowODo0MSAyMDA5ICswMTAwCgogICAgbm1kazg4MTU6IGZpeCBvbmVuYW5kIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDAxNzZjMDNhMjQ2OTY3NmRmNWJmMTljZjkzYTFhNmY1ODJmNmExMjAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDIyIDE3OjU2OjUwIDIwMDkgKzAxMDAKCiAgICBub21hZGlrL25hbmQ6IGZpeCAnZWNjNTEyJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTc1MWE0NTZmNzAyYmEyZmNkZmQxYmRiYzAxMzg5MjdlZjAwNzg1OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMjIgMTc6NDk6NDMgMjAwOSArMDEwMAoKICAgIGRhdmluY2k6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZGF2aW5jaV9lcnJhdGFfd29ya2Fyb3VuZHMnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZjU3Mjg5ODdmNGY5Zjc4NDU2ODg0ODJhYTJiN2YyMTI3NzY4MTY1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAyMiAxNTo0OToyOCAyMDA5ICswMTAwCgogICAgYXJtOiBhZGQgdWFydCBkY2Mgc3VwcG9ydAoKICAgIFNlcmlhbCBkcml2ZXIgdmlhIHRoZSBFbWJlZGRlZElDRSBtYWNyb2NlbGwncyBEQ0MgY2hhbm5lbCB1c2luZwogICAgY28tcHJvY2Vzc29yIDE0LgoKICAgIEl0IGRvZXMgaW5jbHVkZSBhIHRpbWVvdXQgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBkb2VzIG5vdAogICAgdG90YWxseSBmcmVlemUgd2hlbiB0aGVyZSBpcyBub3RoaW5nIGNvbm5lY3RlZCB0byByZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGNkMThmYTk4MmY5YThjMWE5MGNlOTcxMzc5YTdkNjQwODk3NmQ0OApBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglGcmkgTm92IDIxIDE0OjM1OjU2IDIwMDggLTA1MDAKCiAgICBBUk0gRGFWaW5jaTogQWRkIGNvbW1vbiBwZXJpcGhlcmFscyBhbmQgbW9kdWxlcyBlbmFibGUgZnVuY3Rpb25zLgoKICAgIFRha2VuIGFsbCB0aGUgZHVwbGljYXRlZCBjb2RlIGZvciBlbmFibGluZyBjb21tb24gbW9kdWxlcyBhbmQgYXBwbHkKICAgIHNvZnR3YXJlIHdvcmthcm91bmRzIGZyb20gdGhlIGJvYXJkIHNwZWNpZmljIGNvZGUgaW50byBjb21tb24KICAgIGZ1bmN0aW9ucy4gQWxzbyBhZGRlZCBjb21tZW50cyBleHBsYWluaW5nIHRoZSB3b3JrYXJvdW5kcwogICAgKGZyb20gVEkgZXJyYXRhIGRvY3VtZW50cykgYW5kIHJlcGxhY2VkIHNvbWUgbnVtZXJpY2FsIGJpdCBudW1iZXJzCiAgICB3aXRoIG1vcmUgbWVhbmluZ2Z1bCBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IGQzYmUxYmNhZTdhODIwN2UwYTc5ZmZkMDM1ZDBlOTBmODAzNzgyOTUKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gRmViIDkgMTU6NTM6MzMgMjAwOSArMDEwMAoKICAgIEVuYWJsZSBFdGhlcm5ldCBmb3IgTm9tYWRpayA4ODE1IEV2YWx1YXRpb24gS2l0CgogICAgVGhpcyB0cml2aWFsbHkgZW5hYmxlcyBFdGhlcm5ldCBzdXBwb3J0IGluIHRoZSBkZWJ1ZyBib2FyZAogICAgYnkgc2V0dGluZyB1cCB0aGUgcHJvcGVyIGNoaXAgc2VsZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgoKY29tbWl0IDBkOGM2ZWFiMjQ4MTA0NmU5NDQ2MjY0YmZlOTQwMmJiOThkZGY0MzMKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gRmViIDkgMTU6NTM6MzEgMjAwOSArMDEwMAoKICAgIE5hbmQgZHJpdmVyIGZvciBOb21hZGlrIFNvQwoKICAgIFRoaXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIEVDQyBhbGdvcml0aG0gZGVzY3JpYmVkIGluCiAgICB0aGUgQ1BVIGRhdGEgc2hlZXQgYW5kIHVzZXMgdGhlIE9PQiBsYXlvdXQgY2hvc2VuIGluCiAgICBhbHJlYWR5LXJlbGVhc2VkIGRldmVsb3BtZW50IHN5c3RlbXMgKHNoaXBwZWQgd2l0aCBhIGN1c3RvbS1tYWRlCiAgICB1LWJvb3QgMS4zLjEpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgoKY29tbWl0IGVmMzM5Y2MyYjY4ZTRjYmVmM2Y5Mzc2YTQ1MzE1ZTFiOTc0YmJkOGQKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglNb24gRmViIDkgMTU6NTM6MzEgMjAwOSArMDEwMAoKICAgIEFkZGVkIG5vbWFkaWsuaCBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0bndpcmVsZXNzLmNvbT4KCmNvbW1pdCA2MGVjZTZkODA0M2QxZGQ4MGY1ZGQzMmM1NDEyMTM3MTZkNjI0YjE5CkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgT2N0IDI5IDIwOjA1OjE4IDIwMDggKzA5MDAKCiAgICByOGE2NjU5Ny1oY2Q6IGZpeCBjYW5ub3QgdXNlIGV4dGVybmFsIGh1YgoKICAgIEZpeCB0aGUgcHJvYmxlbSB0aGF0IGNhbm5vdCB1c2UgZXh0ZXJuYWwgaHViLCBiZWNhdXNlIHRoaXMgZHJpdmVyCiAgICBkaWQgbm90IGNvbnRyb2wgY29ycmVjdGx5IGEgREVWQUREeCByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBlMWZmYWVlNzI4MTkwZTc2YTQ1OTZhMzU3OWQ5NGU3MzAxNDM1ODVmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgRmViIDE5IDAxOjIwOjI3IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogZGlzYWJsZSBzeXNjb250cm9sIGNvZGUgZm9yIG5vdwoKICAgIExvb2tzIGxpa2UgdGhlIGluaXRjb2RlIHVwZGF0ZXMgZmVsbCBvdXQgb2Ygb3JkZXIgZHVyaW5nIG15IG1lcmdlcy4gIFRoZQogICAgcGF0Y2ggdGhhdCByZWFsbHkgZml4ZXMgdXAgdGhpcyBjb2RlIGlzIHBhcnQgb2YgcG93ZXItb24gb3ZlcmhhdWwgYW5kIHNvCiAgICBpcyB0b28gbGFyZ2UgZm9yIG1lcmdpbmcgYXQgdGhpcyBwb2ludC4gIEluc3RlYWQsIHdlIGNhbiBkaXNhYmxlIHRoZSBjb2RlCiAgICBhcyBubyBjdXJyZW50bHkgaW4tdHJlZSBib2FyZCBkZXBlbmRzIG9uIGl0LiAgVGhlIG5leHQgbWVyZ2Ugd2luZG93IHdpbGwKICAgIGZpeCB0aGluZ3MgdXAgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDFiMjI4ZDY4ZjU0ODMyZWRkODY3ZWY5ODUyMGY3NjBmNjgxOTJhYjcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgMTkgMDE6MTk6NDkgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogZml4IEkyQyBib2FyZCBkZWZpbmVzCgogICAgVGhlIHByZXZpb3VzIG1lcmdlIGZvciBjbGVhbmluZyB1cCB0aGUgSTJDIGRyaXZlciBpbmNvcnJlY3RseSByZXZlcnRlZCB0aGUKICAgIENGR194eHggcmVuYW1lIGZvciBzb21lIG9mIHRoZSBJMkMgZGVmaW5lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAwOWZlZThlODY3N2E2MjY1ZTg5MTQ0Y2NjMTYzYmYwMGUzMjE3NjllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEZlYiAyMiAwMToxOTo1MiAyMDA5ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFkY2I1MGFmYmI2M2E0MzkzMjBhOTg1MzgwYTBhZjJkY2EwNzlkMWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gRmViIDIyIDAxOjE3OjQ3IDIwMDkgKzAxMDAKCiAgICBNYWtlZmlsZTogZml4IGNsZWFudXAKCiAgICBDb21taXQgZTQ5NDNlYzUgbW92ZWQgdGhlIEFSTSBib2FyZHMgdG8gYSB2ZW5kb3IgZGlyZWN0b3J5IGJ1dCBmb3Jnb3QKICAgIHRvIGFkYXB0IHRoZSBjbGVhbnVwIHJ1bGVzIGluIHRoZSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZWRmZjdiY2M0ZDU1NDBkZjhiNDE2Mjc0NjUyZmYwMmU5NGMzOGI5ZQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMTM6MDE6NTYgMjAwOSAtMDUwMAoKICAgIENsZWFudXAgdGhlIGNvbW1lbnQgZm9yIG02OGsgbGludXggYm9vdCBhcmd1bWVudCBwYXNzaW5nLgoKICAgIFRoaXMgcGF0Y2ggY2xhcmlmaWVzIHRoZSB3YXkgbTY4ayBwYXNzZXMgbGludXggYm9vdCBhcmd1bWVudC4KICAgIFRoZSBvbmUgZ290Y2hhIGhlcmUgaXMgdGhhdCB0aGUgYXNzZW1ibHkgaW5zdHJ1Y3Rpb24gdGhhdAogICAgdGhlIGNvbXBpbGVyIHVzZXMgdG8ganVtcCB0byB0aGUga2VybmVsIGlzICdqc3InIHdoaWNoIHB1c2hlcyB0aGUKICAgIHByb2dyYW0gY291bnRlciBmb3IgdGhlIGluc3RydWN0aW9uIGFmdGVyIHRoZSBqc3IgaW50byB0aGUgc3RhY2sgcG9pbnRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZDQxNjUwZWVjOTU5NjY4MjgwYTYxMjQ2N2JkOTVjN2I4Mzk4NTEzCkF1dGhvcjogUGV0ZXIgR3JpZmZpbiA8cGdyaWZmaW5AbXBjLWRhdGEuY28udWs+CkRhdGU6CVR1ZSBGZWIgMTAgMTY6NDQ6NDUgMjAwOSArMDAwMAoKICAgIHNoOiBGaXggcnNrNzIwMyBpbiB0cmVlIGJ1aWxkCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgR3JpZmZpbiA8cGdyaWZmaW5AbXBjLWRhdGEuY28udWs+Cgpjb21taXQgZmNhMGNlY2ZmNzNkYjk5ZDk5YWQwOTRjY2E3OTgwNDcyYjhhMTFiNQpBdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIEZlYiAxOCAwOTowNTo1MiAyMDA5ICswOTAwCgogICAgYm9vdG06IFJlZHVjZSB0aGUgdW5uZWNlc3NhcnkgbWVtbW92ZQoKICAgIEFsdGhvdWdoIGxvYWQgYWRkcmVzcyBhbmQgaW1hZ2Ugc3RhcnQgYWRkcmVzcyBhcmUgc2FtZSBhZGRyZXNzLAogICAgYm9vdG0gY29tbWFuZCBhbHdheXMgZG9lcyBtZW1tb3ZlLgogICAgVGhhdCBpcyB1bm5lY2Vzc2FyeSBtZW1tb3ZlIGFuZCBjYW4gYmUgdGFrZW4gZmV3IG1pbGxpc2Vjb25kcwogICAgKGFib3V0IDUwMCBtc2VjIHRvIDEwMDAgbXNlYykuCiAgICBJZiBza2lwIHRoaXMgbWVtbW92ZSwgd2UgY2FuIHJlZHVjZSB0aGUgYm9vdCB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA2NzBjYmRlOGRhODM2OTBmZWQxMDY0YzMzNThmNTRhZTFkNjkzZWQyCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJU3VuIEZlYiAxNSAyMjoyOToxNSAyMDA5ICswMTAwCgogICAgZnBnYTogRml4IFNwYXJ0YW4gSUlJIEZQR0EgYm9vdGluZwoKICAgIFRoaXMgcGF0Y2ggZG9lcyBzb21lIG1pbm9yIGZpeGluZyBvZiB0aGUgWGlsaW54IFNwYXJ0YW4gSUlJCiAgICBGUEdBIGJvb3QgY29kZToKCiAgICAtIEZpeGVkIGNhbGwgb3JkZXIgb2YgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGFuZAogICAgICBzdWNjZXNzIG1lc3NhZ2UgcHJpbnRpbmcgKHJlc3VsdCBvZiBjb3B5LXBhc3RlPykKICAgIC0gcmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQKICAgIC0gbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAzODE4YjY3NzY0MTAzOGQyN2IyNjYzZmJkNjc3MWFkMzhjOTMyZjg2CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJU3VuIEZlYiAxNSAyMjoyODozNiAyMDA5ICswMTAwCgogICAgZnBnYTogRml4IFNwYXJ0YW4gSUkgRlBHQSBib290aW5nCgogICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgbWlub3IgZml4aW5nIG9mIHRoZSBYaWxpbnggU3BhcnRhbiBJSQogICAgRlBHQSBib290IGNvZGU6CgogICAgLSBGaXhlZCBjYWxsIG9yZGVyIG9mIHBvc3QgY29uZmlndXJhdGlvbiBjYWxsYmFjayBhbmQKICAgICAgc3VjY2VzcyBtZXNzYWdlIHByaW50aW5nIChyZXN1bHQgb2YgY29weS1wYXN0ZT8pCiAgICAtIHJlbG9jYXRlIHBvc3QgY29uZmlndXJhdGlvbiBjYWxsYmFjayBvbmx5IHdoZW4gaXQKICAgICAgaXMgaW1wbGVtZW50ZWQKICAgIC0gcmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQKICAgIC0gbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBiNDc0NmQ4YmY5ZjRlZDZkYzhhNzZjNWQ1MmRiNjY5NjA0YWZmODRiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDIwOjI2OjUyIDIwMDkgLTA1MDAKCiAgICBkcml2ZXJzL3NlcmlhbC9uczE2NTUwOiBtb3ZlIGlmZGVmIGludG8gTWFrZWZpbGUgQ09CSlMtJCguLi4pCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDZiY2I0YjgwNmNlZjhhNWRkMDhmYWM5YTRhNjcyYjk2ZDllZTgwNGUKQXV0aG9yOiBEZXJlayBPdSA8ZG91QHNpY29uaXguY29tPgpEYXRlOglUdWUgRmViIDMgMTY6MDA6MDcgMjAwOSAtMDcwMAoKICAgIGxjZF9wdXRjIGJ1ZyBmaXggZm9yIHRhYi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXJlayBPdSA8ZG91QHNpY29uaXguY29tPgoKY29tbWl0IDM1YzllMTRkODA5NmU1MTlmZTc2Yzk1M2E0M2Q1MmEwOTYxNzM0NWMKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CU1vbiBGZWIgMiAwOTo0NjoyMSAyMDA5ICswOTAwCgogICAgTUlQUzogY3B1L21pcHMvTWFrZWZpbGU6IEFkZCBhIG1pc3NpbmcgU1RBUlQgbGluZQoKICAgIEluIHRoZSBjb21taXQgNzliNTFmZjgyMDVmMDM1NGQ1MzAwNTcwNjE0YzFkMmRiNDk5Njc5YyAoW01JUFNdIGNwdS9taXBzLwogICAgTWFrZWZpbGU6IFNwbGl0IFtDU11PQkpTIG9udG8gc2VwYXJhdGUgbGluZXMpLCBJIHdyb25nbHkgZGVsZXRlZCBhIFNUQVJUCiAgICBsaW5lLiAgVGhpcyBwYXRjaCBwdXRzIGl0IGJhY2suCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDlhNjNiN2Y0ZjhmM2M5OWNmMDE3ZTBkM2Q0YTE1MmRmY2Q5MTNiNWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgRmViIDIxIDIxOjUxOjIxIDIwMDkgKzAxMDAKCiAgICBFbmFibGUgZXh0MiBzdXBwb3J0IGZvciBUUU04eHhML00gYmFzZWQgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlM2JhN2YxMzdjN2M0NTRhZDYyNmNkMGJkMmU4NGQ3M2M3YTg2NDRmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgRmViIDIwIDAzOjQ3OjUwIDIwMDkgKzAxMDAKCiAgICBBUk06UFhBIFVzZSBuZXcgZGVmaW5pdGlvbnMgaW4gbW1jLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY4MmJlZWFjMzRkYzlhYjE4ZmFiNThiMjY5NzNkMmUyOWQxMTM3MTcKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgMjAgMDM6NDc6NTAgMjAwOSArMDEwMAoKICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgUFhBJ3MgbW1jX3JlYWQvbW1jX3dyaXRlL21tY19icmVhZCBmdW5jdGlvbnMKCiAgICBUaGVzZSBuYW1lcyBhcmUgYmVpbmcgdGFrZW4gb3ZlciBieSB0aGUgbmV3IE1NQyBmcmFtZXdvcmsuCUhvcGVmdWx5CiAgICB0aGUgUFhBIGNhbiBiZSBlYXNpbHkgcG9ydGVkLCBhbmQgdGhlc2UgZnVuY3Rpb25zIHdpbGwgZ28gYXdheSBlbnRpcmVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGIwM2Q5MmU1NTg0OTM1ODg2ZmY5MWQ1YWEwNzU1ZGM4ODg4YjcxODcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgRmViIDIwIDAzOjQ3OjUwIDIwMDkgKzAxMDAKCiAgICBweGE6IG1vdmUgbW1jIGRyaXZlcnMgdG8gZHJpdmVycy9tbWMKCiAgICBpbnRyb2R1Y2UgbmV3IG1hY3JvIENPTkZJR19QWEFfTU1DIHRvIGFjdGl2YXRlIGl0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5NDkwZjQ2NTY0MmM4MGMwNTQ4NTQ2ODlhMmVmMWE3N2Q2NWNmMWYzCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRmViIDE5IDE5OjI3OjIyIDIwMDkgLTA2MDAKCiAgICBBUk06UFhBIFJlbW92ZSByZWRlZmluaXRpb24gb2YgbW1jX2NpZCBhbmQgbW1jX2NzZC4KCiAgICBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb21tb24gbW1jLmgKCiAgICBUaGlzIHdhcyBjb21waWxlIGNoZWNrZWQgb24gY2VyZjI1MC4KCmNvbW1pdCA5NGEzMzEyOTIwYjZmOWI1ZGEyNzMwOTU0OWZiNzM2NTA3MThjMTBhCkF1dGhvcjogTWljaGEgS2FsZm9uIDxzbWljaGFrLnV2QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxOTo1MDoxMSAyMDA5ICswMjAwCgogICAgcHhhOiBmaXhpbmcgZ2V0X3RpbWVyIHRvIHJldHVybiB0aW1lIGluIG1pbGlzZWNvbmRzLgoKICAgIEZpeGluZyB0aGUgZ2V0X3RpbWVyIGZ1bmN0aW9uIHRvIHJldHVybiB0aW1lIGluIG1pbGlzZWNvbmRzIGluc3RlYWQgb2YKICAgIHRpY2tzLiBBbHNvIGZpeGVkIFBYQSBib2FyZHMgdG8gdXNlIHRoZSBjb252ZW50aW9uYWwgdmFsdWUgb2YgMTAwMCBmb3IKICAgIENPTkZJR19TWVNfSFouCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGEgS2FsZm9uIDxzbWljaGFrLnV2QGdtYWlsLmNvbT4KCmNvbW1pdCBlNWU4OGMzNjE0Yjc5YjU0NzE5OTA1ZjY2YWVmYjUxZjk0OTRiYzFmCkF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRmViIDE5IDE2OjQ1OjQzIDIwMDkgLTA2MDAKCiAgICBBUk06T01BUDMgQ2hhbmdlIG1tY19pbml0IHRvIG1tY19sZWdhY3lfaW5pdAoKICAgIG9tYXAzX21tYy5jIHdhcyBjaGFuZ2VkIHRvIGRlZmluZSBtbWNfbGVnYWN5X2luaXQuCiAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KCiAgICBDb21waWxlIHRlc3RlZCBvbiBhbGwgYXJtCiAgICBSdW50aW1lIHRlc3RlZCBvbiBab29tMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Cgpjb21taXQgOWU4MGJiMjE2Mjk5ODgwNjM1NzRmODhjYTBkMjhiYWFkZmY0ZDk2MwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRmViIDE5IDE3OjIzOjU4IDIwMDkgKzAxMDAKCiAgICA4Mnh4LCBtZ2NvZ2U6IHVwZGF0ZXMgZm9yIDIwMDkuMDMKCiAgICAtIGFjdGl2YXRlIENTNCBmb3IgYWNjZXNzaW5nIHRoZSBGUEdBCiAgICAtIGFjdGl2YXRlIFJ4IGJ1ZiBsZW4gPiAxIG9uIFNNQwogICAgLSBwcmFtIGFjdGl2YXRlZAogICAgLSBNVERQQVJUU19ERUZBVUxUIGRlZmluZWQKICAgIC0gdXBkYXRlIHRoZSBzaXplIG9mIHRoZSBmbGFzaGVzIGluIHRoZSBEVFMKICAgICAgYmVmb3JlIGJvb3RpbmcgTGludXgKICAgIC0gTU9OSVRPUl9MRU4gdXBkYXRlZCB0byAzODRrCiAgICAtIGFkZGVkIENPTkZJR19IT1NUTkFNRQogICAgLSBhZGRlZCBDT05GSUdfRU5WX0JVRkZFUl9QUklOVAogICAgLSBFbnZpcm9ubWVudCBzaXplIHJlZHVjZWQgdG8gMTZrCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgZGY5MDk1NTRlMjQwMWYzMDc5MjVlMWJkNDVkNTc2ZTQxNzZkOWRlOQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRmViIDE5IDE3OjI0OjAxIDIwMDkgKzAxMDAKCiAgICA4eHgsIG1nc3V2ZDogdXBkYXRlcyBmb3IgMjAwOS4wMwoKICAgIC0gYWN0aXZhdGUgUnggYnVmIGxlbiA+IDEgb24gU01DCiAgICAtIHByYW0gYWN0aXZhdGVkCiAgICAtIE1URFBBUlRTX0RFRkFVTFQgZGVmaW5lZAogICAgLSB1cGRhdGUgdGhlIHNpemUgb2YgdGhlIGZsYXNoIGluIHRoZSBEVFMKICAgICAgYmVmb3JlIGJvb3RpbmcgTGludXgKICAgIC0gTU9OSVRPUl9MRU4gdXBkYXRlZCB0byAzODRrCiAgICAtIGFkZGVkIENPTkZJR19IT1NUTkFNRQogICAgLSBhZGRlZCBDT05GSUdfRU5WX0JVRkZFUl9QUklOVAogICAgLSBFbnZpcm9ubWVudCBzaXplIHJlZHVjZWQgdG8gMTZrCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMzUxMWI0ZTIwOGUxMmJlODViNTMyODY2ZjFjNjYwYWEyZTAyMTU1NwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBGZWIgMTggMTk6NTk6MzkgMjAwOSArMDEwMAoKICAgIE1NQzogRG9uJ3QgdXNlIG5ldyBmcmFtZXdvcmsgY29kZSBpZiBub3QgZW5hYmxlZAoKICAgIERvbid0IHVzZSBjb2RlIG9mIG5ldyBNTUMgZnJhbWV3b3JrIGluIGNtZF9tbWMgaWYgQ09ORklHX0dFTkVSSUNfTU1DCiAgICBpc24ndCBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMzI0ODJiZTY3Nzc1ZTAwYjRjYmM0OWZiYTYyMzQ3YzFlY2M2MjI5YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTkgMTM6NTM6MjkgMjAwOSArMDEwMAoKICAgIFRRTTh4eEw6IG1ha2Ugc29tZSByb29tIGluIGxvdyBtZW1vcnkgZm9yIGZ1dHVyZSBuZWVkcwoKICAgIFRIZSBUUU04eHhMIHVzZSBhIGFobmQtb3B0aW1pemVkIGxpbmtlciBzY3JpcHQgdG8gZWZmaWNpZW50bHkgdXNlIHRoZQogICAgc21hbGwgYm9vdCBzZWN0b3JzIGluIHRoZSBmbGFzaC4gVGhpcyBwYXRjaCBtYWtlcyBzb21lIHJvb20gaW4gdGhlCiAgICBmaXJzdCBzZWN0b3IgdG8gcHJlcGFyZSBmb3IgYSBzaXplIGluY3JlYXNlIG9mIGxpYl9nZW5lcmljL3ZzcHJpbnRmLm8KICAgIGJ5IGEgZnV0dXJlIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYzE1N2NlYzNjM2Y2ZGZjMTk0NTMyYjNhM2NhODdmODViNjQyOTYyYQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTggMTg6MDY6MTggMjAwOSAtMDYwMAoKICAgIFJFQURNRTogcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeQoKICAgIGl0J3MgYmVlbiBhcm91bmQgc2luY2UgdGhlIG9yaWdpbmFsIGNvbW1pdCAoMmFkNmI1MTMpIHRoYXQgYWRkZWQgdHdvCiAgICBpZGVudGljYWwgZW50cmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFiYmEzMGVmZTE3MTdiZWExMzAyNmUxNWM3YzdkOTA2NDE5ZmFjNjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDE5IDAwOjQxOjA4IDIwMDkgKzAxMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzY5ZDBhYTk2NzRiNjVjODNmODU1M2I5YmNmOWQyMDdkYzM2OTIyMwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTggMTc6NDM6NTkgMjAwOSAtMDYwMAoKICAgIHNhdGFfc2lsMzExNDogZml4IGNvbXBpbGVyIHdhcm5pbmcKCiAgICBqdWRnaW5nIGZyb20gb3RoZXIgcHJpbnRmcyBpbiB0aGUgc2FtZSBmaWxlLCBpdCBzZWVtcyBhdGEgc2hvdWxkIGJlCiAgICBwb3N0cGVuZGVkIHdpdGggdGhlIGludGVyZmFjZSBudW1iZXIsIG5vdCB0aGUgYWRkcmVzcyBvZiB0aGUgZ2xvYmFsCiAgICBwb3J0IHZhcmlhYmxlLiAgRml4ZXMgdGhpcyBmb3IgY3VycmVudCB1LWJvb3QtbXBjODN4eCB0cmVlOgoKICAgIENvbmZpZ3VyaW5nIGZvciBNUEM4MzQ5SVRYIGJvYXJkLi4uCiAgICBzYXRhX3NpbDMxMTQuYzogSW4gZnVuY3Rpb24gJ3NhdGFfYnVzX3NvZnRyZXNldCc6CiAgICBzYXRhX3NpbDMxMTQuYzo5OTogd2FybmluZzogZm9ybWF0ICcldScgZXhwZWN0cyB0eXBlICd1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSAnc3RydWN0IHNhdGFfcG9ydCAqJwogICAgc2F0YV9zaWwzMTE0LmM6MTA4OiB3YXJuaW5nOiBmb3JtYXQgJyV1JyBleHBlY3RzIHR5cGUgJ3Vuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAyIGhhcyB0eXBlICdzdHJ1Y3Qgc2F0YV9wb3J0IConCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNTY3NWFhNWNlZWVmMzA3NDA5NzBhYjhjYTBjOGNiYzMyNDk0NWNkCkF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgpEYXRlOglXZWQgRmViIDE4IDE0OjMwOjQ0IDIwMDkgLTA4MDAKCiAgICBDcmVhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHJlc3RyaWN0ZWQgbnMxNjU1MCBmdW5jdGlvbnMKCiAgICBUaGlzIHBhdGNoIHdpbGwgY3JlYXRlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIGEgbWluaW11bSBjb25maWd1cmF0aW9uIGZvcgogICAgdGhlIG5zMTY1NTAgc2VyaWFsIGRyaXZlciBhdCBkcml2ZXJzL3NlcmlhbC9uczE2NTUwLmMgYW5kIHdpbGwgYXBwbHkgdGhpcyBuZXcKICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHRoZSBTSU1QQzgzMTMuaCBjb25maWcgZmlsZSBpbiBvcmRlciB0byBmaXggdGhlIE5BTkQKICAgIGJvb3RzdHJhcCBidWlsZCBlcnJvci4gIFRoaXMgb3B0aW9uIHdpbGwgZXhjbHVkZSBhbGwgZnVuY3Rpb25zIHdpdGggZXhjZXB0aW9uIG9mCiAgICBOUzE2NTUwX3B1dGMgYW5kIE5TMTY1NTBfaW5pdC4gIFRoaXMgd2lsbCBiZSB1c2VkIHByaW1hcmlseSB0byBzYXZlIHNwYWNlIGFuZAogICAgcmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gYnVpbGRzIGluIHdoaWNoIHNwYWNlIGlzIGxpbWl0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgoKY29tbWl0IDdiMGJjMDIxOWRiODk4MTYxMzI1OTQ3M2NmMTk2OTlhYzI1OWI0ZmIKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDE4IDE2OjE0OjI5IDIwMDkgLTA2MDAKCiAgICBta2NvbmZpZzogaW5jbHVkZSBib2FyZCBjb25maWcuaCBiZWZvcmUgYXNtL2NvbmZpZy5oCgogICAgc3dhcHBpbmcgdGhlIGluY2x1ZGUgb3JkZXIgc3VwcHJlc3NlcyB3YXJuaW5ncyBmb3IgYm9hcmQgY29uZmlncwogICAgdGhhdCBkZWZpbmUgdGhlaXIgb3duIENPTkZJR19NQVhfTUVNX01BUFBFRDoKCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9jb25maWcuaDo1LAoJCSAgICBmcm9tIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29tbW9uLmg6MzUsCgkJICAgIGZyb20gc2ltcGM4MzEzLmM6MjY6CiAgICAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2NvbmZpZ3MvU0lNUEM4MzEzLmg6ODE6MTogd2FybmluZzoKICAgICJDT05GSUdfTUFYX01FTV9NQVBQRUQiIHJlZGVmaW5lZAogICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29uZmlnLmg6NCwKCQkgICAgZnJvbSAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2NvbW1vbi5oOjM1LAoJCSAgICBmcm9tIHNpbXBjODMxMy5jOjI2OgogICAgL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9hc20vY29uZmlnLmg6Mjg6MTogd2FybmluZzogdGhpcyBpcwogICAgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiODg0NWFiZGMwZGNmMjBkMDk0NGU5NjUxNTNmNWFlN2E5YzMwNzdjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxOCAyMTozNTozOCAyMDA5ICswMTAwCgogICAgRml4IGJ1aWxkIGVycm9ycyBhZnRlciBtYWtpbmcgZmxhc2hfZ2V0X2luZm8oKSBub24tc3RhdGljCgogICAgRml4IGZvciB0aGVzZSBidWlsZCBwcm9ibGVtczoKICAgIGVycm9yOiBzdGF0aWMgZGVjbGFyYXRpb24gb2YgJ2ZsYXNoX2dldF9pbmZvJyBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGI0OTk2ZDZiMjE0MGU1ZGE3ZjFjMzQ2ZjM3YTY3YjE5OTA3YjMwN2EKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMTggMTM6MTg6MDAgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogUENJZTogQ2hhbmdlIDE2R0IgaW5ib3VuZCBtZW1vcnkgdG8gNEdCCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gcmVjZW50bHkgc2VlbiBvbiBzb21lIDR4eCBwbGF0Zm9ybXMuIEZvcgogICAgZXhhbXBsZSBvbiBLaWxhdWVhIFBDSWUgc2xvdCAjMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjUwZmU0YmQ2MTNjNmQzNWEyYzM0MDU1ZjAyZTk1MDFkZDZhOWFkNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxOCAxNDowNTozNyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBTb21lIG1vcmUgUE1DNDA1IGNvZGluZy1zdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJmNmViOTE3MGJmOTFiNzJlYTUxZGNlYTJhOGI5YzExYjBlMjBiYzUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgpEYXRlOglTdW4gRmViIDE1IDIyOjI3OjQ3IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBQTUM0MDUgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhlIGdvb2Qgb2xkIFBNQzQwNSBib2FyZCBzdXBwb3J0IGZvcgogICAgdXBjb21pbmcgUE1DNDA1VjIgcGF0Y2hlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNTUzYjVmNGEwYzc3ZmM3NmUxZDI1ZTcxYzhhYWE0NzY1N2UyZDZmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KRGF0ZToJU3VuIEZlYiAxNSAyMjoyNjo1NCAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDbGVhbnVwIFBNQzQwNSBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBmaXhlcyBjb2Rpbmcgc3R5bGUgZm9yIFBNQzQwNSBib2FyZCBzdXBwb3J0LgogICAgQWxzbyBzb21lIHVubmVlZGVkIGZlYXR1cmVzL2NvZGUgaXMgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNGU4NWQwZjM3YjViOTI0ZmJmODM0ODY3YWQ2ZDBiMzFiODZmNjY3CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBGZWIgNSAwNDowODoyMCAyMDA5ICswMTAwCgogICAgcW9uZzogY2hhbmdlcyB0byBEYXZlL0RFTlggUW9uZyBjb25maWd1cmF0aW9uCgogICAgMS4gQ2hhbmdlcyB0byB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudDoKICAgICAgLSAiYm9vdGNtZCIgZGVmaW5lZCBhcyAicnVuIGZsYXNoX3NlbGYiCiAgICAgIC0gInNhdmVlbnYiIGNvbW1hbmQgcmVtb3ZlZCBmcm9tICJ1cGRhdGUiCiAgICAgIC0gInVib290IiBjaGFuZ2VkIHRvICJ1LWJvb3QiIChhbHNvIGluICJsb2FkIikKICAgICAgLSAiYWRkbXRkIiB2YXJpYWJsZSBkZWZpbmVkIChhbmQgYWRkZWQgdG8gYWxsIGJvb3QgY29tbWFuZHMpCiAgICAyLiBDT05GSUdfQ01EX0pGRlMyIGRlZmluZWQgdG8gZW5hYmxlICJtdGRwYXJ0cyIgY29tbWFuZAogICAgMy4gTVRESURTX0RFRkFVTFQgYW5kIE1URFBBUlRTX0RFRkFVTFQgZGVmaW5lZAogICAgNC4gQ09ORklHX1NZU19DQlNJWkUgY2hhbmdlZCBmcm9tIDI1NiB0byA1MTIuIFRoYXQgc29sdmVzIHRoZSBwcm9ibGVtCiAgICB3aXRoIHRydW5jYXRlZCAiYm9vdGFyZ3MiIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDVmMDMyMDEwODg3MGU1ZDYyOTgzZDFkNWMxM2EyYTA4N2RkZGY2ODYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDEgMTc6MDc6NTIgMjAwOSArMDEwMAoKICAgIGNvbW1vbi9jb25zb2xlOiBhdm9pZCBpZmRlZiBDT05GSUdfQ09OU09MRV9NVVggd2hlbiBpdCdzIHBvc3NpYmxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlYzZmMTQ5OTQ2MDIyNzY2NjBmNzI2NGM2YWIzYjkxZWYxZjc2MTRkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxIDE3OjA3OjUxIDIwMDkgKzAxMDAKCiAgICBjb21tb24vY29uc29sZTogY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGRhYWY3NGYxNzZiNTQ4ZGZkMzRhOTk5MDIzMWY0MTg5MjAxZDU3YmEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gMjkgMjA6MDI6MjMgMjAwOSAtMDUwMAoKICAgIG1wYzh4eF9wY21jaWE6IG1vdmUgQ09ORklHXzh4eCBvdXQgb2YgLmMgZmlsZSBhbmQgaW50byBNYWtlZmlsZQoKICAgIE1vdmUgdGhlIENPTkZJR184eHggbXBjOHh4X3BjbWNpYS5jIHByb3RlY3Rpb24gb3V0IG9mIHRoZSBDIGZpbGUgYW5kCiAgICBpbnRvIHRoZSBNYWtlZmlsZSBzbyB3ZSBhdm9pZCBwb2ludGxlc3MgY29tcGlsaW5nIG9mIHRoZSBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3YmQyNzIyZTg5MGJjODc3YTNjMDU3ZDdjY2RkYzgwNDUxYzk5OTM5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDI5IDIwOjAyOjA3IDIwMDkgLTA1MDAKCiAgICBkaXNrOiBjb252ZXJ0IHBhcnRfKiBmaWxlcyB0byBDT0JKLSQoQ09ORklHX1hYWCkgc3R5bGUKCiAgICBNb3ZlIHRoZSBDT05GSUdfWFhYIG91dCBvZiB0aGUgcGFydF9YWFguYyBmaWxlIGFuZCBpbnRvIE1ha2VmaWxlIHRvCiAgICBhdm9pZCBwb2ludGxlc3MgY29tcGlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGYwNWZhOTIwNWUwNDk4NjE3NmRjN2FiOGI3MTBiY2I1ZmJlOWYzMzgKQXV0aG9yOiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KRGF0ZToJVGh1IEphbiAyOSAxMDozNTo0MCAyMDA5ICswMjAwCgogICAgaW5jbHVkZS9pbWFnZS5oOiBFYXNlIGdyZXBwaW5nIG9mIGltYWdlXyogZnVuY3Rpb25zCgogICAgQmVjYXVzZSB0aGUgZnVuY3Rpb25zIGhhdmUgYmVlbiBkZWZpbmVkIHVzaW5nIG1hY3JvcywgZ3JlcHBpbmcgZm9yCiAgICB0aGVpciBkZWZpbml0aW9ucyBpcyBub3QgcG9zc2libGUuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcmVhbCBmdW5jdGlvbgogICAgbmFtZXMgaW4gY29tbWVudHMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0cmkgTGVodGluZW4gPHBldHJpLmxlaHRpbmVuQGlub2kuZmk+CiAgICBBY2tlZC1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJkYWIzOWQzNThlNjNhYTQ3ZjQwMGE4YTc2YjhkNWYyODM4NDJkZjMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBKYW4gMjggMTk6MDg6MTQgMjAwOSAtMDUwMAoKICAgIHJlbmFtZSBDT05GSUdfQ01EX0VOViB0byBDT05GSUdfQ01EX1NBVkVFTlYKCiAgICBUaGUgQ09ORklHX0NNRF9FTlYgb3B0aW9uIGNvbnRyb2xzIGVuYWJsZW1lbnQgb2YgdGhlIGBzYXZlZW52YCBjb21tYW5kCiAgICByYXRoZXIgdGhhbiBhIGdlbmVyaWMgImVudiIgY29tbWFuZCwgb3IgYW55dGhpbmcgZWxzZSByZWxhdGVkIHRvIHRoZQogICAgZW52aXJvbm1lbnQuICBTbywgbGV0J3MgbWFrZSBzdXJlIHRoZSBkZWZpbmUgaXMgbmFtZWQgYWNjb3JkaW5nbHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhiMDU5MmI4OWUwZjlmODFjOWUxNTBjODFkOTZmOGE0M2U0ZDYxMDEKQXV0aG9yOiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgpEYXRlOglGcmkgSmFuIDIzIDIwOjAyOjE3IDIwMDkgKzAyMDAKCiAgICBkaXNhYmxlIGltbHMgY29tbWFuZCBpZiBubyBmbGFzaCBpcyBkZWZpbmVkCgogICAgRGVmYXVsdCBDT05GSUdfQ01EX0lNTFMgbXVzdCBiZSBkaXNhYmxlZCB3aGVuIENPTkZJR19TWVNfTk9fRkxBU0ggaXMgZGVmaW5lZAoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Cgpjb21taXQgOTIzYWE0ODEyNjI1OWMxM2RlOTUxMzEyMDNmMWQyOGJmYTVjYjg4OQpBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTggMjAwOSArMDEwMAoKICAgIEFQSTogSW1wcm92ZSBnbHVlIG1pZC1sYXllciBvZiB0aGUgQVBJIGRlbW8gYXBwbGljYXRpb24uCgogICAgLSBFeHRlbmQgdWJfZGV2X3JlYWQoKSBhbmQgdWJfZGV2X3JlY3YoKSBzbyB0aGV5IHJldHVybiB0aGUgbGVuZ3RoIGFjdHVhbGx5CiAgICByZWFkLCB3aGljaCBhbGxvd3MgZm9yIGJldHRlciBjb250cm9sIGFuZCBlcnJvciBoYW5kbGluZyAodGhpcyBpbnRyb2R1Y2VzCiAgICBhZGRpdGlvbmFsIGVycm9yIGNvZGUgQVBJX0VTWVNDIHJldHVybmVkIGJ5IHRoZSBnbHVlIG1pZC1sYXllcikuCgogICAgLSBDbGVhbiB1cCBkZWZpbml0aW9ucyBuYW1pbmcgYW5kIHVzYWdlLgoKICAgIC0gT3RoZXIgbWlub3IgY29zbWV0aWNzLgoKICAgIE5vdGUgdGhlc2UgY2hhbmdlcyBkbyBub3QgdG91Y2ggdGhlIEFQSSBwcm9wZXIsIHNvIHRoZSBpbnRlcmZhY2UgYmV0d2VlbgogICAgVS1Cb290IGFuZCBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucyByZW1haW5zIHVuY2hhbmdlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IDQ0YTk0ZTU5NmJhMGY2ZDA5NTFiMTY1NDAzYzUyMGJmNTViMWM1NmYKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgSmFuIDIzIDEzOjI3OjE3IDIwMDkgKzAxMDAKCiAgICBBUEk6IE9ubHkgb3V0cHV0IHRlc3QgZGF0YSB3aGVuIHJlYWRpbmcgd2FzIHN1Y2Nlc3NmdWwuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdmYjZjNGY5YjA2YzU1MzkwNDNjOGJmYzY1NjU3MTBiODA5MDg0MWQKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgSmFuIDIzIDEzOjI3OjE2IDIwMDkgKzAxMDAKCiAgICBBUEk6IFByb3ZpZGUgc3lzY2FsbCBlbnRyeSBwb2ludCBmb3IgdGhlIEFSTSBhcmNoaXRlY3R1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgYjg0ZDdkOGYxZTEwNjZmODEwODY2MzA0YTE2YTM1ODNmODhlN2M5OApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTUgMjAwOSArMDEwMAoKICAgIEFQSTogVXNlIHN0YWNrIHBvaW50ZXIgYXMgQVBJIHNpZ25hdHVyZSBzZWFyY2ggaGludCBpbiB0aGUgZ2x1ZSBsYXllci4KCiAgICBEZS1oYXJkY29kZSByYW5nZSBpbiBSQU0gd2Ugc2VhcmNoIGZvciB0aGUgQVBJIHNpZ25hdHVyZS4gSW5zdGVhZCB1c2UgdGhlIHN0YWNrCiAgICBwb2ludGVyIGFzIGEgaGludCB0byBuYXJyb3cgZG93biB0aGUgcmFuZ2UgaW4gd2hpY2ggdGhlIHNpZ25hdHVyZSBjb3VsZCByZXNpZGUKICAgIChpdCBpcyBtYWxsb2MnZWQgb24gdGhlIFUtQm9vdCBoZWFwLCBhbmQgaXMgaG9wZWQgdG8gcmVtYWluIGluIHNvbWUgcHJveGltaXR5CiAgICBmcm9tIHN0YWNrIGFyZWEpLiBBZGp1c3QgUG93ZXJQQyBjb2RlIGluIEFQSSBkZW1vIHRvIHRoZSBuZXcgc2NoZW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgODZiNGJhZmRmYWY2NjllZGU4ZmQ5OTA0NGFiYzdlMjdlYTI5YjRmNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTcgMTA6MjY6MzggMjAwOSArMDEwMAoKICAgIFRRTTgyNjA6IGZpeCBsb2NhdGlvbnMgb2Yga2VybmVsIGFuZCByYW1kaXNrIGltYWdlcyBpbiBmbGFzaAoKICAgIEFmdGVyIGludHJvZHVjaW5nIHJlZHVuZGFudCBlbnZpcm9ubWVudCB0aGUga2VybmVsIGltYWdlcyB3YXMKICAgIG92ZXJsYXBwaW5nIHdpdGggZW52aXJvbm1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMWFjMzg3ZjQ2NDU0OTk3NDY4NTZhZGMxYWVhYTk3ODdkYTJlY2E2CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjUwOjE0IDIwMDggLTA1MDAKCiAgICA4M3h4OiBBZGQgZVNESEMgc3VwcG9ydCBvbiA4Mzc5IEVNRFMgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODA1MjJkYzgzNjlhODk5MzgzNjlmYmNlZTU3MmU2NjIzNzNiYzlhMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNjo1MTozMyAyMDA4IC0wNTAwCgogICAgODV4eDogQWRkIGVTREhDIHN1cHBvcnQgZm9yIDg1MzYgRFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTA1ODZlZjI0ZWQ1Y2FmNmNlNTU5MWRmNzZmMzU1MDA5ZGEyY2Q3OQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNjo0NzoxNiAyMDA4IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgZVNESEMgZm91bmQgb24gODM3OSBhbmQgODUzNiBTb0NzCgogICAgVGhpcyB1c2VzIHRoZSBuZXcgTU1DIGZyYW1ld29yawoKICAgIFNvbWUgY29udHJpYnV0aW9ucyBieSBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNzJjYzcwYjIxMWU5NDVlNDQxMzEyMmFhNzM4NjhmNmFkYTczMmE1CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjQxOjAxIDIwMDggLTA1MDAKCiAgICBBZGQgTU1DIEZyYW1ld29yawoKICAgIEhlcmUncyBhIG5ldyBmcmFtZXdvcmsgKGJhc2VkIHJvdWdobHkgb2ZmIHRoZSBsaW51eCBvbmUpIGZvciBtYW5hZ2luZwogICAgTU1DIGNvbnRyb2xsZXJzLiAgSXQgaGFuZGxlcyBhbGwgb2YgdGhlIHN0YW5kYXJkIFNEL01NQyB0cmFuc2FjdGlvbnMsCiAgICBsZWF2aW5nIHRoZSBob3N0IGRyaXZlcnMgdG8gaW1wbGVtZW50IG9ubHkgd2hhdCBpcyBuZWNlc3NhcnkgdG8KICAgIGRlYWwgd2l0aCB0aGVpciBzcGVjaWZpYyBoYXJkd2FyZS4KCiAgICBUaGlzIGFsc28gaG9va3MgdGhlIGluZnJhc3RydWN0dXJlIGludG8gdGhlIFBvd2VyUEMgYm9hcmQgY29kZQogICAgKHNpbWlsYXIgdG8gaG93IHRoZSBldGhlcm5ldCBpbmZyYXN0cnVjdHVyZSBub3cgaG9va3MgaW4pCgogICAgU29tZSBvZiB0aGlzIGNvZGUgd2FzIGNvbnRyaWJ1dGVkIGJ5IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFkZTk3Zjk4NTZmNjk3MzgwY2M1MDQxMjZhYjkyNTYxZWQyMzg4MDMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMzAgMTY6MzE6MzkgMjAwOCAtMDUwMAoKICAgIEVsaW1pbmF0ZWQgYXJjaC1zcGVjaWZpYyBtbWMgaGVhZGVyIHJlcXVpcmVtZW50CgogICAgVGhlIGN1cnJlbnQgTU1DIGluZnJhc3RydWN0dXJlIHJlbGllcyBvbiB0aGUgZXhpc3RlbmNlIG9mIGFuCiAgICBhcmNoLXNwZWNpZmljIGhlYWRlciBmaWxlLglUaGlzIGlzbid0IG5lY2Vzc2FyeSwgYW5kIGEgY291cGxlCiAgICBkcml2ZXJzIHdlcmUgZm9yY2VkIHRvIGltcGxlbWVudCBkdW1teSBmaWxlcyB0byBtZWV0IHRoaXMgcmVxdWlyZW1lbnQuCiAgICBJbnN0ZWFkLCB3ZSBtb3ZlIHRoZSBzdHVmZiBpbiB0aG9zZSBoZWFkZXIgZmlsZXMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUKICAgIHBsYWNlLCBhbmQgZWxpbWluYXRlIHRoZSBzdHVicyBhbmQgdGhlICNpbmNsdWRlIG9mIGFzbS9hcmNoL21tYy5oCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFiYjU0NjZjY2Y0Y2U1MGY0MTJkNDU5NTg2ZjRmNGI4MWNiNzNhYzMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMzAgMTY6MjE6MDAgMjAwOCAtMDUwMAoKICAgIENvbnZlcnQgbW1jX2luaXQgdG8gbW1jX2xlZ2FjeV9pbml0CgogICAgVGhpcyBpcyB0byBnZXQgaXQgb3V0IG9mIHRoZSB3YXkgb2YgaW5jb21pbmcgTU1DIGZyYW1ld29yawoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMmUyZWQwMjMzYTVlZjI5OTM2MWFiZWM0ZmJkYWVmYjYzNDU2ZWZmCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDMwIDE2OjE5OjI1IDIwMDggLTA1MDAKCiAgICBFbGltaW5hdGUgc3VwcG9ydCBmb3IgdXNpbmcgTU1DIGFzIG1lbW9yeQoKICAgIE1NQyBjYXJkcyBhcmUgbm90IG1lbW9yeSwgc28gd2Ugc3RvcCB0cmVhdGluZyB0aGVtIHRoYXQgd2F5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMWJlMGQyNWVjZjQ5NGFlODEyNDVjYTQzODczOGJhODM5ZDYzMjliCkF1dGhvcjogUG9vbmFtX0FnZ3J3YWwtYjEwODEyIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEphbiA0IDA4OjQ2OjM4IDIwMDkgKzA1MzAKCiAgICAzMmJpdCBCVWcgZml4IGZvciBERFIyIG9uIDg1NzIKCiAgICBUaGlzIGVycmF0YSBmaXggaXMgcmVxdWlyZWQgZm9yIDMyIGJpdCBERFIyIGNvbnRyb2xsZXIgb24gODU3Mi4KICAgIE1heSAgYWxzbyBiZSByZXF1aXJlZCBmb3IgUDEwWFgyMFhYIHBsYXRmb3JtcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbV9BZ2Fyd2FsLWIxMDgxMiA8YjEwODEyQGxjMTEwNi56aW4zMy5hcC5mcmVlc2NhbGUubmV0PgoKY29tbWl0IGUwYzRmYWM3OWQ0ZDc0NTcyZGRkNDNmNzVlNzE4OWNlY2NhOGQwYWQKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMTYgMDk6NDA6MjAgMjAwOSAtMDYwMAoKICAgIFRRTTg1eHg6IEZpeCBhIGNvdXBsZSB3YXJuaW5ncyBpbiBUUU04NTQ4IGJ1aWxkCgogICAgVGhlIGVjbSB2YXJpYWJsZSBpbiBzZHJhbS5jIHdhcyBiZWluZyBkZWNsYXJlZCBmb3IgYWxsIDg1NDgsIGJ1dCBvbmx5CiAgICB1c2VkIGJ5IHNwZWNpZmljIDg1NDggYm9hcmRzLCBzbyB3ZSBtYWtlIHRoYXQgdmFyaWFibGUgcmVxdWlyZSB0aG9zZQogICAgc3BlY2lmaWMgYm9hcmRzLCB0b28KCiAgICBUaGUgbmFuZCBjb2RlIHdhcyB1c2luZyBhbiBpbmRleCAiaSIgaW50byBhIHRhYmxlLCBhbmQgdGhlbiByZS11c2luZyAiaSIKICAgIHRvIHNldCBhZGRyZXNzZXMgZm9yIGVhY2ggdXBtLiAgSG93ZXZlciwgdGhlbiBpdCByZWxpZWQgb24gdGhlIG9sZCB2YWx1ZQogICAgb2YgaSBzdGlsbCBiZWluZyB0aGVyZSB0byBlbmFibGUgdGhpbmdzLiAgQ2hhbmdlZCB0aGUgc2Vjb25kICJpIiB0byAiaiIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2YwN2E1YmFlY2UwZWNmYzUyODRjZmRhOGE0ZTY4ZWFmOTI3ODJmOApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjI2IDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NTQ4OiB3b3JrYXJvdW5kIGZvciBlcnJhdHVtIEREUiAxOSBhbmQgMjAKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHdvcmthcm91bmQgZm9yIGVycmF0dW0gRERSMjAgYWNjb3JkaW5nIHRvIE1QQzg1NDgKICAgIERldmljZSBFcnJhdGEgZG9jdW1lbnQsIFJldi4gMTogIkNLRSBzaWduYWwgbWF5IG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkKICAgIGFmdGVyIGFzc2VydGlvbiBvZiBIUkVTRVQiLiBGdXJ0aGVybW9yZSwgdGhlIGJ1ZyBERFIxOSBpcyBmaXhlZCBpbgogICAgcHJvY2Vzc29yIHZlcnNpb24gMi4xIGFuZCB0aGUgd29yay1hcm91bmQgbXVzdCBiZSByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDA4MDQwOGZkYzcxNzA2YWRjYjg4M2QyMjEyNTYzN2M1NGY2MDEwYjEKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyNSAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODU0ODogdXNlIGNhY2hlIGZvciBBRyBhbmQgQkUgdmFyaWFudHMKCiAgICBUaGlzIHBhdGNoIG1ha2VzIGFjY2Vzc2VzIHRvIHRoZSBzeXN0ZW0gbWVtb3J5IGNhY2hhYmxlIGJ5IHJlbW92aW5nIHRoZQogICAgY2FjaGluZy1pbmhpYml0ZWQgYW5kIGd1YXJkZWQgZmxhZ3MgZnJvbSB0aGUgcmVsZXZhbnQgVExCIGVudHJpZXMgZm9yCiAgICB0aGUgVFFNODU0OF9CRSBhbmQgVFFNODU0OF9BRyBtb2R1bGVzLiBGWUksIHRoZSBGcmVlc2NhbGUgTVBDODUqIGJvYXJkcwogICAgYXJlIGNvbmZpZ3VyZWQgc2ltaWxhcmx5LgoKICAgIFRoaXMgcmVzdWx0cyBpbiBhIGJpZyBhdmVyYWxsIHBlcmZvcm1hY2UgaW1wcm92ZW1lbnQuIFRGVFAgZG93bmxvYWRzLAogICAgTkFORCBGbGFzaCBhY2Nlc3Nlcywga2VybmVsIGJvb3RzLCBldGMuIGFyZSBtdWNoIGZhc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBkYzVmNTVkNjM2ZDdiZjIxYmExNzc1OGZhYzRiOTI5ZWM0YzA1OWYyCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjQgMjAwOSArMDEwMAoKICAgIE1QQzg1eHg6IFRRTTg1NDhfQUc6IGFkZCAxIEdpQiBERFIyLVNEUkFNIGNvbmZpZ3VyYXRpb24KCiAgICBUaGlzIHBhdGNoIGFkZCBzdXBwb3J0IGZvciB0aGUgMSBHaUIgRERSMi1TRFJBTSBvbiB0aGUgVFFNODU0OF9BRwogICAgbW9kdWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDg4YjBlODhkMTg2NDc5MzQ5ZTVhMmI3NzFlODI3NzUxMDllMTBmYjQKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMyAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODU0ODogZml4IFNEUkFNIHRpbWluZyBmb3IgNTMzIE1IegoKICAgIEFjY29yZGluZyB0byBuZXcgVFFNODU0OCB0aW1pbmcgc3BlY2lmaWNhdGlvbjoKICAgIFJlZnJlc2ggUmVjb3Zlcnk6IDM0IC0+IDUzIGNsb2NrcwogICAgQ0tFIHB1bHNlIHdpZHRoOiAgMSAtPiAzIGN5Y2xlcwogICAgV2luZG93IGZvciBmb3VyIGFjdGl2aXRpZXM6IDEzIC0+IDE0IGN5Y2xlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IGE4NjViY2RhYzg5Mjc4Y2FjNGRmYzA3ZGVjODI5OTQwMzExMDQ5OWQKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMiAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODU0ODogYWRkIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4X0FHIG1vZHVsZQoKICAgIFRoZSBUUU04NTQ4X0FHIGlzIGEgdmFyaWFudCBvZiB0aGUgVFFNODU0OCBtb2R1bGUgd2l0aCAxIEdpQiBtZW1vcnksCiAgICBDQU4gYW5kIHdpdGhvdXQgUENJL1BDSS1YIGFuZCBSVEMuIFUtQm9vdCBjYW4gYmUgYnVpbHQgZm9yIHRoaXMgbW9kdWxlCiAgICB3aXRoICIkIG1ha2UgVFFNODU0OF9BR19jb25maWciLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IGFkN2VlNWQ0M2IwZGI5NDA3OWQ1NjUyMWRhYmNhMjU2NzRmMjg3NDcKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEZlYiAxMSAxODozODoyMSAyMDA5ICswMTAwCgogICAgTVBDODV4eDogVFFNODU0ODogYWRkIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4X0JFIG1vZHVsZQoKICAgIFRoZSBUUU04NTQ4X0JFIGlzIGEgdmFyaWFudCBvZiB0aGUgVFFNODU0OCBtb2R1bGUgd2l0aCBOQU5EIGFuZCBDQU4KICAgIGludGVyZmFjZS4gV2l0aCBOQU5EIHN1cHBvcnQsIHRoZSBpbWFnZSBpcyBzaWduaWZpY2FudGx5IGxhcmdlciBhbmQKICAgIFRFWFRfQkFTRSBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4gVS1Cb290IGNhbiBiZSBidWlsdCBmb3IgdGhpcwogICAgbW9kdWxlIHdpdGggIiQgbWFrZSBUUU04NTQ4X0JFX2NvbmZpZyIuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYTMxODIzNDg3OGMzNDZlNjczYjJlZjhkYzRiMTRiMzM4ZmU3ZmMyYgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgRmViIDExIDE4OjM4OjIwIDIwMDkgKzAxMDAKCiAgICBNUEM4NXh4OiBUUU04NXh4OiBtYWtlIHN0YW5kYXJkIFBDSS9QQ0ktWCBjb25maWd1cmFibGUKCiAgICBUaGUgVFFNODU0OF9BRyBtb2R1bGUgZG9lcyBub3QgaGF2ZSB0aGUgc3RhbmRhcmQgUENJL1BDSS1YIGludGVyZmFjZQogICAgY29ubmVjdGVkIGJ1dCBqdXN0IHRoZSBQQ0kgRXhwcmVzcyBpbnRlcmZhY2UgLiBTbyBmYXIgaXQgd2FzIG5vdAogICAgcG9zc2libGUgdG8gZGlzYWJsZSBpdCB3aXRob3V0IGRpc2FibGluZyB0aGUgY29tcGxldGUgUENJIGludGVyZmFjZQogICAgKENPTkZJR19QQ0kpIGluY2x1ZGluZyBQQ0kgRXhwcmVzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCAzMWNhOTExOWMzMTg2Y2VjNTc5YjU0ZDJhN2EyYjM2MWI0ZDJiN2JmCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MTkgMjAwOSArMDEwMAoKICAgIE1QQzg1eHg6IFRRTTg1eHg6IGZpeCBmbGFzaCBwcm90ZWN0aW9uIGZvciBib290IGxvYWRlcgoKICAgIEFzIHRoZSByZXNldCB2ZWN0b3IgaXMgbG9jYXRlZCBhdCAweGZmZmZmZmZjLCBhbGwgZmxhc2ggc2VjdG9ycyBmcm9tIHRoZQogICAgYmVnaW5uaW5nIG9mIHRoZSBVLUJvb3QgYmluYXJ5IHRvIDB4ZmZmZmZmZmYgbXVzdCBiZSBwcm90ZWN0ZWQuIE9uIHRoZQogICAgVFFNODU0OC1BRyBoYXZpbmcgc21hbGwgc2VjdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBmbGFzaCBpdCBoYXBwZW5lZCB0aGF0CiAgICB0aGUgbGFzdCB0d28gc2VjdG9yIHdlcmUgbm90IHByb3RlY3RlZCBhbmQgYW4gImVyYXNlIGFsbCIgbGVmdCBhbgogICAgdW4tYm9vdGFibGUgc3lzdGVtIGJlaGluZDoKCiAgICBCYW5rICMgMjogQ0ZJIGNvbmZvcm1hbnQgRkxBU0ggKDMyIHggMTYpICBTaXplOiAzMiBNQiBpbiAyNzAgU2VjdG9ycwogICAgICBBTUQgU3RhbmRhcmQgY29tbWFuZCBzZXQsIE1hbnVmYWN0dXJlciBJRDogMHhFQywgRGV2aWNlIElEOiAweDI1N0UKICAgICAgRXJhc2UgdGltZW91dDogODE5MiBtcywgd3JpdGUgdGltZW91dDogMSBtcwoKICAgICAgRkZGQTAwMDAgRSBSTyAgIEZGRkMwMDAwCSBSTyAgIEZGRkUwMDAwCSBSTyAgIEZGRkU0MDAwCSBSTyAgIEZGRkU4MDAwCSBSTwogICAgICBGRkZFQzAwMAkgUk8gICBGRkZGMDAwMAkgUk8gICBGRkZGNDAwMAkgUk8gICBGRkZGODAwMCBFICAgICAgRkZGRkMwMDAKCiAgICBUaGUgc2FtZSBidWcgc2VlbXMgdG8gYmUgaW4gZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmM6Zmxhc2hfaW5pdCgpIGFuZCBtYW55CiAgICBib2FyZCBCU1BzIGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYTFjOGE3MTkyNjIxNTFmOTcxMTllNzYxNjYwNDNlZTNkYTNmOTdiMgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBGZWIgNiAxNDozMDo0MCAyMDA5IC0wNjAwCgogICAgODZ4eDogVXBkYXRlIENQVSBpbmZvIG91dHB1dCBvbiBib290dXAKCiAgICAtIFVwZGF0ZSBzdHlsZSBvZiA4Nnh4IENQVSBpbmZvcm1hdGlvbiBvbiBib290IHRvIG1vcmUgY2xvc2VseQogICAgICBtYXRjaCA4NXh4IGJvYXJkcwogICAgLSBGaXggZGV0ZWN0aW9uIG9mIDg2NDEvODY0MUQKICAgIC0gVXNlIHN0cm1oeigpIHRvIGRpc3BsYXkgZnJlcXVlbmNpZXMKICAgIC0gRGlzcGxheSBMMSBpbmZvcm1hdGlvbgogICAgLSBEaXNwbGF5IEwyIGNhY2hlIHNpemUKICAgIC0gRml4ZWQgQ1BVL1NWUiB2ZXJzaW9uIG91dHB1dAoKICAgID09IEJlZm9yZSA9PQogICAgRnJlZXNjYWxlIFBvd2VyUEMKICAgIENQVToKCUNvcmU6IEU2MDAgQ29yZSAwLCBWZXJzaW9uOiAwLjIsICgweDgwMDQwMjAyKQoJU3lzdGVtOiBVbmtub3duLCBWZXJzaW9uOiAyLjEsICgweDgwOTAwMTIxKQoJQ2xvY2tzOiBDUFU6MTA2NiBNSHosIE1QWDogNTMzIE1IeiwgRERSOiAyNjYgTUh6LCBMQkM6IDEzMyBNSHoKCUwyOiBFbmFibGVkCiAgICBCb2FyZDogWC1FUyBYUGVkaXRlNTE3MCAzVSBWUFggU0JDCgogICAgPT0gQWZ0ZXIgPT0KICAgIENQVTogICA4NjQxRCwgVmVyc2lvbjogMi4xLCAoMHg4MDkwMDEyMSkKICAgIENvcmU6ICBFNjAwIENvcmUgMCwgVmVyc2lvbjogMi4yLCAoMHg4MDA0MDIwMikKICAgIENsb2NrIENvbmZpZ3VyYXRpb246CgkgICBDUFU6MTA2Ni42NjcgTUh6LCBNUFg6NTMzLjMzMyBNSHoKCSAgIEREUjoyNjYuNjY3IE1IeiAoNTMzLjMzMyBNVC9zIGRhdGEgcmF0ZSksIExCQzoxMzMuMzMzIE1IegogICAgTDE6ICAgIEQtY2FjaGUgMzIgS0IgZW5hYmxlZAoJICAgSS1jYWNoZSAzMiBLQiBlbmFibGVkCiAgICBMMjogICAgNTEyIEtCIGVuYWJsZWQKICAgIEJvYXJkOiBYLUVTIFhQZWRpdGU1MTcwIDNVIFZQWCBTQkMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDIyYzAwZjhkN2Q0NTRkNzdlNzU5ZGY1ODQxNWQyZDNmM2Q3ZTE1NGMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUaHUgRmViIDUgMTE6MjU6MjQgMjAwOSAtMDYwMAoKICAgIDg2eHg6IFVwZGF0ZSBHbG9iYWwgVXRpbGl0aWVzIHN0cnVjdHVyZQoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNGVmNjMwZGY3NzNlNDU4MDZkNzAxYmY1ZDI1YzMyODc3OGJiNGNkZQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVRodSBGZWIgNSAxMToyNToyNSAyMDA5IC0wNjAwCgogICAgODZ4eDogUmVzZXQgdXBkYXRlCgogICAgVXBkYXRlIHRoZSA4Nnh4IHJlc2V0IHNlcXVlbmNlIHRvIHRyeSBleGVjdXRpbmcgYSBib2FyZC1zcGVjaWZpYyByZXNldAogICAgZnVuY3Rpb24uICBJZiB0aGUgYm9hcmQtc3BlY2lmaWMgcmVzZXQgaXMgbm90IGltcGxlbWVudGVkIG9yIGRvZXMgbm90CiAgICBzdWNjZWVkLCB0aGVuIGFzc2VydCAjSFJFU0VUX1JFUS4gIFVzaW5nICNIUkVTRVRfUkVRIGlzIGEgbW9yZSBzdGFuZGFyZAogICAgcmVzZXQgcHJvY2VkdXJlIHRoYW4gdGhlIHByZXZpb3VzIG1ldGhvZCBhbmQgYWxsb3dzIGFsbCBib2FyZAogICAgcGVyaXBoZXJhbHMgdG8gYmUgcmVzZXQgaWYgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZWRmMGUyNTI0YThjNmEzZTkxYzAwOWM0OTZhMGFhMGFlODljZDhhYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMTAgMjM6NTM6NDAgMjAwOSAtMDYwMAoKICAgIGZzbC1kZHI6IEFsbG93IHN5c3RlbSB0byBib290IGlmIHdlIGhhdmUgbW9yZSB0aGFuIDRHIG9mIG1lbW9yeQoKICAgIFByZXZpb3VzbHkgaWYgd2UgPj00RyBvZiBtZW1vcnkgYW5kICFDT05GSUdfUEhZU182NEJJVCB3ZSdkIHJlcG9ydAogICAgYW4gZXJyb3IgYW5kIGhhbmcuCUluc3RlYWQgb2YgZG9pbmcgdGhhdCBzaW5jZSBERFIgaXMgbWFwcGVkIGluIHRoZQogICAgbG93ZXN0IHByaW9yaXR5IExBV3Mgd2Ugc2V0dXAgdGhlIEREUiBjb250cm9sbGVyIGFuZCB0aGUgbWF4IGFtb3VudAogICAgb2YgbWVtb3J5IHdlIHJlcG9ydCBiYWNrIGlzIHdoYXQgd2UgY2FuIG1hcCAoQ09ORklHX01BWF9NRU1fTUFQUEVEKQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhkOTQ5YWZmMzhjZmI0Mzg4Y2JkNzM4NzZlNzdiY2QwNmQ2MDFmMjAKQXV0aG9yOiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MTc6MzMgMjAwOSAtMDYwMAoKICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgUDIwMjAKCiAgICBBZGRlZCB2YXJpb3VzIHAyMDIwIHByb2Nlc3NvciBzcGVjaWZpYyBkZXRhaWxzOgogICAgKiBTVlIgZm9yIHAyMDIwLCBwMjAyMEUKICAgICogaW1tYXAgdXBkYXRlcyBmb3IgTEFXcyBhbmQgRERSIG9uIHAyMDIwCiAgICAqIExBVyBkZWZpbmVzIHJlbGF0ZWQgdG8gcDIwMjAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUcmF2aXMgV2hlYXRsZXkgPFRyYXZpcy5XaGVhdGxleUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjYjY5ZTRkZTg3MDJlMTA4MzI0ZTFjNDAzNjNmMzBlZjZmMmUyOTE4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAxMCAxNzozNjoxNSAyMDA5IC0wNjAwCgogICAgODV4eDogcHJpbnQgYm9vdCBoZWFkZXIgaW5mbyB0byBkaXN0aW5xdWlzaCAzNi1iaXQgYWRkciBtYXAgb24gTVBDODU3MiBEUwoKICAgIEFkZGVkIHNvbWUgaW5mbyB0aGF0IGlzIHByaW50ZWQgb3V0IHdoZW4gd2UgYm9vdCB0byBkaXN0aXF1aXNoIGlmIHdlCiAgICBidWlsdCBNUEM4NTcyRFNfY29uZmlnIHZzIE1QQzg1NzJEU18zNkJJVF9jb25maWcgc2luY2UgdGhleSBoYXZlCiAgICBkaWZmZXJlbnQgYWRkcmVzcyBtYXBzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZmVlZGU4YjA3MDEzYjMzZmNhOGRkMmE5MTZiM2FjODZiZjRkNGMwYQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIERlYyA1IDIwOjEwOjIyIDIwMDggLTA2MDAKCiAgICBGaXh1cCBTR01JSSBQSFkgaWRzIGluIHRoZSBkZXZpY2UgdHJlZQoKICAgIFRoZSBkZXZpY2UgdHJlZSdzIFBIWSBhZGRyZXNzZXMgbmVlZCB0byBiZSBmaXhlZCB1cCBpZiB3ZSdyZSB1c2luZyB0aGUKICAgIFNHTUlJIFJpc2VyIENhcmQuCgogICAgVGhlIDg1NzIsIDg1MzYsIGFuZCA4NTQ0IERTIGJvYXJkcyB3ZXJlIG1vZGlmaWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4KCiAgICBDb2RlIGlkZWEgdGFrZW4gZnJvbSBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZGMwY2Y2OGY4ZjEwMTA0Mjk5N2Q3NTE4ODA4MWQ4NTI2ZDcwNWVhCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDExIDE1OjEwOjMxIDIwMDkgLTA2MDAKCiAgICBNYWtlIHNvbWUgbWlub3Igd2hpdGVzcGFjZSBjaGFuZ2VzIHRvIGVsaW1pbmF0ZSBsaW5lLXdyYXBwaW5nCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDllNTY5ODZhMmI3NGQxOTdmNTFlY2E3MGZhZDdiODM2YjE5MDBjNGQKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTEgMTU6MDc6MjQgMjAwOSAtMDYwMAoKICAgIEFkZCBldGhfZ2V0X2Rldl9ieV9pbmRleAoKICAgIFRoaXMgYWxsb3dzIGNvZGUgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBldGhlcm5ldCBkZXZpY2VzCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI2NzMwNTEyMGFhZjI2OGE2MTQwMTI1MzQ2Njc4MTY2ZDE0ZjFmNDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gRmViIDkgMjI6MDM6MDQgMjAwOSAtMDYwMAoKICAgIDg1eHg6IEZpeCBidWcgaW4gZGV2aWNlIHRyZWUgc2V0dXAgaW4gMzYtYml0IHBoeXNpY2FsIGNvbmZnCgogICAgSW4gdGhlIDM2LWJpdCBwaHlzaWNhbCBjb25maWcgZm9yIE1QQzg1NzJEUyB3aGVuIG5lZWQgdGhlIHN0YXJ0IGFkZHJlc3MKICAgIG9mIG1lbW9yeSBhbmQgaXQgc2l6ZSB0byBiZSBrZXB0IGluIHBoeXNfKl90IGluc3RlYWQgb2YgYSB1bG9uZyBzaW5jZQogICAgd2Ugc3VwcG9ydCA+NEcgb2YgbWVtb3J5IGluIHRoZSBjb25maWcgYW5kIHVsb25nIGNhbnQgcmVwcmVzZW50IHRoYXQuCiAgICBPdGhlcndpc2Ugd2UgZW5kIHVwIHNlZWluZyB0aGUgbWVtb3J5IG5vZGUgaW4gdGhlIGRldmljZSB0cmVlIHJlcG9ydGluZwogICAgYmFjayB3ZSBoYXZlIG1lbW9yeSBzdGFydGluZyBAIDAgYW5kIG9mIHNpemUgMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGFkOTdkY2UxODQ0NWZmMDViZjMyNjA5NGU2OTFhMDFhYTk1YWE4ZGMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gRmViIDkgMjI6MDM6MDUgMjAwOSAtMDYwMAoKICAgIDg1eHg6IEZpeCBhZGRyZXNzIG1hcCBmb3IgMzYtYml0IGNvbmZpZyBvZiBNUEM4NTcyRFMKCiAgICBXaGVuIHdlIGludHJvZHVjZWQgdGhlIDM2LWJpdCBjb25maWcgb2YgdGhlIE1QQzg1NzJEUyBib2FyZCB3ZSBoYWQgdGhlCiAgICB3cm9uZyBQQ0kgTUVNIGJ1cyBhZGRyZXNzIG1hcC4gIEFkZGl0aW9uYWxseSwgdGhlIGNoYW5nZSB0byB0aGUgYWRkcmVzcwogICAgbWFwIGV4cG9zZXMgYSBzbWFsbCBpc3N1ZSBpbiBvdXIgZHVtbXkgcmVhZCBvbiB0aGUgVUxJIGJ1cy4gIFdlIG5lZWQKICAgIHRvIHVzZSB0aGUgbmV3IG1hcHBpbmcgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGF0IHJlYWQgcHJvcGVybHkgaW4gdGhlCiAgICAzNi1iaXQgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjg1MjNjYjA4MTViMmQzZDJkNzgwYjdkNDljYTYxNDEwNTU1NWY1OApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBGZWIgNiAwOTo1NjozNSAyMDA5IC0wNjAwCgogICAgODV4eDogRml4IGhvdyB3ZSBtYXAgRERSIG1lbW9yeQoKICAgIFByZXZpb3VzbHkgd2Ugb25seSBhbGxvd2VkIHBvd2VyLW9mLXR3byBtZW1vcnkgc2l6ZXMgYW5kIGRpZG50CiAgICBoYW5kbGUgPjJHIG9mIG1lbW9yeS4gIE5vdyB3ZSB3aWxsIG1hcCB1cCB0byBDT05GSUdfTUFYX01FTV9NQVBQRUQKICAgIGFuZCBzaG91bGQgcHJvcGVybHkgaGFuZGxlIGFueSBzaXplIHRoYXQgd2UgY2FuIG1ha2UgaW4gdGhlIFRMQnMKICAgIHdlIGhhdmUgYXZhaWxhYmxlIHRvIHVzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxNTQyZmJkZWVjMGQxZTJhNmRmMTMxODlkZjhkY2IxY2U4ODAyYmUzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiA2IDA5OjU2OjM0IDIwMDkgLTA2MDAKCiAgICBmc2wtZGRyOiBpZ25vcmUgbWVtY3RsX2ludGx2X2N0bCBzZXR0aW5nIGlmIG9ubHkgb25lIEREUiBjb250cm9sbGVyCgogICAgSWYgd2Ugb25seSBoYXZlIG9uZSBjb250cm9sbGVyIHdlIGNhbiBjb21wbGV0ZWx5IGlnbm9yZSBob3cKICAgIG1lbWN0bF9pbnRsdl9jdGwgaXMgc2V0LiAgT3RoZXJ3aXNlIG90aGVyIGxldmVscyBvZiBjb2RlIGdldCBjb25mdXNlZAogICAgYW5kIHRoaW5rIHdlIGhhdmUgdHdpY2UgYXMgbXVjaCBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiMjlkZWUzYzkwNmU5ZGFhZjZiYWY3NzcyZDJlMTVlMjZiODYzNmI4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiA0IDA5OjM1OjU3IDIwMDkgLTA2MDAKCiAgICA4NXh4OiBGb3JtYXQgY3B1IGZyZXEgcHJpbnRpbmcgdG8gaGFuZGxlIDggY29yZXMKCiAgICBPbmx5IHByaW50IDQgY3B1IGZyZXEgcGVyIGxpbmUuICBUaGlzIHdheSB3aGVuIHdlIGhhdmUgOCBjb3JlcyBpdHMgYQogICAgYml0IG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5NzA0ZjljYWY1M2Y1Y2FlNTQ3ZDhjNWUxYWU5NGFhNGU1N2IxNjBmCkF1dGhvcjogQWJyYWhhbSwgVGhvbWFzIDx0LWFicmFoYW1AdGkuY29tPgpEYXRlOglUdWUgT2N0IDI4IDE2OjUxOjMxIDIwMDggKzA1MzAKCiAgICBVU0I6IFJlbW92ZSBMVU4gbnVtYmVyIGZyb20gQ0RCCgogICAgVGhlIExVTiBudW1iZXIgaXMgbm90IHBhcnQgb2YgdGhlIENvbW1hbmQgRGVzY3JpcHRvciBCbG9jayAoQ0RCKSBmb3Igc2NzaSBpbnF1aXJ5LCByZXF1ZXN0IHNlbnNlLCB0ZXN0IHVuaXQgcmVhZHksIHJlYWQgY2FwYWNpdHkgYW5kIHJlYWQxMCBjb21tYW5kcy4gVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBMVU4gbnVtYmVyIGluZm9ybWF0aW9uIGZyb20gdGhlIENEQi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGYzYzBkZTYzNjI1MmYzYTE4NjU0YzhmOWM2MzcwYTk1NzRhN2U3NTUKQXV0aG9yOiBBdGluIE1hbGF2aXlhIDxhdGluLm1hbGF2aXlhQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEZlYiAzIDE1OjE3OjEwIDIwMDkgLTA1MDAKCiAgICBBZGRlZCB1c2J0dHlfY29uZmlndXJlZCgpIGNoZWNrLiBGaXhlZCBhdHRyaWJ1dGUocGFja2VkKSB3YXJuaW5ncy4KCiAgICBWMzogRml4ZWQgbGluZS13cmFwIHByb2JsZW0gZHVlIHRvIHVzZXIgZXJyb3IgaW4gbWFpbCEKCiAgICBBZGRlZCB1c2JfY29uZmlndXJlZCgpIGNoZWNrcyBpbiB1c2J0dHlfcHV0cygpIGFuZCB1c2J0dHlfcHV0YygpIHRvIGdldCBhcm91bmQgYSBoYW5nCiAgICB3aGVuIHVzYiBpcyBub3QgY29ubmVjdGVkIGFuZCB0aGUgdXNlciBoYXMgc2V0IHVwIG11bHRpLWlvIChzZXRlbnYgc3Rkb3V0IHNlcmlhbCx1c2J0dHkgZXRjKS4KICAgIEdvdCByaWQgb2YgcmVkdW5kYW50IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIGRpcmVjdGl2ZXMgdGhhdCB3ZXJlIGNhdXNpbmcgd2FybmluZ3MgZnJvbSBnY2MuCgogICAgU2lnbmVkLW9mZi1ieTogQXRpbiBNYWxhdml5YSA8YXRpbi5tYWxhdml5YUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBlN2RlMThhZmU4ZWNmOTZhNTFlZjk4MWQwNjA2NmVlYjZiMTI1NGU3CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglGcmkgRmViIDEzIDA5OjIzOjM2IDIwMDkgKzAxMDAKCiAgICBpLk1YMzE6IFN0YXJ0IHRoZSBJMkMgY2xvY2sgb24gZHJpdmVyIGluaXRpYWxpc2F0aW9uCgogICAgaS5NWDMxIHBvd2VycyBvbiB3aXRoIG1vc3QgY2xvY2tzIHJ1bm5pbmcsIHNvLCBhZnRlciBhIHBvd2VyIG9uIHRoaXMgZXhwbGljaXQKICAgIGNsb2NrIHN0YXJ0IHVwIGlzIG5vdCByZXF1aXJlZC4gSG93ZXZlciwgYXMgTGludXggYm9vdHMgaXQgZGlzYWJsZXMgbW9zdCBjbG9ja3MKICAgIHRvIHNhdmUgcG93ZXIuIFRoaXMgaW5jbHVkZXMgdGhlIEkyQyBjbG9jay4gSWYgd2UgdGhlbiBzb2Z0IHJlYm9vdCBmcm9tIExpbnV4CiAgICB0aGUgSTJDIGNsb2NrIHN0YXlzIG9mZi4gVGhpcyBicmVha3MgdGhlIHBoeWNvcmUsIHdoaWNoIGhhcyBpdHMgZW52aXJvbm1lbnQgaW4KICAgIEkyQyBFRVBST00uIEZpeCB0aGUgcHJvYmxlbSBieSBleHBsaWNpdGx5IHN0YXJ0aW5nIHRoZSBjbG9jayBpbiBJMkMgZHJpdmVyCiAgICBpbml0aWFsaXNhdGlvbiByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIEFjay1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNTIwOGFjOWVhZTFjMzQwYzRiYzExZjcwY2JmNWM5ZGE3OGE1N2JhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgRmViIDExIDIwOjM2OjE0IDIwMDkgLTA1MDAKCiAgICBpMmMuaDogZHJvcCBpMmNfcmVnX3tyZWFkLCB3cml0ZX0gaGFjayBmb3IgQmxhY2tmaW4gcGFydHMKCiAgICBUaGUgQmxhY2tmaW4gaTJjIGRyaXZlciBoYXMgYmVlbiByZXdyaXR0ZW4gdGh1cyB0aGUgc3BlY2lhbCBpZmRlZnMgaW4gdGhlCiAgICBjb21tb24gY29kZSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzJkOWJlZmEwYjQ2OTViODk0NzZmYjVkMjU5NzQyYzA5YWZlMjQzZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRmViIDEyIDA4OjA4OjU0IDIwMDkgKzAxMDAKCiAgICA4Mnh4LCBtZ2NvZ2U6IGZpeCBjb21waWxlIGVycm9yCgogICAgV2l0aCBhY3R1YWwgdS1ib290IGNvbXBpbGluZyB0aGUgbWdjb2dlIHBvcnQgZmFpbHMsIGJlY2F1c2UKICAgIHNpbmNlIGNvbW1pdCBiYTcwNWI1YjFhOTdiNDczODhlZDQ4ODU4YmVmNmJmN2I2YmZjZDU2IGl0IGlzCiAgICBuZWNlc3NhcnkgdG8gZGVmaW5lIENPTkZJR19ORVRfTVVMVEkuCgogICAgU2VlbXMgdG8gbWUgdGhlIG1nY29nZSBwb3J0IGlzIHRoZSBvbmx5IGFjdHVhbCBleGlzdGluZyA4MjYwCiAgICBwb3J0IHdobyB1c2VzIENPTkZJR19FVEhFUl9PTl9TQ0MsIHNvIG5vIG90aGVyIDgyNjAgcG9ydCBuZWVkZWQKICAgIHRvIGJlIGZpeGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDljYWNmNGZjNDAzNWVhYmU5ZDlhZTJhOWExODhjNTFhODAyN2M5MWUKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglNb24gRmViIDkgMDg6MTg6MzQgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogQWRkIFJFQURNRSBlbnRyeSBmb3IgQ09ORklHX1BDSV9ESVNBQkxFX1BDSUUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDczNjlmMGUzODRlMmE4MzFiZTEzYTc3NzNhNTgyNDJjOTE3M2ZhOWMKQXV0aG9yOiBDYXJvbHluIFNtaXRoIDxjYXJvbHluLnNtaXRoQHRla3Ryb25peC5jb20+CkRhdGU6CVRodSBGZWIgMTIgMDY6MTM6NDQgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRml4IGluaXRpYWxpemF0aW9uIG9mIHRoZSBTRFJBTV9DT0RUIHJlZ2lzdGVyCgogICAgVGhpcyBmaXhlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFNEUkFNX0NPRFQgcmVnaXN0ZXIgaW4gdGhlIHBwYzR4eCBERFIyCiAgICBpbml0aWFsaXphdGlvbiBjb2RlLiBJdCBhbHNvIHJlbW92ZXMgdXNlIG9mIHRoZSBTRFJBTV9DT0RUX0ZFRURCQUNLX1JDVl9TSU5HTEVfRU5ECiAgICBhbmQgU0RSQU1fQ09EVF9GRUVEQkFDS19EUlZfU0lOR0xFX0VORCAjZGVmaW5lJ3Mgc2luY2UgdGhleSBhcmUgcmVzZXJ2ZWQgYml0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDYXJvbHluIFNtaXRoIDxjYXJvbHluLnNtaXRoQHRla3Ryb25peC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2VmMGVmYWYyZmE1NWQxZjI1MDY2Y2ZiMDJiZDk4NGMyN2Y5Y2EzMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAxMSAwOToyOTozMyAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIGJvYXJkX2V0aF9pbml0KCkgdnMgY3B1X2V0aF9pbml0KCkgb24gQU1DQyBib2FyZHMKCiAgICBTb21lIEFNQ0MgZXZhbCBib2FyZHMgZG8gaGF2ZSBhIGJvYXJkX2V0aF9pbml0KCkgZnVuY3Rpb24gY2FsbGluZwogICAgcGNpX2V0aF9pbml0KCkuIFRoZXNlIGJvYXJkcyBuZWVkIHRvIGNhbGwgY3B1X2V0aF9pbml0KCkgZXhwbGljaXRseSBub3cKICAgIHdpdGggdGhlIG5ldyBldGhfaW5pdCByZXdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM2NDUwMTJhZWZlYmIzMDFlNjkwN2QxNDhjNmM4ZWZhY2FjMDQ5ZDQKQXV0aG9yOiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KRGF0ZToJTW9uIEZlYiA5IDEzOjE4OjEyIDIwMDkgLTA4MDAKCiAgICBwcGM0eHg6IEF1dG9jYWxpYnJhdGlvbiBjYW4gc2V0IFJEQ0MgdG8gb3ZlciBhZ2dyZXNzaXZlIHZhbHVlLgoKICAgIFRoZSBjcml0ZXJpYSBvZiB0aGUgQU1DQyBTRFJBTSBDb250cm9sbGVyIEREUiBhdXRvY2FsaWJyYXRpb24KICAgIFUtQm9vdCBjb2RlIGlzIHRvIHBpY2sgdGhlIGxhcmdlc3QgcGFzc2luZyB3cml0ZS9yZWFkL2NvbXBhcmUKICAgIHdpbmRvdyB0aGF0IGFsc28gaGFzIHRoZSBzbWFsbGVzdCBTRFJBTV9SRENDLltSRFNTXSBSZWFkIFNhbXBsZQogICAgQ3ljbGUgU2VsZWN0IHZhbHVlLgoKICAgIE9uIHNvbWUgS2lsYXVlYSBib2FyZHMgdGhlIEREUiBhdXRvY2FsaWJyYXRpb24gYWxnb3JpdGhtIGNhbgogICAgZmluZCBhIGxhcmdlIHBhc3Npbmcgd3JpdGUvcmVhZC9jb21wYXJlIHdpbmRvdyB3aXRoIGEgc21hbGwKICAgIFNEUkFNX1JEQ0MuW1JEU1NdIGFnZ3Jlc3NpdmUgdmFsdWUgb2YgUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0CiAgICB2YWx1ZSAiVDEgU2FtcGxlIi4KCiAgICBUaGlzIFNEUkFNX1JEQ0MuW1JEU1NdIFJlYWQgU2FtcGxlIEN5Y2xlIFNlbGVjdCB2YWx1ZSBvZgogICAgIlQxIFNhbXBsZSIgcHJvdmVzIHRvIGJlIHRvIGFnZ3Jlc3NpdmUgd2hlbiBsYXRlciBvbiBVLUJvb3QKICAgIHJlbG9jYXRlcyBpbnRvIEREUiBtZW1vcnkgYW5kIGV4ZWN1dGVzLgoKICAgIFRoZSBtZW1vcnkgdHJhY2VzIG9uIHRoZSBLaWxhdWVhIGJvYXJkIGFyZSBzaG9ydCBzbyBvbiBzb21lCiAgICBLaWxhdWVhIGJvYXJkcyB0aGUgU0RSQU1fUkRDQy5bUkRTU10gUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0CiAgICB2YWx1ZSBvZiAiVDEgU2FtcGxlIiBzaG93cyB1cCBhcyBhIHBvdGVudGlhbGx5IHZhbGlkIHZhbHVlIGZvcgogICAgdGhlIEREUiBhdXRvY2FsaWJyYXRpaW9uIGFsZ29yaXRobS4KCiAgICBUaGUgZml4IGlzIHRvIGRlZmluZSBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiB3aGljaCBwcm92aWRlcwogICAgdGhlIG1pbmltdW0gU0RSQU1fUkRDQy5bUkRTU10gUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0IHZhbHVlCiAgICB0byBhY2NlcHQgZm9yIEREUiBhdXRvY2FsaWJyYXRpb24uCVRoZSBkZWZhdWx0IHdpbGwgYmUgdGhlCiAgICAiVDIgU2FtcGxlIiB2YWx1ZS4JQSBib2FyZCBkZXZlbG9wZXIgd2hvIGhhcyBhIHdlbGwgZGVmaW5lZAogICAgYm9hcmQgYW5kIGNob29zZXMgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIGNhbiBhbHdheXMgcHJvdmlkZQogICAgdGhlaXIgb3duIGJvYXJkIHNwZWNpZmljIHN0cmluZyBmdW5jdGlvbiB3aXRoIHRoZSBtb3JlCiAgICBhZ2dyZXNzaXZlICJUMSBTYW1wbGUiIHZhbHVlIG9yIHN0aWNrIHdpdGggdGhlIGRlZmF1bHQKICAgIG1pbmltdW0gU0RSQU1fUkRDQy5bUkRTU10gdmFsdWUgb2YgIlQyIi4KCiAgICBBbHNvIHB1dCBpbiBhIGF1dG9jYWxpYnJhdGlvbiBsb29wIGZpeCBmb3IgY2FzZSB3aGVyZSBjdXJyZW50CiAgICB3cml0ZS9yZWFkL2NvbXBhcmUgcGFzc2luZyB3aW5kb3cgc2l6ZSBpcyB0aGUgc2FtZSBhcyBhIHByaW9yCiAgICB3aW5kb3cgc2l6ZSwgdGhlbiBpbiB0aGlzIGNhc2UgY2hvb3NlIHRoZSB3cml0ZS9yZWFkL2NvbXBhcmUKICAgIHJlc3VsdCB0aGF0IGhhcyB0aGUgYXNzb2NpYXRlZCBzbWFsbGVzdCBSRENDIFQtU2FtcGxlIHZhbHVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJlZGU4NzlmY2I2NzQ3MDUyNDg0N2JiNGZjODk3MjY1MWJiNDYxODQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBGZWIgMTEgMDk6Mzc6MTIgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBDT05GSUdfTUFYX01FTV9NQVBQRUQgaW4gaW5jbHVkZS9hc20tcHBjL2NvbmZpZy5oCgogICAgQ09ORklHX1NEUkFNX1BQQzR4eF9JQk1fRERSMiBpcyBub3Qgc2V0IHdoZW4gaW5jbHVkZS9hc20tcHBjL2NvbmZpZy5oIGlzCiAgICBpbmNsdWRlZC4gU28gZm9yIGthdG1haSwgQ09ORklHX01BWF9NRU1fTUFQUEVEIHdpbGwgZ2V0IHNldCB0byAyNTZNQi4KCiAgICBJdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRvIHNldCBDT05GSUdfTUFYX01FTV9NQVBQRUQgdG8gMkdCIGZvciBhbGwgUFBDNHh4CiAgICBib2FyZHMgcmlnaHQgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMTVjNjUxNWZjMjNmODNjNTFmM2RlMjcyY2EyM2Q4NmI4MGU4MWIxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxMiAwMDowODozOSAyMDA5ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVmYzU2YjkwN2Q5OTMyNjBiOWViZGIxMzdhZjY2ZmU2OTYzNWFlOWUKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglGcmkgSmFuIDMwIDE2OjM2OjQwIDIwMDkgLTA2MDAKCiAgICBBZGQgZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgMjU1ZDI4ZTE2NDJlOGZjMzJhNjc1MzIyNmJlMWE5NmI0ODFjZTExMQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRmViIDEwIDA5OjMyOjM4IDIwMDkgKzAxMDAKCiAgICA4eHggc2VyaWFsLCBzbWM6IENvZGluZy1TdHlsZSBjbGVhbnVwIHNlcmlhbCBTTUMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMmIzZjEyYzIxNDM0NjUwOGNhZTNmMTI0NTgwOGMxY2E1NGM4MWZkZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUdWUgRmViIDEwIDA5OjMxOjQ3IDIwMDkgKzAxMDAKCiAgICA4eHggc2VyaWFsLCBzbWM6IGFkZCBjb25maWd1cmFibGUgU01DIFJ4IGJ1ZmZlciBsZW4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19TWVNfU01DX1JYQlVGTEVOLgogICAgV2l0aCB0aGlzIG9wdGlvbiBpdCBpcyBwb3NzaWJsZSB0byBhbGxvdyB0aGUgcmVjZWl2ZQogICAgYnVmZmVyIGZvciB0aGUgU01DIG9uIDh4eCB0byBiZSBncmVhdGVyIHRoZW4gMS4gSW4gY2FzZQogICAgQ09ORklHX1NZU19TTUNfUlhCVUZMRU4gPT0gMSB0aGlzIGRyaXZlciB3b3JrcyBhcyB0aGUKICAgIG9sZCB2ZXJzaW9uLgoKICAgIFdoZW4gZGVmaW5pbmcgQ09ORklHX1NZU19TTUNfUlhCVUZMRU4gYWxzbwogICAgQ09ORklHX1NZU19NQVhJRExFIG11c3QgYmUgZGVmaW5lZCB0byBzZXR1cCB0aGUgbWF4aW11bQogICAgaWRsZSB0aW1lb3V0IGZvciB0aGUgU01DLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGU5MTVmOGJiNzNkNzQxNzhiYzIxZDNhNDU3OTU5ODgzYjFhZmQxYzAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgNSAyMTowNDozNiAyMDA5IC0wNTAwCgogICAgY29tbW9uL3todXNoLCBrZ2RiLCBzZXJpYWx9LmM6IGJ1aWxkIGJ5IENPQkpTLSQoLi4uKSBpbiBNYWtlZmlsZQoKICAgIE1vdmUgZ2xvYmFsICcjaWZkZWYgQ09ORklHX3h4eCAuLi4uICNlbmRpZicgb3V0IG9mIHRoZSAuYyBmaWxlcyBhbmQgaW50bwogICAgdGhlIENPQkpTLSQoQ09ORklHX3h4eCkgaW4gdGhlIE1ha2VmaWxlLiAgQWxzbyBkZWxldGUgdW51c2VkIHZhciBpbiBrZ2RiCiAgICBjb2RlIGluIHRoZSBwcm9jZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhYjc2ZTk4NDhhMWY0ZGI2NGQxNDIzMzc0MWQ3MzlhM2IzMzYwYzkzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgRmViIDUgMjE6MDQ6NTAgMjAwOSAtMDUwMAoKICAgIGJ6aXAyOiBtb3ZlIGlmZGVmIGhhbmRsaW5nIHRvIE1ha2VmaWxlIENPQkpTLSQoLi4uKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhZTBiMDVkZjA0ZTFjYzY1YzVhZDE5Y2NkMzYyZjRiZTgyZGY3MzE2CkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglUaHUgRmViIDUgMjI6MTg6MDIgMjAwOSAtMDUwMAoKICAgIEZpeCB3aGl0ZXNwYWNlIGRhbWFnZTogZG91YmxlIHNwYWNlIGNoYW5nZWQgdG8gYSB0YWIKCiAgICBBdCBzb21lIHBvaW50IGFuIGludGVudGlvbmFsIGRvdWJsZSBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBzZW50ZW5jZQogICAgZ290IGNoYW5nZWQgaW50byBhIHRhYiBpbiB0aGUgR1BMIGhlYWRlciBsaW5lOgogICAgICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRhbWFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDRmOTc1Njc4ZGU5OTViNTU3NDlkNWU4NDU5MGMyNjg5NzJhN2M4MzUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAxMCAwOTo1MzoyOSAyMDA5ICswMTAwCgogICAgY2ZpOiBtYWtlIGZsYXNoX2dldF9pbmZvKCkgbm9uIHN0YXRpYwoKICAgIElmIG9uIHlvdXIgYm9hcmQgaXMgbW9yZSB0aGFuIG9uZSBmbGFzaCwgeW91IG11c3Qga25vdwogICAgdGhlIHNpemUgb2YgZXZlcnkgc2luZ2xlIGZsYXNoLCBmb3IgZXhhbXBsZSwgZm9yIHVwZGF0aW5nCiAgICB0aGUgRFRTIGJlZm9yZSBib290aW5nIExpbnV4LiBTbyBtYWtlIHRoaXMgZnVuY3Rpb24KICAgIGZsYXNoX2dldF9pbmZvKCkgZXh0ZXJuLCBhbmQgeW91IGNhbiBoYXZlIGFsbCBpbmZvCiAgICBhYm91dCB5b3VyIGZsYXNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODYzMjFmYzExMjhjOTNhMTBhYzRhZmI5ZDMxN2IwZGY4ZWNlMGY5ZQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVRodSBGZWIgNSAyMzo1ODoyNSAyMDA5IC0wODAwCgogICAgbmV0OiByZW1vdmVkIGJvYXJkLXNwZWNpZmljIENPTkZJR3MgZnJvbSBNUEM1eHh4IEZFQyBkcml2ZXIKCiAgICBBZGRlZCBuZXcgQ09ORklHIG9wdGlvbnMgZm9yIHRoZSB0aHJlZSB0eXBlIG9mIE1BQy1QSFkgaW50ZXJjb25uZWN0IGFuZAogICAgYXBwbGllZCB0aGVtIGFsbCByZWxldmFudCBib2FyZCBjb25maWcgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDYzOGVkM2UyOTZlNzBmYWIyODZkMTU3YjdhZGVkYWFhNGEwOWE0NzQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBGZWIgNSAyMTowNDo0NyAyMDA5IC0wNTAwCgogICAgbmV0L3NudHAuYzogbW92ZSBpZmRlZiBpbnRvIE1ha2VmaWxlIENPQkpTLSQoLi4uKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWU1YmU4MjE0YmE3NTE0MzZlNTdjM2JlMDQ0YmY2ZGNjYjlhNjY4NwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAzIDE4OjI2OjQxIDIwMDkgLTA2MDAKCiAgICB0c2VjOiBGaXggYSBidWcgaW4gc29mdC1yZXNldHRpbmcKCiAgICBTT0ZUX1JFU0VUIG11c3QgYmUgYXNzZXJ0ZWQgZm9yIGF0IGxlYXN0IDMgVFggY2xvY2tzLiAgVXN1YWxseSwgdGhhdCdzIGFib3V0IDMwCiAgICBjbG9jayBjeWNsZXMsIHNvIGl0J3MgYmVlbiBtb3N0bHkgd29ya2luZy4JQnV0IHdlIGhhZCBubyBndWFyYW50ZWUsIGFuZCBhdAogICAgc2xvd2VyIGJpdHJhdGVzLCBpdCdzIGp1c3Qgb3ZlciBhIG1pY3Jvc2Vjb25kIChvdmVyIDEwMDAgY2xvY2sgY3ljbGVzKS4gIFRoaXMKICAgIGVuZm9yY2VzIGEgMiBtaWNyb3NlY29uZCBnYXAgYmV0d2VlbiBhc3NlcnRpb24gYW5kIGRlYXNzZXJ0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMDlmY2M4YjVkODY5MDNiNzZlN2U0ZDFkODc5ZDZmNGJjYTI1YzI3YgpBdXRob3I6IFNpbW9uIE11bnRvbiA8c2ltb25Abmlkb3Jhbi5tNWRhdGEuY29tPgpEYXRlOglNb24gRmViIDIgMDk6NDQ6MDggMjAwOSArMDAwMAoKICAgIEZpeCAxMDBNYnMgZXRoZXJuZXQgb3BlcmF0aW9uIG9uIHNoNzc2MyBiYXNlZCBib2FyZHMKCiAgICAxMDBNYnMgZXRoZXJuZXQgZG9lcyBub3Qgd29yayBvbiBzaDc3NjMgY2hpcHMgZHVlIHRvIHRoZSB3cm9uZyB2YWx1ZSBiZWluZwogICAgdXNlZCBpbiB0aGUgR0VDTVIgcmVnaXN0ZXIuIEZvbGxvd2luZyBkaWZmIGZpeGVzIHRoZSBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogU2ltb24gTXVudG9uCTxzaW1vbkBuaWRvcmFuLm01ZGF0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDJiYzJhOGY2ZGM5ZmRkYTQ2NTMxN2RhNTk0NzRlNjVjMjRhMzk4YTIKQXV0aG9yOiBrc2lAa29pOC5uZXQgPGtzaUBrb2k4Lm5ldD4KRGF0ZToJRnJpIEZlYiA2IDE2OjI3OjU1IDIwMDkgLTA4MDAKCiAgICBGaXggTVBDODI2MCB3aXRoIGV0aGVybmV0IG9uIFNDQwoKICAgIFRoaXMgZml4ZXMgTVBDODI2MCBjb21waWxhdGlvbiB3aXRoIGV0aGVybmV0IG9uIFNDQy4gUHJvYmFibHkgd2FzIGEKICAgIHR5cG8gb3Igc29tZXRoaW5nLi4uCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGFlNWQ4ZjYxM2NlYzFhNmFmN2JmMWZjOWM0MmEzYjg1NmYwMjEwMjMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIEphbiAzMCAxMjo1NjoxNSAyMDA5ICswMTAwCgogICAgODJ4eCBzZXJpYWwsIHNtYzogQ29kaW5nLVN0eWxlIGNsZWFudXAgc2VyaWFsIFNNQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBjOTJmYWM5MWEwNmM2MGY4NzRjNjA1ZTNjYTgwZGQ0MDdjMWNhYWE3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMzAgMTI6NTU6MzggMjAwOSArMDEwMAoKICAgIDgyeHggc2VyaWFsLCBzbWM6IGFkZCBjb25maWd1cmFibGUgU01DIFJ4IGJ1ZmZlciBsZW4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19TWVNfU01DX1JYQlVGTEVOLgogICAgV2l0aCB0aGlzIG9wdGlvbiBpdCBpcyBwb3NzaWJsZSB0byBhbGxvdyB0aGUgcmVjZWl2ZQogICAgYnVmZmVyIGZvciB0aGUgU01DIG9uIDgyeHggdG8gYmUgZ3JlYXRlciB0aGVuIDEuIEluIGNhc2UKICAgIENPTkZJR19TWVNfU01DX1JYQlVGTEVOID09IDEgdGhpcyBkcml2ZXIgd29ya3MgYXMgdGhlCiAgICBvbGQgdmVyc2lvbi4KCiAgICBXaGVuIGRlZmluaW5nIENPTkZJR19TWVNfU01DX1JYQlVGTEVOIGFsc28KICAgIENPTkZJR19TWVNfTUFYSURMRSBtdXN0IGJlIGRlZmluZWQgdG8gc2V0dXAgdGhlIG1heGltdW0KICAgIGlkbGUgdGltZW91dCBmb3IgdGhlIFNNQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBiY2VkN2NjZWZhMDg1MTJjNTRhNmQxNDY2NThmZjdkYmMzM2Q1ZGZlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiA2IDA4OjA4OjA2IDIwMDkgLTA2MDAKCiAgICBwcGM6IEZpeCByb2xsIG92ZXIgYnVnIGluIGZsdXNoX2NhY2hlKCkKCiAgICBJZiB3ZSBjYWxsIGZsdXNoX2NhY2hlKDB4ZmZmZmYwMDAsIDB4MTAwMCkgaXQgd291bGQgbmV2ZXIKICAgIHRlcm1pbmF0ZSB0aGUgbG9vcCBzaW5jZSBlbmQgPSAweGZmZmZmZmZmIGFuZCB3ZSdkIHJvbGwgb3ZlcgogICAgb3VyIGNvdW50ZXIgZnJvbSAweGZmZmZmZTAgdG8gMCAoYXNzdW1pbmcgYSAzMi1ieXRlIGNhY2hlIGxpbmUpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4N2M5MDYzOTYzNTYxZDNkMDEwNjRiZTM0ZDBjMzA4NTVhNTY1ODdiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEZlYiA1IDIwOjQwOjU4IDIwMDkgLTA2MDAKCiAgICBwcGM6IE1vdmUgQ09ORklHX01BWF9NRU1fTUFQUEVEIHRvIGNvbW1vbiBjb25maWcuaAoKICAgIE1vdmVkIENPTkZJR19NQVhfTUVNX01BUFBFRCB0byB0aGUgYXNtL2NvbmZpZy5oIHNvIGl0cyBrZXB0IGNvbnNpc3RlbnQKICAgIGJldHdlZW4gdGhlIHR3byBjdXJyZW50IHVzZXJzIChsaWJfcHBjL2JvYXJkLmMsIDQ0eCBTUEQgRERSMikuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDdkNDFjYzNhMTFhMDNjNmQ1NjE0NmQwNTYxNDVkZjczZjQ3ZWI1MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBGZWIgNSAyMDo0MDo1NyAyMDA5IC0wNjAwCgogICAgQWRkIGFuIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb25maWcuaCBmb3IgY29tbW9uIGRlZmluZXMKCiAgICBXZSBoYXZlIGNvbW1vbiBkZWZpbmVzIHRoYXQgd2UgZHVwbGljYXRlIGluIHZhcmlvdXMgd2F5cy4gIEhhdmluZyBhbgogICAgYXJjaCBzcGVjaWZpYyBjb25maWcuaCBnaXZlcyB1cyBhIGNvbW1vbiBsb2NhdGlvbiBmb3IgdGhvc2UgZGVmaW5lcy4KCiAgICBFdmVudHVhbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhpcyB3aGVuIHdlIGhhdmUgcHJvcGVyCiAgICBLY29uZmlnIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0Yzc4ZDRhNmMwMTYyMTcyMWI3MzI0MThlMWM2ZGE2ODRhNTZiYmIxCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRmViIDMgMTg6MTA6NTYgMjAwOSAtMDYwMAoKICAgIG1wYzg2NDFocGNuOiBDaGFuZ2UgUENJIE1FTSBwY2kgYnVzIGFkZHJlc3MKCiAgICBOb3cgdGhhdCB0aGUgcmVzdCBvZiB1LWJvb3QgY2FuIHN1cHBvcnQgaXQsIGNoYW5nZSB0aGUgUENJIGJ1cwogICAgYWRkcmVzcyBvZiB0aGUgUENJIE1FTSByZWdpb25zIGZyb20gMHg4MDAwMDAwMCB0byAweGMwMDAwMDAwLAogICAgYW5kIHVzZSB0aGUgc2FtZSBidXMgYWRkcmVzcyBmb3IgYm90aCBQQ0kxIGFuZCBQQ0kyLiAgVGhpcyB3aWxsCiAgICBtYXhpbWl6ZSB0aGUgYW1vdW50IG9mIFBDSSBhZGRyZXNzIHNwYWNlIGxlZnQgb3ZlciB0byBtYXAgUkFNCiAgICBvbiBzeXN0ZW1zIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE3ODVkYmVlZDQzNTk5ZWVkMWQ4ODc1NjczYzk2OTEyY2Q3NzAxNDEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1NSAyMDA5IC0wNjAwCgogICAgZHJpdmVycy9ibG9jay9haGNpOiBGaXggcGNpIG1hcHBpbmcgYnVnCgogICAgVGhlIGNvZGUgYXNzdW1lcyB0aGF0IHRoZSBwY2kgYnVzIGFkZHJlc3MgYW5kIHRoZSB2aXJ0dWFsCiAgICBhZGRyZXNzIHVzZWQgdG8gYWNjZXNzIGEgcmVnaW9uIGFyZSB0aGUgc2FtZSwgYnV0IHRoZXkgbWlnaHQKICAgIG5vdCBiZS4gIEZpeCB0aGlzIGFzc3VtcHRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGQ1OTFhODBlNzQwOTFlN2EwNjU4ZDE2NTcyMWU2YzdkZTJlZjBiY2QKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1NCAyMDA5IC0wNjAwCgogICAgTVBDODY0MUhQQ046IEVuYWJsZSBDT05GSUdfQUREUl9NQVAKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDlmNDZmM2JmMDhhYWY3YjFkYjEzMWExMDgyZjFlNjAzYmI3YTk0YgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjUzIDIwMDkgLTA2MDAKCiAgICBtcGM4NjQxaHBjbjogQ2xlYW4gdXAgUENJIG1hcHBpbmcgY29uY2VwdHMKCiAgICBDbGVhbiB1cCBQQ0kgbWFwcGluZyBjb25jZXB0cyBpbiB0aGUgODY0MSBjb25maWcgLSByZW5hbWUgX0JBU0UKICAgIHRvIF9CVVMsIGFzIGl0J3MgYWN0dWFsbHkgYSBQQ0kgYnVzIGFkZHJlc3MsIHNlcGFyYXRlIHZpcnR1YWwKICAgIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgaW50byBfVklSVCBhbmQgX1BIWVMsIGFuZCB1c2UgZWFjaAogICAgYXBwb3ByaWF0ZWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjOTMxNWU2YjRmMjQ0OTgxZGUwYjJlYWFhMjlhNzgzOGExNjViNDk0CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRmViIDMgMTg6MTA6NTIgMjAwOSAtMDYwMAoKICAgIG1wYzg2eHg6IEFkZCBzdXBwb3J0IHRvIHBvcHVsYXRlIGFkZHIgbWFwIGJhc2VkIG9uIEJBVHMKCiAgICBJZiBDT05GSUdfQUREUl9NQVAgaXMgZW5hYmxlZCwgdXBkYXRlIHRoZSBhZGRyZXNzIG1hcAogICAgd2hlbmV2ZXIgd2Ugd3JpdGUgYSBiYXQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGQzNWFlNWE5Mzg2NzliZDdlMTgxNjdmYWY3OWQwZmIzYzY2MzliNTEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo1MSAyMDA5IC0wNjAwCgogICAgcG93ZXJwYzogTW92ZSBkdXBsaWNhdGVkIEJBVCBkZWZpbmVzIHRvIG1tdS5oCgogICAgVGhlIEJBVCBmaWVsZHMgYXJlIGFyY2hpdGVjdGVkOyB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZXNlIHRvIGJlIGluCiAgICBjcHUtc3BlY2lmaWMgZmlsZXMuICBEcm9wIHRoZSBkdXBsaWNhdGlvbiBhbmQgbW92ZSB0aGVzZSB0bwogICAgaW5jbHVkZS9hc20tcHBjL21tdS5oLiAgQWxzbywgcmVtb3ZlIHRoZSBCTF94eHggZGVmaW5lcyB0aGF0IHdlcmUgb25seQogICAgdXNlZCBieSB0aGUgYWxhc2thIGJvYXJkLCBhbmQgc3dpdGNoIHRvIHVzaW5nIHRoZSBCQVRVX0JMX3h4eCBkZWZpbmVzCiAgICB1c2VkIGJ5IGFsbCB0aGUgb3RoZXIgYm9hcmRzLiAgVGhlIEJMXyBkZWZpbmVzIHByZXZpb3VzbHkgaW4gdXNlCiAgICBoYWQgdG8gYmUgc2hpZnRlZCBpbnRvIHRoZSBwcm9wZXIgcG9zaXRpb24gZm9yIHVzZSwgd2hpY2ggd2FzIGluZWZmaWNpZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2ZTYxZmFlNGQzNjBhMTM4MGI2M2U3ZDAwN2IzMTQ3N2UzNjZiY2NlCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRmViIDMgMTg6MTA6NTAgMjAwOSAtMDYwMAoKICAgIGRyaXZlcnMvcGNpOiBDcmVhdGUgcGNpX21hcF9iYXIgZnVuY3Rpb24KCiAgICBJdCBpcyBubyBsb25nZXIgYWx3YXlzIHRydWUgdGhhdCB0aGUgcGNpIGJ1cyBhZGRyZXNzIGNhbiBiZQogICAgdXNlZCBhcyB0aGUgdmlydHVhbCBhZGRyZXNzIGZvciBwY2kgYWNjZXNzZXMuICBwY2lfbWFwX2JhcigpCiAgICBpcyBjcmVhdGVkIHRvIHJldHVybiB0aGUgdmlydHVhbCBhZGRyZXNzIGZvciBhIHBjaSByZWdpb24uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJlY2NhMzQwMTc3NWIxMjVjM2I5ZmY2NTc2NmJlZmIyMzk4OTQxNGIKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMyAxODoxMDo0OSAyMDA5IC0wNjAwCgogICAgbXBjODY0MWhwY246IFNldCB1cCBvdXRib3VuZCBwY2kgd2luZG93cyBiZWZvcmUgaW5ib3VuZAoKICAgIEJlY2F1c2UgdGhlIGluYm91bmQgcGNpIHdpbmRvd3MgYXJlIG1hcHBlZCBnZW5lcm91c2x5LCBzZXQgdXAKICAgIHRoZSBtb3JlIHNwZWNpZmljIG91dGJvdW5kIHdpbmRvd3MgZmlyc3QuICBUaGlzIHdheSwgd2hlbiB3ZQogICAgc2VhcmNoIHRoZSBwY2kgcmVnaW9ucyBmb3Igc29tZXRoaW5nLCB3ZSB3aWxsIGhpdCBvbiB0aGUgbW9yZQogICAgc3BlY2lmaWMgcmVnaW9uLiAgVGhpcyBjYW4gYWN0dWFsbHkgYmUgYSBwcm9ibGVtIG9uIHN5c3RlbXMKICAgIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGI4MWI3NzNlYWQwNjg3MTE0ZGM4YTgwMGY5OWVhNmU1MDQ0NDc3MzkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgMiAxNjozNDo1MiAyMDA5IC0wNjAwCgogICAgbXBjODY0MWhwY246IFVzZSBwaHlzaWNhbCBhZGRyZXNzIGluIGZsYXNoIGJhbmtzIGRlZmludGlvbgoKICAgIElmIHRoZSBWQSBhbmQgUEEgb2YgdGhlIGZsYXNoIGFyZW4ndCB0aGUgc2FtZSwgdGhlIGJhbmtzIGxpc3QKICAgIHNob3VsZCBiZSBpbml0aWFsaXplZCB0byBob2xkIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiAgQ29ycmVjdCB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZDE5ZjZjOGNiZTcxYjllNmQ4YzZiZDY3NDJlZDI1NTFlOTE4ODcwCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBGZWIgMTAgMDA6MjI6MzEgMjAwOSArMDEwMAoKICAgIHFvbmc6IHN1cHBvcnQgZm9yIERhdmUvREVOWCBRb25nRVZCLUxJVEUgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRGF2ZS9ERU5YIFFvbmdFVkItTElURSBpLk1YMzEtYmFzZWQgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYyY2JjNDA4ZjUyZmM5YTVlYjg0OWUwYjg4MmM1MDQ3ODBjOWQxODMKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJTW9uIEZlYiA5IDE4OjQ1OjI4IDIwMDkgKzAxMDAKCiAgICBkbmV0OiBkcml2ZXIgZm9yIERhdmUgRE5FVCBldGhlcm5ldCBjb250cm9sbGVyCgogICAgRHJpdmVyIGZvciBEYXZlIERORVQgZXRoZXJuZXQgY29udHJvbGxlciAodXNlZCBvbiBEYXZlL0RFTlgKICAgIFFvbmdFVkItTElURSBib2FyZCkuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyZDQzZTg3M2EyOWNhNDk1OWJhNmEzMGZjN2ZiMzk2ZDNmZDBkY2NmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiA2IDA5OjQ5OjMyIDIwMDkgLTA2MDAKCiAgICBwY2k6IGdpdmUgcHJlZmVyZW5jZSB0byBub24tUENJX1JFR0lPTl9TWVNfTUVNT1JZIHJlZ2lvbnMgd2hlbiBtYXRjaGluZwoKICAgIFdoZW4gd2Ugc2VhcmNoIGZvciBhbiBhZGRyZXNzIG1hdGNoIGluIHBjaV9ob3NlX3twaHlzX3RvX2J1cyxidXNfdG9fcGh5c30KICAgIHdlIHNob3VsZCBnaXZlIHByZWZlcmVuY2UgdG8gbWVtb3J5IHJlZ2lvbnMgdGhhdCBhcmVuJ3Qgc3lzdGVtIG1lbW9yeS4KCiAgICBJdHMgcG9zc2libGUgdGhhdCB3ZSBoYXZlIG92ZXIgbWFwcGVkIHN5c3RlbSBtZW1vcnkgaW4gdGhlIHJlZ2lvbnMgYW5kCiAgICB3ZSB3YW50IHRvIGF2b2lkIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgb2YgdGhlIHJlZ2lvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZjRlNjZlOTNjMWFkNDc2NDRiZTNiNGZmZDZhNDZlMWNlOWI2NjEyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiA2IDA5OjQ5OjMxIDIwMDkgLTA2MDAKCiAgICBwY2k6IFJlbmFtZSBQQ0lfUkVHSU9OX01FTU9SWSB0byBQQ0lfUkVHSU9OX1NZU19NRU1PUlkgZm9yIGNsYXJpdHkKCiAgICBUaGUgUENJX1JFR0lPTl9NRU1PUlkgYW5kIFBDSV9SRUdJT05fTUVNIGFyZSBhIGJpdCB0byBzaW1pbGFyIGFuZAogICAgY2FuIGJlIGNvbmZ1c2luZyB3aGVuIHJlYWRpbmcgdGhlIGNvZGUuCgogICAgUmVuYW1lIFBDSV9SRUdJT05fTUVNT1JZIHRvIFBDSV9SRUdJT05fU1lTX01FTU9SWSB0byBjbGFyaWZ5IGl0cyB1c2VkCiAgICBmb3Igc3lzdGVtIG1lbW9yeSBtYXBwaW5nIHB1cnBvc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTRkYzUxNzMyODcwOWMyMDRhOWNiZjdhMjUzZDlmOGU2YzRiMjZlYwpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglTdW4gRmViIDggMDA6NTk6NDMgMjAwOSArMDMwMAoKICAgIG14MzE6IGFkZCBHUElPIHJlZ2lzdGVycyBkZWZpbml0aW9ucwoKICAgIEFkZGVkIGRlZmluaXRpb25zIGZvciBpLk1YMzEgcHJvY2Vzc29yIEdQSU8gcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDhkYTYwMTI4MGE4YWNiYzMzODU3ODQ3ODBlZDM1MTMwZTUzODEyZjEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgRmViIDQgMTM6NDc6MjIgMjAwOSAtMDYwMAoKICAgIE5BTkQ6IEFkZCB0aW1lb3V0IGZvciByZXNldCBjb21tYW5kCgogICAgV2l0aG91dCB0aGUgdGltZW91dCBwcmVzZW50IGFuIGluZmluaXRlIGxvb3AgY2FuIG9jY3VyIGlmIHRoZQogICAgTkFORCBkZXZpY2UgaXMgYnJva2VuIG9yIG5vdCBwcmVzZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMGRjNmE5YmVmNzNkN2Q0Y2IyNWIzZmRlMjdlZTkxZjg0ODRiMTI2CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIEZlYiA0IDEzOjM5OjQwIDIwMDkgLTA2MDAKCiAgICBOQU5EOiBTaWxlbmNlIHdhcm5pbmcgd2hlbiBDT05GSUdfU1lTX05BTkRfUVVJRVRfVEVTVAoKICAgIENvbW1pdCBjZmE0NjBhZGZkZWZjYzMwZDEwNGUxYTllZTQ0OTk0ZWUzNDliYjdiIHJlbW92ZWQgc3VwcG9ydAogICAgZm9yIGRpc2FibGluZyB0aGUgIk5vIE5BTkQgZGV2aWNlIGZvdW5kISEhIiB3YXJuaW5nIHdoZW4KICAgIENPTkZJR19TWVNfTkFORF9RVUlFVF9URVNUIHdhcyBkZWZpbmVkLiAgVGhpcyByZS1hZGRzIHN1cHBvcnQKICAgIGZvciBzaWxlbmNpbmcgdGhlIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFkMDlhYjJlM2FjMjhmMzA0MzcyZWNlYjRhNWNiNGQyNGUxMDJhMTMKQXV0aG9yOiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgpEYXRlOglNb24gSmFuIDE5IDE2OjMyOjU5IDIwMDkgKzAyMDAKCiAgICBOQU5EOiBGaXhlZCBpbnZhbGlkIHBvaW50ZXJzIHRvIHN0YXRpYyByZWxvY2F0ZWQgY2hpcCBuYW1lcwoKICAgIERlYXIgV29sZmdhbmcsCgogICAgWW91IGFyZSByaWdodCwgdGhlIHBhdGNoIHdhcyB1Z2x5LgogICAgVGhlIG5ldyBvbmUgc2VlbXMgdG8gYmUgYmV0dGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlN2RlZWMxYmY2ZmEzYjNhMjFjZDhkMTRmZTJhOTA5YTQyZWZjOWQ4CkF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KRGF0ZToJTW9uIEZlYiAyIDE4OjIwOjEyIDIwMDkgLTA2MDAKCiAgICBBUk06T01BUDM6Wm9vbTE6IEFkZCBuYW5kIHVubG9jayBvcHRpb24KCiAgICBFbmFibGUgTkFORF9VTkxPQ0sgb3B0aW9uIGZvciB1bmxvY2tpbmcgbmFuZCBmb3IKICAgIGVyYXNlL3dyaXRlIG9wZXJhdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgoKY29tbWl0IDVhOTQyN2RjOWI4NDM4NzU5ZGIzZjY3YTFlNTQ3MDYyZjc2ZWIxOGQKQXV0aG9yOiBkZXJla0BzaWNvbml4LmNvbSA8ZGVyZWtAc2ljb25peC5jb20+CkRhdGU6CU1vbiBKYW4gMjYgMTQ6MDg6MTcgMjAwOSAtMDcwMAoKICAgIGVudl9uYW5kOiBmaXggZW52IG1lbW9yeSByZWxlYXNlCgogICAgVGhpcyBmaXhlcyBhIGJ1ZyB0aGF0IHRtcCBlbnZpcm9ubWVudCBtZW1vcnkgbm90IGJlaW5nIHJlbGVhc2VkLgoKICAgIFNpZ25lZC1vZmYtYnk6IERlcmVrIE91IDxkb3VAc2ljb25peC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwNWZkODg3NzY0MTlkZjU5ZTdmMzdiYWMwNjNhMjA5NDA5ZGQ4MDFkCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglGcmkgRmViIDYgMTA6Mzc6NDUgMjAwOSArMDEwMAoKICAgIEFSTTogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoKICAgIFRoZSAic2l6ZSIgdmFyaWFibGUgaW4gc3RhcnRfYXJtYm9vdCgpIGluIGxpYl9hcm0vYm9hcmQuYyBpcyBvbmx5IHJlYWxseQogICAgdXNlZCBpbiAiI2lmbmRlZiBDT05GSUdfU1lTX05PX0ZMQVNIIiBjYXNlLCBhbmQgZXZlbiB0aGVyZSBpdCBjYW4gYmUKICAgIGVsaW1pbmF0ZWQgKHRoYW5rcyB0byBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCBmb3IgYSBzdWdnZXN0aW9uLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgNjk4OWU0ZjU0NmQ5NjBhNDA3ZGQ1NDI1ZjgwMGRmZjk3NTFjODEzMgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVRodSBGZWIgNSAwOTozMzo1MCAyMDA5IC0wNTAwCgogICAgQ29sZGZpcmU6IE01Mjd4OiBBZGQgbWlzc2luZyBHUElPIHJlZ2lzdGVyIGFkZHJlc3MgZGVmaW5lcwoKICAgIEFkZCBtaXNzaW5nIEdQSU8gcmVnaXN0ZXJzIGFkZHJlc3MgZGVmaW5pdGlvbiBmb3IgQ29sZGZpcmUgTTUyNzEuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KCmNvbW1pdCBjNGZmNzdmNWU2YzNhMDE2MTBjZTk3NDM0YzBkNTlhY2IxNDc2Zjk1CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxNDo0Mjo1OCAyMDA5IC0wNTAwCgogICAgQ29sZGZpcmU6IG1jZm1paTogQWxsb3cgbm9uLWF1dG9uZWdvdGlhdGluZyBQSFlzIHRvIHVzZSBtaWkgY29tbWFuZAoKICAgIE1vZGlmaWVkIG1paV9pbml0IHRvIHN1cHBvcnQgYm9hcmRzIHdpdGggUEhZcyB0aGF0IGFyZSBub3Qgc2V0IHRvCiAgICBhdXRvbmVnb3RpYXRlLCBidXQgc3RpbGwgd2FudCB0byB1c2UgdS1ib290J3MgbWlpIGNvbW1hbmRzIHRvIHByb2JlCiAgICB0aGUgc21pIGJ1cy4gU3VjaCBQSFlzIHdpbGwgbm90IHNldCB0aGUgQXV0b25lZ290aWF0ZS1kb25lIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IDkyZDNlNmUwZmZjYmI3MjI0YzgzMTA0ZjhkODdiNWI0YmYzOWEzOGYKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgSmFuIDIzIDExOjQ0OjMwIDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogQXBwbGllZCBiYXVkcmF0ZSBmb3JtdWxhIG9mIHNlcmlhbF9pbml0IHRvIHNlcmlhbF9zZXRicmcKCiAgICBBcHBsaWVkIHRoZSBwYXRjaCBmb3IgYmF1ZHJhdGUgZGl2aWRlciB2YWx1ZSB0cnVuY2F0aW9uIGZvcgogICAgc2VyaWFsX2luaXQgdG8gc2VyaWFsX3NldGJyZyBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgODcwNmVmMzc4ZjJkYjFlZjY1YjljMmY5MDk1NjFmMjNlM2RjMjE0OApBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CUZyaSBKYW4gMjMgMTQ6MDc6MDUgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBNNTI3MUVWQjogQm9hcmQgaGVhZGVyIHVwZGF0ZSAoZGVwZW5kZW5jaWVzKQoKICAgIENsZWFudXAgZm9yIE01MjcxRVZCOgogICAgQWRkZWQgY2xhcmlmaWNhdGlvbiBvbiB0aGUgdXNlIG9mIENPTkZJR19TWVNfQ0xPQ0suCiAgICBNb2RpZmllZCB0byB1c2UgdS1ib290J3MgSFVTSCBwYXJzZXIuCiAgICBDbGVhbnVwIG9uIGVudmlyb25tZW50IHNldHRpbmdzLgogICAgUmVtb3ZlZCBjb21waWxlciB3YXJuaW5nIGJ5IGRlZmluaW5nIENPTkZJR19TWVNfQ1MwXyoKCiAgICBEZXBlbmRlbmNpZXM6CiAgICBBZGRlZCB0aGUgdXNlIG9mIENPTkZJR19TWVNfTUNGX1NZTkNSIGZvciBjbG9jayBtdWx0aXBsaWVyLgogICAgVGhpcyBkZXBlbmRzIG9uIGEgcGF0Y2ggdG8gaW5jbHVkZS9hc20tbTY4ay9tNTI3MS5oCiAgICB0aGF0IGRlZmluZXMgdGhlIG11bHRpcGxpZXIgYW5kIGRpdmlkZXIgcmF0aW9zLgoKICAgIFJlbW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX1NZU19GRUNJMkMuCiAgICBUaGlzIGRlcGVuZHMgb24gYSBwYXRjaCB0aGF0IHJlbW92ZXMgdGhlIHVzZSBvZiBpdCBpbgogICAgY3B1L21jZjUyeDIvY3B1X2luaXQuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Cgpjb21taXQgZTBkYjM0NGZhYmZlYjRmOTY0OTg0NmY5NDgzOGY1MTE3MmY2YTFmNgpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVRodSBKYW4gMjkgMTQ6MzY6MDYgMjAwOSAtMDUwMAoKICAgIENvbGRmaXJlOiBNNTI3MTogQWxsb3cgYm9hcmQgaGVhZGVyIGZpbGUgdG8gc3BlY2lmeSBjbG9jayBtdWx0aXBsaWVyCgogICAgTTUyNzEgZHluYW1pYyBjbG9jayBtdWx0aXBsaWVyLiBJdCBpcyBjdXJyZW50bHkgZml4ZWQgYXQgMTAwTUh6LgoKICAgIEFsbG93IHRoZSBib2FyZCBoZWFkZXIgZmlsZSB0byBzZXQgdGhlaXIgb3duIG11bHRpcGxpZXIgYW5kIGRpdmlkZXIuCiAgICBBZGRlZCB0aGUgI2RlZmluZSBmb3IgdGhlIG11bHRpcGxpZXIgYW5kIGRpdmlkZXIgdG8gdGhlIGNwdSBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IGQxZWYyNWRkODFjNzlkY2ZhZDVjMmZmMDE2MmIxYmVhMjFkMDRiYzMKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgSmFuIDIzIDEwOjQ3OjEzIDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogTTUyNzFFVkI6IFJlbW92ZSB1c2FnZSBvZiBDT05GSUdfU1lTX0ZFQ0kyQwoKICAgIERpc2NvbnRpbnVlIHRoZSB1c2Ugb2YgQ09ORklHX1NZU19GRUNJMkMgKG9ubHkgdXNlZCBieSBNNTI3MUVWQikuCiAgICBVc2UgcmVhZC1tb2RpZnktd3JpdGUgdG8gYWN0aXZhdGUgdGhlIEZFQyBwaW5zIHdpdGhvdXQgZGlzYWJsaW5nIEkyQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IGVlNzNjYzU5YWI5MDQ5NzZhZjNjMzNiNDU0ZmM4NGY3ODYxOGIyZDEKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgSmFuIDIzIDA5OjQ1OjM0IDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogY21kX2JkaW5mbyBjbGVhbnVwCgogICAgQ09ORklHX002OEsgYmRpbmZvIGNsZWFudXA6CgogICAgRml4ZWQgY29tcGlsZXIgd2FybmluZyBhYm91dCBiYXVkcmF0ZSBwcmludGluZy4KICAgIGZvcm1hdCAnJWQnIGV4cGVjdHMgdHlwZSAnaW50JywgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ2xvbmcgdW5zaWduZWQgaW50Jy4KCiAgICBBZGRlZCBwcmludGluZyBvZiAiY3B1ZnJlcSIKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IDRmZmMzOTA1MGFhNDZlZDhhM2QyOTczMjI5M2RmZjc2OWU1NGZmZmEKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglGcmkgSmFuIDIzIDA5OjI3OjAwIDIwMDkgLTA1MDAKCiAgICBDb2xkZmlyZTogRml4IGhhbGYtYmF1ZCBVQVJUIGJ5IGFkZGluZyBNNTI3MSB0byBDb2xkZmlyZSB2MiBjb3JlIGxpc3QKCiAgICBBZGRlZCB0aGUgQ09ORklHX001MjcxIHRvIHRoZSBsaXN0IG9mIENvbGRmaXJlIFYyIHByb2Nlc3Nvci4gVGhpcwogICAgd2FzIGNhdXNpbmcgdGhlIGJ1cyBjbG9jayAobm90IENQVSBjbG9jaykgdG8gYmUgZGVjbGFyZWQgdHdpY2UgYXMKICAgIGZhc3QgYXMgaXQgYWN0dWFsbHkgaXMuIFRoaXMgY2F1c2VzIFVBUlRTIHRvIG9wZXJhdGUgYXQgaGFsZiB0aGUKICAgIHNwZWNpZmllZCBiYXVkcmF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IDU5ZDFiZGE3ZjkyYzhhMjhjM2FiYTk0ZTQ4MDYzNzQ5ZDQyNTk0OWYKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglUdWUgRmViIDMgMTU6MTU6MjEgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogTWFrZSBQQ0lFIHN1cHBvcnQgc2VsZWN0YWJsZQoKICAgIE9uIHNvbWUgcGxhdGZvcm1zIFBDSUUgc3VwcG9ydCBpcyBub3QgcmVxdWlyZWQsIGJ1dCB3b3VsZCBiZSBpbmNsdWRlZAogICAgYmVjYXVzZSB0aGUgY3B1IHN1cHBvcnRzIGl0LiBUbyByZWR1Y2UgZm9vcHJpbnQgaXQgaXMgbm93IGNvbmZpZ3VyYWJsZQogICAgdmlhIENPTkZJR19QQ0lfRElTQUJMRV9QQ0lFLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjEyOWVmZjVlZGUzOTRjYzFmYWViNmRiZjZhOTg3ZTkxYWJjZTU1MgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgRmViIDMgMjI6MTM6MTYgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogT25seSBmaXh1cCBvcGIgYXR0YWNoZWQgVUFSVHMKCiAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGZkdCBVQVJUIGNsb2NrIGZpeHVwIGNvZGUgdG8KICAgIG9ubHkgdG91Y2ggQ1BVIGludGVybmFsIFVBUlRzIG9uIDR4eCBzeXN0ZW1zLgogICAgT25seSB0aGVzZSBVQVJUcyBhcmUgZGVmaW5pdGVseSBjbG9ja2VkIGJ5IGdkLT51YXJ0X2Nsay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0YjdlM2QwNDVjYzgyZjdmN2I2ZjNhMTliNTRhODE0ZGEzNmFjNTJjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgSmFuIDEzIDExOjAwOjI5IDIwMDkgLTA1MDAKCiAgICBCbGFja2ZpbjogbW92ZSBkZWZhdWx0IGJvb3QgU1BJIENTIHRvIGNvbW1vbiBjb2RlCgogICAgTW92ZSB0aGUgZGVmYXVsdCBTUEkgQ1MgdGhhdCB3ZSBib290IGZyb20gaW50byBjb21tb24gY29kZSBzbyB0aGF0IGl0IGNhbgogICAgYmUgdXNlZCBpbiBvdGhlciBTUEkgZHJpdmVycyBhbmQgZW52aXJvbm1lbnQgc2V0dGluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGY3OTBlZjZmZjEyMzgxY2IwZTQzZGU1NGZiMmIwZjEyMDRhZDhlZDYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBEZWMgMTAgMTI6MzM6NTQgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBkeW5hbWljYWxseSB1cGRhdGUgVUFSVCBzcGVlZCB3aGVuIGluaXRpYWxpemluZwoKICAgIFByZXZpb3VzbHksIGJvb3Rpbmcgb3ZlciB0aGUgVUFSVCByZXF1aXJlZCB0aGUgYmF1ZCByYXRlIHRvIGJlIGtub3duIGFoZWFkCiAgICBvZiB0aW1lLiAgVXNpbmcgYSBiaXQgb2YgdHJpY2t5IHNpbXBsZSBtYXRoLCB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBuZXcgYm9hcmQKICAgIHJhdGUgYmFzZWQgb24gdGhlIG9sZCBkaXZpc29ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KCmNvbW1pdCA5N2YyNjVmMTRmMjMwNTBmM2NiOTk3ZjYxN2YzYTY5MTdiODQzZWEyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRGVjIDkgMTc6MjE6MDggMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBhZGQgc3VwcG9ydCBmb3IgZmFzdCBTUEkgcmVhZHMgd2l0aCBCb290IFJPTQoKICAgIE5ld2VyIEJsYWNrZmluIGJvb3Qgcm9tcyBzdXBwb3J0IHVzaW5nIHRoZSBmYXN0IFNQSSByZWFkIGNvbW1hbmQgcmF0aGVyIHRoYW4KICAgIGp1c3QgdGhlIHNsb3cgb25lLglJZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUsIHRoZW4gdXNlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2NzYxOTk4MmJmYzVjZDYyNzEwYTQ4ZTNjYmZmYzMwNGNiNzhjMzQxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjQ2OjUyIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY2hlY2sgZm9yIHJlc2VydmVkIHNldHRpbmdzIGluIEREUiBNTVJzCgogICAgU29tZSBiaXRzIG9mIHRoZSBERFIgTU1ScyBzaG91bGQgbm90IGJlIHNldC4gIElmIHRoZXkgZG8sIGJhZCB0aGluZ3MgbWF5CiAgICBoYXBwZW4gKGxpa2UgcmFuZG9tIGZhaWx1cmVzIG9yIGhhcmR3YXJlIGRlc3RydWN0aW9uKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjIyYThkYzA5NThkZDU5OTc0MzM0OGVhOTRlYjEwYjlkMGJlOGFlNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMTo1NDowMCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNldCBkZWZhdWx0IHZvbHRhZ2UgbGV2ZWxzIGZvciBCRjUzOC9CRjUzOSBwYXJ0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwOWRjNmIwYmJkMWQ1ZTM5Y2RkZGVlYmMwNTlmOWE3NTYzMGU0ZjZmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDEgMDE6Mjk6NTcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB1c2Ugb24tY2hpcCBzeXNjb250cm9sKCkgcm9tIGZ1bmN0aW9uIHdoZW4gYXZhaWxhYmxlCgogICAgTmV3ZXIgQmxhY2tmaW4ncyBoYXZlIGFuIG9uLWNoaXAgcm9tIHdpdGggYSBzeXNjb250cm9sKCkgZnVuY3Rpb24gdGhhdCBuZWVkcwogICAgdG8gYmUgdXNlZCB0byBwcm9wZXJseSBwcm9ncmFtIHRoZSBtZW1vcnkgYW5kIHZvbHRhZ2Ugc2V0dGluZ3MgYXMgaXQgd2lsbAogICAgaW5jbHVkZSAocG9zc2libHkgY3JpdGljYWwpIGZhY3RvcnkgdGVzdGVkIGJpYXMgdmFsdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlMWZiNmQwZDUyZmJlM2ZiYzFhNGM2NTFkYWNmMTFlOWMxNDE3ZjYzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRmViIDUgMTE6NDQ6NTIgMjAwOSArMDEwMAoKICAgIGNmaV9mbGFzaDogRml4IHR5cG8gaW4gY2ZpX2ZsYXNoLmMKCiAgICBQYXRjaCAiZmxhc2gvY2ZpX2ZsYXNoOiBVc2UgdmlydHVhbCBzZWN0b3Igc3RhcnQgYWRkcmVzcywgbm90IHBoeXMiCiAgICBpbnRyb2R1Y2VkIGEgc21hbGwgdHlwbyBhbmQgY29tcGlsYXRpb24gd2FybmluZyBmb3Igc3lzdGVtcyB3aXRoIENGSQogICAgbGVnYWN5IHN1cHBvcnQgKGUuZy4gaGN1NCkuIFRoaXMgcGF0Y2ggZml4ZXMgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4NzQ1ZGI5NjliNzI2OTM3NTQ5OTFjODM4ZjY4YTdmYjRhOGIxYWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMjkgMTE6MjE6MzggMjAwOSArMDEwMAoKICAgIGplZGVjX2ZsYXNoOiBPbmx5IHVzZSBtYW51ZmFjdHVyZXIgZGVmaW5lcyBmcm9tIGNvbW1vbiBmbGFzaC5oCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBkb3VibGUgZGVmaW5lZCBtYW51ZmFjdHVyZXIgZGVmaW5lcyBmcm9tCiAgICBqZWRlY19mbGFzaC5jLiBTaW5jZSB0aGUgY29tbW9uIGRlZmluZXMgaW4gZmxhc2guaCBhcmUgMzJiaXQKICAgIHdlIG5vdyBuZWVkIHRoZSAoMTYpIGNhc3QuIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHRoZSBjb21waWxhdGlvbgogICAgd2FybmluZyAoZS5nLiBzZWVuIG9uIGhjdTUpOgoKICAgIC4vTUFLRUFMTCBoY3U1CiAgICBDb25maWd1cmluZyBmb3IgaGN1NSBib2FyZC4uLgogICAgamVkZWNfZmxhc2guYzoyMTk6IHdhcm5pbmc6IGxhcmdlIGludGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5zaWduZWQgdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYzIxZDVjZmNiNmI0ZTdmY2RkNWM2ZTkyNmUxYTgyNDkwMDcwNmYyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRmViIDUgMTE6MjU6NTcgMjAwOSArMDEwMAoKICAgIGNmaV9mbGFzaDogU2lsZW5jZSBjb21waWxhdGlvbiB3YXJuaW5nCgogICAgUGF0Y2ggImZsYXNoL2NmaV9mbGFzaDogVXNlIHZpcnR1YWwgc2VjdG9yIHN0YXJ0IGFkZHJlc3MsIG5vdCBwaHlzIgogICAgaW50cm9kdWNlZCBhIHNtYWxsIGNvbXBpbGF0aW9uIHdhcm5pbmcuIFRoaXMgcGF0Y2ggZml4ZXMgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA5Y2U5OTIxYTdkOGIxY2U3NjQ2NTZiMTRiNDIyMTdiYmY0ZmFhMzgKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgMiAxNjozNDo1MSAyMDA5IC0wNjAwCgogICAgZmxhc2gvY2ZpX2ZsYXNoOiBVc2UgdmlydHVhbCBzZWN0b3Igc3RhcnQgYWRkcmVzcywgbm90IHBoeXMKCiAgICBpbmNsdWRlL2ZsYXNoLmggd2FzIGNvbW1lbnRlZCB0byBzYXkgdGhhdCB0aGUgYWRkcmVzcyBpbgogICAgZmxhc2hfaW5mby0+c3RhcnQgd2FzIGEgcGh5c2ljYWwgYWRkcmVzcy4gIEhvd2V2ZXIsIGZyb20gdS1ib290J3MKICAgIHBvaW50IG9mIHZpZXcsIGFuZCBsb29raW5nIGF0IG1vc3QgZmxhc2ggY29kZSwgaXQgbWFrZXMgbW9yZQogICAgc2Vuc2UgZm9yIHRoaXMgdG8gYmUgYSB2aXJ0dWFsIGFkZHJlc3MuICBTbyBJIGNvcnJlY3RlZCB0aGUKICAgIGNvbW1lbnQgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHdhcyBhIHZpcnR1YWwgYWRkcmVzcy4KCiAgICBUaGUgb25seSBmbGFzaCBkcml2ZXIgdGhhdCB3YXMgYWN0dWFsbHkgdHJlYXRpbmcgdGhlIGFkZHJlc3MKICAgIGFzIHBoeXNpY2FsIHdhcyB0aGUgbXRkL2NmaV9mbGFzaCBkcml2ZXIuICBIb3dldmVyLCB0aGlzIGNvZGUKICAgIHdhcyB1c2luZyBpdCBpbmNvbnNpc3RlbnRseSBhcyBpdCBhY3R1YWxseSBkaXJlY3RseSBkZXJlZmVyZW5jZWQKICAgIHRoZSAic3RhcnQiIGVsZW1lbnQsIHdoaWxlIGl0IHVzZWQgbWFwX3BoeXNtZW0gdG8gZ2V0IGEKICAgIHZpcnR1YWwgYWRkcmVzcyBpbiBvdGhlciBwbGFjZXMuICBJIGNoYW5nZWQgdGhpcyBkcml2ZXIgc28KICAgIHRoYXQgdGhlIGNvZGUgd2hpY2ggaW5pdGlhbGl6ZXMgdGhlIGluZm8tPnN0YXJ0IGZpZWxkIGNhbGxzCiAgICBtYXBfcGh5c21lbSB0byBnZXQgYSB2aXJ0dWFsIGFkZHJlc3MsIGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvcgogICAgZnVydGhlciBtYXBfcGh5c21lbSBjYWxscy4JVGhlIGNvZGUgaXMgbm93IGNvbnNpc3RlbnQuCgogICAgVGhlICpvbmx5KiBwbGFjZSBhIHBoeXNpY2FsIGFkZHJlc3Mgc2hvdWxkIGJlIHVzZWQgaXMgd2hlbiBkZWZpbmluZyB0aGUKICAgIGZsYXNoIGJhbmtzIGxpc3QgdGhhdCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGZsYXNoX2luZm8gc3RydWN0LAogICAgdXN1YWxseSBmb3VuZCBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY1N2YyMDYyZDhlMTdlYmY0YTU1ZjUyYzllNzFjMDdjMGM5NGM3NzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgRmViIDQgMDk6NDI6MjAgMjAwOSArMDEwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5nCgogICAgKHNob3dzIHVwIG9ubHkgd2hlbiBERUJVRyBpcyBlbmFibGVkKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDc4MzJjZDE1YWUwMmZiNmZkZThlYmVkNWIyNzJmODU3NzVmMmNlYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjQ1OjU1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdXBkYXRlIGFub21hbHkgbGlzdHMKCiAgICBVcGRhdGUgdGhlIGFub21hbHkgbGlzdHMgdG8gbWF0Y2ggbGF0ZXN0IGFub21hbHkgc2hlZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3MGE0ZGE0NWUxNmI3MmU4ZTViMGJhYWVjZGFlZTliZTg2MTk2NDdkCkF1dGhvcjogUmFscGggS29uZHppZWxsYSA8cmtAYXJnb3MtbWVzc3RlY2huaWsuZGU+CkRhdGU6CU1vbiBKYW4gMjYgMTI6MzQ6MzYgMjAwOSAtMDcwMAoKICAgIEFEUzUxMjEgQWRkIFBBVEEgc3VwcG9ydAoKICAgIE9yaWdpbmFsIHBhdGNoIGZyb20gUmFscGggS29uZHppZWxsYQogICAgcGx1cyBjbGVhbiB1cCBieSBXb2xmZ2FuZyBEZW5rCiAgICBwbHVzIGNoYW5nZXMgYnkgSm9obiBSaWdieQoJdXNlIGlwcyBjbG9jayBub3QgbHBjCglwb3J0IGZvcndhcmQgdG8gY3VycmVudCB1LWJvb3QgcmVsZWFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFJhbHBoIEtvbmR6aWVsbGEgPHJrQGFyZ29zLW1lc3N0ZWNobmlrLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFiZmJkMGFlNDk2N2RmMTgxMDIzNDVkYjRmNGI1MjlhMTNkYTEwN2IKQXV0aG9yOiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+CkRhdGU6CU1vbiBKYW4gMjYgMTA6NDU6MDcgMjAwOSAtMDcwMAoKICAgIEFEUzUxMjEgQWRkIElDIElkZW50IE1vZHVsZSAoSUlNKSBzdXBwb3J0CgogICAgSUlNIChJQyBJZGVudGlmaWNhdGlvbiBNb2R1bGUpIGlzIHRoZSBmdXNlYm94IGZvciB0aGUgbXBjNTEyMS4KICAgIFVzZSAjZGVmaW5lIENPTkZJR19JSU0gdG8gdHVybiBvbiB0aGUgY2xvY2sgZm9yIHRoaXMgbW9kdWxlCiAgICB1c2UgI2RlZmluZSBDT05GSUdfQ01EX0ZVU0UgdG8gYWRkIGZ1c2Vib3ggY29tbWFuZHMuCiAgICBGdXNlYm94IGNvbW1hbmRzIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gcmVhZAogICAgdGhlIHN0YXR1cywgcmVhZCB0aGUgcmVnaXN0ZXIgY2FjaGUsIG92ZXJyaWRlIHRoZSByZWdpc3RlciBjYWNoZSwKICAgIHByb2dyYW0gdGhlIGZ1c2VzIGFuZCBzZW5zZSB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE0ZDE5Y2QxYmNlOWEyNGIxMzM1NTk4ZjE1NjgxNDBmNDk1MGU0ZDkKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAyMyAxMDozMzoxNSAyMDA5IC0wNzAwCgogICAgQURTNTEyMSBGaXggcmV2MiBzaWxpY29uIHBjaSBpb3BhZCBjb25maWcKCiAgICBSZXNldCBjb25maWcgaXMgbm90IGNvcnJlY3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0YzE1NDI1MmM0ODBiMTNmNjljZTFiNzFhOTUzMGIwNTE1ZGE3NmE2CkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgMTkgMTM6NTc6MzQgMjAwOCAtMDcwMAoKICAgIEFEUzUxMjEgRElVIEFkZCBkaXVfYm1wX2FkZHIgZW52CgogICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGEgYm1wIG90aGVyIHRoYW4KICAgIEZTTF9Mb2dvX0JNUCBmb3IgdGhlIERJVSBzcGxhc2ggc2NyZWVuLgoKICAgIENhbiBub3cgc2V0IHRoZSBlbnYgdmFyICJkaXVfYm1wX2FkZHIiIHRvCiAgICB0aGUgYWRkcmVzcyBvZiBhIEJNUCBpbiBmbGFzaCB0byB1c2UgaW5zdGVhZAogICAgb2YgdGhlIGRlZmF1bHQgRlNMX0xvZ29fQk1QLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkyYzIwZmJkM2E3Nzg4YzFhMTU0ZjUwYTNmNDRmMjhhNzc2M2Y5OWEKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNjozOTozNSAyMDA4IC0wNjAwCgogICAgQURTNTEyMSBESVUgTWFrZSBpbmNsdXNpb24gb2YgRlNMIGxvZ28gb3B0aW9uYWwKCiAgICBNYWtlIGluY2x1c2lvbiBvZiBGU0wgbG9nbyBvcHRpb25hbCBhbmQKICAgIHR1cm4gaXQgb2ZmIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ5OWVjMTQ5YWJlOTRlN2Y2YjJiZGE0NzY2ZDcwMWI0MDA1MDUzZgpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglTdW4gRmViIDEgMTI6Mjc6NTMgMjAwOSArMDEwMAoKICAgIENvbXBpbGUgd2FybmluZyBmaXggaW4gb25lbmFuZF91Ym9vdC5oCgogICAgUmVncmVzc2lvbiBzaW5jZSBtZXJnZSB3aW5kb3cgYWZ0ZXIgMjAwOS4wMQoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGEyNzBkMWU3Mjk1YzNkODI5ZjQyYzA0ODAxMTc5NDFkZmMxYzY0NzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMjkgMDY6MzM6NTUgMjAwOSArMDEwMAoKICAgIFVTQjogQWRkIEVIQ0kgc3VwcG9ydCBmb3IgVkNUIEVIQ0kgY29udHJvbGxlciAocmVhbGx5IHdpdGggZHJpdmVyIG5vdykKCiAgICBTb21laG93IEkgbWlzc2VkIHRoZSByZWFsIGRyaXZlciBwYXJ0IGluIG15IGxhc3QgcGF0Y2ggdmVyc2lvbi4gVGhpcyBwYXRjaAogICAgbm93IGFkZHMgdGhlIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA3MTZlYmY0MzZjOWU0M2RmNjc0MGUwMTcyZjZiMmE4MWRkYmYxYjhlCkF1dGhvcjogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KRGF0ZToJU2F0IE5vdiAyOSAxODoyMjozOCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGFkZCBkcml2ZXIgZm9yIG9uLWNoaXAgTU1DL1NEIGNvbnRyb2xsZXIKCiAgICBUaGlzIGlzIGEgcG9ydCBvZiB0aGUgTGludXggQmxhY2tmaW4gb24tY2hpcCBTREggZHJpdmVyIHRvIFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDZlODdlYTBjYTk1MTQ2NWViYTE0NGFiMmU2ZGJhNmZiNTA3NzM3YTIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6NDc6MzQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhZGQgcG9ydCBtdXhpbmcgZm9yIEJGNTF4IFNQSQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmYzY4ZjlmODU5NTk2NjRkNTI4ZGFlYTJhZWY1ZWY1NDk3NDMzMWNlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgSmFuIDYgMDY6MTY6MTkgMjAwOSAtMDUwMAoKICAgIEJsYWNrZmluOiBvdXRwdXQgYm9vdGluZyBzb3VyY2Ugd2hlbiBib290aW5nCgogICAgS25vd2luZyB0aGUgYm9vdGluZyBzb3VyY2Ugb2YgdGhlIHBhcnQgaXMgdXNlZnVsLCBlc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnQKICAgIGNhbiBzd2l0Y2ggZHluYW1pY2FsbHkgYmV0d2VlbiBzb3VyY2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ZGYzY2UwZjQ5YzM3OTQ3ODAwYWM3Yzg0ZTc1MTQ5OTg4MjYxOWZjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgRGVjIDExIDA2OjMwOjQ2IDIwMDggLTA1MDAKCiAgICBCbGFja2Zpbjogc2V0IGRlZmF1bHQgQ09ORklHX0VOVl9TUElfQ1MgYmFzZWQgb24gYm9vdHJvbQoKICAgIFNldCB0aGUgZGVmYXVsdCBDT05GSUdfRU5WX1NQSV9DUyB2YWx1ZSB0byBtYXRjaCB0aGUgU1BJIENTIHRoYXQgaXMgdXNlZCBieQogICAgdGhlIEJsYWNrZmluIG9uLWNoaXAgYm9vdHJvbSB0byBib290IG91dCBvZiBTUEkgZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDJiNGE0ODZlNmZhYzUwMmQ4Yjg4M2UzNDRjYzQwMTIyODM5NDViM2QKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMTEgMDQ6MDY6MjYgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgYXNtLWJsYWNrZmluL3Bvc2l4X3R5cGVzLmggdG8gbGF0ZXN0IExpbnV4IHZlcnNpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZTVlYjkzZTc3MzkxYmNjMzA4Njk3MTE2YzU0NGVhMTM0MGFhYWU4YQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IERlYyA2IDAyOjU0OjUyIDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIHBvcnQgSSBiaXRzCgogICAgU29tZSBwZW9wbGUgbmVlZCB0byBhY2Nlc3MgcG9ydCBJLCBzbyBtYWtlIHN1cmUgdGhlIHBpbnMgYXJlIGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhhNmIyNzI1OTZkNDNkZTBkYjQ5NDNlYWM3YWY1OGMzNTM0YzQwMjYKQXV0aG9yOiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KRGF0ZToJV2VkIE5vdiAyNiAyMjoxNjo0NSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGFkZCBkcml2ZXIgZm9yIG9uLWNoaXAgQVRBUEkgY29udHJvbGxlcgoKICAgIFRoaXMgaXMgYSBwb3J0IG9mIHRoZSBMaW51eCBCbGFja2ZpbiBvbi1jaGlwIEFUQVBJIGRyaXZlciB0byBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogU29uaWMgWmhhbmcgPFNvbmljLlpoYW5nQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYmU5ZDhjNzgwZTY4MzFjYjg0YjdkNDU5MGNlYWUwM2RjYThmYzEwYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIE5vdiAyNiAyMTo0MzowNiAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGFkZCBkcml2ZXIgZm9yIG9uLWNoaXAgTkFORCBjb250cm9sbGVyCgogICAgVGhpcyBpcyBhIHBvcnQgb2YgdGhlIExpbnV4IEJsYWNrZmluIG9uLWNoaXAgTkZDIGRyaXZlciB0byBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQxNDhlMDJhYmFlOWEwOTlmNDQ0NGI1ZTE2OGViYzJiOTExZDIyOTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgMTIgMDc6MTg6MTUgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBidWlsZCB3aXRoIC1tbm8tZmRwaWMKCiAgICBVc2UgdGhlIC1tbm8tZmRwaWMgZmxhZyBzbyB0aGF0IGFueSBCbGFja2ZpbiB0b29sY2hhaW4gY2FuIGJlIHVzZWQgdG8gYnVpbGQKICAgIHVwIHUtYm9vdCwgaW5jbHVkaW5nIG9uZXMgdGhhdCBvdXRwdXQgRkRQSUMgRUxGIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDcwZTk1NTg5YTI0YTJkODNhZDAwMzE3ZTRhOTYxMWQwMjExZWNiNTgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgMTEgMDU6NDM6NTcgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBmaXggdXAgRUJJVSBkZWZpbmVzCgogICAgVGhlIEVCSVUgZGVmaW5lcyBmb3IgRUJTWiAyNTYvNTEyIHdlcmUgaW5jb3JyZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5NjE5NTRlYTBlYzhkYzQzNDEwMzRjMWExZmYzMTA3ZWMwNTI3ODA5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgTm92IDUgMTI6NDU6MjQgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiB1c2UgOC8xNi8zMiBiaXQgdHJhbnNmZXIgd2lkdGhzIGluIGRtYV9tZW1jcHkoKQoKICAgIFJhdGhlciB0aGFuIHVzaW5nIDhiaXQgdHJhbnNmZXJzIGZvciBldmVyeXRoaW5nLCB1c2UgOC8xNi8zMiBiaXQgdHJhbnNmZXJzCiAgICBhcyB1c2FibGUgd2l0aCB0aGUgc291cmNlL2Rlc3RpbmF0aW9uIGFkZHJlc3NlcyBhbmQgdGhlIGNvdW50IHNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI5M2M2ODY0ODQyNmY5MDZkNjNiOTgxMTc0OTZiNjQxNWY1MDVmMzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgNSAwODo1MDoyMyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG9ubHkgZmxhZyBMMSBpbnN0cnVjdGlvbiBmb3IgRE1BIG1lbWNweQoKICAgIFRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGZyb20gZG9pbmcgYW4gOCBiaXQgRE1BIG1lbWNweSB2cyBhbiBvcHRpbWl6ZWQKICAgIGNvcmUgbWVtY3B5IGNhbiBiZSBwcmV0dHkgYmlnIHdoZW4geW91IGFkZCBpbiB0aGUgb3ZlcmhlYWQgb2Ygc2V0dGluZyB1cCB0aGUKICAgIE1ETUEgcmVnaXN0ZXJzLCBjYWNoZSBmbHVzaGVzLCBldGMuLi4gIFNvIG9ubHkgdXNlIGRtYV9tZW1jcHkoKSB3aGVuIHdlCiAgICBhY3R1YWxseSByZXF1aXJlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlMzQ3YzA5MmEzYjNhMmNlMWU3MmYyNWY0ODI5MTYzNjM0ZDA5ZmJlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgTm92IDUgMDc6MjA6MzcgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBkbWFfbWVtY3B5KCk6IGZpeCByYW5kb20gZmFpbHVyZXMKCiAgICBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgRE1BIGNoYW5uZWwgaXMgYWN0dWFsbHkgZGlzYWJsZWQgaW4gaGFyZHdhcmUgYmVmb3JlCiAgICBhdHRlbXB0aW5nIHRvIHJlcHJvZ3JhbSBpdC4gIE90aGVyd2lzZSB0aGUgbmV3IHNldHRpbmdzIGFyZSBpZ25vcmVkIGFuZCB3ZQogICAgZW5kIHVwIHdpdGggcmFuZG9tIGhhbmdzL2ZhaWx1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmZGNlODNjMTA4ODQ2ZDZmMGQ1YjE3NzRlMWNjMjlmMjU3M2E2YWQzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgTm92IDQgMDA6MDQ6MDMgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiByZXdyaXRlIGNhY2hlIGhhbmRsaW5nIGZ1bmN0aW9ucwoKICAgIFRha2UgdGhlIGNhY2hlIGZsdXNoIGZ1bmN0aW9ucyBmcm9tIHRoZSBrZXJuZWwgYXMgdGhleSB1c2UgaGFyZHdhcmUgbG9vcHMgaW4KICAgIG9yZGVyIHRvIGdldCBvcHRpbWFsIHBlcmZvcm1hbmNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4NGM1ZjBkYzQ3ZDE3NTkzZmQ4MTIwNjYxNDg5MWJkYzk0ZjZkNTFjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gTm92IDMgMjI6MzA6MDUgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBzZXR1cCBiaV9lbmV0YWRkciBmb3Igc2luZ2xlIG5ldHMKCiAgICBGb3Igc3lzdGVtcyB3aXRoIENPTkZJR19ORVRfTVVMVEkgZGlzYWJsZWQsIGJpX2VuZXRhZGRyIGRvZXMgbm90IGdldCBzZXR1cAogICAgYmFzZWQgb24gJGV0aGFkZHIsIHNvIHNldCBpdCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNDA1OTkyMzllNzg3NWIzOWUyYTVjMTJlNjU0NTk5MjA0MWM3MmM1MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAyMjo0ODo0NyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGNhY2hlIGNvcmUvc3lzdGVtIGNsb2NrIHZhbHVlcwoKICAgIENhbGN1bGF0aW5nIHRoZSBjbG9ja3MgcmVxdWlyZXMgYSBiaXQgb2YgY2FsbHMgdG8gZ2NjIG1hdGggZnVuY3Rpb25zLCBzbwogICAgY2FjaGUgdGhlIHZhbHVlcyBhZnRlciB0aGUgZmlyc3QgcnVuIHNpbmNlIHRoZXknbGwgbW9zdCBsaWtlbHkgbmV2ZXIKICAgIGNoYW5nZSBvbmNlIFUtQm9vdCBpcyB1cCBhbmQgcnVubmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjk1N2E2MjA5YjAyZjZiNjk2MDdmYzQ3NDI1ZjEzNzMxY2M0NzdmMQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAxODoxODoxNiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGVuYWJsZSAtLWdjLXNlY3Rpb25zCgogICAgU3RhcnQgYnVpbGRpbmcgYWxsIEJsYWNrZmluIGJvYXJkcyB3aXRoIC1mZnVuY3Rpb24tc2VjdGlvbnMvLWZkYXRhLXNlY3Rpb25zCiAgICBhbmQgbGlua2luZyB3aXRoIC0tZ2Mtc2VjdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGVlMWQyMDAxZWE3ZmJhYmIyYjkyNTYwMjZkYzU0NjhmMDU3MzM3ZjgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgMjAgMjE6MDg6NTQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkb250IGNoZWNrIGJhdWQgaWYgaXQgd29udCBhY3R1YWxseSBnZXQgdXNlZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0MDBmNTc3OGYzNzViYzk5YzczYzg0ODhjNTU1ZGVmMjYxY2NmYWI3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgT2N0IDE0IDA3OjU0OjA5IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIGRyaXZlciBmb3Igb24tY2hpcCBTUEkgY29udHJvbGxlcgoKICAgIFRoaXMgZmlsbHMgb3V0IHRoZSBTUEkgYmFja2VuZCBmb3IgdGhlIEJsYWNrZmluIG9uLWNoaXAgU1BJIHBlcmlwaGVyYWwuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDdhMWU4N2IxMDYyZTZlYWMwNzA0YzZmYzJmN2M2NjFjYWY4ODE0Y2QKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTggMDU6MzM6NTEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBvbmx5IGJ1aWxkIHBvc3QgY29kZSB3aGVuIENPTkZJR19QT1NUCgogICAgU2F2ZSBzb21lIHRpbWUgYnkgdXNpbmcgQ09ORklHX1BPU1QgaW4gdGhlIE1ha2VmaWxlIHJhdGhlciB0aGFuIEMgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDZkN2Q0ODAzYzc0YmI4NmUxYjQwMWIxMTk5ZTYzMzgxYTYyYjkzODIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBKYW4gOCAxMTo1Nzo1NyAyMDA5IC0wNTAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiBjbGVhbnVwIHBvaW50ZXIvY2FzdHMgZm9yIGFsaWFzaW5nIGlzc3VlcwoKICAgIFJlZG8gaG93IHBvaW50ZXJzIGFyZSBtYW5hZ2VkIHRvIGdldCByaWQgb2YgdWdseSBjYXN0cyBhbmQgc3RyaWN0IHBvaW50ZXIKICAgIGFsaWFzaW5nIGlzc3VlcyB0aGF0IGFyZSBoaWdobGlnaHRlZCBieSBnY2MgNC4zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDA5MmQyNDg3YmFmN2MyOTM0M2MxNjVlM2FlODJlYThhN2Y5ZTY3OWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBEZWMgOSAxNzo0NjoyMSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiBjb252ZXJ0IENPTkZJR19CRklOX01BQ19STUlJIHRvIENPTkZJR19STUlJCgogICAgTm8gcG9pbnQgaW4gaGF2aW5nIGEgQmxhY2tmaW4tc3BlY2lmaWMgZGVmaW5lICJDT05GSUdfQkZJTl9NQUNfUk1JSSIgdGhhdAogICAgZG9lcyBleGFjdGx5IHRoZSBzYW1lIHRoaW5nIGFzIGNvbW1vbiAiQ09ORklHX1JNSUkiLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDhlZWQ2Y2E1MWU1MGZhZGU2ODg3ZThiZGIxZmY2YTQ0MTE2YjQyYjUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBOb3YgNSAwNjozNjoxNSAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiB1c2UgY29tbW9uIGRlYnVnKCkKCiAgICBSYXRoZXIgdGhlbiBkZWZpbmluZyBvdXIgb3duIERFQlVHRigpLCBqdXN0IHVzZSB0aGUgY29tbW9uIGRlYnVnKCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTdlYzZhYzhiMmM2ZGNlNmZjNjcwYTJhODU1ZGViNmVlZTM0MGUwNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCAyMCAxMzo1OTo1MSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiByZXNwZWN0IENPTkZJR19QSFlfe0FERFIsQ0xPQ0tfRlJFUX0KCiAgICBSYXRoZXIgdGhhbiBoYXZpbmcgdGhlIG9uLWNoaXAgTUFDIGhhcmRjb2RlZCB0byBwaHkgYWRkcmVzcyAxIGFuZCBhIHNwZWVkCiAgICBvZiAyLjVtaHosIHVzZSB0aGVzZSBhcyBkZWZhdWx0cyBpZiB0aGUgYm9hcmQgZG9lc24ndCBzcGVjaWZ5IG90aGVyd2lzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhYzQ1YWY0ZTYzZWE5MjVmNGFjY2M5ODQ1M2FhYjFhMTE2NmMxOTZkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgT2N0IDE0IDA0OjUyOjAwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IGNsZWFudXAgTUlJL1BIWSBmdW5jdGlvbnMKCiAgICBDbGVhbnVwIGFuZCByZXdyaXRlIHRoZSBNSUkvUEhZIHJlbGF0ZWQgZnVuY3Rpb25zIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZQogICAgZXhpc3RpbmcgY29tbW9uIGxpbnV4L21paXBoeS5oIGNvZGUgYW5kIGhvb2sgaW50byB0aGUgYG1paWAgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2YjMxMGEwNWYwZDEwYzc1MWYyMjQ2ODA0MDkzMjEzOWY3MWM3MWQzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgT2N0IDE0IDAwOjMxOjMwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmZpbl9tYWM6IHNldCBNRENESVYgYmFzZWQgb24gU0NMSwoKICAgIFJhdGhlciB0aGFuIGhhcmRjb2RpbmcgTURDRElWIHRvIDI0ICh3aGljaCBpcyBjb3JyZWN0IGZvciB+MTI1bWh6IFNDTEspLAogICAgdXNlIHRoZSByZWFsIGFsZ29yaXRobSBzbyBpdCBnZXRzIHNldCBjb3JyZWN0bHkgcmVnYXJkbGVzcyBvZiBTQ0xLLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDkzMDU5MGYzZTQ5YzhmMzIyNTZlZGYyZTU4NjFlMTUzNWEzMjljNmMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgSmFuIDMxIDA5OjEwOjQ4IDIwMDkgKzAxMDAKCiAgICBpeHA6IG1vdmUgc2VyaWFsIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmOTBjODAyMmY0NDhiYzVlOTMwOTBlNGI3MTQzNjhlNTJlOTEyZjBmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEphbiAzMSAwOTowNDo1OCAyMDA5ICswMTAwCgogICAgaXhwOiBtb3ZlIHBjaSBpbml0IGluIGFybS9ib2FyZCBpbnN0ZWFkIG9mIGNwdQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGNiNzliNWYyNzVmMTg4OGNjYjI3OGEyZDIxOTcxNDA0NDRhODRiNwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMzEgMDg6NTY6NDkgMjAwOSArMDEwMAoKICAgIGl4cDogbW92ZSBwY2kgZHJpdmVycyB0byBkcml2ZXJzL3BjaQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDEyZDViYWIwOWE1MzRlNDgwMGIwMmY1MGNmNTA4ZTY4MzcyMDJlYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMzEgMDg6NTM6NDQgMjAwOSArMDEwMAoKICAgIGl4cDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjY5M2Y1MDFkNjc0MzRkZjFmODE1ZmQxODI0YTcxOTczYWUwODIwNwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMzEgMDg6NTM6NDQgMjAwOSArMDEwMAoKICAgIGl4cDogYWRkIG1pc3Npbmcgb3MgZGVmaW5lCgogICAgbmVlZCBieSBhcm0tZWxmIHRvb2xjaGFpbnMgYW5kIG5vIGltcGFjdCBvbiB0aGUgYXJtLWxpbnV4IG9uZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjRlMmY4OWRmY2IyMDZhMjJkMzRmYTZiMzQ4NzhkODViNDk4YjM5ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMzEgMDk6NTM6MzkgMjAwOSArMDEwMAoKICAgIGl4cDogcmVtb3ZlIHRoZSBvcHRpb24gdG8gaW5jbHVkZSB0aGUgTWljcm9jb2RlCgogICAgaW5zdGVhZCB0aGUgYm9hcmQgd2lsbCBoYXZlIHRvIGxvYWQgaXQgZnJvbSBmbGFzaCBvciByYW0KICAgIHdoaWNoIHdpbGwgYmUgc3BlY2lmaWVkIGJ5IG5wZV91Y29kZSBlbnYgdmFyCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxYjAxN2JhZjIwNzFkOGRhZjY0M2JjZTg3MjUwZGI4OThjNjA2YzY2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEphbiAzMCAwOTo0NToyMyAyMDA5ICswMTAwCgogICAgaXhwL25wZTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGU2OTA4N2ExZDZlZjJlY2E2ZjQ2MDI2Y2Y1ZTczOTliNmM5ZTdjMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6NTg6MDQgMjAwOSArMDEwMAoKICAgIFNYMTogYWRkIGhhcmR3YXJlIFYyIHN1cHBvcnQKCiAgICBJbiB0aGUgVjIgdGhlIDIgZmxhc2ggaGFzIGJlZW4gcmVwbGFjZSBieSBvbmUgMzJNQiBmbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjg3N2YyMjMzZGJjZDc0MTdjMmYwYmFiZTZhODQ5MDk5YjE2N2YzYwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6NTg6MDMgMjAwOSArMDEwMAoKICAgIFNYMTogRml4IHNlY29uZCBmbGFzaCBtYXBwaW5nCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0N2ZkM2JmZmVkNjQzMGM5MWViMjY2MGY4NTk1NzRlZDk4YmU1YmQ4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTo1ODowMyAyMDA5ICswMTAwCgogICAgU1gxOiBhZGQgQ09ORklHX1NURE9VVF9VU0JUVFkgdG8gZW5hYmxlIHByZWJvb3Qgc3Rkb3V0IHJlZGlyZWN0IHRvIHVzYnR0eQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgY2ZjYTMzODM3ZWM4MzgyOWM2YTQ5YzNiY2M4NmMzMWJjMjQ5NWZmNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6NTc6NTkgMjAwOSArMDEwMAoKICAgIG1vdmUgU2Ftc3VuZydzIGJvYXJkIHRvIGJvYXJkL3NhbXN1bmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGU0OTQzZWM1NzQ2NmVhNWRmYTA4NWU3YTllMGVjNDRjYjkzYzRlMWUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSmFuIDI5IDEyOjA3OjIxIDIwMDkgKzAxMDAKCiAgICBtb3ZlIEFSTSBMdGQuIHRvIHZlbmRvciBkaXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGE4N2ZiMWIzMDhhMmEzNzVjYjljYTc0Y2EwZGQzZTJjNTc5M2QzYmYKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJV2VkIEphbiAyOCAxNTozMDozNyAyMDA5IC0wNTAwCgogICAgcHBjNHh4OiBDbGVhbiB1cCBjb25maWd1cmF0aW9uIGZpbGUgZm9yIEtvcmF0IGJvYXJkCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBkZWZhdWx0IGVudmlyb25tZW50YWwgdmFyaWFibGVzIGZvciB0aGUKICAgIEtvcmF0IFBQQyA0NDBFUHggYm9hcmQsIGFuZCBtYWtlcyBhZGRpdGlvbmFsIG1pbm9yIGZpeGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYyMDQwNWUzMTY4MGVmYzM2MjkzYzU5YjQ5NjNkYjU3YzlkOTNkZjQKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJV2VkIEphbiAyOCAxNTozMDowMiAyMDA5IC0wNTAwCgogICAgcHBjNHh4OiBBZGQgdmFyaWFibGUgImtvcmF0X3VzYmNmIiBmb3IgS29yYXQgYm9hcmQKCiAgICBUaGUgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlICJrb3JhdF91c2JjZiIgc2VsZWN0cyB0aGUgVVNCCiAgICBwb3J0IHVzZWQgYnkgdGhlIEtvcmF0IGJvYXJkJ3MgQ29tcGFjdEZsYXNoIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmMwMWVhMWUyN2Q1YjEyNGYwYTE4NjhkMGNlNTY5ZjE1NmQ1OGRmZQpBdXRob3I6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgpEYXRlOglGcmkgSmFuIDIzIDEyOjU2OjMxIDIwMDkgKzAxMDAKCiAgICBBVlIzMjogbWFjYiAtIFNlYXJjaCBmb3IgUEhZIGlkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNlYXJjaGluZyB0aHJvdWdoIGF2YWlsYWJsZSBQSFktYWRkcmVzc2VzIGluCiAgICB0aGUgbWFjYi1kcml2ZXIuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgQVRFVksxMTAwIGV2YWx1YXRpb24gYm9hcmQsCiAgICB3aGVyZSB0aGUgUEhZLWFkZHJlc3Mgd2lsbCBiZSBpbml0aWFsaXplZCB0byBlaXRoZXIgMSBvciA3LgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNvbmZpZyBvcHRpb24sIENPTkZJR19NQUNCX1NFQVJDSF9QSFksIHdoaWNoIHdoZW4KICAgIGVuYWJsZWQgdGVsbHMgdGhlIGRyaXZlciB0byBzZWFyY2ggZm9yIHRoZSBQSFkgYWRkcmVzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdW5uYXIgUmFuZ295IDxndW5uYXJAcmFuZ295LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgRHJpdmVrbGVwcCA8cGF1bGRyaXZla2xlcHBAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBhZjg2MjZlMGMwOGE3ODBkOWRlZDFkOWM0ODgzYTg5MzU1ZjYwZTc1CkF1dGhvcjogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgpEYXRlOglGcmkgSmFuIDIzIDEyOjU2OjI2IDIwMDkgKzAxMDAKCiAgICBGaXggSVAgYWxpZ25tZW50IHByb2JsZW0KCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdm9sYXRpbGUgZnJvbToKICAgIHZvbGF0aWxlIElQX3QgKmlwID0gKElQX3QgKil4aXA7CgogICAgRHVlIHRvIGEgYnVnLCBhdnIzMi1nY2Mgd2lsbCBhc3N1bWUgdGhhdCBpcCBpcyBhbGlnbmVkIG9uIGEgd29yZCBib3VuZGFyeSB3aGVuCiAgICB1c2luZyB2b2xhdGlsZSwgd2hpY2ggY2F1c2VzIGFuIGV4Y2VwdGlvbiBzaW5jZSB4aXAgaXNuJ3QgYWxpZ25lZCBvbiBhIHdvcmQKICAgIGJvdW5kYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEcml2ZWtsZXBwIDxwYXVsZHJpdmVrbGVwcEBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDEyYThiOWRiMTJmODJhMTg5ZmYxNDNhNTg3MzEwMDdmNTQ2OWRhNjEKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CVdlZCBKYW4gMjggMTY6MTc6MjEgMjAwOSAtMDgwMAoKICAgIE1hcnZlbGwgODhFMTExOCBpbnRlcnJ1cHQgZml4CgogICAgVGhpcyBwYXRjaCBhZGp1c3RzIHRoZSBMRUQgY29udHJvbCBzbyB0aGF0IGludGVycnVwdCBsaW5lcyBhcmUgbm90IHJlYWRpbmcgTEVEcwogICAgYW5kIGVmZmVjdGl2ZWx5IGNhdXNpbmcgaW5kZWZpbml0ZSBpbnRlcnJ1cHRzIHRvIHRoZSBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWEzN2YyYWNjMzFhMzI5NmRkZGQzNTc0ZWE5ZWFmN2YzMTk4MDdiOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoxNDoyNiAyMDA5ICswMTAwCgogICAgbmV0OiBzbWM5MTF4LmM6IEFkZCBMQU45MjExIHRvIGNoaXBfaWRzW10gYXJyYXkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDc1ZWRlYmUzMDExYzk2M2E3Y2Q4NGJlMGY0YTk4NzQ3N2YyYWFmODkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBKYW4gMjcgMTY6NTM6MzkgMjAwOSAtMDUwMAoKICAgIE1vdmUgaXNfdmFsaWRfZXRoZXJfYWRkcigpIHRvIGluY2x1ZGUvbmV0LmgKCiAgICBJbXBvcnQgdGhlIGlzX3ZhbGlkX2V0aGVyX2FkZHIoKSBmdW5jdGlvbiBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyNjg4NTkzMzhjMDE4OGVhYjFkMGQzYjg2N2I3ZGFkM2M1Y2M3MzRhCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gSmFuIDUgMTI6MjU6MTMgMjAwOSArMDEwMAoKICAgIG5ldDogU29ydCBNYWtlZmlsZSBsYWJlbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDFmYmNiZTlhOTVmMzlhZmIyZGY2YWI4Y2JhMjViMjg0YjQ3ZWJmYjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDI4IDIzOjA2OjQyIDIwMDkgKzAxMDAKCiAgICA4NXh4OiBGaXggY29tcGlsZSBicmVha2FnZSB3aXRoIHNiYzg1NDAgYW5kIHNiYzg1NjAKCiAgICBUaGlzIGZpeGVzIGFuIGVycm9yIHdoaWNoIHJhaXNlcyBqdXN0IGEgd2FybmluZzoKICAgIHNiYzg1NjAuYzoyNTA6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnc3RybWh6JyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjI2MjVjMGIwODFiZDQwMTljZWNhYjE0ZTlmYzJlMDVlNDhkMmE1OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEphbiAyOCAxMzo0ODo1NSAyMDA5IC0wNTAwCgogICAgU1BEODIzVFM6IGRvIG5vdCBkZWZpbmUgQ09ORklHX0NNRF9FTlYKCiAgICBTaW5jZSB0aGUgU1BEODIzVFMgYm9hcmQgZG9lcyBub3QgYWN0dWFsbHkgaGF2ZSBhbnkgd3JpdGFibGUgZmxhc2ggdG8gc2F2ZQogICAgaXRzIGVudmlyb25tZW50LCB1bmRlZmluZSBDT05GSUdfQ01EX0VOViBzbyB0aGUgInNhdmVlbnYiIGNvbW1hbmQgaXMKICAgIGRpc2FibGVkLgoKICAgIFRoaXMgZml4ZXMgdGhlIGJ1aWxkIGVycm9yOgogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9udmVkaXQubyk6IEluIGZ1bmN0aW9uIGBkb19zYXZlZW52JzoKICAgIGNvbW1vbi9jbWRfbnZlZGl0LmM6NTU3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzYXZlZW52JwogICAgbWFrZTogKioqIFt1LWJvb3RdIEVycm9yIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNzM3OWY0NWE3YmM3MTk0MWMzOTIwYzJmNmIzYzNmYWE0ZDdmZDMxNQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6NDA6MTYgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBBZGQgWm9vbTEgYm9hcmQgc3VwcG9ydAoKICAgIFN1cHBvcnQgZm9yIFpvb20gTURLIHdpdGggT01BUDM0MzAuIERldGFpbHMgb2YgWm9vbSBNREsgYXZhaWxhYmxlIGhlcmU6CiAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tL3Byb2R1Y3RzL2RldmtpdC90aS96b29tX21vYmlsZV9kZXZlbG9wbWVudF9raXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gS3JpZG5lciA8amtyaWRuZXJAYmVhZ2xlYm9hcmQub3JnPgoKY29tbWl0IDJiZTJjNmNjNjc0ZTI2MjM3OTYyZjVjZjRjMGQzMTFlMTM5ZTQyNDEKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgSmFuIDI4IDIxOjM5OjU4IDIwMDkgKzAxMDAKCiAgICBPTUFQMzogQWRkIFBhbmRvcmEgc3VwcG9ydAoKICAgIEFkZCBQYW5kb3JhIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEtyaWRuZXIgPGprcmlkbmVyQGJlYWdsZWJvYXJkLm9yZz4KCmNvbW1pdCBhZDliYzhlNTJkMTc0ZDY5OWQxMzY3YmUwYjkwMDg5ZTRmZGViOTMzCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAyOCAyMTozOTo1OCAyMDA5ICswMTAwCgogICAgT01BUDM6IEFkZCBFVk0gYm9hcmQKCiAgICBBZGQgRVZNIGJvYXJkIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFuaWthbmRhbiBQaWxsYWkgPG1hbmkucGlsbGFpQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+Cgpjb21taXQgOWQwZmM4MTEwZTdlNzU1MjM5MzI5YzI2ZjMwMGQ1ZmM5OTQ2ZDNlYwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBKYW4gMjggMjE6Mzk6NTcgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBBZGQgT3Zlcm8gYm9hcmQKCiAgICBBZGQgT3Zlcm8gYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+Cgpjb21taXQgZjkwNGNkYmI2ODE2N2M2NDc4ODdmMTk5MjlhZDI5NWRiYWFjODg2MgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVR1ZSBKYW4gMjcgMTg6MTk6MTIgMjAwOSArMDEwMAoKICAgIE9NQVAzOiBBZGQgY29tbW9uIHBvd2VyIGNvZGUsIFJFQURNRSwgYW5kIEJlYWdsZUJvYXJkCgogICAgQWRkIEJlYWdsZUJvYXJkIHN1cHBvcnQsIGNvbW1vbiBwb3dlciBjb2RlIGFuZCBSRUFETUUuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gS3JpZG5lciA8amtyaWRuZXJAYmVhZ2xlYm9hcmQub3JnPgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KCmNvbW1pdCA5Y2RhNGYxMDRiNTMxM2ZhZGMyMWI3NWFhNzgxYzdhNmFhZjZlYTYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAyOCAwODozMToxMCAyMDA5IC0wNjAwCgogICAgODV4eDogRml4IGNvbXBpbGUgYnJlYWthZ2Ugd2l0aCBNUEM4NTQwRVZBTAoKICAgIENvbmZpZ3VyaW5nIGZvciBNUEM4NTQwRVZBTCBib2FyZC4uLgogICAgbXBjODU0MGV2YWwuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgogICAgbXBjODU0MGV2YWwuYzo1MzogZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5IC8KICAgIG1ha2VbMV06ICoqKiBbbXBjODU0MGV2YWwub10gRXJyb3IgMQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWE0NDhkYjc3YjEwMTUzNzAzYmM1ZTRhZDEzZGQ1NWQ4OGJlYjFkNgpBdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgpEYXRlOglTdW4gSmFuIDE4IDIzOjA0OjI3IDIwMDkgLTA1MDAKCiAgICB1c2Jfc2Nhbl9kZXZpY2VzOiBmaXggb3V0cHV0IHdpdGggbm8gZGV2aWNlcwoKICAgIFdlIHNob3VsZCBjaGVjayB0aGUgcmV0dXJuIG9mIHVzYl9uZXdfZGV2aWNlKCkgc28gdGhhdCBpZiBubyBVU0IgZGV2aWNlIGlzCiAgICBmb3VuZCwgd2UgcHJpbnQgb3V0IHRoZSByaWdodCBtZXNzYWdlIHJhdGhlciB0aGFuIGFsd2F5cyBzYXlpbmcgIm5ldyB1c2IKICAgIGRldmljZSBmb3VuZCIuCgogICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBmMWMxZjU0MDI0MzQzODI0NmFlZmI3MDNmZGNmMTY5NTdlM2E3MmUxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDIyIDEwOjExOjIxIDIwMDkgKzAxMDAKCiAgICBVU0I6IEFkZCBoaWdoLXNwZWVkICg0ODBNYi9zKSB0byBhbGwgVVNCIHJlbGF0ZWQgb3V0cHV0cwoKICAgIFdpdGggdGhpcyBwYXRjaCB0aGUgVVNCIHJlbGF0ZWQgY29ubmVjdGlvbiBzcGVlZCBvdXRwdXQgKCJ1c2IgdHJlZSIgY29tbWFuZCBhbmQKICAgIGRlYnVnIG91dHB1dCkgaXMgbm93IGhpZ2gtc3BlZWQgZW5hYmxlZC4KCiAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nIHdoZW4gZGVidWdnaW5nIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZGFhMmRhZmI0NTBhODA3M2E0ZTQyZmQ0NmNkNGU5OTViMjA4ZTRjYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoxMjoxOSAyMDA5ICswMTAwCgogICAgVVNCOiBBZGQgZGNhY2hlIHN1cHBvcnQgdG8gdGhlIEVIQ0kgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHJvdXRpbmVzIHRvIGhhbmRsZSAoZmx1c2gvaW52YWxpZGF0ZSkgdGhlIGRjYWNoZSBmb3IgdGhlCiAgICBRSCBhbmQgcVREIHN0cnVjdHVyZXMgYW5kIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBuZWVkZWQgb24gcGxhdGZvcm1zIHVzaW5nCiAgICB0aGlzIEVIQ0kgc3VwcG9ydCB3aXRoIGRjYWNoZSBlbmFibGVkIChsaWtlIHRoZSBNSVBTIFZDVCBib2FyZCBwb3J0KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA0ZTBlYTBlZmMxZTUwMTE4NmFjYTg1NzdhNDA0MmZjNmZhNjQxNjAyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjEyOjI4IDIwMDkgKzAxMDAKCiAgICBVU0I6IEFkZCBFSENJIHN1cHBvcnQgZm9yIFZDVCBFSENJIGNvbnRyb2xsZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA4MzJlNjE0MThlZWRmZWExNzJiZDJmZGZkMGVhMGQxOTljYzcwYTlkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjEyOjEwIDIwMDkgKzAxMDAKCiAgICBVU0I6IEFkZCBjb25maWcgb3B0aW9uIHRvIGNhbGwgZWhjaV9oY2RfaW5pdCgpIGFnYWluIGFmdGVyIEVIQ0kgcmVzZXQKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvbmZpZyBvcHRpb24gQ09ORklHX0VIQ0lfSENEX0lOSVRfQUZURVJfUkVTRVQKICAgIHRvIGNhbGwgZWhjaV9oY2RfaW5pdCgpIGFnYWluIGFmdGVyIGVoY2lfcmVzZXQoKSBpcyBleGVjdXRlZC4gVGhpcwogICAgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgVkNUIEVIQ0kgc3VwcG9ydCB3aGljaCBuZWVkcyB0byByZS1pbml0CiAgICB0aGUgaGNkIHBhcnQgYWdhaW4gYWZ0ZXIgdGhlIEVIQ0kgQ01EX1JFU0VUIGlzIGV4ZWN1dGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDU5N2ViMjhiZDk2OTEyNjZiN2I4MDQzNjRjZGE1NzdjZGI1MWQxMDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MTI6MDEgMjAwOSArMDEwMAoKICAgIFVTQjogRml4IHNwZWVkIGRldGVjdGlvbiBvbiBFSENJIGNudHIgd2l0aCByb290IGh1YiB0cmFuc2FjdGlvbiB0cmFuc2xhdG9ycwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgdGhhdCB0aGUgc3BlZWQgb2YgVVNCIGRldmljZXMgd2FzIG5vdCBkZXRlY3RlZAogICAgY29ycmVjdGx5IG9uIHNvbWUgRUhDSSBjb250cm9sbGVycy4gVGhpcyB3aWxsIGJlIHVzZWQgb24gdGhlIHVwY29taW5nIFZDVAogICAgRUhDSSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDIwY2MwNjYxMWVhMzNmYzBhNjdhNWU1NmU2NDc2Mzc5ZDJkZTMwOTEKQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KRGF0ZToJU3VuIEphbiA0IDA5OjQxOjIwIDIwMDkgKzA1MzAKCiAgICB1c2IgOiBtdXNiIDogRW5hYmxpbmcgVVNCIE1TQyBzdXBwb3J0IGZvciBETTY0NDYgKFRJIERhVmluY2kpIHBsYXRmb3JtCgogICAgRW5hYmxpbmcgVVNCIE1TQyBzdXBwb3J0IGZvciBETTY0NDYgKFRJIERhVmluY2kpIHBsYXRmb3JtIGluIHRoZQogICAgY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhdmkgQmFidSA8cmF2aWJhYnVAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3dhbWluYXRoYW4gUyA8c3dhbWkuaXllckB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNTM4ZWY5Njc3MTUzMjJmNjRlZTA4ZWZhMjI5NmQ5NjgyMTExYjAxNApBdXRob3I6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgpEYXRlOglTdW4gSmFuIDQgMDk6NDE6MTYgMjAwOSArMDUzMAoKICAgIHVzYiA6IG11c2IgOiBFbmFibGluZyBETTY0NDYgKFRJIERhVmluY2kpIFVTQiBtb2R1bGUgcG93ZXIKCiAgICBFbmFibGluZyBETTY0NDYgKFRJIERhVmluY2kpIFVTQiBtb2R1bGUgcG93ZXIgYW5kIE1VU0IgbG93LWxldmVsCiAgICBjb250cm9sbGVyIGhvb2sgdXAgdG8gVVNCIGNvcmUgbGF5ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUmF2aSBCYWJ1IDxyYXZpYmFidUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBlMTQyZTlmMzVmOGVjNjFlNzRiZjgwMTk0MjhiMDAzZjUwNzBjMzNiCkF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CkRhdGU6CVN1biBKYW4gNCAwOTo0MToxMyAyMDA5ICswNTMwCgogICAgdXNiIDogbXVzYiA6IEFkZGluZyBETTY0NDYgKFRJIERhVmluY2kpIHBsYXRmb3JtIHNwZWNpZmljIFVTQiBzdXBwb3J0CgogICAgQWRkaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0gc3BlY2lmaWMgVVNCIGZ1bmN0aW9uYWxpdHkgZm9yCiAgICBVU0IgUGh5IGFuZCBWQlVTIGluaXRpYWxpemF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhdmkgQmFidSA8cmF2aWJhYnVAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3dhbWluYXRoYW4gUyA8c3dhbWkuaXllckB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgYTlkMzllYmU5MWVjZGQ1YWMwYTBjZjU2ZWExNjJhMTk3NzNkYjhkYQpBdXRob3I6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgpEYXRlOglTdW4gSmFuIDQgMDk6NDE6MDkgMjAwOSArMDUzMAoKICAgIHVzYiA6IG11c2IgOiBBZGRpbmcgVVNCIFZCVVMgZW5hYmxlIGZ1bmN0aW9uYWxpdHkgZm9yIERNNjQ0eCBEVkVWTQoKICAgIEFkZGluZyBVU0IgVkJVUyBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgRE02NDR4IERWRVZNIChUSSBEYVZpbmNpKQogICAgcGxhdGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogUmF2aSBCYWJ1IDxyYXZpYmFidUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhMTQyODk2OTM0Yzc1NWU2NzliYTg3ZTIyN2E4ZTQ0OWYzOWIwMDEyCkF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CkRhdGU6CVN1biBKYW4gNCAwOTo0MTowMyAyMDA5ICswNTMwCgogICAgdXNiIDogbXVzYiA6IEFkZGluZyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGZvciBNZW50b3IgVVNCIGNvbnRyb2xsZXIKCiAgICBBZGRpbmcgTWVudG9yIFVTQiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIE1lbnRvciBVU0IgSG9zdCBjb250cm9sbGVyCiAgICBmdW5jdGlvbmFsaXR5IGZvciBNZW50b3IgVVNCIE9URyBjb250cm9sbGVyIChtdXNiaGRyYykuCgogICAgU2lnbmVkLW9mZi1ieTogUmF2aSBCYWJ1IDxyYXZpYmFidUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBjN2Q3MDNmM2YzYzNkNmIwMjBiZGE0Y2Y2MzNmOGE2MTY3YzNjZDJhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgSmFuIDEgMTg6Mjc6MjcgMjAwOSAtMDUwMAoKICAgIHVzYi5oOiB1c2Ugc3RhbmRhcmQgX19MSVRUTEVfRU5ESUFOIGZyb20gTGludXggaGVhZGVycwoKICAgIFJhdGhlciB0aGFuIGZvcmNpbmcgcGVvcGxlIHRvIGRlZmluZSBhIGN1c3RvbSAiTElUVExFRU5ESUFOIiwganVzdCB1c2UgdGhlCiAgICBfX0xJVFRMRV9FTkRJQU4gb25lIGZyb20gdGhlIExpbnV4IGJ5dGVvcmRlciBoZWFkZXJzIHRoYXQgZXZlcnkgYXJjaCBpcwogICAgYWxyZWFkeSBzZXR0aW5nIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDdiNmUzMWViMTdlM2ZmNzYyMzhhNjA4MDNmYzUzMTUxN2Q1MTYyMjMKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVdlZCBEZWMgMzEgMTA6MzM6NTYgMjAwOCArMDEwMAoKICAgIFVTQiBlaGNpIGl4cDR4eCBzdXBwb3J0CgogICAgQWRkIFVTQiBlaGNpIGl4cDR4eCBob3N0IGNvbnRyb2xsZXIuIFRlc3Qgb24gaXhkcDQ2NSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDFlZDlmOWFkYzg4MjE4ODQxZGZlYjYwYjkwOTRhNWE1NDhiZmYwMDkKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVdlZCBEZWMgMzEgMTA6MzM6MjIgMjAwOCArMDEwMAoKICAgIFVTQiBlaGNpIHJlbW92ZSBpbmZpbml0ZSBsb29wIGFuZCB1c2UgaGFuZHNoYWtlIGZ1bmN0aW9uCgogICAgVVNCIGVoY2kgY29kZSBjbGVhbnVwLiBVc2UgaGFuZHNoYWtlIGluc3RlYWQgb2YgaW5maW5pdGUgd2hpbGUgbG9vcAogICAgdG8gY2hlY2sgdGhlIFNURF9BU1Mgc3RhdHVzCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA4ZmVhMjkxNGFjOTc0MDI5YjY1OTI2ZWY4MjQ3ZDkwOGY4NGQyMDJkCkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglXZWQgRGVjIDMxIDEwOjMyOjQxIDIwMDggKzAxMDAKCiAgICBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBVU0IgZWhjaSBwY2kKCiAgICBBZGQgVVNCIGVoY2kgcGNpIHN1cHBvcnQuIFRoaXMgcGF0Y2ggZG9lc24ndCBpbmNsdWRlIGFueQogICAgcGNpX2lkcyBhbmQgaXQgaXMgbm90IHRlc3RlZCBvbiByZWFsIGhhcmR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMTRlNDExMWNkYWI3ZTc3MzhmZjZhMjAzZDQ0NWU0ZDgzNzdmMDU4ZgpBdXRob3I6IEJyeWFuIFd1IDxCcnlhbi5XdUBhbmFsb2cuY29tPgpEYXRlOglUaHUgSmFuIDEgMTk6NDg6MDcgMjAwOSAtMDUwMAoKICAgIHVzYl9zdG9yYWdlOiBkbyBub3QgcmVzZXQgU2FuRGlzayBDb3Jwb3JhdGlvbiBVMyBDcnV6ZXIgTWljcm8gVVNCIHRodW1iIGRyaXZlCgogICAgVGhlIFNhbkRpc2sgQ29ycG9yYXRpb24gVTMgQ3J1emVyIE1pY3JvIDEvNEdCIEZsYXNoIERyaXZlIDAwMDAxNjI0NDM3M0ZGQjQKICAgIGRvZXMgbm90IGxpa2UgdG8gYmUgcmVzZXQsIHNvIGNoZWNrIGZvciBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDFlYjczNGZlZDNiNzlhNWU2MTA2ZGFkMTZlODgwNDE4OTRmZGFiMzAKQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KRGF0ZToJU3VuIEphbiA0IDEyOjE1OjM1IDIwMDkgKzA1MzAKCiAgICB1c2IgOiB1c2Jfa2JkIDogUG9wdWxhdGluZyAncHJpdicgbWVtYmVyIG9mIFVTQiBrZXlib2FyZCBkZXZpY2VfdCBzdHJ1Y3R1cmUKCiAgICBUaGlzIHBhdGNoIHBvcHVsYXRlcyB0aGUgJ3ByaXYnIGZpZWxkIG9mIHRoZSBVU0Iga2V5Ym9hcmQgZGV2aWNlX3QKICAgIHN0cnVjdHVyZS4gVGhlICdwcml2JyBmaWVsZCBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiB0aGUKICAgICdzdHJ1Y3QgdXNiX2RldmljZScgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyB0aGUgVVNCIGRldmljZS4KCiAgICBUaGUgJ3ByaXYnIGZpZWxkIGNhbiB0aGVuIGJlIHVzZWQgaW4gdGhlICd1c2JfZXZlbnRfcG9sbCcgZnVuY3Rpb24gdG8KICAgIGRldGVybWluZSB0aGUgVVNCIGRldmljZSB0aGF0IHJlcXVpcmVzIHRvIGJlIHBvbGxlZC4gQW4KICAgIGV4YW1wbGUgb2YgaXRzIHVzYWdlIGluICd1c2JfZXZlbnRfcG9sbCcgZnVuY3Rpb24gaXMgYXMgYmVsb3cuCgoJZGV2aWNlX3QgKmRldjsKCXN0cnVjdCB1c2JfZGV2aWNlICp1c2Jfa2JkX2RldjsKCgk8c25pcD4KCglkZXYgPSBkZXZpY2VfZ2V0X2J5X25hbWUoInVzYmtiZCIpOwoJdXNiX2tiZF9kZXYgPSAoc3RydWN0IHVzYl9kZXZpY2UgKilkZXYtPnByaXY7CglpZmFjZSA9ICZ1c2Jfa2JkX2Rldi0+Y29uZmlnLmlmX2Rlc2NbMF07CgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCAzNjY1MjNjMjZiNjMyMGFmMTcxNDU5YjE5ZTZlMGU5ZTNiYWE4M2NhCkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglUaHUgRGVjIDE4IDEwOjA1OjM3IDIwMDggKzAxMDAKCiAgICBVU0IgY2hhbmdlIHNwZWVkCgogICAgVVNCIGNoYW5nZXMgdGhlIHNwZWVkIGFjY29yZGluZyB0byB0aGUgcG9ydCBzdGF0dXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGMwZDcyMmZlN2VlMWNiNDUyZGZkOTI0NjQxOTE4OGIzZjZkOWM0ZGYKQXV0aG9yOiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVNhdCBEZWMgMTMgMjI6NTE6NTggMjAwOCArMDEwMAoKICAgIEVIQ0kgZml4IGNvZGUgYW5kIGl4cDR4eCB0ZXN0LgogICAgVVNCIGVoY2kgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI6CgogICAgI2RlZmluZSBDT05GSUdfQ01EX1VTQgkgICAgMQogICAgI2RlZmluZSBDT05GSUdfVVNCX1NUT1JBR0UJICAgIDEKICAgICNkZWZpbmUgQ09ORklHX1VTQl9FSENJCiAgICAjZGVmaW5lIENPTkZJR19VU0JfRUhDSV9JWFA0WFgJMQogICAgI2RlZmluZSBDT05GSUdfRUhDSV9JU19UREkJMQogICAgI2RlZmluZSBDT05GSUdfRUhDSV9ERVNDX0JJR19FTkRJQU4gICAgIDEKICAgICNkZWZpbmUgQ09ORklHX0VIQ0lfTU1JT19CSUdfRU5ESUFOICAgICAxCiAgICAjZGVmaW5lIENPTkZJR19TWVNfVVNCX0VIQ0lfTUFYX1JPT1RfUE9SVFMgMgogICAgI2RlZmluZSBDT05GSUdfTEVHQUNZX1VTQl9JTklUX1NFUQkgICAgMQoKICAgIDIgVVNCIERldmljZShzKSBmb3VuZAoJICAgc2Nhbm5pbmcgYnVzIGZvciBzdG9yYWdlIGRldmljZXMuLi4gMCBTdG9yYWdlIERldmljZShzKSBmb3VuZAogICAgPT4gdXNiIHRyZWUKCiAgICBEZXZpY2UgVHJlZToKICAgICAgMSAgSHViICgxLjVNQml0L3MsIDBtQSkKICAgICAgfCAgdS1ib290IEVIQ0kgSG9zdCBDb250cm9sbGVyCiAgICAgIHwKICAgICAgfCstMiAgTWFzcyBTdG9yYWdlICgxMk1CaXQvcywgMTAwbUEpCgkgICBTb255IFN0b3JhZ2UgTWVkaWEgMEMwNzA0MDkzMDI5NgoKICAgID0+CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNTFhYjE0MmI4YjU0NmQ1ZTYyN2IyYzhjMzZkMGFkYWUyMjI1NjVmNwpBdXRob3I6IG1pY2hhZWwgPG1pY2hhZWxAcGFuaWNraW5nLnJldGlzPgpEYXRlOglUaHUgRGVjIDExIDEzOjQzOjU1IDIwMDggKzAxMDAKCiAgICBbUEFUQ0hdIFRoaXMgcGF0Y2ggYWRkIHZhcml1cyBmaXggdG8gdGhlIGVoY2kuCiAgICAtIGZpeCBlaGNpX3JlYWRsLCBlaGNpX3dyaXRlbAogICAgLSBpbnRyb2R1Y2UgbmV3IGRlZmluZSBpbiBlaGNpLmgKICAgIC0gaW50cm9kdWNlIHRoZSBoYW5kc2hha2UgZnVuY3Rpb24gZm9yIHdhaXRpbmcgb24gYSByZWdpc3RlcgogICAgLSBmaXggdXNiX2VoY2lfZnNsIHdpdGggdGhlIG5ldyBIQ19MRU5HVEggbWFjcm8KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkYjYzMjk5YjFkZDI4OTRhZGU1NDIyNzgyMTBiY2NkMDQ2ZGU2NDM1CkF1dGhvcjogbWljaGFlbCA8bWljaGFlbEBwYW5pY2tpbmcucmV0aXM+CkRhdGU6CVdlZCBEZWMgMTAgMTc6NTU6MTkgMjAwOCArMDEwMAoKICAgIFtQQVRDSF0gRml4IEVIQ0kgdXNiLiBJIHN0YXJ0IHRvIHRlc3Qgb24gYQogICAgSVhQNDY1IGJvYXJkIGFuZCBJIGZpbmQgc29tZSBlcnJvcnMgaW4gdGhlIGNvZGUuIFRoaXMKICAgIHBhdGNoIGZpeDoKICAgIC0gZGVzY3JpcHRvciBpbml0aXppYWxpemF0aW9uIChjb25maWcsIGludGVyZmFjZSBhbmQgZW5kcG9pbnQKICAgICAgbXVzdCBiZSBvbmUgbmV4dC10byB0aGUgb3RoZXIgd2hlbiB0aGUgVVNCX0RUX0NPTkZJRyBtZXNzYWdlCiAgICAgIGlzIHNlbmQuCiAgICAtIEZJWCBsaXR0bGUvZW5kaWFuIGJpZ2VuZGlhbiAoaW50cm9kdWNlIHRoZSBDT05GSUdfRUhDSV9ERVNDX0JJR19FTkRJQU4KICAgICAgYW5kIHRoZSBDT05GSUdfRUhDSV9NTUlPX0JJR19FTkRJQU4pCiAgICAtIEludHJvZHVjZSB0aGUgbGludXggdmVyc2lvbiBvZiB0aGUgdXNiX2NvbmZpZ19kZXNjcmlwdG9yIGFuZAogICAgICB1c2JfaW50ZXJmYWNlIGRlc2NyaXB0b3IuIFRoaXMgZGVzY3JpcHRvciBkb2VzJ3QgY29udGFpbnMKICAgICAgdS1ib290IGV4dGVuc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA2YjkyNDg3ZGNmOWFmZTgzYTM1NzAxNTNkNjY5NDBmZGIyOTNiZTc2CkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglGcmkgTm92IDI4IDEzOjIyOjA5IDIwMDggKzAxMDAKCiAgICBVU0IgZWhjaSBmcmVlc2NhbGUgc3VwcG9ydAoKICAgIEFkZCBVU0IgZWhjaSBmcmVlc2NhbGUgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhYWYwOThjZmVlZDA0NTk1ZDRjNTEwMGZmZDM5MDk1ZDc5ZWRiZjkwCkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglGcmkgTm92IDI4IDEzOjIwOjQ2IDIwMDggKzAxMDAKCiAgICBVU0IgZWhjaSBjb3JlIHN1cHBvcnQKCiAgICBBZGQgVVNCIGVoY2kgY29yZSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDNlMTI2NDg0ZGY3ODY4ZTM0MTU0NWNjZTc0MGIyNGI2MmIwY2QzYjcKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CUZyaSBOb3YgMjggMTM6MTk6MTkgMjAwOCArMDEwMAoKICAgIFByZXBhcmUgVVNCIGxheWVyIGZvciBlaGNpCgogICAgUHJlcGFyZSBVU0IgbGF5ZXIgZm9yIGVoY2kgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhMGNiM2ZjMzFlNTg5OTZhMWM1NzMyNzE1YWMwNDE1OWQ0ZDI4NGZkCkF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgpEYXRlOglXZWQgRGVjIDEwIDE1OjUyOjA2IDIwMDggKzAxMDAKCiAgICBVU0Igc3RvcmFnZSBjbGVhbnVwIHBhdGNoCgogICAgQ2xlYW51cCB1c2Igc3RvcmFnZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZmUwMzNhZDZkMDg4MzA2M2ZlODU3MjM3YWJiOTQzNmZhYjAzMjA4YwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIE9jdCAxMiAwNjowMjo1NSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeHVwIG1pc2Mgd2FybmluZ3Mgc3VjaCBhcyBwcmludGYncyBhbmQgbWlzc2luZyBjYXN0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxZjRhM2JiNTAzNDM3MTljNDM0ZDdlMjU0MWEyZjg2NDgwYTZkMjVjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gT2N0IDEyIDIyOjA5OjI2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY29udmVydCBvbGQgYm9hcmRzIHRvIHVzZSBDT0JKUy15IE1ha2VmaWxlIHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDFmNzVkNmYwZmYwMDU3NjJkM2U2YWQ5MmFlNGNlMmFiMzY2YjNiYjUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6Mzg6MzcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcDogcmV3cml0ZSByZXNvdXJjZSBzd2FwIGxvZ2ljCgogICAgVGhlIG9sZCBzd2FwIGZ1bmN0aW9uIHRlbmRlZCB0byBjbG9iYmVyIHVucmVsYXRlZCBwaW5zIGFuZCBzY3JldyB1cCBtYXNrcy4KICAgIFJld3JpdGUgdGhlIHRoaW5nIGZyb20gc2NyYXRjaCBzbyBpdCBvbmx5IHVzZXMgdGhlIHJlc291cmNlcyBpdCBuZWVkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjlkNGVhMGE5MDczYzgyNDY5MTg0MzMxMDEwMTM2ZjUyZWRmOGRiNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMjowODo0MiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJvb3RsZHI6IGltcGxlbWVudCBCRjUzeC9CRjU2eCBMRFIgbG9hZGVyCgogICAgVGhlIEJGNTN4L0JGNTZ4IHBhcnRzIGRvIG5vdCBoYXZlIGFuIG9uLWNoaXAgUk9NIHRvIGJvb3QgTERScyBvdXQgb2YKICAgIGFyYml0cmFyeSBtZW1vcnkgbG9jYXRpb25zLCBzbyBpbXBsZW1lbnQgYSBiYXNpYyBvbmUgaW4gc29mdHdhcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhiMzVlM2FlZmY2YzJkNzQ3YzM3Njk3OTk3YjNmOGE4MDg0MzIzMjkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjI6MDU6NDIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBpbXBsZW1lbnQgcmVhbCB3cml0ZSBzdXBwb3J0IGZvciBPVFAKCiAgICBOb3cgdGhhdCByZWFsIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gcmVsZWFzZWQgZm9yIHRoZSBPVFAgaW50ZXJmYWNlIGFuZAogICAgdGhlIG9uLWNoaXAgUk9NIHdydCB3cml0aW5nL3RpbWluZ3MsIGltcGxlbWVudCBzdXBwb3J0IGZvciByZWFkaW5nL3dyaXRpbmcKICAgIGFzIHdlbGwgYXMgZHVtcGluZy9sb2NraW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5MzcyYzMyMTQ4MDhmYWI1NDUyMjdkOGQwZjc2YjNiZmNjNjc2MGVjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIyOjA0OjA1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdXBkYXRlIG9uLWNoaXAgUk9NIEFQSQoKICAgIFRoaXMgYnJpbmdzIHRoZSBBUEkgZm9yIHRoZSBvbi1jaGlwIFJPTSBpbiBsaW5lIHdpdGggdGhlIHRvb2xjaGFpbiBhbmQKICAgIGhhcmR3YXJlIGRvY3VtZW50YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc2MzM5MDNiZmY0MzJlYzdiMjc5MDVkY2U3Mzk2OTU4NTUzZjJiZTYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6NTI6MTcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBhbGxvdyBzZXJpYWwgY29uc29sZSB0byBiZSBkaXNhYmxlZAoKICAgIFNvbWUgZGV2aWNlcyBoYXZlIG5vIFVBUlQgZGV2aWNlIHB1bGxlZCBvdXQsIHNvIGFsbG93IHBlb3BsZSB0byBkaXNhYmxlIHRoZQogICAgZHJpdmVyIGNvbXBsZXRlbHkgaW4gZmF2b3Igb2Ygb3RoZXIgbWV0aG9kcyAobGlrZSBKVEFHLWNvbnNvbGUpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzNmVhOGU5YWQxMTA3YWYxMmQyNDRiYmE4YzczZTg1YjlmNjU1ZTQ1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjUxOjIwIDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc3VwcG9ydCBjb25zb2xlLW92ZXItSlRBRwoKICAgIFRoZSBCbGFja2ZpbiBKVEFHIGhhcyB0aGUgYWJpbGl0eSB0byBwYXNzIGRhdGEgdmlhIGEgYmFjay1jaGFubmVsIHdpdGhvdXQKICAgIGhhbHRpbmcgdGhlIHByb2Nlc3Nvci4gIFV0aWxpemUgdGhhdCBjaGFubmVsIHRvIGVtdWxhdGUgYSBjb25zb2xlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjZjhmMmVmYjVmMzljNTIyNWRhOTIzOTFjMTRhMDdlZWNiZWNhODgxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjQ5OjA2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogaGFuZGxlIG5ldyBhbm9tYWxpZXMgd2l0aCByZXNldAoKICAgIFdvcmthcm91bmQgZnVuIG5ldyBhbm9tYWxpZXMgcmVsYXRlZCB0byBzb2Z0d2FyZSByZXNldCBvZiB0aGUgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiMWU5NDM1YjY0MzA0M2RkOGZiZDFmY2M0NzMwOWM2YWNiN2IzYzhlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjQ0OjAwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcGFzcyBSRVRYIHRvIExpbnV4CgogICAgTWFrZSBzdXJlIHdlIHNhdmUgdGhlIHZhbHVlIG9mIFJFVFggYXQgcG93ZXIgb24gYW5kIHRoZW4gcGFzcyBpdCBvbiB0byB0aGUKICAgIGtlcm5lbCBzbyB0aGF0IGl0IGNhbiBuaWNlbHkgZGVidWcgYSAiZG91YmxlLWZhdWx0LWNhdXNlZC1hLXJlc2V0IiBjcmFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjVlYmEzZmFmY2NjZDE5NzkzODBmMTJhMjU2YmQwZTE5YmUzZDYxZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMTo0MDoyNiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGNsYXJpZnkgcmVsb2NhdGlvbiBjb21tZW50IGR1cmluZyBpbml0CgogICAgUGVvcGxlIG9mdGVuIGFzayBxdWVzdGlvbnMgYWJvdXQgdGhlIGluaXQgcHJvY2VzcyBhbmQgd2hlbiB0aGluZ3MgZ28KICAgIGZyb20gZmxhc2ggdG8gcmVsb2NhdGVkIGJhc2UsIHNvIGNsYXJpZnkgdGhlIGNvbW1lbnRzIGEgYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5NTQzM2Y2ZDQzZWRlNmI0MGMxZDkwMGYzZjcwNGM4MzlhYTA3NGYxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjIzOjQxIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjoganVzdCBzZXQgU1AgcmVnaXN0ZXIgZGlyZWN0bHkgZHVyaW5nIGluaXQKCiAgICBObyBuZWVkIHRvIHNldCB0aGUgU1AgcmVnaXN0ZXIgaW5kaXJlY3RseSB0byB0aGUgY29uZmlndXJlZCB2YWx1ZSB3aGVuIGl0CiAgICBjYW4gYmUgc2V0IGRpcmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MTIzMGU2ZTM1NmNjZjRjOTMyZTBjNGZmNTRmMWU0OWRhMDIyODVjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjE1OjUzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIHBvcnRtdXhpbmcgZm9yIFVBUlRzIG9uIHRoZSBCRjUxeAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0ZjZhMzEzMjQwYzUzMTA0MmYxNjkwOWEzYTE3MGFiMDQ3Yjk1Nzc5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDEgMDE6MjY6MjkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiByZXNwZWN0IENPTkZJR19DTEtJTl9IQUxGCgogICAgQXMgcG9pbnRlZCBvdXQgYnkgSXZhbiBLb3J5YWtvdnNraXksIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHdhcyBub3QKICAgIGFjdHVhbGx5IHJlc3BlY3RpbmcgdGhlIENPTkZJR19DTEtJTl9IQUxGIG9wdGlvbiB3aGVuIGNvbmZpZ3VyaW5nIHRoZQogICAgUExMX0NUTCByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGMyYmZiMGI1OGQ3NDYyYjllYmE2OGYzYWUzOGUzOGNhZGEwYWQzMwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEp1biAxIDAxOjIxOjM0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdXNlIGNvbW1vbiBtZW1jcHkgcm91dGluZSBkdXJpbmcgaW5pdAoKICAgIFJhdGhlciB0aGFuIHVzaW5nIGEgbG9jYWwgY3VzdG9tIG1lbWNweSBmdW5jdGlvbiwganVzdCBjYWxsIHRoZSBleGlzdGluZwogICAgb3B0aW1pemVkIEJsYWNrZmluIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM2MmM5NDMzNDczNjRlOTM3M2FmNGM1NTMwNzc4NDkxYWI1NmVjMmUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwMjoyNzowNiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNldCBkZWZhdWx0IGJvb3QgU1BJIENTIGZvciBCRjUzOC9CRjUzOQoKICAgIFRoZSBCRjUzOC9CRjUzOSB1c2UgQ1MyIGZvciBib290aW5nIG9mZiBvZiByYXRoZXIgdGhhbiBDUzEgbGlrZSBuZXdlcgogICAgQmxhY2tmaW4gcGFydHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc0ZGRlODBiZDVkNTViYzE0NjYzMDg1M2NhMTkxYWFlZWE3YzMwZjQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwMjoyMDo1OSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHB1bnQgdW51c2VkIEJGNTMzLVNUQU1QIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZlZTUzMWVlZWZjM2I1ZjJjNjNjN2ZlMjdiOWY1NWQ5MjRjNTljMjYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBBcHIgMTggMjA6NDQ6MTEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiByZXN1cnJlY3QgQkY1MzMtU1RBTVAgdmlkZW8gc3BsYXNoIGRyaXZlcgoKICAgIFRoaXMgdmlkZW8gZHJpdmVyIHVzZWQgdG8gbGl2ZSBpbiB0aGUgQmxhY2tmaW4gY3B1IGRpcmVjdG9yeSwgYnV0IGl0IHdhcwogICAgbG9zdCBkdXJpbmcgdGhlIHVuaWZpY2F0aW9uIHByb2Nlc3MuICBUaGlzIGJyaW5ncyBpdCBiYWNrLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBhNzUwZDAzOGYyNTQ4ZDg0NmVhMWUwNDZkODczZGM5MzJkMDQxMzE5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgQXByIDkgMDI6MzE6MjkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiB0aWdodGVuIHVwIHBvc3QgbWVtb3J5IGNvZGluZyBzdHlsZQoKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlOyBqdXN0IGNsZWFudXAgY29kZSBzdHlsZSBhIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDY0OTkwOGY5MmM5YmQyMTRkZDEzOWFhM2Q0Njk4YzE2NTRhNDVjNgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJV2VkIEFwciA5IDAyOjI5OjE4IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXAgbmFuZDogZml4IG1vcmUgc3R5bGUgZXJyb3JzIGluIHByZXZpb3VzIGNvbW1pdAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0MWYzMzI1YWU5YWRkNjQxMDM2ZDdjYjM2MmU4ODRiNjk4ZTUzZjA3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIwOjMxOjE3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZHJvcCBkZWFkL3dyb25nIGRlYnVnIGNvZGUgaW4gaW5pdGRyYW0oKQoKICAgIFRoZSBERUJVRyBjb2RlIGluIGluaXRkcmFtKCkgaXMgcXVpdGUgb2xkIGFuZCB3YXMgbmV2ZXIgcmVhbGx5IHVzZWZ1bCwgc28KICAgIGp1c3QgZHJvcCBpdCBhbHRvZ2V0aGVyLiAgQ29tbW9uIEJsYWNrZmluIGRlYnVnIGNvZGUgZG9lcyBhIGJldHRlciBqb2IuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDY1YmExYWJkM2I5MGUwYjI1ODU3NDU4MDliNzhlMjY1MWJkM2JhY2IKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjA6MzA6MjggMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjUzMy1lemtpdDogc2h1ZmZsZSBmbGFzaCBkZWZpbmVzIGEgbGl0dGxlCgogICAgU29tZSBvZiB0aGUgZmxhc2ggZGVmaW5lcyB3ZXJlbid0IGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGFuZCBjYXVzZWQgYnVpbGQKICAgIHByb2JsZW1zIGluIHNvbWUgY29uZmlndXJhdGlvbnMsIHNvIGxldCdzIG1vdmUgdHlwZXMgYW5kIGRlZmluZXMgdG8gYmV0dGVyCiAgICBsb2NhbCBsb2NhdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJlODUzYmY4NmI0MWU5MWY0YzQyMmYwZjU2ZmRmODdlYTMxOTEyNjYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwNDoxNjo0NyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IG92ZXJoYXVsIGkyYyBkcml2ZXIKCiAgICBUaGUgY3VycmVudCBCbGFja2ZpbiBpMmMgZHJpdmVyIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgd2l0aCBjZXJ0YWluIGRldmljZXMKICAgIGR1ZSB0byBpdCBicmVha2luZyB1cCB0cmFuc2ZlcnMgaW5jb3JyZWN0bHkuICBUaGlzIGlzIGEgcmV3cml0ZSBvZiB0aGUKICAgIGRyaXZlciBhbmQgcmVsb2NhdGVzIGl0IHRvIHRoZSBuZXdlciBwbGFjZSBpbiB0aGUgc291cmNlIHRyZWUuCgogICAgQWxzbyByZW1vdmUgZHVwbGljYXRlZCBJMkMgc3BlZWQgZGVmaW5lcyBpbiBCbGFja2ZpbiBib2FyZCBjb25maWdzIGFuZAogICAgZGlzYWJsZSBJMkMgc2xhdmUgYWRkcmVzcyB1c2FnZSBzaW5jZSBpdCBpc24ndCBpbXBsZW1lbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjZlZGM3MTlhMTA2YWI3ZmE2ZTY5NTBiNGQ5N2JjMzljMTM2OGU0NQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDA0OjAwOjA3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcmVzcGVjdCBDT05GSUdfU1lTX01PTklUT1JfTEVOIGZvciBkZWZhdWx0IGZsYXNoIHByb3RlY3Rpb24KCiAgICBSZXNwZWN0IHRoZSBDT05GSUdfU1lTX01PTklUT1JfTEVOIGRlZmluZSByYXRoZXIgdGhhbiBhc3N1bWluZyBhIHNpemUgb2YKICAgIDEyOGtCIHdoZW4gc2V0dGluZyB1cCB0aGUgZGVmYXVsdCBmbGFzaCBwcm90ZWN0aW9uIHJlZ2lvbiBmb3IgVS1Cb290CiAgICBpdHNlbGYuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc4YTBiYTdkYzI0Yzk2ODIzNzFmNmVlODU0OWI1NjlmYjU3M2EzMjkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzo1NzozOSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHJlc3BlY3QvY2hlY2sgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCgogICAgV2hlbiBzZXR0aW5nIHVwIHRoZSBnbG9iYWwgZGF0YSwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzaXplb2YoKSwgdXNlIHRoZQogICAgY29tbW9uIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSBkZWZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDAxODE1YzJkMDZjNWI4MzhmMmNkNTM2NzAzZTQ3YmQyYzkxNDgxOTQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzo1MjoyNCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGltcGxlbWVudCBnZW5lcmFsIHN1cHBvcnQgZm9yIENPTkZJR19TVEFUVVNfTEVECgogICAgSGVyZSBhcmUgdGhlIEJsYWNrZmluLXNwZWNpZmljIGFuZCBib2FyZC1pbmRlcGVuZGVudCBwaWVjZXMgZm9yIHN0YXR1cyBsZWRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2ODgyYjVhNzlhMzI0NzQ5NGI2MmMwNTAxNWZhNjcyNTU3ZjFiZmFhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDM6NDk6MzIgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkbyBub3QgaW5pdCBpMmMgaW4gQmxhY2tmaW4gYm9hcmQgaW5pdAoKICAgIFRoZSBjb21tb24gY29kZSB0YWtlcyBjYXJlIG9mIGNhbGxpbmcgaTJjX2luaXQoKSB3aGVuIG5lZWRlZCwgc28gbm8gcG9pbnQKICAgIGluIHVzIGRvaW5nIGl0IGFzIHdlbGwuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDExMThlYTczNjk4ZWVlNmU3MmVmNWNiZmMwMGU0MTc0NjA0MDMwNGYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzo0MjoyMCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmaW5fbWFjOiB1cGRhdGUgcG9ydCBtdXhpbmcKCiAgICBBZGRzIHN1cHBvcnQgbW9yZSBCbGFja2ZpbiBwYXJ0cyBhbmQgZml4ZXMgYnJva2VuIG11eGluZyBmb3Igb2xkZXIgb25lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDViNzVlNDg4MzJmYzRhZmVlY2Y4ZTc2ZDcwNDM0OTU1N2RmZmEzNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjM1OjQ0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IGRjYWNoZSBoYW5kbGluZyB3aGVuIGRvaW5nIGRtYSBtZW1jcHkncwoKICAgIE91ciBkY2FjaGUgaW52YWxpZGF0ZSBmdW5jdGlvbiBkb2Vzbid0IGp1c3QgaW52YWxpZGF0ZSwgaXQgYWxzbyBmbHVzaGVzLgogICAgU28gcmVuYW1lIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseSBhbmQgZml4IHRoZSBkbWFfbWVtY3B5KCkgZnVuY3Rpb24gc28gaXQKICAgIGRvZXNuJ3QgaW5hZHZlcnRlbnRseSBjb3JydXB0IHRoZSBkYXRhIGRlc3RpbmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2OGU1NjMyNDk0MTY4MDk1ZDc1ZjEyMGFmNzAwNDNiNjhhZmQyNDc2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTg6NTY6NTYgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkb250IGdlbmVyYXRlIGxkcnMgd2l0aCAtLWZvcmNlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc0NjI5MGRmZDg2YTcwYjQxZmM1ZmRkM2RmMTQyNGE2NDdkNWM1ZTgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxODo1NTozMCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHBhc3MgLS1ibW9kZS8tLWluaXRjb2RlIHdoZW4gY3JlYXRpbmcgbGRyCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDAzMzJlNGRmNzFmY2NmOWE5NmM1YTQzOTNlM2M1ZDVkYWE1MDg4MGEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxODozOToyNyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IG1pbmltaXplIHRpbWUgY2FjaGUgaXMgdHVybmVkIG9mZiB3aGVuIHJlcGxhY2luZyBjcGxiIGVudHJpZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjFkNjMxMzYwNDMwY2YwYWU5MDk5NjEyMjczY2Q0ZGUyODkxMWJhOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE1OjMxOjEzIDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc3BsaXQgY2FjaGUgaGFuZGxpbmcgb3V0IG9mIGRtYV9tZW1jcHkoKQoKICAgIENyZWF0aW5nIGEgbmV3IGRtYV9tZW1jcHkoKSBmdW5jdGlvbiB0aGF0IHNraXBzIGFsbCBjYWNoZSBjaGVja3MgYWxsb3dzIHVzCiAgICB0byB1c2UgdGhlIGZ1bmN0aW9uIGluIHZlcnkgZWFybHkgaW5pdCB3aGVyZSB0aGUgY2FjaGUgaXMgbm90IHlldCBzZXR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDMxZWIzODUxMmJlZDM3N2Q1ZDRiM2M2OTY2NjJlNTIxMjBhMmU0YwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE1OjMwOjQ5IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWJvcnQgZG1hX21lbWNweSgpIGZvciBMMSBzY3JhdGNocGFkCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDgxYjc5OWFkZDcwOTE3N2U4Mzg0NjY0NjFmN2I5OTg5NDg4YjBmZDUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxNToyNzo1MiAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHJlbmFtZSBib290bS5jIHRvIGJvb3QuYwoKICAgIFRoZSBib290IGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBtb3JlIHRoYW4ganVzdCAiYm9vdG0iLCBzbyByZW5hbWUgaXQKICAgIGFjY29yZGluZ2x5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkN2NhN2RkNWJmYzQxOGFjMTczZTlkMjcxMmY2Y2MyZDgxNDdhMDkxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTM6MjI6MzcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzZXQgbW9yZSBzYW5lIGRlZmF1bHQgYm9hcmQgY29uZmlnIHZhbHVlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzNmNkNTJhMDA3OTRmYjE1ZmZhYjA1ZDY0MGFjY2E5MmQ3NDgyOTkzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTU6MjQ6NTkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBjb252ZXJ0IENNRF9MSU5FX0FERFIgdG8gQ09ORklHX0xJTlVYX0NNRExJTkVfe0FERFIsU0laRX0KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzgwNTRiYzEyZTAwNjY5YmQ3NTg4ZjJiMzBmZWY0OGFhOTRiYWJhYwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjIxOjI3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIGJpdCBkZWZpbmVzIGZvciBERFIgcGFydHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTU0NTAyZmUwNzk2ZjNiN2E0Njk4Mzc4YzVkMjA4MGFlMjhhOTc4MgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjIxOjExIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogYWRkIGRlZmluZXMgdG8gZGVzY3JpYmUgYWN0aXZlIGJvb3Ryb20gYmVoYXZpb3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmI2ZmQ1Yzc3ZGI5YzZlZDNjZWE5Nzk5Yzg2ZmY5MjJjZjAxMDdiMgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMjcgMTY6MDM6NTMgMjAwOSAtMDYwMAoKICAgIG1wYzgzeHg6IGZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBmbHVzaF9jYWNoZScgZXJyb3IgaW4gc2ltcGM4MzEzIGJ1aWxkCgogICAgZXh0ZW5kIGNvbW1pdCBjNzA1NjRlNmIxYmQwOGYzMjMwMTgyMzkyMjM4OTA3ZjM1MzFhODdlCiAgICAiTkFORDogRml4IGNhY2hlIGFuZCBtZW1vcnkgaW5jb25zaXN0ZW5jeSBpc3N1ZSIgdG8gYWRkIHRoZSBjYWNoZS5vIGRlcGVuZGVuY3kKICAgIHRvIHRoZSBzaW1wYzgzMTMgYnVpbGQgYW5kIGZpeCB0aGlzOgoKICAgIC4uLkxhcmdlIFBhZ2UgTkFORC4uLkNvbmZpZ3VyaW5nIGZvciBTSU1QQzgzMTMgYm9hcmQuLi4KICAgIG5hbmRfYm9vdF9mc2xfZWxiYy5vOiBJbiBmdW5jdGlvbiBgbmFuZF9ib290JzoKICAgIG5hbmRfc3BsL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL25hbmRfYm9vdF9mc2xfZWxiYy5jOjE1MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZmx1c2hfY2FjaGUnCiAgICBtYWtlWzFdOiAqKiogWy9ob21lL3IxYWFoYS9naXQvdS1ib290LW1wYzgzeHgvbmFuZF9zcGwvdS1ib290LXNwbF0gRXJyb3IgMQogICAgbWFrZTogKioqIFtuYW5kX3NwbF0gRXJyb3IgMgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTRhN2NjNDkxMmZlZWZhNDViZTk2MWNjNDdjYzE1OTU2MzcyNWQyZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjggMDk6MjU6MzEgMjAwOSArMDEwMAoKICAgIG1wYzg1MzZkcy5jOiBpbmNsdWRlIHNhdGEuaCB0byBmb3IgbmVlZGVkIGZ1bmN0aW9uIHByb3RvdHlwZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJmYjI2MDRkNWMyMGJlYjA2MWIwYTk0MjgyYjdmNmViMTRkMDBjYjgKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE4OjAzOjEyIDIwMDkgLTA2MDAKCiAgICBDb21tYW5kIHVzYWdlIGNsZWFudXAKCiAgICBSZW1vdmUgY29tbWFuZCBuYW1lIGZyb20gYWxsIGNvbW1hbmQgInVzYWdlIiBmaWVsZHMgYW5kIHVwZGF0ZQogICAgY29tbW9uL2NvbW1hbmQuYyB0byBkaXNwbGF5ICJuYW1lIC0gdXNhZ2UiIGluc3RlYWQgb2YKICAgIGp1c3QgInVzYWdlIi4gQWxzbyByZW1vdmUgbmV3bGluZXMgZnJvbSBjb21tYW5kIHVzYWdlIGZpZWxkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDc5NjIxYmMxMGJhOGI4YzQ1ZDM0ODk5NGFiYTViOWU0OTIzY2I3N2IKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE4OjAzOjExIDIwMDkgLTA2MDAKCiAgICBhbWNjOiBDbGVhbiB1cCBjb21tYW5kIHVzYWdlIG91dHB1dAoKICAgIFVwZGF0ZSB0YWlodSBhbmQgdGFpc2hhbiBjb21tYW5kcyB0byB1c2UgY21kX3VzYWdlKCkgZnVuY3Rpb24KICAgIHRvIGRpc3BsYXkgdXNhZ2UgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA2MmMzYWU3YzZlZjIxNWIxYWZhNjE0YWJkZjYxYWNmMDc3NzUyMjA3CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEphbiAyNyAxODowMzoxMCAyMDA5IC0wNjAwCgogICAgU3RhbmRhcmRpemUgY29tbWFuZCB1c2FnZSBtZXNzYWdlcyB3aXRoIGNtZF91c2FnZSgpCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4NGNkZTJiYjQwOWMwN2M2ZWYzNmExOTJkMTk0MzU5ZDRlOWNjZDcwCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIEphbiAyNyAxODowMzowOSAyMDA5IC0wNjAwCgogICAgcGNzNDQwZXA6IENsZWFuIHVwIGxlZCBjb21tYW5kIGRlZmluaXRpb24KCiAgICBUaGUgcGNzNDQwZXAncyBsZWQgY29tbWFuZCB1c2FnZSBmb3JtYXR0aW5nIGlzIG5vbi1zdGFuZGFyZC4gIEl0CiAgICB3YXMgbWFkZSBzdGFuZGFyZCBpbiBwcmVwYXJhdGlvbiBmb3IgbGFyZ2VyIGNvbW1hbmQgdXNhZ2UgdXBkYXRlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDk1MDdlNzg2N2UwNGRjNDhjODBlZTMzM2MyYTlhNWU3MGU4ODdmNjIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgSmFuIDI3IDE4OjAzOjA4IDIwMDkgLTA2MDAKCiAgICBDbGVhbiB1cCBkaXVmYiBjb21tYW5kIGRlZmluaXRpb25zCgogICAgVGhlIGRpdWZiIGNvbW1hbmQgdXNhZ2UgZm9ybWF0dGluZyBpcyBub24tc3RhbmRhcmQuICBJdCB3YXMKICAgIG1hZGUgc3RhbmRhcmQgaW4gcHJlcGFyYXRpb24gZm9yIGxhcmdlciBjb21tYW5kIHVzYWdlIHVwZGF0ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA2NDUwYTg0ODU4MzZmYzgwNjE1YWU2ZGU2YTg2NGMzMzM2OWI0NGY1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyOCAwMDoyOToyNiAyMDA5ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRywgdGlueSBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGNmN2UzOTlmYjM1YjNhZWE5MGEyN2QxZGY3MmY0NWY1ZDYxNTYyMDQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBKYW4gMjcgMTY6MTI6MjEgMjAwOSAtMDUwMAoKICAgIFNBVEE6IGRvIG5vdCBhdXRvLWluaXRpYWxpemUgZHVyaW5nIGJvb3QKCiAgICBSYXRoZXIgdGhhbiBoYXZlIHRoZSBib2FyZCBjb2RlIGluaXRpYWxpemUgU0FUQSBhdXRvbWF0aWNhbGx5IGR1cmluZyBib290LAogICAgbWFrZSB0aGUgdXNlciBtYW51YWxseSBydW4gInNhdGEgaW5pdCIuICBUaGlzIGJyaW5ncyB0aGUgU0FUQSBzdWJzeXN0ZW0gaW4KICAgIGxpbmUgd2l0aCBjb21tb24gVS1Cb290IHBvbGljeS4KCiAgICBSYXRoZXIgdGhhbiBoYXZpbmcgYSBkZWRpY2F0ZWQgd2VhayBmdW5jdGlvbiAiaXNfc2F0YV9zdXBwb3J0ZWQiLCBwZW9wbGUKICAgIGNhbiBvdmVycmlkZSBzYXRhX2luaXRpYWxpemUoKSB0byBkbyB0aGVpciB3ZWlyZCBib2FyZCBzdHVmZi4gIFRoZW4gdGhleQogICAgY2FuIGNhbGwgdGhlIGFjdHVhbCBfX3NhdGFfaW5pdGlhbGl6ZSgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1MDk3MDgzOTcxMmRkYTM1Mzk5ZTJmYTgzZmU4MThkZjkzNTRkNjE4CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJTW9uIEphbiAyNiAwODo0NToxNCAyMDA5IC0wNTAwCgogICAgcGFydF9lZmk6IEZpeCBwYXJ0aXRpb24gc2l6ZSBjYWxjdWxhdGlvbiBkdWUgdG8gaW5jbHVzaXZlIGVuZGluZyBMQkEuCgogICAgVGhlIGVuZGluZyBMQkEgaXMgaW5jbHVzaXZlLiBIZW5jZSwgdGhlIHBhcnRpdGlvbiBzaXplIHNob3VsZCBiZQogICAgKChlbmRpbmctTEJBICsgMSkgLSBzdGFydGluZy1MQkEpIHRvIGdldCB0aGUgcHJvcGVyIHBhcnRpdGlvbiBzaXplLgoKICAgIFRoaXMgaXMgY29uZmlybWVkIGFnYWluc3QgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcGFydGVkIHRvb2wuCiAgICAoZS5nLiB1c2UgcGFydGVkIC9kZXYvc2RhIC1zIHVuaXQgUyBwcmludCkgYW5kIG9ic2VydmUgdGhlIHNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KCmNvbW1pdCBiNWIwMDRhZDhhMGFjNmY5OGJkNTcwOGVjOGIyMmZiZGRkMWMxMDQyCkF1dGhvcjogVG9tYXN6IEZpZ2EgPHRvbWFzei5maWdhQGdtYWlsLmNvbT4KRGF0ZToJVHVlIERlYyAzMCAxODozNTo1NyAyMDA4ICswMTAwCgogICAgamZmczI6IEZpeCB6ZXJvIHNlY3Rvcl9zaXplIHdoZW4gbm90IHVzaW5nIENPTkZJR19KRkZTMl9DTURMSU5FCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyAoPykgaW50cm9kdWNlZCBhZnRlciBpbmNsdXNpb24gb2YgdGhlIG5ldwogICAgSkZGUzIgY29kZS4KCiAgICBXaGVuIG5vdCB1c2luZyBDT05GSUdfSkZGUzJfQ01ETElORSwgdGhlIGNvZGUgaW4gY21kX2pmZnMyLmMgZG9lc24ndAogICAgZmlsbCBpbiBwYXJ0LT5zZWN0b3Jfc2l6ZSAoa2VlcGluZyBpdCBhcyAwKSwgYnV0IGEgY29ycmVjdCB2YWx1ZSBpcwogICAgbmVlZGVkIGJ5IHRoZSBjb2RlIGluIGpmZnMyXzFwYXNzLmMuIFRoaXMgY2F1c2VzIGFsbCBKRkZTMiBhY2Nlc3NlcwogICAgdG8gYmUgaW4gdGhlIHNhbWUgcGxhY2Ugb2YgdGhlIG1lbW9yeSwgd2hhdCBvYnZpb3VzbHkgbWVhbnMKICAgIGltcG9zc2liaWxpdHkgdG8gdXNlIHRoZSBKRkZTMiBwYXJ0aXRpb24uCgogICAgVGhpcyBwcm9ibGVtIGlzIGZpeGVkIGluIHRoaXMgcGF0Y2ggYnkgaW5jbHVkaW5nIHNlY3RvciBzaXplCiAgICBjYWxjdWxhdGlvbiBpbiBub24tQ09ORklHX0pGRlMyX0NNRExJTkUgbXRkcGFydHNfaW5pdCB2YXJpYW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbWFzeiBGaWdhIDx0b21hc3ouZmlnYV9hdF9nbWFpbC5jb20+Cgpjb21taXQgYmE2OWRjMjZhNWZkNjA2ZGE0OTU3M2JiMmYxNWU3NTZhMzRmM2Y5OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyAzMCAwMjo1OToyNSAyMDA4IC0wNTAwCgogICAgc2F2ZWVudjogc3RhbmRhcmRpemUgZW5hYmxlbWVudAoKICAgIFJhdGhlciB0aGFuIHNwZWNpYWwgY2FzaW5nIGVhY2ggZW52aXJvbm1lbnQgdHlwZSBmb3IgZW5hYmxpbmcgdGhlIHNhdmVlbnYKICAgIGNvbW1hbmQsIGhhdmUgdGhlbSBhbGwgYmVoYXZlIHRoZSBzYW1lLiAgVGhpcyBhdm9pZHMgYml0cm90IGFzIG5ldyBlbnYKICAgIHNvdXJjZXMgYXJlIGFkZGVkL3JlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDJhYzY5ODVhNzQ2NmExYzhhN2FhOGIyZmEyNGQzNjA5MjVhODI3NjQKQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+CkRhdGU6CU1vbiBEZWMgMjkgMTc6MzY6MDEgMjAwOCAtMDYwMAoKICAgIHNvZnRfaTJjLmMgYWRkIG9wdGlvbiBmb3IgcmVwZWF0ZWQgc3RhcnQgaW4gaTJjX3JlYWQoKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhICNkZWZpbmUgdG8gb3B0aW9uYWxseSBjaGFuZ2UgdGhlIGJlaGF2aW91ciBvZgogICAgaTJjX3JlYWQoKSBpbiBzb2Z0X2kyYy5jIHRvIHNlbmQgYW4gSTJDIHJlcGVhdGVkIHN0YXJ0IGluc3RlYWQgb2YgYQogICAgc3RvcC1zdGFydCBiZXR3ZWVuIHNlbmRpbmcgdGhlIGRldmljZSBhZGRyZXNzIHBvaW50ZXIgd3JpdGUgYW5kCiAgICByZWFkaW5nIGJhY2sgdGhlIGRhdGEuICBUaGUgY3VycmVudCBiZWhhdmlvdXIgaXMgcmV0YWluZWQgYXMgdGhlCiAgICBkZWZhdWx0LgoKICAgIFdoaWxlIG1vc3QgZGV2aWNlcyB3aWxsIHdvcmsgZWl0aGVyIHdheSwgSSBoYXZlIGEgc21hcnQgYmF0dGVyeSgqKQogICAgdGhhdCByZXF1aXJlcyByZXBlYXRlZCBzdGFydCwgYW5kIHNvbWVvbmUgYXQgc29tZSBwb2ludCBmb3VuZCBhCiAgICBkZXZpY2UgdGhhdCByZXF1aXJlZCBhIHN0b3Atc3RhcnQuCgogICAgKCopIGh0dHA6Ly93d3cuaW5zcGlyZWQtZW5lcmd5LmNvbS9TdGFuZGFyZF9Qcm9kdWN0cy9OTDIwNTQvTkwyMDU0JTIwUmV2MS4wJTIwRGF0YSUyMFNoZWV0LnBkZgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KCmNvbW1pdCAzNDI5MDcxNzAwOTYzY2EyZjk0NGM1MWQ2OTVhNzQ4MWFmMGNlZTMzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEphbiAyNyAyMjowNzoxNCAyMDA5ICswMTAwCgogICAge2RlbHRhLHp5bG9uaXRlfS9sb3dsZXZlbF9pbml0LlM6IGZpeCB0eXBvCgogICAgQ29tbWl0IDlkODAzZDhjIG1pc3Rha2VubHkgY2hhbmdlZCBzb21lIGNvbnN0YW50cwogICAgZnJvbSAweDMwMCBpbnRvIDMwMCAtIHRoaXMgcGF0Y2ggZml4ZXMgaXQuCgogICAgUG9pbnRlZCBvdXQgYnkgVG9tIEV2YW5zIDx0b21AY2Vvcy5jb20uYXU+LCBzZWUKICAgIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmJvb3QtbG9hZGVycy51LWJvb3QvNTE5OTIgZm9yCiAgICBkZXRhaWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWJjNDM0MzczMDEzYWYyNDE4MzVjMTQwMTFhYzNmMjkxZGNjYmY1MwpBdXRob3I6IFN0ZWZhbiBBbHRob2VmZXIgPHN0ZWZhbi5hbHRob2VmZXJAd2ViLmRlPgpEYXRlOglTYXQgRGVjIDIwIDE5OjQwOjQxIDIwMDggKzAxMDAKCiAgICBkcml2ZXJzL25ldC9lMTAwMC5jOiBtaXNzaW5nIHRlcm1pbmF0b3IgZm9yIHN1cHBvcnRlZCBkZXZpY2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIEFsdGhvZWZlciA8c3RlZmFuLmFsdGhvZWZlckB3ZWIuZGU+Cgpjb21taXQgNjVmN2Q0MTAzMWE3MGIxNjQ5YjM1MDIwOTk1YzUwNWVkY2E5MTUzMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gMjcgMjE6MzY6MjggMjAwOSArMDEwMAoKICAgIGZhdC5jOiBmaXggd2FybmluZzogYXJyYXkgc3Vic2NyaXB0IGlzIGFib3ZlIGFycmF5IGJvdW5kcwoKICAgIEZpeCBiYXNlZCBvbiBzdWdnZXN0aW9uIGJ5IERhdmlkIEhhd2tpbnMgPGR3aEBvdnJvLmNhbHRlY2guZWR1Pi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDEwN2I4MDFjZjNmZTM5NjEyZDY5ZDcwNTgxZWJjM2JmNWUyMTU1NTQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAyIDE1OjExOjQxIDIwMDkgKzAxMDAKCiAgICBGaXggZ3VuemlwIGluIGNhc2Ugb2YgaW5zdWZmaWNpZW50IG91dHB1dCBidWZmZXIKCiAgICBVLUJvb3QncyBndW56aXAoKSBmdW5jdGlvbiBkb2VzIG5vdCBoYW5kbGUgdGhlIHJldHVybiBjb2RlCiAgICBvZiB6bGliJ3MgaW5mbGF0ZSgpIGZ1bmN0aW9uIGNvcnJlY3RseS4gZ3VuemlwKCkgaXMgaW1wbGVtZW50ZWQKICAgIHRvIHVuY29tcHJlc3MgYWxsIGlucHV0IGRhdGEgaW4gb25lIHJ1bi4gU28gdGhlIGNvcnJlY3QgcmV0dXJuCiAgICBjb2RlIGZvciB0aGUgZ29vZCBjYXNlIGlzIFpfU1RSRUFNX0VORC4gSW4gY2FzZSBvZiBpbnN1ZmZpY2llbnQKICAgIG91dHB1dCBidWZmZXIgbWVtb3J5IGluZmxhdGUgcmV0dXJucyBaX09LLiBGb3IgZ3VuemlwKCkgdGhpcwogICAgaXMgYW4gZXJyb3IuCgogICAgSXQgYWxzbyBtYWtlcyBzZW5zZSB0byBtZSB0byBjYWxsIGluZmxhdGVFbmQoKSBhbHNvIGluIGNhc2UKICAgIG9mIGFuIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDJhNjFlZmY2YTgyZjBkNmUyMzM1ZDk2ODc5OWIzZmJlYjNmZjRkOGUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MjU6MDEgMjAwOSArMDEwMAoKICAgIE1JUFM6IEFkZCBWQ1QgYm9hcmQgc2VyaWVzIHN1cHBvcnQgKFBhcnQgMy8zKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZTY5MWU1NzE5YzQ4ZjFkMjgyNmNiNzI3MjI0OTdkMWQxNjI3NjViCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIxIDE3OjI0OjQ5IDIwMDkgKzAxMDAKCiAgICBNSVBTOiBBZGQgVkNUIGJvYXJkIHNlcmllcyBzdXBwb3J0IChQYXJ0IDIvMykKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTA3NTI3OTBiYzkyODVjMGMxYzUyMzVlODhmM2E0ZWYyZWVjMWU3MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMSAxNzoyNDozOSAyMDA5ICswMTAwCgogICAgTUlQUzogQWRkIFZDVCBib2FyZCBzZXJpZXMgc3VwcG9ydCAoUGFydCAxLzMpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAzZDNiZmIwMDgwNmI1NDQxZjE4NzFjNzQwOGMxNzQ5ODYzZTBmZGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMTc6MjA6MjAgMjAwOSArMDEwMAoKICAgIE1JUFM6IEFkZCBmbHVzaF9kY2FjaGVfcmFuZ2UoKSBhbmQgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UoKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBmbHVzaF8vaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UoKSB0byB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuCiAgICBUaG9zZSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBmb3IgdGhlIHVwY29taW5nIGRjYWNoZSBzdXBwb3J0IGZvciB0aGUgVVNCCiAgICBFSENJIGRyaXZlci4gSSBjaG9zZSB0aGlzIEFQSSBiZWNhdXNlIHRob3NlIGNhY2hlIGhhbmRsaW5nIGZ1bmN0aW9ucyBhcmUKICAgIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgUFBDIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGRlODMyYTk5NDE0ZmYwNmE0YjJjZGM5ZjUyODBiMzg3ZGEwMzk4MzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKYW4gMjYgMTA6MDU6MjAgMjAwOSArMDEwMAoKICAgIG5hbmRfc3BsOiBGaXggY29tcGlsZSBwcm9ibGVtIHdpdGggYm9hcmRfbmFuZF9pbml0KCkgcHJvdG90eXBlCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBub3cgb2Jzb2xldGUgYW5kIGFkZGl0aW9uYWxseSB3cm9uZ2x5IGRlZmluZWQKICAgIGJvYXJkX25hbmRfaW5pdCgpIHByb3RvdHlwZSBmcm9tIG5hbmRfc3BsL25hbmRfYm9vdC5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU4ZWFjNDM3MTg5NDMwZDhlMDRhNWQyNTRlZDkyYzU4YmM1MzRhNzkKQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgpEYXRlOglXZWQgSmFuIDE0IDA4OjQ0OjI2IDIwMDkgLTA1MDAKCiAgICBDRkk6IEFkZCBnZW9tZXRyeSByZXZlcnNhbCBmb3IgU1RNaWNybyBNMjlXMzIwRVQKCiAgICBBZGRlZCBmbGFzaF9maXh1cF9zdG0gdG8gZml4IGdlb21ldHJ5IHJldmVyc2FsIG9uIFNUTWljcm8gTTI5VzMyMEVUIGZsYXNoIGNoaXAuCgogICAgTW9kZWxlZCBhZnRlciBmbGFzaF9maXh1cF9hbWQsIHRoaXMgcGF0Y2ggaGFuZGxlcyB0aGUgZ2VvbWV0cnkgcmV2ZXJzYWwKICAgIG9yIGVyYXNlIHNlY3RvcnMgdGhhdCBleGlzdCBmb3IgU1QgTWljcm8gKG5vdyBOdW1vbnl4KSBNMjlXMzIwRVQgZmxhc2guCiAgICBTaW5jZSBJIGNhbm5vdCB0ZXN0IGFsbCBTVE0ncyBjaGlwcywgdGhlIGRldGVjdGlvbiBpcyBpbXBsZW1lbnRlZCBhcwogICAgbmFycm93IGFzIHBvc3NpYmxlIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZjhlODUxZTg5N2I1MzU5NTlhMDc4MTE3MTkxMGNkOTdmMzNjMzBjCkF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgpEYXRlOglUdWUgRGVjIDE2IDE3OjI1OjU1IDIwMDggKzAxMDAKCiAgICBDRkk6IGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIGZ1bmN0aW9uIGZpbmRfc2VjdG9yKCkKCiAgICBUZXN0ZWQgb24gVFFNNTIwMFMtQkQgd2l0aCBTYW1zdW5nIEs4UDI4MTVVUUIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTcyOTI4NzFhNzljYzQ4ZDk4ZTNhNzA4ZGQzYzNiODE1ODBkYjZlZgpBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJVHVlIERlYyAxNiAxNzoyNTo1NCAyMDA4ICswMTAwCgogICAgQ0ZJOiBhdm9pZCByZWR1bmRhbnQgZnVuY3Rpb24gY2FsbCBpbiBzaW5nbGUgd29yZCBwcm9ncmFtbWluZyBtb2RlCgogICAgVGhlIGZ1bmN0aW9uIGZpbmRfc2VjdG9yKCkgZG9lc24ndCBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSBpbgogICAgdGhlIGNhc2Ugb2YgQU1EIGNvbW1hbmQgc2V0LgogICAgVGVzdGVkIG9uIFRRTTUyMDBTLUJEIHdpdGggU2Ftc3VuZyBLOFAyODE1VVFCLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjODkwMWY0NmE3MWVjMTZlMDg0ZTYwNDU5NmEwOWUyM2JmYjBmNmFjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSmFuIDI2IDEwOjE1OjIzIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxhdGlvbiB3YXJuaW5nIGluIGdkcHBjNDQwZXRjLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTFmMzM1MzQ3MjhlNjQxNmQzMzJhZDJiNTNhZDFkNmZkZTU3ZjdmYwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDIgMTI6MTk6NDcgMjAwOSArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIENPTkZJR19TWVNfSUdOT1JFXzQwNV9VQVJUX0VSUkFUQV81OSBmcm9tIGNvbmZpZyBmaWxlcwoKICAgIExvdCdzIG9mIDQwNSBib2FyZCBjb25maWcgZmlsZXMgdXNlIENPTkZJR19TWVNfSUdOT1JFXzQwNV9VQVJUX0VSUkFUQV81OS4KICAgIEVpdGhlciB0aGV5IGRlZmluZSBvciB1bmRlZiBpdC4gQmVjYXVzZSBpdCdzIG5vdCB1c2VkIGluIGFueSBzb3VyY2UKICAgIGZpbGVzIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbnkgcmVmZXJlbmNlcyB0byBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4OWI4NjE5YWFlYWZjOTIyY2EwYzNiYjI0OTg3MjU5MTA1MGM4ZGNjCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJVHVlIERlYyA5IDEzOjEyOjQwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBHRHN5cyBQb3dlclBDIDQ0MCBFVFggYm9hcmQgc3VwcG9ydC4KCiAgICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgR3VudGVybWFubiAmIERydW5jayBQb3dlclBDIDQ0MCBFVFggbW9kdWxlLgogICAgQmFzZWQgb24gdGhlIEFNQ0MgWW9zZW1pdGUgYm9hcmQgc3VwcG9ydCBieSBTdGVmYW4gUm9lc2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzOTQzZDJmZjZjYzQwZGQ2MDFhOWZlZWIzOWViNmQzZDUwOTBlYTZkCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJVHVlIERlYyA5IDExOjAwOjA3IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEltcHJvdmUgRERSIGF1dG9kZXRlY3QKCiAgICBBZGRlZCBzdXBwb3J0IGZvciBhIHNlY29uZCBtZW1vcnkgYmFuayB0byBERFIgYXV0b2RldGVjdGlvbiBmb3IgNDQwCiAgICBwbGF0Zm9ybXMuCiAgICBNYWRlIGhhcmRjb2RlZCB2YWx1ZXMgY29uZmlndXJhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzFhMDQwZjRmNTU2Y2NhNGQzMGYwNjgwNWQ4MmU3MTdiM2VmMTAyMApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxMjowNjoyNiAyMDA4ICswOTAwCgogICAgc2g6IHNoNzc2M3JkcDogVXBkYXRlIHNoNzc2M3JkcCBjb25maWcKCiAgICBBZGQgQ09ORklHX05FVF9NVUxUSSBpbiBjb25maWcgZmlsZSwgYmVjYXVzZSBzaF9ldGggY2hhbmdlZCBuZXcgbmV3d29yayBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiYTcwNWI1YjFhOTdiNDczODhlZDQ4ODU4YmVmNmJmN2I2YmZjZDU2CkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMTI6Mjg6MzggMjAwOCArMDEwMAoKICAgIG1nY29nZSBtYWtlIGV0aGVyX3NjYy5jIHdvcmsgd2l0aCBDT05GSUdfTkVUX01VTFRJCgogICAgVGhpcyBjaGFuZ2UgaXMgbmVlZGVkIGZvciBtZ2NvZ2UgYmVjYXVzZSBpdCB1c2VzIHR3byBldGhlcm5ldCBkcml2ZXJzLgoKICAgIEFkZCBhIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFBJR0dZIGJvYXJkIG9uIG1nY29nZS4JV2l0aG91dCB0aGlzCiAgICBib2FyZCBuZXR3b3JraW5nIGNhbm5vdCB3b3JrIGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gbXVzdCBiZSBhYm9ydGVkLgoKICAgIE9ubHkgYWxsb2NhdGUgcnR4IG9uY2UgdG8gcHJldmVudCBEUFJBTSBleGhhdXN0aW9uLgoKICAgIEluaXRpYWxpemUgZXRoZXJfc2NjLmMgYW5kIHRoZSBrZXltaWxlLXNwZWNpZmljIEhETEMgZHJpdmVyICh0byBiZSBhZGRlZAogICAgc29vbikgaW4gZXRoLmMuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGJkMzk4MGNjMDk1YWYxNzI4Yjk5NGNkZDhiZjFhYzQzMGI2Mjg5ZTYKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMTI6MDQ6MTggMjAwOCArMDkwMAoKICAgIHNoOiBzaF9ldGg6IENoYW5nZSBuZXcgbmV0d29yayBBUEkKCiAgICBzaF9ldGggdXNlZCBvbGQgbmV0d29yayBBUEkuIFRoaXMgcGF0Y2ggY2hhbmdlZCBuZXcgQVBJLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgODkwYTAyZThlZTZiOGMyNmE2ZTNlNTA1ZTFhMmQyOWNkNzNhYTZmNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAxMiAxMzozMTowMiAyMDA4ICswMTAwCgogICAgbmV0OiBzbWM5MTF4OiBNYWtlIHJlZ2lzdGVyIHJlYWQvd3JpdGUgZnVuY3Rpb25zIHdlYWsKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHJlZ19yZWFkL193cml0ZSB0byBzbWM5MTF4X3JlZ19yZWFkL193cml0ZQogICAgYW5kIGRlZmluZXMgdGhlbiBhcyB3ZWFrIHNvIHRoYXQgdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBib2FyZAogICAgc3BlY2lmaWMgdmVyc2lvbi4KCiAgICBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOGI2OWI1NjMwMzk5ODk4ODU5NjlkMjQ0NjVjNTZmOGFjNGMwN2M0YwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgTm92IDIwIDA5OjU3OjE0IDIwMDggKzAxMDAKCiAgICBwb3dlcnBjOiBuZXQ6IHN1cHBvcnQgZm9yIHRoZSBTTVNDIExBTjg3MDAgUEhZCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ1MjU0ZjE0OWRhOWU2Y2Q2NDlkODg3YjA0MmNlNTc3ZWYzYmE3OGQKQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgpEYXRlOglTYXQgSmFuIDI0IDE4OjEwOjM3IDIwMDkgKzAxMDAKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yIE5vbWFkaWsgODgxNSBkZXZlbG9wbWVudCBib2FyZAoKICAgIFRoZSBOTURLODgxNSBib2FyZCBpcyBkaXN0cmlidXRlZCBieSBTVCBNaWNyb2VsZWN0b3JuaWNzLgogICAgT3RoZXIgKHByb3ByaWV0YXJ5KSBjb2RlIG11c3QgYmUgcnVuIHRvIHVubG9jayB0aGUgQ1BVIGJlZm9yZQogICAgVS1Cb290IHJ1bnMuIGRvYy9SRUFETUUubm1kazg4MTUgb3V0bGluZXMgdGhlIGJvb3Qgc2VxdWVuY2UuCgogICAgVGhpcyBpcyB0aGUgaW5pdGlhbCBwb3J0LCB3aXRoIGJhc2ljIGluZnJhc3RydWN0dXJlIGFuZAogICAgYSB3b3JraW5nIHNlcmlhbCBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+CiAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZDI2NGMxZWYyNjdjZmM4ZDkyOGJjODU3N2E3Y2M5MDdmMmY1ZTQ3CkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxOCAyMDA4ICswMTAwCgogICAgT01BUDM6IEFkZCBJMkMgc3VwcG9ydAoKICAgIEFkZCBJMkMgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IGIxYzNiZjk5ZmI0Nzc2NzVkNDY0YWVhZGI1ZGQ2OWQyY2JjOWRjN2IKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE3IDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIE1NQyBzdXBwb3J0CgogICAgQWRkIE1NQyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMTIyMDFhMTM1NDdlYzIyZGRjZGFlMjc4ZTc0NDY1ZTU0YTNiZTYwYwpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTYgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgTkFORCBzdXBwb3J0CgogICAgQWRkIE5BTkQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3llZCBNb2hhbW1lZCBLaGFzaW0gPGtoYXNpbUB0aS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDkxZWVlNTQ2NzM3YWUyMWQ5MzBhZjQ3OTUzMDk5NzE3NGMzNDJiMTMKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE1IDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIGNvbW1vbiBib2FyZCwgaW50ZXJydXB0IGFuZCBzeXN0ZW0gaW5mbwoKICAgIEFkZCBjb21tb24gYm9hcmQsIGludGVycnVwdCBhbmQgc3lzdGVtIGluZm8gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDVlZDNlODY1OWU1MzczZjZhMjI5ODc3YWM1MDZjMGIwMGEwNTRmYjgKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE0IDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIGNvbW1vbiBjbG9jaywgbWVtb3J5IGFuZCBsb3cgbGV2ZWwgY29kZQoKICAgIEFkZCBjb21tb24gY2xvY2ssIG1lbW9yeSBhbmQgbG93IGxldmVsIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDBiMDJiMTg0MDAzZTZhNTAyM2UwNWQ1ZjMxZGU1NGRiMjc5YjE0MzEKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjEzIDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIGNvbW1vbiBjcHUgYW5kIHN0YXJ0IGNvZGUKCiAgICBBZGQgY29tbW9uIGNwdSBhbmQgc3RhcnQgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IGE4YjY0NTA1NDZjZDUwN2QzMzFiOGZkZTM4NDc5MWQ4NGJkZTU2NTEKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjEyIDIwMDggKzAxMDAKCiAgICBPTUFQMzogQWRkIE9NQVAzLCBtZW1vcnkgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZSBoZWFkZXJzCgogICAgQWRkIE9NQVAzLCBtZW1vcnkgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZSBoZWFkZXIgZmlsZXMgZm9yIE9NQVAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Cgpjb21taXQgMmM4MDMyMTBhNDY0YWJiYWMzNTc1MmNhMWM3Mzc1MTQzNjBiNGMzMgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTEgMjAwOCArMDEwMAoKICAgIE9NQVAzOiBBZGQgcGluIG11eCwgY2xvY2sgYW5kIGNwdSBoZWFkZXJzCgogICAgQWRkIHBpbiBtdXgsIGNsb2NrIGFuZCBjcHUgaGVhZGVyIGZpbGVzIGZvciBPTUFQMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgoKY29tbWl0IDY4NTUzMzY0NmY0ZmYxN2E4NGVjOTI2NWNhYmI2MGFmMzI1YjZlMWYKQXV0aG9yOiBNYXhpbSBBcnRhbW9ub3YgPHNjbjE4NzRAeWFuZGV4LnJ1PgpEYXRlOglXZWQgRGVjIDMgMDU6Mzg6MTcgMjAwOCArMDMwMAoKICAgIGJ1Z2ZpeCBmb3IgaS5teDMxIENDTV9VUENUTCByZWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXhpbSBBcnRhbW9ub3YgPHNjbjE4NzQgYXQgeWFuZGV4LnJ1PgoKY29tbWl0IDI0MTEzYTQ0ZWQ1Y2QzMjU3YTAyMzdjMzk2MWUxMjE4MTJmY2E2ZGIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBEZWMgMzAgMDM6MTU6MzggMjAwOCAtMDUwMAoKICAgIGVhc3lsb2dvOiBhZGQgb3B0aW9uYWwgZ3ppcCBzdXBwb3J0CgogICAgU29tZSBpbWFnZXMgY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyBhZGQgYW4gb3B0aW9uIHRvIGNvbXByZXNzIHRoZQogICAgaW1hZ2UgZGF0YSB3aXRoIGd6aXAgaW4gdGhlIFUtQm9vdCBpbWFnZS4gVGhlbiBhdCBydW50aW1lLCB0aGUKICAgIGJvYXJkIGNhbiBkZWNvbXByZXNzIGl0IHdpdGggdGhlIG5vcm1hbCB6bGliIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgN2U0YjliNGY2ZjQzODM4ZmFkM2FkNzJjMDI5YTNkN2ZjN2M3ZDQ4YwpBdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgpEYXRlOglGcmkgSmFuIDIgMjA6NDc6NDUgMjAwOSAtMDUwMAoKICAgIGZhdDogZml4IHVuYWxpZ25lZCBlcnJvcnMKCiAgICBBIGNvdXBsZSBvZiBidWZmZXJzIGluIHRoZSBmYXQgY29kZSBhcmUgZGVjbGFyZWQgYXMgYW4gYXJyYXkgb2YgYnl0ZXMuCiAgICBCdXQgaXQgaXMgdGhlbiBjYXN0IHVwIHRvIGEgc3RydWN0dXJlIHdpdGggMTZiaXQgYW5kIDMyYml0IG1lbWJlcnMuCiAgICBTaW5jZSBHQ0MgYXNzdW1lcyBzdHJ1Y3R1cmUgYWxpZ25tZW50IGhlcmUsIHdlIGhhdmUgdG8gZm9yY2UgdGhlCiAgICBidWZmZXJzIHRvIGJlIGFsaWduZWQgYWNjb3JkaW5nIHRvIHRoZSBzdHJ1Y3R1cmUgdXNhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNjhmODcxOGRmMmVkNGMyZjQzMDMxNDA3Y2NmNmNmYTgxMTI1ZGRkYwpBdXRob3I6IEJyYWQgQm96YXJ0aCA8YmZsaW51eEB5dW1icmFkLmNvbT4KRGF0ZToJVGh1IEphbiAxIDIyOjQ1OjQ3IDIwMDkgLTA1MDAKCiAgICBzcGkgZmxhc2g6IGZpeCBjcmFzaCBkdWUgdG8gc3BpIGZsYXNoIG1pc2NvbW11bmljYXRpb24KCiAgICBIaWdoZXIgc3BpIGZsYXNoIGxheWVycyBleHBlY3QgdG8gYmUgZ2l2ZW4gYmFjayBhIHBvaW50ZXIgdGhhdCB3YXMKICAgIG1hbGxvY2VkIHNvIHRoYXQgaXQgY2FuIGZyZWUgdGhlIHJlc3VsdCwgYnV0IHRoZSBsb3dlciBsYXllcnMgcmV0dXJuCiAgICBhIHBvaW50ZXIgdGhhdCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBtYWxsb2NlZCBtZW1vcnkuIFJlb3JkZXIgdGhlCiAgICBtZW1iZXJzIG9mIHRoZSBsb3dlciBzcGkgc3RydWN0dXJlcyBzbyB0aGF0IHRoaW5ncyB3b3JrIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcmFkIEJvemFydGggPGJmbGludXhAeXVtYnJhZC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGNlODJmZjA1Mzg4YjVkZGFmZGY2MDgyZWYwNzc2Y2NlNzJjNDBiMWMKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVNhdCBEZWMgMjAgMTQ6NTQ6MjEgMjAwOCArMDMwMAoKICAgIEZQVSBQT1NUOiBmaXggd2FybmluZ3Mgd2hlbiBidWlsZGluZyB3aXRoIDIuMTggYmludXRpbHMKCiAgICBXaGVuIGNvbXBpbGUgdS1ib290IHdpdGggdGhlIDIuMTggYmludXRpbHMgdGhlIGZvbGxvd2luZwogICAgd2FybmluZyBtZXNzYWdlcyBmb3IgZWFjaCBvYmplY3QgZmlsZSBpbiBwb3N0L2xpYl9wcGMvZnB1LyBpcwogICAgcHJvZHVjZWQgYXQgdGhlIGxpbmtpbmcgc3RhZ2U6CgogICAgcG9zdC9saWJwb3N0LmEoYWNjMS5vKSB1c2VzIGhhcmQgZmxvYXQsIHUtYm9vdCB1c2VzIHNvZnQtZmxvYXQKICAgIC4uLgoKICAgIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGF0LCBpbiBnZW5lcmFsLCB0aGUgc29mdC1mbG9hdCBhbmQKICAgIGhhcmQtZmxvYXQgQUJJcyBhcmUgaW5jb21wYXRpYmxlOyB0aGUgMi4xOCBiaW51dGlscyBkbyBjaGVja2luZwogICAgb2YgdGhlIFRhZ19HTlVfUG93ZXJfQUJJX0ZQIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZXMgdG8gYmUgbGlua2VkLCBhbmQKICAgIHByb2R1Y2UgdGhlIHdvcm5pbmcgbGlrZSBhYm92ZSBpZiB0aGVzZSBhcmUgbm90IGNvbXBhdGlibGUuCgogICAgVGhlIGluY29tcGF0aWJpbGl0eSBvZiBBQklzIGlzIGNvbmNlcm5lZCBvbmx5IHRoZSBmbG9hdCB2YWx1ZXM6CiAgICBlLmcuIHRoZSBzb2Z0LWZsb2F0IEFCSSBhc3N1bWVzIHRoZSBmbG9hdCBhcmd1bWVudCBwYXNzaW5nIGluIHRoZQogICAgcGFpciBvZiByWCByZWdpc3RlcnMsIGFuZCB0aGUgaGFyZC1mbG9hdCBBQkkgYXNzdW1lcyBwYXNzaW5nIG9mCiAgICB0aGUgZmxvYXQgYXJndW1lbnQgaW4gdGhlIGZYIHJlZ2lzdGVyLiBXaGVuIHdlIGRvbid0IHBhc3MgdGhlIGZsb2F0CiAgICBhcmd1bWVudHMgYmV0d2VlbiB0aGUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGggZGlmZmVyZW50IGZsb2F0bmVzcywKICAgIHRoZW4gc3VjaCBhbiBhcHBsaWNhdGlvbiB3aWxsIHdvcmsgY29ycmVjdGx5LgogICAgVGhpcyBpcyB0aGUgY2FzZSBmb3IgdGhlIEZQVSBQT1NUOiB1LWJvb3QgKGNvbXBpbGVkIHdpdGggc29mdC1mbG9hdCkKICAgIGRvZXNuJ3QgcGFzcyB0byAoYW5kIGRvZXNuJ3QgZ2V0IGZyb20pIHRoZSBGUFUgUE9TVCBmdW5jdGlvbnMgYW55CiAgICBmbG9hdHM7IHRoZXJlIGFyZSBubyBmdW5jdGlvbnMgZXhwb3J0ZWQgZnJvbSB0aGUgcG9zdC9saWJfcHBjL2ZwdS8KICAgIG9iamVjdHMgd2hpY2ggd291bGQgd29yayB3aXRoIGZsb2F0IHBhcmFtZXRlcnMvcmV0dXJucyB0b28uIFNvLCB3ZQogICAgY2FuIHJlYXNzdXJlIHRoZSBsaW5rZXIgbm90IHRvIHdvcnJ5IGFib3V0IHRoZSBkaWZmZXJlbmNlIGluIEFCSQogICAgYXR0cmlidXRlcyBvZiBsaW5raW5nIGZpbGVzIGp1c3QgYnkgc2V0dGluZyB0aGUgJ3NvZnQtZmxvYXQnCiAgICBhdHRyaWJ1dGUgZm9yIHRoZSBvYmplY3RzIGluIHBvc3QvbGliX3BwYy9mcHUuIEFuZCB0aGlzIHBhdGNoIGRvZXMKICAgIHRoaXMuCgogICAgQWxzbywgdG8gYXZvaWQgcGFzc2luZyBib3RoIHNvZnQtIGFuZCBoYXJkLWZsb2F0IG9wdGlvbnMgaW4gQ0ZMQUdTCiAgICB3aGVuIGNvbXBpbGluZyB0aGUgZmlsZXMgZnJvbSBwb3N0L2xpYl9wcGMvZnB1ICh3aGljaCBpcyBPSywgYnV0CiAgICBsb29rcyByYXRoZXIgZGlydHkpIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgc29mdC1mbG9hdCBzdHJpbmcgZnJvbQogICAgQ0ZMQUdTIGluIHBvc3QvbGliX3BwYy9mcHUvTWFrZWZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGE3YzkzMTA0NTdlODViNDU5OGFiZTViMzA0MTA4ZWRmMTEzMzJlMmYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgRGVjIDE3IDE2OjM2OjIyIDIwMDggLTA2MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgTWF4aW0ncyBEUzQ1MTAgSTJDIGRldmljZQoKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIERTNDUxMCwgYSBDUFUgc3VwZXJ2aXNvciB3aXRoCiAgICBpbnRlZ3JhdGVkIEVFUFJPTSwgU1JBTSwgYW5kIDQgcHJvZ3JhbW1hYmxlIG5vbi12b2xhdGlsZQogICAgR1BJTyBwaW5zLiBUaGUgQ09ORklHX0RTNDUxMCBkZWZpbmUgZW5hYmxlcyBzdXBwb3J0CiAgICBmb3IgdGhlIGRldmljZSB3aGlsZSB0aGUgQ09ORklHX0NNRF9EUzQ1MTAgZGVmaW5lCiAgICBlbmFibGVzIHRoZSBkczQ1MTAgY29tbWFuZC4gVGhlIGFkZGl0aW9uYWwKICAgIENPTkZJR19EUzQ1MTBfSU5GTywgQ09ORklHX0RTNDUxMF9NRU0sIGFuZAogICAgQ09ORklHX0RTNDUxMF9SU1QgZGVmaW5lcyBhZGQgYWRkaXRpb25hbCBzdWItY29tbWFuZHMKICAgIHRvIHRoZSBkczQ1MTAgY29tbWFuZCB3aGVuIGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBiNmZjNmZkNDlhODQ1NDNlMTMyNGUxNjIwYjlmMzAxZmY3YzFmMjdmCkF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KRGF0ZToJVHVlIERlYyAxNiAxNDo1MTo1NiAyMDA4ICswMTAwCgogICAgY29tbW9uOiBJdGVyYXRpb24gbGltaXQgZm9yIG1lbW9yeSB0ZXN0LgoKICAgIFRoZSBpdGVyYXRpb24gbGltaXQgaXMgcGFzc2VkIHRvIG10ZXN0IGFzIGEgZm91cnRoIHBhcmFtZXRlcjoKICAgIFtzdGFydCBbZW5kIFtwYXR0ZXJuIFtpdGVyYXRpb25zXV1dXQogICAgSWYgbm8gZm91cnRoIHBhcmFtZXRlciBpcyBzdXBwbGllZCwgdGhlcmUgaXMgbm8gaXRlcmF0aW9uIGxpbWl0IGFuZCB0aGUKICAgIHRlc3Qgd2lsbCBsb29wIGZvcmV2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KCmNvbW1pdCA5N2NhZTNhNGM2OGQ4NTYzNzRjY2M3MGZkMmM1Zjg3MTRjYzk0ZjdkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRGVjIDE1IDE1OjQwOjEyIDIwMDggKzAxMDAKCiAgICBzZXJpYWw6IFJlbmFtZSBkcml2ZXIgdmN0aCB0byB2Y3QgdG8gc3VwcG9ydCBvdGhlciBib2FyZCB2YXJpYW50cwoKICAgIE1vdmVkIGRyaXZlciB2Y3RoLmMgdG8gdmN0LmMgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIFZDVCBib2FyZCBzZXJpZXMuCiAgICBUaGlzIGRyaXZlciBpcyBub3cgdXNlZCBieSB0aGUgVkNUIHBsYXRmb3JtczoKCiAgICB2Y3RfcHJlbWl1bQogICAgdmN0X3BsYXRpbnVtCiAgICB2Y3RfcGxhdGludW1zdmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzZlZGU0ZDYzZTU5YzkyNzdlYzE4MGIwOWMzOWI4YmY0NjQyNWJhMgpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CUZyaSBEZWMgMTIgMDA6NDU6MjcgMjAwOCArMDkwMAoKICAgIG5pb3M6IE1vdmUgUkVBRE1FLm5pb3NfQ09ORklHX1NZU19OSU9TX0NQVSB0byBkb2MvIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYzMyODRiMDMwYjFjZDQ5MmI0ZjQ2YzU3NmFlYTAxYmVmMjU4NTk5ZApBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CkRhdGU6CVdlZCBEZWMgMTAgMTY6MjQ6MTYgMjAwOCArMDEwMAoKICAgIGNvbW1vbi9tYWluOiBzdXBwb3J0IGJvb3RkZWxheT0wIGZvciBDT05GSUdfQVVUT0JPT1RfS0VZRUQKCiAgICBTdXBwb3J0IGJvb3RkZWxheT0wIGluIGFib3J0Ym9vdCBmb3IgdGhlIENPTkZJR19BVVRPQk9PVF9LRVlFRCBjYXNlCiAgICBzaW1pbGFyIHRvIHRoZSBDT05GSUdfWkVST19CT09UREVMQVlfQ0hFQ0sgc3VwcG9ydCBmb3IgdGhlCiAgICAhQ09ORklHX0FVVE9CT09UX0tFWUVEIGNhc2UuCgogICAgRG8gdGhpcyBieSByZXZlcnNpbmcgdGhlIGxvb3Agc28gd2UgZG8gYXQgbGVhc3Qgb25lIGl0ZXJhdGlvbiBiZWZvcmUKICAgIGNoZWNraW5nIGZvciB0aW1lb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Cgpjb21taXQgOTRmOTI3OWY3YmJkYzAxYmJjN2NmODVhZWRmOWI1NDU5NDNiOTRjMwpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBEZWMgOCAxNzoyNDowOCAyMDA4ICswMTAwCgogICAgQWRkZWQgbGVnYWN5IGZsYXNoIFNUIE1pY3JvIE0yOVcwNDBCCgpjb21taXQgNjI2ZDA3MzQ4ZTVmOWYzMDJmNGVhMTgyMTYxYTg5ZjczNjJhMDQ4OApBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CU1vbiBEZWMgOCAyMDowNDo1MSAyMDA4ICsxMTAwCgogICAgRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvcnMgaW4gbGliX202OGsvaW50ZXJydXB0cy5jCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBhNTk4OWM0MmFlNWUyOTVmMjc0YTc5NWM0MjZjNDc4MTliYmRiZmRhCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI5OjA1IDIwMDggKzExMDAKCiAgICBSZW1vdmVkIGFsbCByZWZlcmVuY2VzIHRvIENPTkZJR19TWVNfUkVTRVRfR0VORVJJQwoKICAgIEdlbmVyaWMgaTM4NiByZXNldCAtICNkZWZpbmUgbWFkZSByZWR1bmRhbnQgYnkgd2VhayBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMmI1MzYwZWIyYmMwYjc0MWFlNWNiM2M4NGQzNWNjZGQxNzY2N2M4YQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgNyAxMDoyOTowNCAyMDA4ICsxMTAwCgogICAgUmVtb3ZlICNpZmRlZiBDT05GSUdfU0M1MjAgaW4gc291cmNlIGNvZGUKCiAgICBDT05GSUdfU0M1MjAgaXMgbm93IHVzZWQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGVhZDA1NmJjMjA2ZjZiN2VlNmRjOTg3NjY2NzhiNjQ2MzVlYTIwYjgKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDMgMjAwOCArMTEwMAoKICAgIEFkZGVkIE1NQ1IgcmVzZXQgZnVuY3Rpb25hbGl0eQoKICAgIFJlc2V0IGZ1bmN0aW9uIHNwZWNpZmljIHRvIEFNRCBTQzUyMCBtaWNyb2NvbnRyb2xsZXIgLSBJcyBtb3JlIG9mIGEKICAgICdoYXJkIHJlc2V0JyB0aGF0IHRoZSB0cmlwbGUgZmF1bHQuCgogICAgUmVxdWlyZXMgQ09ORklHX1NZU19SRVNFVF9TQzUyMCB0byBiZSBkZWZpbmVkIGluIGNvbmZpZwoKICAgIEkgd291bGQgaGF2ZSBsaWtlZCB0byBhZGQgdGhpcyB0byBhIG5ldyBmaWxlIChjcHUvaTM4Ni9zYzUyMC9yZXNldC5jKQogICAgYnV0IGxkIHJlcXVpcmVzIHRoYXQgYSBvYmplY3QgZmlsZSBpbiBhIGxpYnJhcnkgYXJoaXZlIE1VU1QgY29udGFpbgogICAgYXQgbGVhc3Qgb25lIGZ1bmN0aW9uIHdoaWNoIGRvZXMgbm90IG92ZXJyaWRlIGEgd2VhayBmdW5jdGlvbiAoYW5kIGlzCiAgICBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBvYmplY3QgZmlsZSkgaW4gb3JkZXIgZm9yIHRoYXQgb2JqZWN0IGZpbGUgdG8KICAgIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBhcmNoaXZlLiBUaGlzIHdvdWxkIGJlIHRoZSBvbmx5IGZ1bmN0aW9uIG9uIHRoZQogICAgbmV3IGZpbGUsIGFuZCBoZW5jZSwgd2lsbCBuZXZlciBnZXQgbGlua2VkIGluLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgM2Y1ZjE4ZDEyZDMyZWUwNjYxYmY1MWRmYzU1NzUyYzAwNTIzMGQ2ZQpBdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CkRhdGU6CVN1biBEZWMgNyAxMDoyOTowMiAyMDA4ICsxMTAwCgogICAgTW92ZWQgZ2VuZXJpYyAodHJpcGxlIGZhdWx0KSByZXNldCBjb2RlCgogICAgTW92ZWQgZnJvbSBpbnRlcnJ1cHRzLmMgdG8gY3B1LmMgYW5kIG1hZGUgaW50byBhIHdlYWsgZnVuY3Rpb24gdG8KICAgIGFsbG93IHZlbmRvciBzcGVjaWZpYyBvdmVycmlkZQoKICAgIFZlbmRvciBzcGVjaWZpYyBDUFUgcmVzZXQgKGxpa2UgdGhlIEFNRCBTQzUyMCBNTUNSIHJlc2V0KSBjYW4gbm93IGJlCiAgICBhZGRlZCB0byB0aGUgdmVuZG9yIHNwZWNpZmljIGNvZGUgd2l0aG91dCB0aGUgbmVlZCB0byByZW1lbWJlciB0bwogICAgI3VuZGVmIHVzYWdlIG9mIHRoZSBnZW5lcmljIG1ldGhvZCBhbmQgaWYgeW91IGZvcmdldCB0byBpbmNsdWRlIHlvdXIKICAgIGN1c3RvbSByZXNldCBtZXRob2QsIHlvdSB3aWxsIGFsd2F5cyBnZXQgdGhlIGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA5OTMzZDYwOTAyMGMyOTc3ODhmNTNmMzM0Yzg0NjVmYTdhOTliMTBjCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI5OjAxIDIwMDggKzExMDAKCiAgICBNb3ZlZCBkZWZpbml0aW9uIG9mIHNldF92ZWN0b3IoKSB0byBuZXcgaGVhZGVyIGZpbGUKCiAgICBUaGlzIGFsbG93cyBmb3IgZnV0dXJlIHRpZHkgdXBzIGFuZCBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCByZXF1aXJlCiAgICBzZXRfdmVjdG9yICgpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA0MDc5NzYxODVlMGRkYTJjOTBlODkwMjcxMjFhMTA3MWI5Yzc3YmZiCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI5OjAwIDIwMDggKzExMDAKCiAgICBNb3ZlZCBzYzUyMCBzcGVjaWZpYyBjb2RlIGludG8gbmV3IGNwdS9pMzg2L3NjNTIwIGZvbGRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDg1ZmZiYmQ1MTkxNDkyNWE1NDJkODUyOGJlN2YwNzJlNWFiMDIxNTcKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gRGVjIDcgMTA6Mjg6NTggMjAwOCArMTEwMAoKICAgIFJlbmFtZWQgY3B1L2kzODYvcmVzZXQuUyB0byByZXNldHZlYy5TCgogICAgQnJpbmdzIGkzODYgaW4gbGluZSB3aXRoIG90aGVyIENQVXMgd2l0aCBhIHJlc2V0IHZlY3RvciBhbmQgZnJlZXMgdXAgcmVzZXQuYwogICAgZm9yIENQVSByZXNldCBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGEzZjRjMTIzZjU2OTQ3NGU4MGVhMDEyYjhkYjBkZTQ2YWZkYjY0NDMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDI0IDAxOjAxOjQ5IDIwMDkgKzAxMDAKCiAgICBNYWtlZmlsZToga2VlcCBsaXN0cyBzb3J0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNjIwYzAxZTk2ODE0NTU4NDcwNjk4ZWQ1Y2FiMWJmMmY1MDRkMWI1CkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIERlYyA3IDEwOjI4OjU3IDIwMDggKzExMDAKCiAgICBBZGRlZCBpbml0aWFsIGVORVQgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Cgpjb21taXQgMGMwY2NmNDAxZWUwM2E1MDA4ZmMyYzE5YjA1YTY2MmJjZTFhMTA4NgpBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglUaHUgTm92IDIwIDExOjM3OjI2IDIwMDggKzAxMDAKCiAgICBQT1dFUlBDIDgyeHg6IGFkZCB0aGUgU0NDIGFzIGFuIEhETEMgY29udHJvbGxlcgoKICAgIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgdXNlZCBieSBrZXltaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IDFlOGY0ZTc4Y2EzOTNiM2Q4ZTg2YmQ4MDU1NzU4ZGQ0NjVkOTExM2YKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyMCAwOTo1OTowOSAyMDA4ICswMTAwCgogICAgcG93ZXJwYywga2V5bWlsZSBib2FyZHM6IGV4dHJhY3QgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zCgogICAgVGhpcyBwYXRjaCBleHRyYWN0cyB0aGUgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zIGZvciB0aGUKICAgIGtleW1pbGUgYm9hcmRzIG1nY29nZSwgbWdzdXZkIGFuZCBrbWV0ZXIxIGluIGEgbmV3CiAgICBjb21tb24gY29uZmlnIGZpbGUga2V5bWlsZS1jb21tb24uaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyMTBjOGMwMGFhZDMzMjgxNDUyMDRhZGFiNDM0YmI3ZDcwYjA2Yjc1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMjEgMDg6Mjk6NDAgMjAwOCArMDEwMAoKICAgIHBvd2VycGM6IGtleW1pbGU6IEFkZCBhIGNoZWNrIGZvciB0aGUgUElHR1kgZGVidWcgYm9hcmQKCiAgICBDaGVjayB0aGUgcHJlc2VuY2Ugb2YgdGhlIFBJR0dZIG9uIHRoZSBrZXltaWxlIGJvYXJkcyBtZ2NvZ2UsCiAgICBtZ3N1dmQgYW5kIGttZXRlcjEuIElmIHRoZSBQSUdHWSBpcyBub3QgcHJlc2VudCwgZG9udCByZWdpc3RlcgogICAgdGhpcyBFdGhlcm5ldCBkZXZpY2UuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkZTA0NDM2MTRhZjRkMTY2NzVhYjQzNjY2NWFlYjExZGRjOWY3MjE0CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMDk6NTc6NDcgMjAwOCArMDEwMAoKICAgIHBvd2VycGM6IDgzeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUga21ldGVyMSBib2FyZAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUga21ldGVyMSBib2FyZCBmcm9tIEtleW1pbGUsCiAgICBiYXNlZCBvbiBhIEZyZWVzY2FsZSBNUEM4MzYwIENQVS4KCiAgICAtIHNlcmlhbCBjb25zb2xlIG9uIFVBUlQgMQogICAgLSAyNTYgTUIgRERSMiBSQU0KICAgIC0gNjQgTUIgTk9SIEZsYXNoCiAgICAtIEV0aGVybmV0IFJNSUkgTW9kZSBvdmVyIFVDQzQKICAgIC0gUEhZIFNNU0MgTEFOODcwMAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDNmZWI2NDdmM2ZkMDg4MTM4MmM3YTI5ZjRjZjI4MGI2NjQ3M2FlMGEKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglUdWUgTm92IDQgMTM6NTE6MTggMjAwOCArMDEwMAoKICAgIEFkZCBhIGRvX2RpdigpIHdyYXBwZXIgbWFjcm8sIGxsZGl2KCkuCgogICAgQWRkIGEgZG9fZGl2KCkgd3JhcHBlciwgbGxkaXYoKS4gVGhlIG5ldyBpbmxpbmUgZnVuY3Rpb24gZG9lc24ndCBtb2RpZnkKICAgIHRoZSBkaXZpZGVuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uLCBzbyBpdCBpcyB1c2VmdWwKICAgIGluIGNvbXBsZXggZXhwcmVzc2lvbnMsIGkuZS4gInJldHVybihhL2IpIiAtPiAicmV0dXJuKGxsZGl2KGEsYikpIgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgMThhZjFjNWYwZjc0MDJkYzBkNmE3MWIwMTJjNjgwMjVkZDk3Y2Y3MgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBKYW4gMjMgMTQ6MjI6MTQgMjAwOSAtMDYwMAoKICAgIDg1eHg6IEFkZCBhIDM2LWJpdCBwaHlzaWNhbCBjb25maWd1cmF0aW9uIGZvciBNUEM4NTcyRFMKCiAgICBXZSBtb3ZlIGFsbCBJTyBhZGRyZXNzZWQgKENDU1IsIGxvY2FsYnVzLCBQQ0kpIGFib3ZlIHRoZSA0RyBib3VuZGFyeQogICAgdG8gYWxsb3cgZm9yIGxhcmdlciBtZW1vcnkgc2l6ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjNTFmYzVkNTNjNDU2MGFiYzRkMGE2MTI2YzA2ZmM2ODEzM2QxNTI4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEphbiAyMyAxNDoyMjoxMyAyMDA5IC0wNjAwCgogICAgODV4eDogSGFuZGxlIGVMQkMgZGlmZmVyZW5jZSB3LzM2LWJpdCBwaHlzaWNhbAoKICAgIFRoZSBlTEJDIG9ubHkgaGFuZGxlcyAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyBpbiBzeXN0ZW1zIHdpdGggMzYtYml0CiAgICBwaHlzaWNhbC4gIFRoZSBwcmV2aW9zIGdlbmVyYXRpb24gb2YgTEJDIGhhbmRsZWQgMzQtYml0IHBoeXNpY2FsCiAgICBhZGRyZXNzIGluIDM2LWJpdCBzeXN0ZW1zLglBZGRlZCBhIG5ldyBDT05GSUcgb3B0aW9uIHRvIGNvbnZleQogICAgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTEJDIGFuZCBlTEJDLgoKICAgIEFsc28gYWRkZWQgZGVmaW5lcyBmb3IgWEFNIGJpdHMgdXNlZCBpbiBMQkMgZm9yIHRoZSBleHRlbmRlZCAzNC1iaXQKICAgIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3MmE5NDE0YThlMjFlOTUzNjgyMmM3MzUzYmMwOGQyMWNlNWFkNTNkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEphbiAyMyAxNDoyMjoxMiAyMDA5IC0wNjAwCgogICAgODV4eDogVXNlIEJSX0FERFIgbWFjcm8gZm9yIE5BTkQgY2hpcHNlbGVjdHMKCiAgICBVc2UgdGhlIG5ldyBCUl9BRERSIG1hY3JvIHRvIHByb3Blcmx5IHNldHVwIHRoZSBhZGRyZXNzIGZpZWxkIG9mIHRoZQogICAgbG9jYWxidXMgY2hpcHNlbGVjdHMgdXNlZCBieSBOQU5ELgoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCAzNi1iaXQgcGh5cyBvbiB0aGVzZSBib2FyZHMgaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJmYzdlYjBjZmM2MDhjOTM2OTAwMWQ1N2EwNDExYWY1ZTZhNThmN2MKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDE1IDExOjU4OjM1IDIwMDkgLTA1MDAKCiAgICBBZGQgc2Vjb25kYXJ5IENQVXMgcHJvY2Vzc29yIGZyZXF1ZW5jeSBmb3IgZTUwMCBjb3JlCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIGU1MDAgZnJlcVByb2Nlc3NvciB0byBhcnJheSBiYXNlZCBvbiBDT05GSUdfTlVNX0NQVVMsCiAgICBhbmQgcHJpbnRzIGVhY2ggQ1BVJ3MgZnJlcXVlbmN5IHNlcGFyYXRlbHkuIEl0IGFsc28gZml4ZXMgdXAgZWFjaCBDUFUncwogICAgZnJlcXVlbmN5IGluICJjbG9jay1mcmVxdWVuY3kiIG9mIGZkdCBibG9iLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmY1YjFmMGMwZDI4Y2UwNjJlMWQzNjg2ODA2MzJkZmIwOTlkZTY5MgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMTY6MzE6NTMgMjAwOCArMDgwMAoKICAgIDg1eHg6IGVuYWJsZSB0aGUgYXV0byBzZWxmIHJlZnJlc2ggZm9yIHdha2UgdXAgQVJQCgogICAgVGhlIHdha2UgdXAgQVJQIGZlYXR1cmUgbmVlZCB1c2UgdGhlIG1lbW9yeSB0byBwcm9jZXNzCiAgICB3YWtlIHVwIHBhY2tldCwgd2UgZW5hYmxlIGF1dG8gc2VsZiByZWZyZXNoIHRvIHN1cHBvcnQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjQ5ODNlMTZkMTUwYWI3ZDAzOTcwNGMzMTBhYWNiZDJmNGRjMWUwZgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMTY6MzE6NDMgMjAwOCArMDgwMAoKICAgIGZzbC1kZHI6IHVzZSB0aGUgMVQgdGltaW5nIGFzIGRlZmF1bHQgY29uZmlndXJhdGlvbgoKICAgIEZvciBsaWdodCBsb2FkZWQgc3lzdGVtLCB3ZSB1c2UgdGhlIDFUIHRpbWluZyB0byBnYWluIGJldHRlcgogICAgbWVtb3J5IHBlcmZvcm1hbmNlLCBidXQgZm9yIHNvbWUgaGVhdmlseSBsb2FkZWQgc3lzdGVtLAogICAgeW91IGhhdmUgdG8gYWRkIHRoZSAyVCB0aW1pbmcgb3B0aW9ucyB0byBib2FyZCBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMmNjYTdlMWNkNTQ1OTBlOTY3YzczNTU4YjA3ZmZiZGNjZDM5NTA0CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxNjozMTozNSAyMDA4ICswODAwCgogICAgZnNsLWRkcjogbWFrZSB0aGUgc2VsZiByZWZyZXNoIGlkbGUgdGhyZXNob2xkIGNvbmZpZ3VyYWJsZQoKICAgIFNvbWUgODV4eCBwcm9jZXNzb3JzIGhhdmUgdGhlIGFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZSwKICAgIHN1Y2ggYXMgd2FrZSB1cCBBUlAsIHRoYXQgbmVlZHMgZW5hYmxlIHRoZSBhdXRvbWF0aWMgc2VsZiByZWZyZXNoLgoKICAgIElmIHRoZSBERFIgY29udHJvbGxlciBwYXNzIHRoZSBTUl9JVCAoc2VsZiByZWZyZXNoIGlkbGUgdGhyZXNob2xkKQogICAgaWRsZSBjeWNsZXMsIGl0IHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBzZWxmIHJlZnJlc2guIEhvd2V2ZXIsCiAgICBhbnl0aW1lIG9uZSB0cmFuc2FjdGlvbiBpcyBpc3N1ZWQgdG8gdGhlIEREUiBjb250cm9sbGVyLCBpdCB3aWxsCiAgICByZXNldCB0aGUgY291bnRlciBhbmQgZXhpdCBzZWxmIHJlZnJlc2ggc3RhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjJmZjNkMDEzNDhlMGEyZGMzNjliN2VmY2JhYzMwZTRjZTg2ZDE3OApBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMjEgMTY6MzE6MjkgMjAwOCArMDgwMAoKICAgIGZzbC1kZHI6IGNsZWFuIHVwIHRoZSBkZHIgY29kZSBmb3IgRERSMyBjb250cm9sbGVyCgogICAgLSBUaGUgRERSMyBjb250cm9sbGVyIGlzIGV4cGFuZGluZyB0aGUgYml0cyBmb3IgdGltaW5nIGNvbmZpZwogICAgLSBBZGQgdGhlIEREUjMgMzItYml0IGJ1cyBtb2RlIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MGVlM2NlNmQ3ZmU5NDQxYjQzNTJkN2NmYWY2YWZjMjUwN2IxMTA2CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxNjozMToyMiAyMDA4ICswODAwCgogICAgZnNsLWRkcjogdXBkYXRlIHRoZSBiaXQgbWFzayBmb3IgRERSMyBjb250cm9sbGVyCgogICAgQWNjb3JkaW5nIHRvIHRoZSBsYXRlc3QgODU3MiBVTSwgdGhlIEREUjMgY29udHJvbGxlcgogICAgaXMgZXhwYW5kaW5nIHRoZSBiaXQgbWFzaywgYW5kIHdlIHVzZSB0aGUgZXh0ZW5kIEFDVFRPUFJFCiAgICBtb2RlIHdoZW4gdFJBUyBtb3JlIHRoYW4gMTkgTUNMSy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFjYTVmMDE4YTgzODZiODU0Njk0ODJlZDk4NjdlM2UyOWEyNDM3ZDAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRGVjIDIgMTY6MDg6NDAgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEludHJvZHVjZSBDT05GSUdfU1lTX1BDSSpfSU9fVklSVCBmb3IgRlNMIGJvYXJkcwoKICAgIEludHJvZHVjZSBhIG5ldyBkZWZpbmUgdG8gc2VwZXJhdGUgb3V0IHRoZSB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBQQ0kKICAgIElPIHNwYWNlIGlzIGF0IGZyb20gdGhlIHBoeXNpY2FsIGFkZHJlc3MuICBJbiBtb3N0IHNpdHVhdGlvbnMgdGhlc2UgYXJlCiAgICBtYXBwZWQgMToxLiAgSG93ZXZlciBhbnkgY29kZSBhY2Nlc3NpbmcgdGhlIGJ1cyBzaG91bGQgdXNlIFZJUlQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWFmMGZkZDgxYzMzNzBjM2E1MTQyMTIwOGZkYTU2OGJkY2JiZWMyMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNjowODozOSAyMDA4IC0wNjAwCgogICAgODV4eDogSW50cm9kdWNlIENPTkZJR19TWVNfUENJKl9NRU1fVklSVCBmb3IgRlNMIGJvYXJkcwoKICAgIEludHJvZHVjZSBhIG5ldyBkZWZpbmUgdG8gc2VwZXJhdGUgb3V0IHRoZSB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBQQ0kKICAgIG1lbW9yeSBpcyBhdCBmcm9tIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiAgSW4gbW9zdCBzaXR1YXRpb25zIHRoZXNlIGFyZQogICAgbWFwcGVkIDE6MS4gIEhvd2V2ZXIgYW55IGNvZGUgYWNjZXNzaW5nIHRoZSBidXMgc2hvdWxkIHVzZSBWSVJULgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE2ZTA0YzM0NGFkMWVlZmQ0N2E3NTQ4NDQ0MWIzODVkYTgxNWI4ZGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRGVjIDIgMTY6MDg6MzggMjAwOCAtMDYwMAoKICAgIDg1eHg6IFVzZSBDT05GSUdfU1lTX3tQQ0kqLFJJTyp9X01FTV9QSFlTIGZvciBwaHlzaWNhbCBhZGRyZXNzIG9uIEZTTCBib2FyZHMKCiAgICBVc2UgdGhlIF9NRU1fUEhZUyBkZWZpbmVzIGluc3RlYWQgb2YgX01FTV9CVVMgZm9yIExBVyBhbmQgcmVhbCBhZGRyZXNzIGZpZWxkcwogICAgb2YgVExCcy4gIFRoaXMgaXMgd2hhdCB3ZSBzaG91bGQgaGF2ZSBhbHdheXMgYmVlbiB1c2luZyBmcm9tIHRoZSBzdGFydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZjkxZWY2YWNkYmFkZWMzM2UwMTkyMDQ5ZTJiMjRhMWQ5NjkyZjFkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM3IDIwMDggLTA2MDAKCiAgICA4NXh4OiBDb252ZXJ0IENPTkZJR19TWVNfUENJKl9JT19CQVNFIHRvIF9JT19CVVMgZm9yIEZTTCBib2FyZHMKCiAgICBVc2UgQ09ORklHX1NZU19QQ0kqX0lPX0JVUyBmb3IgdGhlIGJ1cyByZWxhdGl2ZSBhZGRyZXNzIGluc3RlYWQKICAgIG9mIF9JT19CQVNFIHNvIHdlIGFyZSBtb3JlIGV4cGxpY2l0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMTA3OTVmNDJjYjk0ZTcxYmNiMjYyYjYxNTA4NGY2OWRkODg2Mzk5YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNjowODozNiAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBDT05GSUdfU1lTX3tQQ0kqLFJJTyp9X01FTV9CQVNFIHRvIF9NRU1fQlVTIGZvciBGU0wgYm9hcmRzCgogICAgVXNlIENPTkZJR19TWVNfe1BDSSxSSU99X01FTV9CVVMgZm9yIHRoZSBidXMgcmVsYXRpdmUgYWRkcmVzcyBpbnN0ZWFkCiAgICBvZiBfTUVNX0JBU0Ugc28gd2UgYXJlIG1vcmUgZXhwbGljaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzk1M2RkZmQ1NmIzYWUzZjI4OTEwZmUzYWVkNmRlNjk2OGQxYzlhYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNDoxOTozNCAyMDA4IC0wNjAwCgogICAgODV4eDogc2VwYXJhdGUgRkxBU0ggQkFTRSB2aXJ0dWFsIGZyb20gcGh5c2ljYWwgYWRkcmVzcwoKICAgIEFkZGVkIGEgQ09ORklHX1NZU19GTEFTSF9CQVNFX1BIWVMgZm9yIHVzZSBhcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQKICAgIG1haW50YWluIENPTkZJR19TWVNfRkxBU0hfQkFTRSBhcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBmbGFzaC4KCiAgICBUaGlzIGFsbG93cyB1cyB0byBkZWFsIHdpdGggMzYtYml0IHBoeXMgb24gdGhlc2UgYm9hcmRzIGluIHRoZSBmdXR1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTJiNTY1ZjVhZDIzYjY4MjQ4OTA1NWIxODc3NjdkOGJmMWMyZTQ0NApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMiAxNDoxOTozMyAyMDA4IC0wNjAwCgogICAgODV4eDogc2VwYXJhdGUgUElYSVMgdmlydHVhbCBmcm9tIHBoeXNpY2FsIGFkZHJlc3MKCiAgICBBZGRlZCBhIFBJWElTX0JBU0VfUEhZUyBmb3IgdXNlIGFzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBtYWludGFpbgogICAgUElYSVNfQkFTRSBhcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBQSVhJUyBmcGdhIHJlZ2lzdGVycy4KCiAgICBUaGlzIGFsbG93cyB1cyB0byBkZWFsIHdpdGggMzYtYml0IHBoeXMgb24gdGhlc2UgYm9hcmRzIGluIHRoZSBmdXR1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzA4MzdlNWIyMWQ1YTc0Mjk4MzU4MWFiOWVlM2ZhYzA4NTMxMWQxOQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMTEgMDg6NTI6MDkgMjAwOCAtMDUwMAoKICAgIEFkZCBSRUFETUUgZmlsZSBmb3IgTVBDODU3MkRTIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmRhZGM5MTk1YWQ2NDJjYzY2MjYzMmY0ZDkyZjkyZDNkNzFlOGJmMgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCAyMCAxNjoxNTowNCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHVzZSBjb21tb24gc3RybWh6KCkgaW4gc3lzdGVtIG91dHB1dAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1YmI5MDdhNDkyNTM5Nzc4OWM5MGQwNzRmNGY3ZTkyY2U2YjM5NDAyCkF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgpEYXRlOglUaHUgSmFuIDIyIDE1OjA1OjI0IDIwMDkgLTA4MDAKCiAgICBtcGM4M3h4OiBOZXcgYm9hcmQgc3VwcG9ydCBmb3IgU0lNUEM4MzEzCgogICAgVGhpcyBwYXRjaCB3aWxsIGNyZWF0ZSBhIG5ldyBib2FyZCwgU0lNUEM4MzEzLCBmcm9tIFNoZWxkb24gSW5zdHJ1bWVudHMuICBUaGlzCiAgICBib2FyZCBib290cyBmcm9tIE5BTkQgZGV2aWNlcyBhbmQgaXMgY29uZmlndXJlYWJsZSBmb3IgZWl0aGVyIGxhcmdlIG9yIHNtYWxsCiAgICBwYWdlIGRldmljZXMuICBUaGUgYm9hcmQgc3VwcG9ydHMgbm9uLXNvbGRlcmVkIEREUjIsIG9uZSBldGhlcm5ldCBwb3J0LCBhCiAgICBNYXJ2ZWxsIDg4RTExMTggUEhZLCBhbmQgUENJIGhvc3Qgc3VwcG9ydC4JVGhlIGJvYXJkIGFsc28gaGFzIGEgRlBHQSBjb25uZWN0ZWQKICAgIHRvIHRoZSBlTEJDIHByb3ZpZGluZyBnbHVlIGxvZ2ljIHRvIGEgVE1TMzIwQzY3eHggRFNQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDRiYWRlOGQ3N2FhMjBlMjg0NmZhNGFjY2ZmMGU3ZmE3OTYxYTEzNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEphbiAxOCAxOTo0NjowNiAyMDA5IC0wNTAwCgogICAgbmFuZDogZml4dXAgcHJpbnRmIG1vZGlmaWVycyB0byBtYXRjaCB0eXBlcyB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzg5ZTY2MjBlMjI3MTA5NmRmMzMxNjkxNzUyODAwMzYyN2RiNDAyMQpBdXRob3I6IFNjaGxhZWdsIE1hbmZyZWQganVuIDxtYW5mcmVkLnNjaGxhZWdsQGdteC5hdD4KRGF0ZToJVHVlIEphbiAyMCAxNjo1Nzo1NSAyMDA5ICswMTAwCgogICAgbmFuZCByZWFkLmpmZnMyIChuYW5kX2xlZ2FjeSkgaW4gY29tbW9uL2NtZF9uYW5kLmMKCiAgICBFcnJvciB3aXRoIENPTkZJR19OQU5EX0xFR0FDWSBpbiBjb21tb24vY21kX25hbmQuYzoKICAgIFdpdGggY3VycmVudCBjb2RlICJuYW5kIHJlYWQuamZmczJzIiAocmVhZCBhbmQgc2tpcCBiYWQgYmxvY2tzKSBpcyBhbHdheXMgaW50ZXJwcmV0ZWQgYXMKICAgICJuYW5kIHJlYWQuamZmczIiIChyZWFkIGFuZCBmaWxsIGJhZCBibG9ja3Mgd2l0aCAweGZmKS4gVGhpcyBpcyBiZWNhdXNlICIuamZmczIiIGlzCiAgICB0ZXN0ZWQgYmVmb3JlICIuamZmczJzIiBhbmQgb25seSB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgYXJlIGNvbXBhcmVkLgoKICAgIENvcnJlY3Rpb246CiAgICBUZXN0IGZvciAiLmpmZnMycyIgZmlyc3QgYW5kIGNvbXBhcmUgdGhlIGZpcnN0IDcgY2hhcmFjdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2Yzg2OTYzN2ZlZjMxZTY2MzgwZjBlYTFkNDk2OTBhMmUyNmVjMGQ3CkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CUZyaSBKYW4gMTYgMTg6NTU6NTQgMjAwOSArMDEwMAoKICAgIE5BTkQ6IHJlbmFtZSBOQU5EX01BWF9DSElQUyB0byBDT05GSUdfU1lTX05BTkRfTUFYX0NISVBTCgogICAgVGhpcyBwYXRjaCByZW5hbWVzIE5BTkRfTUFYX0NISVBTIHRvIENPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFMgYW5kCiAgICBjaGFuZ2VzIHRoZSBkZWZhdWx0IGZyb20gOCB0byAxIGZvciB0aGUgbGVnYWN5IGFuZCB0aGUgbmV3IE1URAogICAgTkFORCBsYXllci4gVGhpcyBhbGxvd3MgdG8gcmVtb3ZlIGFsbCBOQU5EX01BWF9DSElQUyBkZWZpbml0aW9ucwogICAgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlcyBiZWNhdXNlIG5vbmUgb2YgdGhlIGJvYXJkcyB1c2UgbXVsdGkKICAgIGNoaXAgc3VwcG9ydCAoTkFORF9NQVhfQ0hJUFMgPiAxKSBzbyBmYXIuIFRoZSBiYW1ib28gYW5kIHRoZSBEVTQ0MAogICAgZGVmaW5lCgogICAgICNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJICAgICBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRQoKICAgIGJ1dCB0aGF0J3MgYm9ndXMgYW5kIGRpZCBub3Qgd29yayBhbnlob3cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNzA1NjRlNmIxYmQwOGYzMjMwMTgyMzkyMjM4OTA3ZjM1MzFhODdlCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIERlYyAyIDExOjQ4OjUxIDIwMDggKzA4MDAKCiAgICBOQU5EOiBGaXggY2FjaGUgYW5kIG1lbW9yeSBpbmNvbnNpc3RlbmN5IGlzc3VlCgogICAgV2UgbG9hZCB0aGUgc2Vjb25kYXJ5IHN0YWdlIHUtYm9vdCBpbWFnZSBmcm9tIE5BTkQgdG8KICAgIHN5c3RlbSBtZW1vcnkgYnkgbmFuZF9sb2FkLCBidXQgd2UgZGlkIG5vdCBmbHVzaCBkLWNhY2hlCiAgICB0byBtZW1vcnksIG5vciBpbnZhbGlkYXRlIGktY2FjaGUgYmVmb3JlIHdlIGp1bXAgdG8gUkFNLgogICAgV2hlbiB0aGUgc3lzdGVtIGhhcyBjYWNoZSBlbmFibGVkIGFuZCB0aGUgVExCL3BhZ2UgYXR0cmlidXRlCiAgICBvZiBzeXN0ZW0gbWVtb3J5IGlzIGNhY2hlYWJsZSwgaXQgd2lsbCBjYXVzZSBpc3N1ZXMuCgogICAgLSA4M3h4IGZhbWlseSBpcyB1c2luZyB0aGUgZC1jYWNoZSBsb2NrLCBzbyBhbGwgb2YgZC1jYWNoZQogICAgICBhY2Nlc3MgaXMgY2FjaGUtaW5oaWJpdGVkLiBzbyB5b3UgY2FuJ3Qgc2VlIHRoZSBpc3N1ZS4KICAgIC0gODV4eCBmYW1pbHkgaXMgdXNpbmcgZC1jYWNoZSwgaS1jYWNoZSBlbmFibGUsIHBhcnRpYWwKICAgICAgY2FjaGUgbG9jay4geW91IHdpbGwgc2VlIHRoZSBpc3N1ZS4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBjYWNoZSBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTA2NTdjMjczMjc4Zjc0Mzc4ZTFhYzM5YjQxZDYxMmI5MmZkZmZhMApBdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxtZW5vbi5uaXNoYW50aEBnbWFpbC5jb20+CkRhdGU6CVNhdCBEZWMgMTMgMDk6NDM6MDYgMjAwOCAtMDYwMAoKICAgIE5BTkQ6IEVuYWJsZSBuYW5kIGxvY2ssIHVubG9jayBmZWF0dXJlCgogICAgRW5hYmxlIG5hbmQgbG9jaywgdW5sb2NrIGFuZCBzdGF0dXMgb2YgbG9jayBmZWF0dXJlLgogICAgTm90IGV2ZXJ5IGRldmljZSBhbmQgcGxhdGZvcm0gcmVxdWlyZXMgdGhpcywgaGVuY2UsCiAgICBpdCBpcyB1bmRlciBkZWZpbmUgZm9yIENPTkZJR19DTURfTkFORF9MT0NLX1VOTE9DSwoKICAgIE5hbmQgdW5sb2NrIGFuZCBzdGF0dXMgb3BlcmF0ZSBvbiBibG9jayBib3VuZGFyeSBpbnN0ZWFkCiAgICBvZiBwYWdlIGJvdW5kYXJ5LiBEZXRhaWxzIGluOgogICAgaHR0cDovL3d3dy5taWNyb24uY29tL3Byb2R1Y3RzL3BhcnRkZXRhaWw/cGFydD1NVDI5QzJHMjRNQUtMQUpHLTYlMjBJVAoKICAgIEludGlhbCBzb2x1dGlvbiBwcm92aWRlZCBieSBWaWtyYW0gUGFuZGl0YSA8dmlrcmFtLnBhbmRpdGFAdGkuY29tPgogICAgSW5jbHVkZXMgcHJlbGltaW5hcnkgc3VnZ2VzdGlvbnMgZnJvbSBTY290dCBXb29kCgogICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY5ZmI4YmU0ZmMwNzE2MmZkZjZlZGYwNGJkYzcyMzNiMGU5YTkyMGUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBEZWMgNiAwMjo0MDo1NSAyMDA4IC0wNTAwCgogICAgTkFORDogbW92ZSBib2FyZF9uYW5kX2luaXQgdG8gbmFuZC5oCgogICAgUmF0aGVyIHRoYW4gcHV0dGluZyB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIGZvciBib2FyZF9uYW5kX2luaXQoKSBpbiB0aGUgb25lCiAgICBwbGFjZSB3aGVyZSBpdCBnZXRzIGNhbGxlZCwgcHV0IGl0IGludG8gbmFuZC5oIHNvIHRoYXQgZXZlcnkgcGxhY2UgdGhhdCBhbHNvCiAgICBkZWZpbmVzIGl0IGdldHMgdGhlIHByb3RvdHlwZS4gIE90aGVyd2lzZSwgZXJyb3JzIGNhbiBnbyBzaWxlbnRseSB1bm5vdGljZWQKICAgIHN1Y2ggYXMgdXNpbmcgdGhlIHdyb25nIHJldHVybiB2YWx1ZSAodm9pZCByYXRoZXIgdGhhbiBpbnQpIHdoZW4gZGVmaW5pbmcKICAgIHRoZSBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYWUzOTg2MjA0NGViYjFlNjgyMjM0YjUxZjk0NDIxZTNmODcxZDZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDIgMTE6MDY6NDcgMjAwOCArMDEwMAoKICAgIE9uZU5BTkQ6IEFkZGl0aW9uYWwgc3luYyB3aXRoIDIuNi4yNwoKICAgIC0gQWRkIHN1YnBhZ2Ugd3JpdGUgc3VwcG9ydAogICAgLSBBZGQgb25lbmFuZF9vb2JfNjQvMzIgZWNjbGF5b3V0CgogICAgVGhpcyBoYXMgYmVlbiBtaXNzaW5nIGFuZCB3aXRob3V0IGl0IFVCSSBoYXMgc29tZSBpbmNvbXBhdGliaWxpZXMgaXNzdWVzCiAgICB3aXRoIHRoZSBjdXJyZW50ICg+PSAyLjYuMjcpIExpbnV4IGtlcm5lbCB2ZXJzaW9uLiB2aWRfaGRyX29mZnNldCBpcwogICAgcGxhY2VkIGRpZmZlcmVudGx5ICgyMDQ4IGluc3RlYWQgb2YgNTEyKSB3aXRob3V0IHRoaXMgZml4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE3MTRmNTFhMjAwOWJhYWVjZjNkNGY2ZTNiZDhjNGU5M2E4ZDNmMjMKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJVGh1IE5vdiAxMyAxNToxNDozMyAyMDA4ICswOTAwCgogICAgQWRkIG1hcmtiYWQgZnVuY3Rpb24KCiAgICBBZGQgbWlzc2luZyBtYXJrYmFkIGZ1bmN0aW9uCiAgICBJZiBub3QsIGl0J3MgaGFuZyB3aGVuIGl0IGVudGVyZWQgdGhlIG10ZC0+bWFya19iYWQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IGM0MzhlYTE3NWQ4ZDAwMmMxMDYzYjdhOTRiMGMwZTI2NjY4ZDFhYzkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMTIgMTM6NDc6MjQgMjAwOCArMDEwMAoKICAgIE9uZU5BTkQ6IEJhZCBibG9jayBhd2FyZSByZWFkL3dyaXRlIGNvbW1hbmQgc3VwcG9ydAoKICAgIFVwZGF0ZSBPbmVOQU5EIGNvbW1hbmQgdG8gc3VwcG9ydCBiYWQgYmxvY2sgYXdhcmVuZXNzLgogICAgQWxzbyBjaGFuZ2UgdGhlIE9uZU5BTkQgY29tbWFuZCBzdHlsZSB0byBiZXR0ZXIgbWF0Y2ggdGhlCiAgICBOQU5EIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgOGNmMTFmM2FhNzg2NzM3MzBlOWVjYmJlNGI3NTIxM2I1M2YyMTJjOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAxMSAxMDoyOTowOSAyMDA4ICswMTAwCgogICAgT25lTkFORDogU2F2ZSB2ZXJzaW9uX2lkIGluIG9uZW5hbmRfY2hpcCBzdHJ1Y3QKCiAgICBUaGUgdmVyc2lvbiAodmVyX2lkKSB3YXMgbm90IHN0b3JlZCBpbiB0aGUgb25lbmFuZF9jaGlwIHN0cnVjdHVyZSBhbmQKICAgIGJlY2F1c2Ugb2YgdGhpcyB0aGUgY29udGludW91cyBsb2NraW5nIHNjaGVtZSBjb3VsZCBiZSBlbmFibGVkIG9uIHNvbWUKICAgIGNoaXBzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZmNhMzMxMGQ2MTFjYzBmNTFkNzI5NWVmMzU1N2FmYmRiZDkxZGMzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDExIDEwOjI4OjUzIDIwMDggKzAxMDAKCiAgICBPbmVOQU5EOiBGaXggY29tcGlsZXIgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWFjNTc0NGUzM2VlMGFhNmQ2ZGRhYjNiOTlmOWU3MDk1MzE1NmU2OQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgNCAxNDo1NTowNiAyMDA4ICswODAwCgogICAgbXBjODN4eDogZW5hYmxlIGVMQkMgTkFORCBzdXBwb3J0IGZvciBNUEM4MzE1RVJEQiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWYwOTIxZDZiMDVhZWI5MDM0MTU4ZjliZWY1MzIzZDZkYTljOTI1ZQpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglUdWUgTm92IDQgMDk6MjQ6MDcgMjAwOCArMDkwMAoKICAgIFN5bmMgd2l0aCAyLjYuMjcKCiAgICBTeW5jIHdpdGggT25lTkFORCBrZXJuZWwgY29kZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IGU3ZjMyNWJlOWVkZWI4NGJiNDU3MzAxNzc2YmJhYzFmNzI1N2RhZmMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBKYW4gNSAxMzozNTozMSAyMDA5ICswMTAwCgogICAgbWljcm9ibGF6ZTogVXNlIGNhY2hlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSBjYWNoZSBzdGF0dXMpCiAgICBpbiBzeXN0ZW1zIHdoaWNoIGFyZSBjb25maWd1cmVkIHdpdGhvdXQgZmxhc2gKCmNvbW1pdCBlOWI3MzdkZWIyYzMwMTI1MzYyZDIwZTI0MTcwNjE3NDc2MDI2ZTk0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gSmFuIDUgMTM6Mjk6MzIgMjAwOSArMDEwMAoKICAgIG1pY3JvYmxhemU6IEFkZCBjYWNoZSBmbHVzaAoKY29tbWl0IGI0ZjhkZGEzNWJmYWQ0NDdiNDEwNjgyODIzMjcwNWIyZTg3OGQxNjgKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBKYW4gNSAxMzoyODo0MCAyMDA5ICswMTAwCgogICAgbWljcm9ibGF6ZTogQWRkIGJvb3R1cCBtZXNzYWdlcyB0byBib2FyZC5jCgpjb21taXQgMzMwZTU1NDU5YmM5OTgzMzQxZGE2YzFkNWM3ZmUwMGE2NjQ0MzZmZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIERlYyAxOSAxMzoyNTo1NSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogQ2hhbmdlIG1pY3JvYmxhemUtZ2VuZXJpYyBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA1MmE4MjJlZDljMzdhMmVhMGVkMTEyYTI2ZDhmZjVhNmNiMWM2ZjEwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgRGVjIDE5IDEzOjE0OjA1IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBSZW5hbWUgbWw0MDEgdG8gbWljcm9ibGF6ZS1nZW5lcmljCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDY2Nzc4NzYxODFjYzg3NzJiY2E4YTM3MjQ3OWE1MDBkMTYwZjM5OTMKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAyMCAxMTo1NjoxMSAyMDA5IC0wNjAwCgogICAgODN4eDogVXNlIHRoZSBwcm9wZXIgc2VxdWVuY2UgZm9yIHVwZGF0aW5nIElNTVIuCgogICAgVGhpcyBlbnN1cmVzIHRoYXQgc3Vic2VxdWVudCBhY2Nlc3NlcyBwcm9wZXJseSBoaXQgdGhlIG5ldyB3aW5kb3cuCgogICAgVGhlIGRjYmkgZHVyaW5nIHRoZSBOQU5EIGxvb3Agd2FzIGFjY2lkZW50YWxseSB3b3JraW5nIGFyb3VuZCB0aGlzOwogICAgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5LCBhcyB0aGUgY2FjaGUgaXMgbm90IGVuYWJsZWQuCgogICAgUmVwb3J0ZWQtYnk6IFN1Y2hpdCBMZXBjaGEgPFN1Y2hpdC5MZXBjaGFAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YjM0NTU3YzU0NmU1ZTlmMzRlYmY4M2M5MzQxM2RhZDk3M2Q5M2RmCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBKYW4gOCAwNDoyNjoxOSAyMDA5ICswMzAwCgogICAgbXBjODN4eDogQWRkIFBDSS1FIHN1cHBvcnQgZm9yIE1QQzgzN1hFTURTIGJvYXJkcwoKICAgIE1QQzgzN1hFTURTIGJvYXJkcyBjYW4gc3VwcG9ydCBQQ0ktRSB2aWEgIlBDSS1FIHJpc2VyIGNhcmQiLiBUaGUgY2FyZAogICAgcHJvdmlkZXMgdHdvIFBDSS1FICh4MikgcG9ydHMuIFRob3VnaCwgb25seSBvbmUgcG9ydCBjYW4gYmUgdXNlZCBpbiB4MgogICAgbW9kZS4gVHdvIHBvcnRzIGNhbiBmdW5jdGlvbiBzaW11bHRhbmVvdXNseSBpbiB4MSBtb2RlLgoKICAgIFBDSS1FIHgxL3gyIG1vZGVzIGNhbiBiZSBzd2l0Y2hlZCB2aWEgInBleF94MiIgZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhmMTFlMzRiMzFhN2JlMTI0YTMyMzk2NTNmMzNhZjk1MTA1MDIwNDUKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEphbiA4IDA0OjI2OjE3IDIwMDkgKzAzMDAKCiAgICBtcGM4M3h4OiBBZGQgUENJLUUgc3VwcG9ydCBmb3IgTVBDODMxNUVSREIgYm9hcmRzCgogICAgTVBDODMxNUVSREIgYm9hcmRzIGZlYXR1cmVzIFBDSS1FIHgxIGFuZCBNaW5pIFBDSS1FIHgxIHBvcnRzLiBMZXQncwogICAgc3VwcG9ydCB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZDY2NDZjMGI5ZWJlN2U1YWZjNGFlNGM3ODA5N2Q5Y2QzMTdhNWU4CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBKYW4gOCAwNDoyNjoxMiAyMDA5ICswMzAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIE1QQzgzeHggUENJLUUgY29udHJvbGxlcnMKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTVBDODN4eCBQQ0ktRSBjb250cm9sbGVycyBpbiBSb290IENvbXBsZXgKICAgIG1vZGUuCgogICAgVGhlIHBhdGNoIGlzIGJhc2VkIG9uIFRvbnkgTGkgYW5kIERhdmUgTGl1IHdvcmtbMV0uCgogICAgVGhvdWdoIHVubGlrZSB0aGUgb3JpZ2luYWwgcGF0Y2gsIGJ5IGRlZmF1bHQgd2UgZG9uJ3QgcmVnaXN0ZXIgUENJLUUKICAgIGJ1c2VzIGZvciB1c2UgaW4gVS1Cb290LCB3ZSBvbmx5IGNvbmZpZ3VyZSB0aGUgY29udHJvbGxlcnMgZm9yIGZ1dHVyZQogICAgdXNlIGluIG90aGVyIE9TZXMgKExpbnV4KS4gVGhpcyBpcyBkb25lIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBlbm91Z2gKICAgIG9mIHNwYXJlIEJBVHMgdG8gbWFwIGFsbCB0aGUgUENJLUUgcmVnaW9ucy4KCiAgICBUbyBhY3R1YWxseSB1c2UgUENJLUUgaW4gVS1Cb290LCB1c2VycyBzaG91bGQgZXhwbGljaXRseSBkZWZpbmUKICAgIENPTkZJR184M1hYX0dFTkVSSUNfUENJRV9SRUdJU1RFUl9IT1NFUyBzeW1ib2wgaW4gdGhlIGJvYXJkIGZpbGUuIEFuZAogICAgb25seSB0aGVuIFUtQm9vdCB3aWxsIGFibGUgdG8gYWNjZXNzIFBDSS1FLCBidXQgYXQgdGhlIGNvc3Qgb2YgZGlzYWJsZWQKICAgIGFkZHJlc3MgdHJhbnNsYXRpb24uCgogICAgWzFdIGh0dHA6Ly9saXN0cy5kZW54LmRlL3BpcGVybWFpbC91LWJvb3QvMjAwOC1KYW51YXJ5LzAyNzYzMC5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBBY2tlZC1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODhlY2Y1NWNhYmQ3YWVhMjhmZTgwOTM3MjBlMjA4ZjUzY2NmZGNmNQpBdXRob3I6IElyYSBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglNb24gSmFuIDEyIDEzOjMzOjE3IDIwMDkgLTA4MDAKCiAgICBNUEM4MzQ5RU1EUzogZG8gbm90IHNldHVwIHVudXNlZCBQQ0kgY2xvY2sgb3V0cHV0cyBpbiBQQ0kgYWdlbnQgbW9kZQoKICAgIFdoZW4gcnVubmluZyBpbiBQQ0kgYWdlbnQgbW9kZSwgdGhlIFBDSV9DTEtfT1VUIHNpZ25hbHMgYXJlIG5vdCB1c2VkLCBzbyBkbwogICAgbm90IGVuYWJsZSB0aGVtLiBTZWUgdGhlIE1QQzgzNDlFQSBSZWZlcmVuY2UgTWFudWFsLCBTZWN0aW9uIDQuNC4yCiAgICAiQ2xvY2tpbmcgaW4gUENJIEFnZW50IE1vZGUiLgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NWYzNTIwOWY3MDJiYjI2ODI2ODU1ZWQ4YzhlNGQxMDhhYjVmNDEyCkF1dGhvcjogSXJhIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CkRhdGU6CU1vbiBKYW4gMTIgMTM6MzI6MjYgMjAwOSAtMDgwMAoKICAgIDgzeHg6IFBDSSBhZ2VudCBtb2RlIGZpeGVzIGZvciBtdWx0aS1ib2FyZCBzeXN0ZW1zCgogICAgV2hlbiBydW5uaW5nIGEgc3lzdGVtIHdpdGggMiBvciBtb3JlIE1QQzgzNDlFTURTIGJvYXJkcyBpbiBQQ0kgYWdlbnQgbW9kZSwKICAgIHRoZSBib2FyZHMgd2lsbCBsb2NrIHVwIHRoZSBQQ0kgYnVzIGJ5IHNjYW5uaW5nIGFnYWluc3QgZWFjaCBvdGhlci4KCiAgICBUaGUgYm9hcmRzIGxvY2sgYWdhaW5zdCBlYWNoIG90aGVyIGJ5IHRyeWluZyB0byBhY2Nlc3MgdGhlIFBDSSBidXMgYmVmb3JlCiAgICBjbGVhcmluZyB0aGVpciBjb25maWd1cmF0aW9uIGxvY2sgYml0LiBCb3RoIGJvYXJkcyBlbmQgdXAgaW4gYSBsb29wLAogICAgc2VuZGluZyBhbmQgcmVjZWl2aW5nICJUYXJnZXQgTm90IFJlYWR5IiBtZXNzYWdlcyBmb3JldmVyLgoKICAgIFdoZW4gcnVubmluZyBpbiBQQ0kgYWdlbnQgbW9kZSwgdGhlIHNjYW5uaW5nIG5vdyB0YWtlcyBwbGFjZSBhZnRlciB0aGUKICAgIGJvYXJkcyBoYXZlIGNsZWFyZWQgdGhlaXIgY29uZmlndXJhdGlvbiBsb2NrIGJpdC4KCiAgICBBbHNvLCBhZGQgYSBtaXNzaW5nIGRlY2xhcmF0aW9uIHRvIHRoZSBtcGM4M3h4LmggaGVhZGVyIGZpbGUsIGZpeGluZyBhCiAgICBidWlsZCB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NTVhNDY5MTViODI4OTZjYzIwNzBlYjMyNmQwNzU1NTVjMmJjNTgwCkF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgpEYXRlOglGcmkgRGVjIDEyIDEzOjEyOjQ1IDIwMDggLTA4MDAKCiAgICBtcGM4M3h4OiBTaXplIG9wdGltaXphdGlvbiBvZiBzdGFydC5TCgogICAgQ3VycmVudGx5IHRoZXJlIGFyZSBpbiBleGNlc3Mgb2YgMTAwIGJ5dGVzIGxvY2F0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW1hZ2UKICAgIGJ1aWx0IGJ5IHN0YXJ0LlMgdGhhdCBhcmUgbm90IGJlaW5nIHV0aWxpemVkLiAgVGhpcyBwYXRjaCBtb3ZlcyBhIGZldyBmdW5jdGlvbnMKICAgIGludG8gdGhpcyBwYXJ0IG9mIHRoZSBpbWFnZS4gIFRoaXMgd2lsbCBjcmVhdGUgYSBncmVhdGVyIG51bWJlciBvZiAqYXZhaWxhYmxlKgogICAgYnl0ZXMgdGhhdCBjYW4gYmUgdXNlZCBieSBib2FyZCBzcGVjaWZpYyBjb2RlIGluIE5BTkQgYnVpbGRzIGFuZCB3aWxsIGRlY3JlYXNlCiAgICB0aGUgc2l6ZSBvZiB0aGUgYXNzZW1ibGVkIGNvZGUgaW4gb3RoZXIgYnVpbGRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzJkMTVlNzA1YmMzOTgzODg0MTA1Y2I3NzU1YzdiYTgwZTc0YTBhNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMjEgMjM6MDg6MTIgMjAwOSArMDEwMAoKICAgIFByZXBhcmUgdjIwMDkuMDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDYzNWU1ZjhmYzgyMzY1ZTZlOTczNGIzMTMyYmM5NTEzNWE2ZGU2NzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDE4IDIxOjM3OjQ4IDIwMDkgKzAxMDAKCiAgICBQcmVwYXJlIDIwMDkuMDEtcmMzCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGNkYTQzNzg5OGY3ODczNzUyZjAyMDE3NTdjZDMzZjEyMTk2Y2U4NwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEphbiAxNyAxMzozMjo0MiAyMDA5IC0wNTAwCgogICAgYnVpbGQgc3lzdGVtOiB0cmVhdCBhbGwgRGFyd2luJ3MgYWxpa2UKCiAgICBUaGUgeDg2IGJhc2VkIHZlcnNpb24gb2YgRGFyd2luIGJlaGF2ZXMgdGhlIHNhbWUgcXVpcmt5IHdheSBhcyB0aGUgcG93ZXJwYwogICAgRGFyd2luLCBzbyBvbmx5IGNoZWNrIEhPU1RPUyB3aGVuIHNldHRpbmcgdXAgRGFyd2luIHdvcmthcm91bmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBjMDg4YTEwOGM3NWRiNTY1ZTA3MjkyZmQ2NjhkZmE1NDkxZTg1YmMyCkF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KRGF0ZToJV2VkIEphbiAxNCAxMzo1MjoyNCAyMDA5ICswMTAwCgogICAgZmR0X3Jlc2l6ZSgpOiBmaXggYWN0dWFsc2l6ZSBjYWxjdWxhdGlvbnMgd2l0aCB1bmFsaWduZWQgYmxvYnMKCiAgICBUaGUgY29kZSBpbiBmZHRfcmVzaXplKCkgdG8gZXh0ZW5kIHRoZSBmZHQgc2l6ZSB0byBlbmQgb24gYSBwYWdlIGJvdW5kYXJ5CiAgICBpcyB3cm9uZyBmb3IgZmR0J3Mgbm90IGxvY2F0ZWQgYXQgYW4gYWRkcmVzcyBhbGlnbmVkIG9uIGEgcGFnZSBib3VuZGFyeS4KICAgIFdoYXQncyBldmVuIHdvcnNlLCB0aGUgY29kZSB3b3VsZCBtYWtlIGFjdHVhbHNpemUgc2hyaW5rIHJhdGhlciB0aGFuIGdyb3cKICAgIGlmIChibG9iICYgMHhmZmYpIHdhcyBiaWdnZXIgdGhhbiB0aGUgYW1vdW50IG9mIHBhZGRpbmcgYWRkZWQgYnkgQUxJR04oKSwKICAgIGNhdXNpbmcgZmR0X2FkZF9tZW1fcnN2IHRvIGZhaWwuCgogICAgRml4IGl0IGJ5IGFsaWduaW5nIGVuZCBhZGRyZXNzIChibG9iICsgc2l6ZSkgdG8gYSBwYWdlIGJvdW5kYXJ5IGluc3RlYWQuCiAgICBGb3IgYWxpZ25lZCBmZHQncyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gd2hhdCB3ZSBoYWQgYmVmb3JlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Cgpjb21taXQgZmFkYWQxNTczZmIxNmM5MDAyNWYwOGEyODYxZDYwNDdkMDkzY2JhNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJRnJpIEphbiA5IDA0OjM4OjE3IDIwMDkgLTA1MDAKCiAgICBuY2I6IHVzZSBzb2NrbGVuX3QKCiAgICBUaGUgcmVjdmZyb20oKSBmdW5jdGlvbiB0YWtlcyBhIHNvY2tsZW5fdCwgbm90IGFuIGludC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZmM4M2M5MjczY2VjNmU2ZTU0MmY0YTBlYTNiNjUzYjdkMDUxM2ZmYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBKYW4gMTEgMTY6MzU6MTYgMjAwOSArMDEwMAoKICAgIHNoOiBzZXJpYWw6IHVzZSByZWFkeC93cml0ZXggYWNjZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA5ZTFmYTYyOGJkYjY0NzQ1ODExY2RkMjZjNGY5NTM4NDZjMDc2MTgwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEphbiAxMSAxNjozNToxNSAyMDA5ICswMTAwCgogICAgc2g6IHNlcmlhbDogY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGM5OTM1Yzk5MjU3NTkyMmI3ZWYxM2VlYzA2NTZlZDg2NjVkMzI0ZTMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBKYW4gMTEgMTc6NDg6NTYgMjAwOSArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciBvbiBsb3dsZXZlbF9pbml0IGZpbGUKCiAgICBsb3dsZXZlbF9pbml0IG9mIFNIIHdhcyBjb3JyZWN0ZWQgdG8gdXNlIHRoZSB3cml0ZS9yZWFkWFggbWFjcm8uCiAgICBIb3dldmVyLCB0aGVyZSB3YXMgYSBwcm9ibGVtIHRoYXQgd2FzIG5vdCBhYmxlIHRvIGJlIGNvbXBpbGVkIHBhcnRpYWxseS4KICAgIFRoaXMgcGF0Y2ggY29ycmVjdGVkIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGE1YjA0ZDAwYmZlYjk0MGM2MjIzMjk3MmNlNjQ0ZDUwYjQ1Nzk3ZjkKQXV0aG9yOiBLaWVyYW4gQmluZ2hhbSA8a2llcmFuYmluZ2hhbUBnbWFpbC5jb20+CkRhdGU6CVR1ZSBEZWMgMzAgMDE6MTY6MDMgMjAwOCArMDAwMAoKICAgIHNoOiBGaXggdXAgcnNrNzIwMyB0YXJnZXQgZm9yIG91dCBvZiB0cmVlIGJ1aWxkCgogICAgRml4IHVwIHJzazcyMDMgdGFyZ2V0IHRvIGJ1aWxkIHN1Y2Nlc3NmdWxseSB1c2luZyBvdXQtb2YtdHJlZSBidWlsZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaWVyYW4gQmluZ2hhbSA8a2JpbmdoYW1AbXBjLWRhdGEuY28udWs+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZjdlNzhmM2I3NGFhZTljYWNhMjk5N2JhZDg2NWE3MjMzODMyNmMwYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBEZWMgMjAgMTk6Mjk6NDkgMjAwOCArMDEwMAoKICAgIHNoOiB1c2Ugd3JpdGV7OCwxNiwzMn0gaW4gYWxsIGxvd2xldmVsX2luaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGU0NDMwNzc5NjIzYWY1MDBkZTFjZWU3ODkyYzM3OWYwN2VmNTk4MTMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIwIDE5OjI5OjQ4IDIwMDggKzAxMDAKCiAgICBzaDogbG93bGV2ZWxfaW5pdCBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgODVjYjA1MmVlNDE2NzVjYTM2MWU2YTRjNjk0NTVkYzcxNWM4ZjJkOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBEZWMgMjAgMTU6Mjc6NDUgMjAwOCArMDEwMAoKICAgIHNoOiB1cGRhdGUgc2gyL3NoMmEgdGltZXIgY29kaW5nIHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAxZTE1ZmY5OTkzMjJlODFhZjRjMGMwYzU0ODkwOGYzODk0NGJhMzljCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IERlYyAyMCAxNToyNToyMiAyMDA4ICswMTAwCgogICAgc2g6IHVwZGF0ZSBzaCB0aW1lciBjb2Rpbmcgc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDBlM2VjZTMzODAxZTM3N2JlNjdmZmEyOWYwODM0MjFhZDgyMGYyOGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDE0IDIzOjI2OjA1IDIwMDkgKzAxMDAKCiAgICBQcmVwYXJlIDIwMDkuMDEtcmMyCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU5MmM5YTg2MGU0NGMxNDUxM2M4OTA5Y2U0Mjk5ZTI1M2E3NzVlZWIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDE0IDIyOjM1OjMwIDIwMDkgKzAxMDAKCiAgICBjcHUvbXBjODI0eC9NYWtlZmlsZTogZml4IHdhcm5pbmcgd2l0aCBwYXJhbGxlbCBidWlsZHMKCiAgICBQYXJhbGxlbCBidWlsZHMgd291bGQgb2NjYXNpb25hbGx5IGlzc3VlIHRoaXMgYnVpbGQgd2FybmluZzoKCglsbjogY3JlYXRpbmcgc3ltYm9saWMgbGluayBgY3B1L21wYzgyNHgvYmVkYnVnXzYwM2UuYyc6IEZpbGUgZXhpc3RzCgogICAgVXNlICJsbiAtc2YiIGFzIHF1aWNrIHdvcmsgYXJvdW5kIGZvciB0aGUgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzYmE2MDVkNGJlZWM2NDk0Mzg1MzllN2RmOTdiNWZlZGIyNjU5MmZiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBKYW4gMiAxMjoxODo0OSAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBBZGQgbG9hZHBjaSBjb21tYW5kIHRvIGVzZCdzIENQQ0k0MDUyIGFuZCBDUENJNDA1QUIgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIGVzZCdzIGxvYWRwY2kgQlNQIGNvbW1hbmQgdG8gQ1BDSTQwNTIgYW5kCiAgICBDUENJNDA1QUIgYm9hcmQuIFRoaXMgcmVxdWlyZXMgQ09ORklHX0NNRF9CU1AgYW5kIENPTkZJR19QUkFNLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYwMGZlNDZmYjNkYWI3ZjA3NjA0ZjkwMDk5MDRmMzE1ODQ0MTUxMTQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAyIDEyOjE4OjEyIDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IERpc2FibGUgcGNpIG5vZGUgaW4gZGV2aWNlIHRyZWUgb24gQ1BDSTQwNSBwY2kgYWRhcHRlcnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNmExZjQ5MGQyMjRjNjAwYTA5MTM3ZTU4ZDEwMjZkMTUwYjhlNjc5CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBKYW4gMiAxMjoxNzozNiAyMDA5ICswMTAwCgogICAgcHBjNHh4OiBDbGVhbnVwIENQQ0k0MDUgYm9hcmQgY29kZQoKICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIENQQ0k0MDUgYm9hcmQgc3VwcG9ydDoKICAgIC0gd3JhcCBsb25nIGxpbmVzCiAgICAtIHVuaWZpY2F0aW9uIG9mIHNwYWNlcyBpbiBmdW5jdGlvbiBjYWxscwogICAgLSByZW1vdmUgZGVhZCBjb2RlCgogICAgVXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIG9uIHBlcmlwaGVyYWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGZjZWViYjQ1YTBiOTdlOTJmOTg4OTg2MWY4YzNiOWNiODg1ZTcwNmYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAyIDEyOjE2OjM1IDIwMDkgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBhdXRvIFJTNDg1IG1vZGUgb24gUExVNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIGF1dG8gUlM0ODUgbW9kZSBpbiB0aGUgMm5kIGV4dGVybmFsCiAgICB1YXJ0IG9uIFBMVTQwNSBib2FyZHMuIFRoaXMgaXMgYSBzcGVjaWFsIG1vZGUgb2YgdGhlIHVzZWQKICAgIEV4YXIgWFIxNkMyODUwIHVhcnQuIEJlY2F1c2UgdGhlc2UgYm9hcmRzIG9ubHkgaGF2ZSBhIDQ4NSBwaHlzaWNhbAogICAgbGF5ZXIgY29ubmVjdGVkIGl0J3MgYSBnb29kIGlkZWEgdG8gdHVybiBpdCBvbiBieSBkZWZhdWx0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjVmNjVkZmE5YWE4ZTA2OGU2MmFiYTQ3MzNkYzRmZDk3YjFkOWJmNgpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTMgMTY6Mjk6MjggMjAwOSAtMDUwMAoKICAgIFNvbWUgY2hhbmdlcyBvZiBUTEIgZW50cnkgc2V0dGluZyBmb3IgTVBDODU3MkRTCgogICAgLSBNb3ZlIHRoZSBUTEIgZW50cnkgb2YgUElYSVNfQkFTRSBmcm9tIFRMQjAgdG8gVExCMVs4XSwgYmVjYXVzZSBpbiBDQU1QIG1vZGUsCiAgICBhbGwgdGhlIFRMQjAgZW50cmllcyB3aWxsIGJlIGludmFsaWRhdGVkIGFmdGVyIGNwdTEgYnJpbmdzIHVwIGtlcm5lbCwgdGh1cyBjcHUwCiAgICBjYW4gbm90IGFjY2VzcyBQSVhJU19CQVNFIGFueW1vcmUgKGFueSBhY2Nlc3Mgd2lsbCBjYXVzZSBEYXRhVExCRXJyb3IgZXhjZXB0aW9uKQoKICAgIC0gU2V0IENPTkZJR19TWVNfRERSX1RMQl9TVEFSVCB0byA5IGZvciBNUEM4NTcyRFMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NTAyNjQzMTdlYjk1OTRiMmI1ZWUyZmI2NTIwNjIwMGExYzYwMDdhCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxMyAxNjoyOToyMiAyMDA5IC0wNTAwCgogICAgQ2hhbmdlIEREUiB0bGIgc3RhcnQgZW50cnkgdG8gQ09ORklHIHBhcmFtIGZvciA4NXh4CgogICAgU28gdGhhdCB3ZSBjYW4gbG9jYXRlIHRoZSBERFIgdGxiIHN0YXJ0IGVudHJ5IHRvIHRoZSB2YWx1ZSBvdGhlciB0aGFuIDguIEJ5CiAgICBkZWZhdWx0LCBpdCBpcyBzdGlsbCA4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmQzYTEwZjczZWNlN2ZmYjczNjg5MGMxMGUwMjMyMjI2MTJhNGFhMApBdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA5IDE2OjAyOjM1IDIwMDkgKzA4MDAKCiAgICBDaGFuZ2UgUENJRTEmMiBkZWNpaWRlIGxvZ2ljIG9uIE1QQzg1NDREUyBib2FyZCBtb3JlIHJlYWRhYmxlCgogICAgVGhlIElPIHBvcnQgc2VsZWN0aW9uIGZvciBNUEM4NTQ0RFMgYm9hcmQ6CiAgICAgUG9ydAkJCWNmZ19pb19wb3J0cwogICAgIFBDSUUxCQkweDIsIDB4MywgMHg0LCAweDUsIDB4NiwgMHg3CiAgICAgUENJRTIJCTB4NCwgMHg1LCAweDYsIDB4NwogICAgIFBDSUUzCQkweDYsIDB4NwogICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgUENJRTEyIGFuZCBQQ0lFMiBsb2dpYyBtb3JlIHJlYWRhYmxlLgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAyOGUxMTY4MTFkMjhhMDMxNjYwZjFhZDllMjBhYzEyOTNiM2M1YzcKQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gOSAxNjowMTo1MiAyMDA5ICswODAwCgogICAgUENJRTIgYW5kIFBDSUUzIGFyZSBkZWNpZGVkIGJ5IGNvcnJlc3BvbmluZyBiaXQgaW4gZGV2ZGlzciBpbnN0ZWFkIG9mIFBDSUUxIGJpdAoKICAgIFBDSUUyIGFuZCBQQ0lFMyBzaG91bGQgYmUgZGVjaWRlZCBieSBjb3JyZXNwb25pbmcgYml0IGluIGRldmRpc3IgaW5zdGVhZCBvZgogICAgUENJRTEgYml0LgogICAgT24gTVBDODU3MkRTIGJvYXJkLCBQQ0lFIHJlZmVycyB0byBQQ0lFMS4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YWZjMmVmMDMwN2FlY2Y1MjQ4MmRmNjdjMzFiNzVkNWY5ZTY2YjQ3CkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDkgMTY6MDA6NTUgMjAwOSArMDgwMAoKICAgIEZpeCBJTyBwb3J0IHNlbGVjdGlvbiBpc3N1ZSBvbiBNUEM4NTQ0RFMgYW5kIE1QQzg1NzJEUyBib2FyZHMKCiAgICBUaGUgSU8gcG9ydCBzZWxlY3Rpb24gaXMgbm90IGNvcnJlY3Qgb24gTVBDODU3MkRTIGFuZCBNUEM4NTQ0RFMgYm9hcmQuCiAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgogICAgIEZvciBNUEM4NTcyCiAgICAgUG9ydAkJCWNmZ19pb19wb3J0cwogICAgIFBDSUUxCQkweDIsIDB4MywgMHg3LCAweGIsIDB4YywgMHhmCiAgICAgUENJRTIJCTB4MywgMHg3CiAgICAgUENJRTMJCTB4NwoKICAgIEZvciBNUEM4NTQ0CiAgICBQb3J0CQkJY2ZnX2lvX3BvcnRzCiAgICBQQ0lFMQkJMHgyLCAweDMsIDB4NCwgMHg1LCAweDYsIDB4NwogICAgUENJRTIJCTB4NCwgMHg1LCAweDYsIDB4NwogICAgUENJRTMJCTB4NiwgMHg3CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2UzZmZmZTNiYWYzYmVmZGUyODdmZWMxZmNiZmU1NTA1MmZiODk0NgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIERlYyAzIDIyOjM2OjQ0IDIwMDggLTA2MDAKCiAgICBtcGM4NjEwaHBjZDogRml4IFBDSSBtYXBwaW5nIGNvbmNlcHRzCgogICAgUmVuYW1lIF9CQVNFIHRvIF9CVVMsIGFzIGl0J3MgYWN0dWFsbHkgYSBQQ0kgYnVzIGFkZHJlc3MsCiAgICBzZXBhcmF0ZSB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgaW50byBfVklSVCBhbmQgX1BIWVMsCiAgICBhbmQgdXNlIGVhY2ggYXBwb3ByaWF0ZWx5LglUaGlzIG1ha2VzIHRoZSBjb2RlIGVhc2llciB0byByZWFkCiAgICBhbmQgdW5kZXJzdGFuZCwgYW5kIGZhY2lsaXRhdGVzIG1hcHBpbmcgY2hhbmdlcyBnb2luZyBmb3J3YXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3OWU0MzZjYWQzYjRhN2RiODg0MDhjM2YwNTE3NTAyOGYzMGQ3MDBkCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDMgMjI6MzY6MjYgMjAwOCAtMDYwMAoKICAgIHNiYzg2NDFkOiBGaXggUENJIG1hcHBpbmcgY29uY2VwdHMKCiAgICBSZW5hbWUgX0JBU0UgdG8gX0JVUywgYXMgaXQncyBhY3R1YWxseSBhIFBDSSBidXMgYWRkcmVzcywKICAgIHNlcGFyYXRlIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywKICAgIGFuZCB1c2UgZWFjaCBhcHBvcHJpYXRlbHkuCVRoaXMgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIHJlYWQKICAgIGFuZCB1bmRlcnN0YW5kLCBhbmQgZmFjaWxpdGF0ZXMgbWFwcGluZyBjaGFuZ2VzIGdvaW5nIGZvcndhcmQuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGE5ZjNhY2JjZDA3ZGE3MmI1NDQ2Y2U1NTc1MzFhM2VkOGI4YmVmZjAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSmFuIDEyIDE0OjUwOjM1IDIwMDkgKzAxMDAKCiAgICBNUEM4Nnh4OiBmaXggYnVpbGQgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDAzMmExYzkzNGVmNGRjMDAzMjgxZjU3MzAyYjZlNjkzMDYyYzE4NjgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBKYW4gNSAxNjowOTo0NCAyMDA5IC0wNTAwCgogICAgYmY1Mzctc3RhbXAvbmFuZDogZml4IGJvYXJkX25hbmRfaW5pdCBwcm90b3R5cGUKCiAgICBUaGUgYm9hcmRfbmFuZF9pbml0KCkgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiBpbnQsIG5vdCB2b2lkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2ODdmOTUyZTQxMTk1OTRhYjkxM2JlMTFjOTBmN2YwMThjMmE3YTc5CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgRGVjIDExIDA3OjA0OjQ4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogZHJvcCBDT05GSUdfU1BJIGhhbmRsaW5nIGluIGJvYXJkIGluaXQKCiAgICBUaGUgZWVwcm9tIFNQSSBpbml0IGZ1bmN0aW9ucyBhcmUgZHVwbGljYXRlZCBhcyB0aGUgY29tbW9uIGNvZGUgYWxyZWFkeQogICAgZXhlY3V0ZXMgdGhlc2UgZm9yIHVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBlN2U2ODRiMTBkNzNhMzAzOTAyMjA4NTk0YzdjM2U3ZTBkNzUzMjgyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgT2N0IDI0IDE3OjUxOjU3IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIHdpdGggbGRzY3JpcHRzCgogICAgTWFueSBvZiB0aGUgQmxhY2tmaW4gYm9hcmQgbGlua2VyIHNjcmlwdHMgYXJlIHByZXByb2Nlc3NlZCwgc28gbWFrZSBzdXJlIHdlCiAgICBvdXRwdXQgdGhlIGxpbmtlciBzY3JpcHQgaW50byB0aGUgYnVpbGQgdHJlZSByYXRoZXIgdGhhbiB0aGUgc291cmNlIHRyZWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI5ZWVjYzM0MmY3NjdiNTBlMTQ3NmZiYzFhYWQ3ZDg4ZGQ0Y2U1ZWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTc6NDg6NTQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggbGlua2VyIHNjcmlwdHMgdG8gd29yayB3aXRoIC0tZ2Mtc2VjdGlvbnMKCiAgICBNYWtlIHN1cmUgYWxsIC50ZXh0IHNlY3Rpb25zIGdldCBwdWxsZWQgaW4gYW5kIHRoZSBlbnRyeSBwb2ludCBpcyBwcm9wZXJseQogICAgcmVmZXJlbmNlZCBzbyB0aGV5IGRvbid0IGdldCBkaXNjYXJkZWQgd2hlbiBsaW5raW5nIHdpdGggLS1nYy1zZWN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTA5ZmM1NTNiYzYwODdhNmY3MDViM2JmNTJmMzk1MGQ3ZDFlYWE1OApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMDo0NTo0NCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHNldCBwcm9wZXIgTERSRkxBR1MgZm9yIHBhcmFsbGVsIGJvb3RpbmcgTERScwoKICAgIEluIG9yZGVyIHRvIGJvb3QgYW4gTERSIG91dCBvZiBwYXJhbGxlbCBmbGFzaCwgdGhlIGxkciB1dGlsaXR5IG5lZWRzIGEgZmV3CiAgICBmbGFncyB0byB0ZWxsIGl0IHRvIGdlbmVyYXRlIHRoZSByaWdodCBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDNkZDkzOTVhMGQ3Y2U2OWEzMzVkMGU3NDNjMDRiOWNhZWRkNjgxZDMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgSmFuIDYgMjE6NDE6NTkgMjAwOSArMDEwMAoKICAgIGF0OTFybTkyMDA6IG1vdmUgZGVmaW5lIGZyb20gbG93bGV2ZWxfaW5pdCB0byBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhhNDg2ODZmYWMyMDMwMjg3NzY1ZjE5NzBlYTA0NmJkNTczNGI3MzMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgSmFuIDMgMTc6MjI6MjYgMjAwOSArMDEwMAoKICAgIG01MDFzazogbW92ZSB0byB0aGUgY29tbW9uIG1lbW9yeSBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDQ4MWM4MGQ3OGY5NTQxMzNjMDM1ZGFlNmM3ZDIyZGUzNjI1Nzk1ZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKYW4gMyAxNzoyMjoyNSAyMDA5ICswMTAwCgogICAgYXQ5MXJtOTIwMDogcmVuYW1lIGxvd2xldmVsIGluaXQgdmFsdWUgdG8gQ09ORklHX1NZU18KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRlMTcwYjE2NjI1MjkxYWExMGQwZDlhYmMzZjM0ZThhNTk0NWQxNTcKQXV0aG9yOiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KRGF0ZToJVHVlIEphbiA2IDIxOjEzOjE0IDIwMDkgKzAxMDAKCiAgICBhdDkxOiBhZGQgYXQ5MXNhbTl4ZWVrIGJvYXJkIHN1cHBvcnQKCiAgICBBdDkxc2FtOXhlIGlzIGJhc2ljYWxseSBhbiBhdDkxc2FtOTI2MCB3aXRoIGVtYmVkZGVkIGZsYXNoLiBXZSBjYW4gbWFuYWdlCiAgICBpdCBhcyBhbm90aGVyIGVudHJ5IGZvciBhdDkxc2FtOTI2MCBpbiB0aGUgTWFrZWZpbGUuCgogICAgQ2hlY2sgZG9jdW1lbnRhdGlvbiBhdCA6CiAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvcHJvZHVjdF9jYXJkLmFzcD9wYXJ0X2lkPTQyNjMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOWZmZDUzZGI4NzBhN2RhMTM0ZjlhMWFlNzY4OTRhNmIzMTIzN2JlNQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBKYW4gNiAyMToxNTo1NyAyMDA5ICswMTAwCgogICAgZml4IGJtcF9sb2dvLmggbWFrZSBkZXBlbmRlbmNpZXMgdG8gYWxsb3cgcGFyYWxsZWwgYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGUxMmQ5YThmYjQ4ZDI0MTc2ZWZmZmNjYzA3MmI0NDVlNjBhM2FmZTQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgSmFuIDMgMTc6MjI6MjQgMjAwOSArMDEwMAoKICAgIGF0OTE6IEZpeCBBdG1lbCdzIGF0OTFzYW05IGJvYXJkcyBvdXQgb2YgdHJlZSBidWlsZAoKICAgIGludHJvZHVjZWQgaW4gY29tbWl0IDg5YTdhODdmMDg0YwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDY2ODIzNmJhZmFhMWMxMWM1MjE2NTJhMmZhY2ViYzc0YmVlY2JmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMzAgMjI6NTY6MTEgMjAwOCArMDEwMAoKICAgIFJFQURNRTogdXBkYXRlIG1haWxpbmcgbGlzdCBuYW1lIGFuZCBoaXRzIHRvIHBhdGNoIHN1Ym1pc3Npb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOTAxMWY5Yjc1NTYxYTBiZDkyNTQ5MzRjMmJiMmJjNzk5ZDRmNjQ1CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIERlYyAyMyAxNjozMjowMSAyMDA4IC0wNjAwCgogICAgODV4eDogRW5hYmxlIGluYm91bmQgUENJIGNvbmZpZyBjeWNsZXMgZm9yIFgtRVMgYm9hcmRzIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDFmMDNjYmZhZTIyMWIyNGJhMTM0MWEwYTNmNjJmZjAxYzVjODc0ZGYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgRGVjIDIzIDE2OjMyOjAwIDIwMDggLTA2MDAKCiAgICBYUGVkaXRlNTIwMCBib2FyZCBzdXBwb3J0IGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGZlYTkxZWRlZThhZTAyOTVlM2MzMGIxZmY1NDRkZjUxZjRkNjY4ZTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgRGVjIDIgMjE6NTg6MDQgMjAwOCArMDEwMAoKICAgIHVzYl9rYmQ6IGZpeCB1c2Jfa2JkX2RlcmVnaXN0ZXIgd2hlbiBERVZJQ0VfREVSRUdJU1RFUiBub3QgZW5hYmxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBhZGE1OTFkMmEwZWNmZjVmOWJjNWVkMWViZjMxMGY0MzljM2QwYTI4CkF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMyAxNToxNjozNyAyMDA4IC0wODAwCgogICAgbXBjOFs1Nl14eDogUHV0IGxvY2FsYnVzIGNsb2NrIGluIHN5c2luZm8gYW5kIGdkCgogICAgQ3VycmVudGx5IE1QQzg1eHggYW5kIE1QQzg2eHggYm9hcmRzIGp1c3QgY2FsY3VsYXRlIHRoZSBsb2NhbGJ1cyBmcmVxdWVuY3kKICAgIGFuZCBwcmludCBpdCBvdXQsIGJ1dCBkb24ndCBzYXZlIGl0LgoKICAgIFRoaXMgY2hhbmdlcyB3aGVyZSBpdHMgY2FsY3VsYXRlZCBhbmQgc3RvcmVkIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZQogICAgQ1BVLCBDQ0IsIFRCLCBhbmQgRERSIGZyZXF1ZW5jaWVzIGFuZCB0aGUgTVBDODN4eCBsb2NhbGJ1cyBjbG9jay4KCiAgICBUaGUgbG9jYWxidXMgZnJlcXVlbmN5IGlzIGFkZGVkIHRvIHN5c2luZm8gYW5kIGNhbGN1bGF0ZWQgd2hlbiBzeXNpbmZvIGlzCiAgICBzZXQgdXAsIGluIGNwdS9tcGM4WzU2XXh4L3NwZWVkLmMsIHRoZSBzYW1lIGFzIHRoZSBvdGhlciBmcmVxdWVuY2llcyBhcmUuCgogICAgZ2V0X2Nsb2NrcygpIGNvcGllcyB0aGUgZnJlcXVlbmN5IGludG8gdGhlIGdsb2JhbCBkYXRhLCBhcyB0aGUgb3RoZXIKICAgIGZyZXF1ZW5jaWVzIGFyZSwgaW50byBhIG5ldyBmaWVsZCB0aGF0IGlzIG9ubHkgZW5hYmxlZCBmb3IgTVBDODV4eCBhbmQKICAgIE1QQzg2eHguCgogICAgY2hlY2tjcHUoKSBpbiBjcHUvbXBjOFs1Nl14eC9jcHUuYyB3aWxsIHByaW50IG91dCB0aGUgbG9jYWwgYnVzIGZyZXF1ZW5jeQogICAgZnJvbSBzeXNpbmZvLCBsaWtlIHRoZSBvdGhlciBmcmVxdWVuY2llcywgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyBpdCBvbiB0aGUKICAgIHNwb3QuCgogICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4NjNkNmFjYTExNDA1ZTFlMGQ4YWJhMjA0NWQ3OGFlZWM0ZDRlZTcKQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM2IDIwMDggLTA4MDAKCiAgICBtcGM4Nnh4OiBEb3VibGUgbG9jYWwgYnVzIGNsb2NrIGRpdmlkZXIKCiAgICBUaGUgbG9jYWwgYnVzIGNsb2NrIGRpdmlkZXIgc2hvdWxkIGJlIGRvdWJsZWQgZm9yIGJvdGggODYxMCBhbmQgODY0MS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDQ2YzM4MWUzZTE2ZjE5ODU3YjcyZWEwZDA2MjQxMjY3YjhiOWQ1OApBdXRob3I6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDMgMTU6MTY6MzUgMjAwOCAtMDgwMAoKICAgIG1wYzg1Njg6IERvdWJsZSBsb2NhbCBidXMgY2xvY2sgZGl2aWRlcgoKICAgIFRoZSBjbG9jayBkaXZpZGVyIGZvciB0aGUgTVBDODU2OCBsb2NhbCBidXMgc2hvdWxkIGJlIGRvdWJsZWQsIGxpa2UgdGhlCiAgICBvdGhlciBuZXdlciBNUEM4NXh4IGNoaXBzLgoKICAgIFNpbmNlIHRoZXJlIGFyZSBub3cgbW9yZSBjaGlwcyB3aXRoIGEgMnggZGl2aWRlciB0aGFuIGEgMXgsIGFuZCBhbnkgbmV3CiAgICA4NXh4IGNoaXBzIHdpbGwgcHJvYmFibHkgYmUgMngsIGludmVydCB0aGUgc2Vuc2Ugb2YgdGhlICNpZiBzbyB0aGF0IGl0CiAgICBsaXN0cyB0aGUgMXggY2hpcHMgaW5zdGVhZCBvZiB0aGUgMnggb25lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjUxZjA3ZWI1OGZhZDEyZGU5Mjk0YmE0ZWU2YzA5YTBkZGVhZWUwMwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgMTYgMTI6MDk6MjcgMjAwOCArMDgwMAoKICAgIDg1eHg6IEZpeCB0aGUgYm9vdCB3aW5kb3cgaXNzdWUKCiAgICBJZiBvbmUgY3VzdG9tIGJvYXJkIGlzIHVzaW5nIHRoZSA4TUIgZmxhc2gsIGl0IGlzIHNldAogICAgYXMgRkxBU0hfQkFTRSA9IDB4ZWYwMDAwMDAsIFRFWFRfQkFTRSA9IDB4ZWY3ODAwMDAuCiAgICBUaGUgY3VycmVudCBzdGFydC5TIGNvZGUgd2lsbCBiZSBicm9rZW4gYXQgc3dpdGNoX2FzLgoKICAgIEl0IGlzIGJlY2F1c2UgdGhlIFRMQjFbMTVdIGlzIHNldCBhcyAxNk1CIHBhZ2Ugc2l6ZSwKICAgIEVQTiA9IFRFWFRfQkFTRSAmIDB4ZmYwMDAwMDAsIFJQTiA9IDB4ZmYwMDAwMDAuCgogICAgRm9yIHRoZSA4TUIgZmxhc2ggY2FzZSwgdGhlIEVQTiA9IDB4ZWZ4eHh4eHgsCiAgICBSUE4gPSAweGZmeHh4eHh4LiBBc3N1bWUgdGhlIHZpcnQgYWRkcmVzcyBvZiBzd2l0Y2hfYXMKICAgIGlzIDB4ZWY3ZmYxOGMsIHRoZSByZWFsIGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0aW9uIGF0CiAgICBzd2l0Y2hfYXMgc2hvdWxkIGJlIDB4ZmY3ZmYxOGMuIHRoZSAweGZmN2ZmMThjIGlzIG91dAogICAgb2YgdGhlIHJhbmdlIG9mIHRoZSBkZWZhdWx0IDhNQiBib290IExBVyB3aW5kb3cKICAgIDB4ZmY4MDAwMDAgLSAweGZmZmZmZmZmLgoKICAgIFNvIHdoZW4gd2Ugc3dpdGNoIHRvIEFTMSBhZGRyZXNzIHNwYWNlIGF0IHN3aXRjaF9hcywKICAgIHRoZSBjb3JlIGNhbid0IGZldGNoIHRoZSBpbnN0cnVjdGlvbiBhdCBzd2l0Y2hfYXMgYW55CiAgICBtb3JlLiBJdCB3aWxsIGNhdXNlIGJyb2tlbiBpc3N1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU4ZGE4ODkwZDVmYmQwNzQ3NDYwMzc3MjJhNDIzZGU5YWM0MDg2MTYKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJVGh1IERlYyAxMSAxNTo0Nzo1MCAyMDA4IC0wNTAwCgogICAgc2JjODU0ODogdXNlIHByb3BlciBQSFkgYWRkcmVzcwoKICAgIFRoZSB2YWx1ZXMgZ2l2ZW4gZm9yIHRoZSBQSFkgYWRkcmVzcyB3ZXJlIHdyb25nLCBzbyB0aGUgY29kZQogICAgcmVhZCBubyB2YWxpZCBQSFkgSUQsIGFuZCBmZWxsIHRocm91Z2ggdG8gdGhlIGdlbmVyaWMgUEhZCiAgICBzdXBwb3J0LCB3aGljaCB3b3VsZCB3b3JrIG9uIDEwMDBNIGJ1dCB3b3VsZCBub3QgYXV0byBuZWdvdGlhdGUKICAgIGRvd24gdG8gMTAwTSBvciAxME0uCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYWQyMmY5MjczYzZmMjRmYmZhOTE3ZTg2NzY4MGU5Njg4ZTBjNTljNQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRGVjIDExIDE1OjQ3OjUxIDIwMDggLTA1MDAKCiAgICBzYmM4NTQ4OiBlbmFibGUgY29tbWFuZCBsaW5lIGVkaXRpbmcgYnkgZGVmYXVsdC4KCiAgICBMZXRzIG1ha2UgdGhpbmdzIGEgYml0IG1vcmUgdXNlciBmcmllbmRseS4JSXQgaXNuJ3QgMTk4NSBhbnltb3JlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgoKY29tbWl0IGJkOTMxMDVmYTE3MTE4NGE3MWNhOGIyMmJlMDNkYzI3MDVjZmJkM2YKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJVGh1IERlYyAxMSAxNTo0Nzo0OSAyMDA4IC0wNTAwCgogICAgc2JjODU0ODogZG9uJ3QgZW5hYmxlIHRoZSAzcmQgYW5kIDR0aCBlVFNFQwoKICAgIFRoZXNlIGludGVyZmFjZXMgZG9uJ3QgaGF2ZSB1c2FibGUgY29ubmVjdG9ycyBvbiB0aGUgYm9hcmQsIHNvIGRvbid0CiAgICBib3RoZXIgZW51bWVyYXRpbmcgb3IgY29uZmlndXJpbmcgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCAxODFhMzY1MDExMzg4MzcyODkyNzkyOGIzYWM4MWFkNmRhZGU0YjJjCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAzIDEwOjA4OjE5IDIwMDggLTA1MDAKCiAgICBTZXQgSVZQUiB0byBrZW5yZWwgZW50cnkgcG9pbnQgaW4gc2Vjb25kIGNvcmUgYm9vdCBwYWdlCgogICAgQXNzdW1pbmcgdGhlIE9TZXMgZXhjZXB0aW9uIHZlY3RvcnMgc3RhcnQgZnJvbSB0aGUgYmFzZSBvZiBrZXJuZWwgYWRkcmVzcywgYW5kCiAgICB0aGUga2VybmVsIHBoeXNpY2FsIHN0YXJ0aW5nIGFkZHJlc3MgY2FuIGJlIHJlbG9jYXRlZCB0byBhbiBub24temVybyBhZGRyZXNzLgogICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBzZWNvbmQgY29yZSB0byBoYXZlIGEgdmFsaWQgSVZQUiBmb3IgZGVidWdnZXIgYmVmb3JlCiAgICBrZXJuZWwgc2V0dGluZyBJVlBSIGluIENBTVAgbW9kZS4gT3RoZXJ3aXNlLCBJVlBSIGlzIDB4MCBhbmQgaXQgaXMgbm90IGEgdmFsaWQKICAgIHZhbHVlIGZvciBzZWNvbmQgY29yZSB3aGljaCBydW5zIGtlcm5lbCBhdCBkaWZmZXJlbnQgcGh5c2ljYWwgYWRkcmVzcyBvdGhlcgogICAgdGhhbiAweDAuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNWQyMTJhMjYzYzU4Y2M3NDY0ODFiZjFmYzg3ODUxMDUzM2NlN2Q2CkF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMyAxNToxNjozNCAyMDA4IC0wODAwCgogICAgbXBjOHh4eDogTENSUltDTEtESVZdIGlzIHNvbWV0aW1lcyBmaXZlIGJpdHMKCiAgICBPbiBuZXdlciBDUFVzLCA4NTM2LCA4NTcyLCBhbmQgODYxMCwgdGhlIENMS0RJViBmaWVsZCBvZiBMQ1JSIGlzIGZpdmUgYml0cwogICAgaW5zdGVhZCBvZiBmb3VyLgoKICAgIEluIG9yZGVyIHRvIGF2b2lkIGFuIGlmZGVmLCBMQ1JSX0NMS0RJViBpcyBzZXQgdG8gMHgxZiBvbiBhbGwgc3lzdGVtcy4gIEl0CiAgICBzaG91bGQgYmUgc2FmZSBhcyB0aGUgZmlmdGggYml0IHdhcyBkZWZpbmVkIGFzIHJlc2VydmVkIGFuZCBzZXQgdG8gMC4KCiAgICBDb2RlIHRoYXQgd2FzIHVzaW5nIGEgaGFyZCBjb2RlZCAweDBmIGlzIGNoYW5nZWQgdG8gdXNlIExDUlJfQ0xLRElWLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1OGVjNDg2NmVkOTE2YzdlNDIyZjUxMDdiYjI3YjA4MjIwODQ3MjhlCkF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBEZWMgMyAxNToxNjozOCAyMDA4IC0wODAwCgogICAgbXBjOFs1Nl14eDogUHV0IGxvY2FsYnVzIGNsb2NrIGluIGRldmljZSB0cmVlCgogICAgRXhwb3J0IHRoZSBsb2NhbGJ1cyBmcmVxdWVuY3kgaW4gdGhlIGRldmljZSB0cmVlLCB0aGUgc2FtZSB3YXkgdGhlIENQVSwgVEIsCiAgICBDQ0IsIGFuZCB2YXJpb3VzIG90aGVyIGZyZXF1ZW5jaWVzIGFyZSBleHBvcnRlZCBpbiB0aGVpciByZXNwZWN0aXZlIGRldmljZQogICAgdHJlZSBub2Rlcy4KCiAgICBTb21lIGxvY2FsYnVzIGRldmljZXMgbmVlZCB0aGlzIGluZm9ybWF0aW9uIHRvIGJlIHByb2dyYW1lZCBjb3JyZWN0bHksIHNvCiAgICBpdCBtYWtlcyBzZW5zZSB0byBleHBvcnQgaXQgYWxvbmcgd2l0aCB0aGUgb3RoZXIgZnJlcXVlbmNpZXMuCgogICAgVW5mb3J0dW5hdGVseSwgd2hlbiBzb21lb25lIHdyb3RlIHRoZSBsb2NhbGJ1cyBkdHMgYmluZGluZ3MsIHRoZXkgZGlkbid0CiAgICBib3RoZXIgdG8gZGVmaW5lIHdoYXQgdGhlICJjb21wYXRpYmxlIiBwcm9wZXJ0eSBzaG91bGQgYmUuCVNvIGl0IHNlZW1zIG5vCiAgICBvbmUgd2FzIHF1aXRlIHN1cmUgd2hhdCB0byBwdXQgaW4gdGhlaXIgZHRzIGZpbGVzLgoKICAgIEJhc2VkIG9uIGN1cnJlbnQgZXhpc3RpbmcgZHRzIGZpbGVzIGluIHRoZSBrZXJuZWwgc291cmNlLCBJJ3ZlIHVzZWQKICAgICJmc2wscHEzLWxvY2FsYnVzIiBhbmQgImZzbCxlbGJjIiBmb3IgTVBDODV4eCwgd2hpY2ggYXJlIHVzZWQgYnkgYWxtb3N0IGFsbAogICAgb2YgdGhlIDg1eHggZGV2aWNlcywgYW5kIGFyZSBsb29rZWQgZm9yIGJ5IHRoZSBMaW51eCBjb2RlLglUaGUgZUxCQyBpcwogICAgYXBwYXJlbnRseSBub3QgZW50aXJlbHkgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHRoZSBwcTMgTEJDIGFuZCBzbyBlTEJDCiAgICBlcXVpcHBlZCBwbGF0Zm9ybXMgbGlrZSA4NTcyIHdvbid0IHVzZSBwcTMtbG9jYWxidXMuCgogICAgRm9yIE1QQzg2eHgsIEkndmUgdXNlZCAiZnNsLGVsYmMiIHdoaWNoIGlzIHVzZWQgYnkgc29tZSBvZiB0aGUgODZ4eCBzeXN0ZW1zCiAgICBhbmQgaXMgYWxzbyBsb29rZWQgZm9yIGJ5IHRoZSBMaW51eCBjb2RlLiAgT24gTVBDODY0MSwgSSd2ZSBhbHNvIHVzZWQKICAgICJmc2wsbXBjODY0MS1sb2NhbGJ1cyIgYXMgaXQgaXMgYWxzbyBjb21tb25seSB1c2VkIGluIGR0cyBmaWxlcywgc29tZSBvZgogICAgd2hpY2ggZG9uJ3QgdXNlICJmc2wsZWxiYyIgb3IgYW55IG90aGVyIGFjY2VwdGFibGUgbmFtZSB0byBtYXRjaCBvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWQ5NGFmZjY5OWVlZDM4YjI4NjgxNGZjYmIzMzVmM2ViODUxNmEwZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjIgMjAwOCAtMDYwMAoKICAgIE5BTkQgRlNMIGVsYmM6IFVzZSB2aXJ0X3RvX3BoeXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGJhbmsgaXMgaW4gdXNlCgogICAgVGhlIGN1cnJlbnQgY29kZSB0aGF0IGRldGVybWluZXMgd2hpY2ggYmFuay9jaGlwc2VsZWN0IGlzIHVzZWQgZm9yIGEKICAgIGdpdmVuIE5BTkQgaW5zdGFuY2Ugb25seSB3b3JrZWQgZm9yIDMyLWJpdCBhZGRyZXNzZXMgYW5kIGFzc3VtZWQKICAgIGEgMToxIG1hcHBpbmcuICBUaGlzIGJyZWFrcyBpbiAzNi1iaXQgcGh5c2ljYWwgY29uZmlncy4KCiAgICBUaGUgcHJvcGVyIHdheSB0byBoYW5kbGUgdGhpcyBpcyB0byB1c2UgdGhlIHZpcnRfdG9fcGh5cygpIGFuZAogICAgQlJfUEhZU19BRERSKCkgcm91dGludWVzIHRvIG1hdGNoIHRoZSAzNC1iaXQgbGJjIGJ1cyBhZGRyZXNzCiAgICB3aXRoIHRoZSB0aGUgdmlydHVhbCBhZGRyZXNzIHRoZSBOQU5EIGNvZGUgdXNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc3YzgxMTViMWYxODcxODExNjMzZWFlNzdhNWE3MDBmYWMxZjBlNTAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgRGVjIDE2IDE0OjU5OjIxIDIwMDggLTA2MDAKCiAgICBwcGM6IFVzZSBhZGRybWFwIGluIHZpcnRfdG9fcGh5cyBhbmQgbWFwX3BoeXNtZW0uCgogICAgSWYgd2UgaGF2ZSBhZGRyIG1hcCBzdXBwb3J0IGVuYWJsZWQgdXNlIHRoZSBtYXBwaW5nIGZ1bmN0aW9ucyB0bwogICAgaW1wbGVtZW50IHZpcnRfdG9fcGh5cygpIGFuZCBtYXBfcGh5c21lbSgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWNmNWI5OGM3YTZhMmUyMjU2ZGZkZGQ0OGZhYjI2Njc4ZGNkNmI5MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjAgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEFkZCBzdXBwb3J0IHRvIHBvcHVsYXRlIGFkZHIgbWFwIGJhc2VkIG9uIFRMQiBzZXR0aW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNzhiYmM1Y2UxNTFjNWE0ODRiYjUxYmYxODY2YjRhOTkzZmZjMTZlYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxMzo0NzoxMyAyMDA4IC0wNjAwCgogICAgWFBlZGl0ZTUyMDAgYm9hcmQgc3VwcG9ydAoKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgWFBlZGl0ZTUyMDAgLQogICAgYSBNUEM4NTQ4LWJhc2VkIFBNQyBzaW5nbGUgYm9hcmQgY29tcHV0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA0ODdkY2I0ZmI4OWJlMDk5MmJjMDZlYzEzNDEwOTAwMTdiZDljZjJmCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJV2VkIE9jdCAyOSAxMjozOToyNyAyMDA4IC0wNTAwCgogICAgODV4eDogRW5hYmxlIGluYm91bmQgUENJIGNvbmZpZyBjeWNsZXMgZm9yIFgtRVMgYm9hcmRzCgogICAgVXBkYXRlIFgtRVMgRnJlZXNjYWxlIGJvYXJkcyB0byBhbGxvdyBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uCiAgICBjeWNsZXMgd2hlbiBjb25maWd1cmVkIGFzIGFnZW50L2VuZHBvaW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgY2NmMGZkZDAyYjk3MzIzZjhjYWFlMThkMDZjYzlkYWVhYzJmMTkyZgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjMgMjAwOCAtMDYwMAoKICAgIFhQZWRpdGU1MzcwIGJvYXJkIHN1cHBvcnQKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yIEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zIFhQZWRpdGU1MzcwIC0KICAgIGEgTVBDODU3Mi1iYXNlZCAzVSBWUFggc2luZ2xlIGJvYXJkIGNvbXB1dGVyIHdpdGggYSBQTUMvWE1DCiAgICBzaXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZTkyNzM5ZDM0ZTJkNmI2YWNhOTNiMjU5ODI0ODIxMDcxMDg5N2NlOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjEgMjAwOCAtMDYwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBQQ0E5NTN4IEkyQyBncGlvIGRldmljZXMKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yIE5YUCdzIDQgYW5kIDggYml0IEkyQyBncGlvIGV4cGFuZGVycwogICAgKGVnIHBjYTk1MzcsIHBjYTk1NTcsIGV0YykuIFRoZSBDT05GSUdfUENBOTUzWCBkZWZpbmUKICAgIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIGRldmljZXMgd2hpbGUgdGhlIENPTkZJR19DTURfUENBOTUzWAogICAgZGVmaW5lIGVuYWJsZXMgdGhlIHBjYTk1M3ggY29tbWFuZC4gVGhlIENPTkZJR19DTURfUENBOTUzWF9JTkZPCiAgICBkZWZpbmUgZW5hYmxlcyBhbiAnaW5mbycgc3ViLWNvbW1hbmQgd2hpY2ggcHJvdmlkZXMgc3VtbWFyeQogICAgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBwY2E5NTN4IGRldmljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDdhODk3OTU5MTE3MTY3NjQxN2FiMzY4NTJkODgxMWE4YzQ2YWNjZDgKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgT2N0IDI5IDEyOjM5OjI2IDIwMDggLTA1MDAKCiAgICBwY2kvZnNsX3BjaV9pbml0OiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcwoKICAgIEFkZCBmc2xfcGNpX2NvbmZpZ191bmxvY2soKSBmdW5jdGlvbiB0byBlbmFibGUgYQogICAgUENJL1BDSWUgaW50ZXJmYWNlIGNvbmZpZ3VyZWQgaW4gYWdlbnQvZW5kcG9pbnQgbW9kZSB0bwogICAgcmVzcG9uZCB0byBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uIGN5Y2xlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDkyYzc4YTNiYmNiMmNlNTA4YjRiZjFjNGExZTA5NDA0MDZhMDI0YmIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBEZWMgMTcgMTY6NDM6MTggMjAwOCArMDEwMAoKICAgIGF2cjMyOiBSZW1vdmUgc2Vjb25kIGRlZmluaXRpb24gb2YgdmlydF90b19waHlzKCkKCiAgICBUaGUgc2Vjb25kIGRlZmluaXRpb24gaW50cm9kdWNlZCBieSA2NWU0M2ExMDYzIGNvbmZsaWN0cyB3aXRoIHRoZQogICAgZXhpc3Rpbmcgb25lLgoKICAgIEFsc28sIGNvbnZlcnQgdGhlIGV4aXN0aW5nIGRlZmluaXRpb24gdG8gdXNlIHBoeXNfYWRkcl90LiBUaGUgdm9sYXRpbGUKICAgIHF1YWxpZmllciBpcyBzdGlsbCBuZWVkZWQgZHVlIHRvIGJyYWluIGRhbWFnZSBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI2MTZmMmI1NDVmNzM3NTc2NjliMzczODZmMGIzN2JiNjFmYzY3OTcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gU2VwIDggMjI6Mjc6MTggMjAwOCArMDIwMAoKICAgIE1JUFM6IHFlbXVfbWlwczogdXBkYXRlIGRvYyB0byBnZW5lcmF0ZSBhbmQgdG8gdXNlIHFlbXUgZmxhc2gsIGlkZSBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTZjZGY4MTY3NzlmNWI2MDJhOWIzYjRkMmVhNGRlYTA1MDk1YzM1YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzEgMjAwOCArMDEwMAoKICAgIE1JUFM6IHFlbXVfbWlwczogdXBkYXRlIGRvYyB0byB1c2UgYWxsIGRpc2sgYW5kIGJvb3QgbGludXgga2VybmVsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTMwOTViMmYwN2RhY2IxZjg2Mzc3MjI2NmMxNzg5ZDQ3YTUyM2E4YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzAgMjAwOCArMDEwMAoKICAgIE1JUFM6IHFlbXVfbWlwczogbW92ZSBlbnYgc3RvcmFnZSBqdXN0IGFmdGVyIHUtYm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGFjZWQ3OGQ4NTJkMGIwMDllOGFhYTE0NDVhZjhjYjQwODYxZWU1NDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDE2IDIzOjQ4OjI3IDIwMDggKzAxMDAKCiAgICBQcmVwYXJlIDIwMDkuMDEtcmMxCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5ZTJhNzliNGM1ODVhZDMxMTM4ZmI5MGI2OGZkMDIzNGQ2NGE4ZGE4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAxNiAyMzoxMzo0NiAyMDA4ICswMTAwCgogICAgaW5jbHVkZS9jb25maWdzL2F0OTFjYXA5YWRrLmg6IGZpeCB0eXBvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDVjYTA0ZjIzNzczNjE1OTMxNTFkMmQ0ZGE1MWY4YmE0ODMyZDIzMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMjI6MzI6MjUgMjAwOCArMDEwMAoKICAgIGJvYXJkL3RyYWIvbWVtb3J5LmM6IEZpeCBjb21waWxlIHByb2JsZW1zLgoKICAgIEFwcGx5IGNoYW5nZXMgZnJvbSBjb21taXQgNDRiNGRiZWQgdG8gYm9hcmQvdHJhYi9tZW1vcnkuYywgdG9vLgoKICAgIEFjdHVhbGx5IHdlJ2QgbmVlZCBhIG1ham9yIGNsZWFudXAgaGVyZSAtIGFzIGl0IHR1cm5zIG91dCwKICAgIGJvYXJkL3RyYWIvbWVtb3J5LmMgaXMgbW9yZSBvciBsZXNzIGEgdmVyYmF0aW0gY29weSBvZgogICAgcG9zdC9kcml2ZXJzL21lbW9yeS5jIC4uLiBidXQgdGhlbiwgdHJhYiBpcyBFT0wgYW55d2F5LHIKICAgIHNvIHRoaXMgaXMgbm90IHdvcnRoIHRoZSBlZmZvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZjQ5ZWE4OTc3YjU2OTE2ZWRkNWIxNzY2ZDk5MzkwMTBlMzBiMTgxCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgMTYgMTQ6MjQ6MTYgMjAwOCAtMDYwMAoKICAgIE5BTkQ6IE1hcmsgdGhlIEJCVCBhcyBzY2FubmVkIHByaW9yIHRvIGNhbGxpbmcgc2Nhbl9iYnQuCgogICAgT3RoZXJ3aXNlLCByZWN1cnNpb24gY2FuIG9jY3VyIGlmIHNjYW5fYmJ0IGRvZXMgbm90IGZpbmQgYSBiYWQgYmxvY2sKICAgIHRhYmxlLCBhbmQgdHJpZXMgdG8gd3JpdGUgb25lLCBhbmQgdGhlIGF0dGVtcHQgdG8gZXJhc2UgdGhlIEJCVCBhcmVhCiAgICBjYXVzZXMgYSBiYWQgYmxvY2sgY2hlY2suCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTg0ZWVkYWI2NmQwODI4ZjJkNTcxYTI0YjEwNTI2YzRlNjVmNTQ3YgpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgRGVjIDExIDA1OjUxOjU3IDIwMDggKzAzMDAKCiAgICBqZmZzMjogaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBpbnN0ZWFkIG9mIGRlZmluaW5nIG93biBtaW5fdAoKICAgIEluY2x1ZGUgPGxpbnV4L210ZC9jb21wYXQuaD4gaGVhZGVyIGZvciBtaW5fdCBkZWZpbml0aW9uIGluc3RlYWQgb2YKICAgIHByb3ZpZGluZyBvdXIgb3duIG9uZS4gUmVtb3ZlcyB3YXJuaW5ncyBpbiBjYXNlIG9mIE9uZU5BTkQgc3VwcG9ydAogICAgZW5hYmxlZC4KCiAgICBBbHRob3VnaCBJIHRoaW5rcyBpdCdzIGEgYml0IHNpbGx5IHRvIGluY2x1ZGUgPGxpbnV4L210ZC9jb21wYXQuaD4KICAgIGp1c3QgZm9yIG1pbl90Li4uCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGIxZmZlY2VjMzdiNTdhNTljMTM5MDQyMjY3ZmFhYzQ1OGU1MzI0ZTkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBEZWMgMyAyMzowNDozNyAyMDA4IC0wNjAwCgogICAgcG93ZXJwYzogZml4IGlvLmggYnVpbGQgd2FybmluZyB3aXRoIENPTkZJR19QSFlTXzY0QklUCgogICAgQ2FzdGluZyBhIHBvaW50ZXIgdG8gYSBwaHlzX2FkZHJfdCB3aGVuIGl0J3MgYW4gdW5zaWduZWQgbG9uZyBsb25nCiAgICBvbiBhIDMyLWJpdCBzeXN0ZW0gd2l0aG91dCBmaXJzdCBjYXN0aW5nIHRvIGEgbm9uLXBvaW50ZXIgdHlwZQogICAgZ2VuZXJhdGVzIGEgY29tcGlsZXIgd2FybmluZy4gRml4IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDZjZGFkY2IzZjFiNmVhYzRhMWM0MjU2YWNhYTE0Mzg0MTNmOTUzNTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDE2IDE2OjIyOjUwIDIwMDggKzAxMDAKCiAgICB0cmFiOiBtYWtlIHRyYWJfZmt0IHN0YW5kYWxvbmUgY29kZSBpbmRlcGVuZGVudCBvZiBsaWJnY2MKCiAgICBVc2Ugb3VyIG93biBsb2NhbCBmdW5jdGlvbnMgaW4gbGliX2FybS8gaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFhMWJjY2EzZDJlMjJhZjRkZWE5ZjAyMTMyZjliNTZhMzAzNzhkZWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDE2IDE0OjQ0OjA2IDIwMDggKzAxMDAKCiAgICBwb3N0L01ha2VmaWxlOiBmaXggZGVwZW5kZW5jeSBwcm9ibGVtIHdpdGggcGFyYWxsZWwgYnVpbGRzCgogICAgUGFyYWxsZWwgYnVpbGRzICh1c2luZyAibWFrZSAtak4iKSB3b3VsZCBvY2Nhc2lvbmFsbHkgZmFpbCB3aXRoIGVycm9yCiAgICBtZXNzYWdlcyBsaWtlCglwcGNfNHh4RlAtb2JqZHVtcDogc3RyaW5nLm86IEZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkCiAgICBvcgoJcG9zdC9saWJwb3N0LmEoY3B1Lm8pOiBJbiBmdW5jdGlvbiBgY3B1X3Bvc3RfdGVzdCc6CgkvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvcG9zdC9saWJfcHBjL2NwdS5jOjEzMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3B1X3Bvc3RfdGVzdF9zdHJpbmcnCiAgICBvciBzaW1pbGFyLiBXZSBub3cgbWFrZSBzdXJlIHRvIHJ1biB0aGUgJ3Bvc3RkZXBzIiBzdGVwIGJlZm9yZQogICAgYXR0ZW1wdGluZyB0byBidWlsZCB0aGUgc3BlY2lmaWMgUE9TVCBsaWJyYXJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YTBmNzUzOGM1YzA4MDVmZDlhNzkxOTY3YmJhYmFjYzQxZGVhZGQ5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIERlYyAxNiAxNDo0MTowMiAyMDA4ICswMTAwCgogICAgTWFrZWZpbGU6IGZpeCBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMKCiAgICBQYXJhbGxlbCBidWlsZHMgKHVzaW5nICJtYWtlIC1qTiIpIHdvdWxkIG9jY2FzaW9uYWxseSBmYWlsIHdpdGggZXJyb3IKICAgIG1lc3NhZ2VzIGxpa2UKCWluY2x1ZGUvYXV0b2NvbmYubWs6MjEyOiAqKiogbWlzc2luZyBzZXBhcmF0b3IuICBTdG9wLgogICAgTGluZSBudW1iZXJzIGFuZCBhZmZlY3RlZCBib2FyZHMgd2VyZSBjaGFuZ2luZy4gT2J2aW91c2x5IHNvbWUKICAgIE1ha2VmaWxlcyBpbmNsdWRlZCBhdXRvY29uZi5tayB3aGlsZSBpdCB3YXMgc3RpbGwgYmVpbmcgd3JpdHRlbiB0by4KICAgIEFzIGEgZml4LCB3ZSBub3cgd3JpdGUgdG8gYSB0ZW1wb3JhcnkgZmlsZSBmaXJzdCBhbmQgdGhlbiByZW5hbWUgaXQsCiAgICBzbyB0aGF0IGl0IGlzIHJlYWxseSByZWFkeSB0byB1c2UgYXMgc29vbiBhcyBpdCBhcHBlYXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDU1YWU3ZTg3ZjY3YzQ0ZTZhZWE2ODg2NWM4M2FjYWRkM2ZjZDM2YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTYgMDE6MDI6MTcgMjAwOCArMDEwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODRiYzcyZDkwYzUwNWZlYzNlZjRiNjkzOTk1NDA3YTBiZDQwNjRlNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IERlYyAxMSAxODozOTowOCAyMDA4IC0wNTAwCgogICAgc3BpL3N0bWljcm86IGZpeCBkZWJ1ZygpIGRpc3BsYXkgb2YgY21kCgogICAgVGhlIHN0bWljcm9fd2FpdF9yZWFkeSgpIGZ1bmMgdHJpZXMgdG8gc2hvdyB0aGUgYWN0dWFsIG9wY29kZSB0aGF0IHdhcyBzZW50CiAgICB0byB0aGUgZGV2aWNlLCBidXQgaW5zdGVhZCBpdCBkaXNwbGF5cyB0aGUgYXJyYXkgcG9pbnRlci4gIEZpeCBpdCB0byBwdWxsCiAgICBvdXQgdGhlIG9wY29kZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgYXJyYXkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDViMzM3NWFjOGMzNmMyOWM4N2FiYjEzMmZlZGUwNTA5ZWIyMWU1YzkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMTEgMDY6MjM6MzcgMjAwOCAtMDUwMAoKICAgIGVudl9zZjogc3VwcG9ydCBlbWJlZGRlZCBlbnZpcm9ubWVudHMKCiAgICBJZiBib3RoIENPTkZJR19FTlZfU0VDVF9TSVpFIGFuZCBDT05GSUdfRU5WX1NJWkUgYXJlIGRlZmluZWQsIGFuZCB0aGUgc2VjdAogICAgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgZW52IHNpemUsIHRoZW4gaXQgbWVhbnMgdGhlIGVudiBpcyBlbWJlZGRlZCBpbiBhCiAgICBibG9jay4gIFNvIHdlIGhhdmUgdG8gc2F2ZS9yZXN0b3JlIHRoZSBwYXJ0IG9mIHRoZSBzZWN0b3Igd2hpY2ggaXMgbm90IHRoZQogICAgZW52aXJvbm1lbnQuICBQcmV2aW91c2x5LCBzYXZpbmcgdGhlIGVudmlyb25tZW50IGluIFNQSSBmbGFzaCBpbiB0aGlzCiAgICBzZXR1cCB3b3VsZCBwcm9iYWJseSBicmljayB0aGUgYm9hcmQgYXMgdGhlIHJlc3Qgb2YgdGhlIHNlY3RvciB0ZW5kcyB0bwogICAgY29udGFpbiBhY3R1YWwgVS1Cb290IGRhdGEvY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CiAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGVjZjVmMDc3YzhlNzc0NTRmNTMyZWFhYzNlM2FmYjdjZmM0OGM2MmQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDMgMTE6Mjg6MzAgMjAwOCAtMDYwMAoKICAgIGkyYzogbWVyZ2UgYWxsIGkyY19yZWdfcmVhZCgpIGFuZCBpMmNfcmVnX3dyaXRlKCkgaW50byBpbmxpbmUgZnVuY3Rpb25zCgogICAgQWxsIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGkyY19yZWdfcmVhZCgpIGFuZAogICAgaTJjX3JlZ193cml0ZSgpIGFyZSBpZGVudGljYWwuIFdlIGNhbiBzYXZlIHNwYWNlIGFuZCBzaW1wbGlmeSB0aGUKICAgIGNvZGUgYnkgY29udmVydGluZyB0aGVzZSBmdW5jdGlvbnMgaW50byBpbmxpbmVzIGFuZCBwdXR0aW5nIHRoZW0gaW4KICAgIGkyYy5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1CeTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlMzljZDgxYzQ0NzQwZDczNTVkMjc3ZWQzZDM4NTM2Y2JlMWUwMDNkCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIERlYyA1IDE1OjM2OjE0IDIwMDggKzA4MDAKCiAgICBsaWJfcHBjOiByZXdvcmsgdGhlIGZsdXNoX2NhY2hlCgogICAgLSBJdCBpcyBwb3NzaWJsZSB0byBtaXNzIGZsdXNoL2ludmFsaWRhdGUgdGhlIGxhc3QKICAgICAgY2FjaGUgbGluZSwgd2UgZml4IGl0IGF0IGhlcmUuCiAgICAtIGFkZCB0aGUgdm9sYXRpbGUgYW5kIG1lbW9yeSBjbG9iYmVyLgoKICAgIFRoZXkgYXJlIHBvaW50ZWQgYnkgU2NvdHQgV29vZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYzMjQwYmE4OGNkNmEyMjAwNTdhMGYyOGU1YmY5N2Y1YjE3YWM4NGIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTYXQgRGVjIDEzIDE3OjIwOjI4IDIwMDggLTA2MDAKCiAgICBJbnRyb2R1Y2UgYWRkcl9tYXAgbGlicmFyeQoKICAgIEFkZCBhIGxpYnJhcnkgdGhhdCBoZWxwcyBpbiB0cmFuc2xhdGluZyBiZXR3ZWVuIHZpcnR1YWwgYW5kIHBoeXNpY2FsCiAgICBhZGRyZXNzZXMuCVRoaXMgbGlicmFyeSBjYW4gYmUgdXNlZnVsIGFzIGEgc2ltcGxlIG1lYW5zIHRvIGltcGxlbWVudAogICAgbWFwX3BoeXNtZW0oKSBhbmQgdmlydF90b19waHlzKCkgZm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgZnVuY3Rpb25hbGl0eQogICAgYmV5b25kIHRoZSBzaW1wbGUgMToxIG1hcHBpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2NWU0M2ExMDYzMTUzN2RjYjkyYzMwMmQzNjMwMWExMjMwODIxNmMzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJU2F0IERlYyAxMyAxNzoyMDoyNyAyMDA4IC0wNjAwCgogICAgSW50cm9kdWNlIHZpcnRfdG9fcGh5cygpCgogICAgdmlydF90b19waHlzKCkgcmV0dXJucyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBnaXZlbiBhIHZpcnR1YWwuIEluIG1vc3QKICAgIGNhc2VzIHRoaXMgd2lsbCBiZSBqdXN0IHRoZSBpbnB1dCB2YWx1ZSBhcyB0aGUgdmFzdCBtYWpvcml0eSBvZgogICAgc3lzdGVtcyBydW4gaW4gYSAxOjEgbW9kZS4KCiAgICBIb3dldmVyIGluIHN5c3RlbXMgdGhhdCBhcmUgbm90IHJ1bm5pbmcgdGhpcyB3YXkgaXQgc2hvdWxkIHJlcG9ydCB0aGUKICAgIHBoeXNpY2FsIGFkZHJlc3Mgb3IgfjAgaWYgbm8gbWFwcGluZyBleGlzdHMgZm9yIHRoZSBnaXZlbiB2aXJ0dWFsCiAgICBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDU4NDUzMDFhZjNkZTg2NzVjMWY3YmJjODE1YzZkZTM1NDUyNjA1YQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJU3VuIERlYyA3IDIyOjEyOjUwIDIwMDggKzAxMDAKCiAgICBQT1NUIE1ha2U6IGZpeCB0aGUgc3ViLWRpciBkZXBlbmRlbmNpZXMgbWlzc2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMjI1MjU3NzljYjUxZjFiYmU0ZTk2ZmVhN2I3NzhkZTE5MzVhNWE2OQpBdXRob3I6IE1hcnRpbiBNaWNobG1heXIgPHRibUBjeXJpdXMuY29tPgpEYXRlOglXZWQgQXVnIDYgMTQ6NDQ6MDUgMjAwOCArMDMwMAoKICAgIEZpeCBhIHR5cG8gaW4gZndfZW52LmNvbmZpZwoKICAgIFJlcG9ydGVkLWJ5OiBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1AY3lyaXVzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYmE0OTBiNzc2MWM2MmI1NDljMjIyYTk3MjNlNTMyZGM4MDFhMzg5OQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxNjoyMjo0NSAyMDA4IC0wNjAwCgogICAgUmVtb3ZlIHVudXNlZCBDT05GSUdfQUREUl9TVFJFQU1JTkcgZGVmaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgZDE2ZGE5MzQzMDUyMGQzZTQ2YzFhYjUyZWVkYWNmMzZhYjdhMjMxMQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgMjQgMTE6NTQ6NDcgMjAwOCAtMDYwMAoKICAgIGNtZF9tZW06IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDNhZWQzYWEyYzEyOGNlOWZiMzljYTNmNGU5Mzg1YTc0OTllOTNkYmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRGVjIDE0IDEwOjI5OjM5IDIwMDggKzAxMDAKCiAgICBGaXggbmV3IGZvdW5kIENGR18KCiAgICBBbHNvIGZpeCBzb21lIG1pbm9yIHR5cG9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBlMGM4NjJlZmU3Mjc5ZTk2MDlkYjc0ZDc1OGNkMWI4NGM2YzcyMDkKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgU2VwIDE5IDEyOjA3OjM0IDIwMDggKzAyMDAKCiAgICBSZW1vdmUgY29tcGlsZXIgd2FybmluZzogdGFyZ2V0IENQVSBkb2VzIG5vdCBzdXBwb3J0IGludGVyd29ya2luZwoKICAgIFRoaXMgd2FybmluZyBpcyBpc3N1ZWQgYnkgbW9kZXJuIEFSTS1FQUJJIEdDQyBvbiBub24tdGh1bWIgdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkaW1pciBQYW5maWxvdiA8cHZyQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBjZDY3MzQ1MTBhOWZmMGY0MWM0YTczNTY3ZDQwODBlYTAwMzNkMmMxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAxMzozMzo1MSAyMDA4ICswMTAwCgogICAgRml4IEZJVCBhbmQgRkRUIHN1cHBvcnQgdG8gaGF2ZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfRklUIGluZGVwZW5kZW50CgogICAgRkRUIHN1cHBvcnQgaXMgdXNlZCBmb3IgYm90aCBGSVQgc3R5bGUgaW1hZ2VzIGFuZCBmb3IgYXJjaGl0ZWN0dXJlcwogICAgdGhhdCBjYW4gcGFzcyBhIGZkdCBibG9iIHRvIGFuIE9TIChwcGMsIG02OGssIHNwYXJjKS4KCiAgICBGb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBhbmQgYm9hcmRzIHdoaWNoIGRvIG5vdCBwYXNzIGEgZmR0IGJsb2IgdG8gYW4KICAgIE9TIGJ1dCB3YW50IHRvIHVzZSB0aGUgbmV3IHVJbWFnZSBmb3JtYXQsIHdlIGp1c3QgbmVlZCBGSVQgc3VwcG9ydC4KCiAgICBOb3cgd2UgY2FuIGhhdmUgdGhlIDQgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIDoKCiAgICAxKSBGSVQgb25seQkJICAgIENPTkZJR19GSVQKICAgIDIpIGZkdCBibG9iIG9ubHkJICAgIENPTkZJR19PRl9MSUJGRFQKICAgIDMpIGJvdGgJCSAgICBDT05GSUdfT0ZfTElCRkRUICYgQ09ORklHX0ZJVAogICAgNCkgbm9uZQkJICAgIG5vbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDE5ZWY0ZjdhNmVmM2I3MjVhYTlmZTRiNGY1ZmI2NzZhODQxNjAxNzIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIERlYyAxMCAxNToxMzozMiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBEaXNhYmxlIEVFUFJPTSB3cml0ZSBhY2Nlc3Mgb24gUE1DNDQwIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggZGlzYWJsZXMgRUVQUk9NIHdydGllIGFjY2VzcyBieSBkZWZhdWx0IG9uIFBNQzQ0MCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA1YjY3YTE0MzlhNzNiYTZjMzQwMDdkOWZmNjBhMmM2YWE5MDI2NWRmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBEZWMgMTAgMTU6MTI6NTYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IEV0aGVybmV0IFBIWSBMRUQgY29uZmlndXJhdGlvbiBvbiBQTUM0NDAgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNzFmYTA3MTRmZTUxMzRiYzg3MThjMzhkNTI2MWQyNjdlODg1ODJiYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAxOCAxNjozNjoxMiAyMDA4ICswMTAwCgogICAgTUlQUzogRmx1c2ggZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24KCiAgICBUaGlzIHBhdGNoIG5vdyBhZGRzIGEgZmx1c2ggdG8gdGhlIGRhdGEgY2FjaGUgdXBvbiByZWxvY2F0aW9uLiBUaGUKICAgIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbWlzc2luZyB0aGlzLiBPbmx5IGEgY29tbWVudCBzdGF0ZXMgdGhhdCBpdAogICAgc2hvdWxkIGJlIGRvbmUuIFNvIGxldCdzIHJlYWxseSBkbyBpdCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA0NDE3NDM0MzY4OGRiYTMyNTcxYTM0NTUwZGJhMDg5NzFjNjVmZWYxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDE4IDE2OjM2OjIyIDIwMDggKzAxMDAKCiAgICBNSVBTOiBBZGQgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBvcHRpb24gdG8gc3RhcnQuUy4gVGhpcwogICAgZW5hYmxlcyBzdXBwb3J0IGZvciBib2FyZHMgd2hlcmUgdGhlIGxvd2xldmVsIGluaXRpYWxpemF0aW9uIGlzCiAgICBhbHJlYWR5IGRvbmUgd2hlbiBVLUJvb3QgcnVucyAoZS5nLiB2aWEgT25DaGlwIFJPTSkuCgogICAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gdGhlIHVwY29taW5nIFZDVEggYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGRiMDhlY2FhNmViODE3NjkwNGIzYmFlMTAzYTg1ZWU4ZjczNWRjNDAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMTIgMTM6MTg6MDIgMjAwOCArMDEwMAoKICAgIE1JUFM6IEFkZCBib2FyZF9lYXJseV9pbml0X2YoKSB0byBpbml0X3NlcXVlbmNlCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBib2FyZF9lYXJseV9pbml0X2YoKSBjYWxsIHRvIHRoZSBNSVBTIGluaXQKICAgIHNlcXVlbmNlLiBBIHdlYWsgZHVtbXkgaW1wbGVtZW50YXRpb24gaXMgYWxzbyBhZGRlZCB3aGljaCBjYW4gYmUKICAgIG92ZXJyaWRkZW4gYnkgYSBib2FyZCBzcGVjaWZpYyB2ZXJzaW9uLgoKICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA5ZDIzZmM1ODRjNGI3YjhiYjllY2JlZTQ4OTIwYjFiMDRiMDhmYTFiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTm92IDEyIDEzOjE4OjE5IDIwMDggKzAxMDAKCiAgICBNSVBTOiBBZGQgb25lbmFuZF9pbml0KCkgdG8gYm9hcmQuYyBhbmQgbW92ZSBuYW5kX2luaXQoKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gb25lbmFuZF9pbml0KCkgZm9yIE9uZU5BTkQgc3VwcG9ydCBhbmQgbW92ZXMKICAgIHRoZSBuYW5kX2luaXQoKSBjYWxsIHRvIGFuIGVhcmxpZXIgcGxhY2UsIHNvIHRoYXQgdGhlIGVudmlyb25tZW50IGNhbgogICAgYmUgdXNlZCBmcm9tIE5BTkQgYW5kIE9uZU5BTkQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBkOGJiYzUxYzdiYTliNzM3YTIwOTg0MzMzZDE5ZmUyOGEzNTI2NDMxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgRGVjIDkgMTE6MzI6NDYgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgc2gyL3NoMmEgdGltZXIKCiAgICBSZW5lc2FzIFNIMi9TSDJBIHRpbWVyIGJyb2tlbi4KICAgIFRoaXMgcGF0Y2ggZml4IHRpbWVyIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhMzE5ZjE0OTYyMTAxMTdiNzMxOThlM2Q4ODlmZmZmYWY2ODI1ZDAwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIERlYyA1IDA3OjI3OjM3IDIwMDggKzAxMDAKCiAgICBzaDogcjJkcGx1cyBmaXggcmVnaXN0ZXIgYWNjZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA0ZDRhOTYwNTVmNjkxNzMzNWE4OWRiZGYyZTU1NTZmYTVhYzMyOWY2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIERlYyAyIDA3OjQwOjAzIDIwMDggKzAxMDAKCiAgICBzaDogcjJkcGx1cy9sb3dsZXZlbF9pbml0OiBjb2Rpbmcgc3R5bGUgZml4CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjNTRiOWE0MmQ4ZjVhYjViMmEwMzliM2EyZTZmZGU4YjQyNzc0NWU1CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgTm92IDI1IDExOjA1OjE5IDIwMDggKzA5MDAKCiAgICBzaDogQ2hhbmdlZCB2YWx1ZSBvZiBDQUNIRV9PQ19OVU1fRU5UUklFUyBhbmQgQ0FDSEVfT0NfV0FZX1NISUZUCgogICAgU0g0IGlzIGRpZmZlcmVudCBhIHZhbHVlIG9mIENBQ0hFX09DX05VTV9FTlRSSUVTIGFuZAogICAgQ0FDSEVfT0NfV0FZX1NISUZUIGV2ZXJ5IENQVS4KICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlc2UgdmFsdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBlOWQ1ZjM1NDk3ODg1YjNjNjVkNDk0ZDA5YTUyNWQ0NDNkY2NjZDNiCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgTm92IDIwIDE2OjQ0OjQyIDIwMDggKzA5MDAKCiAgICBzaDogVXBkYXRlIHNoIHRpbWVyIGZ1bmN0aW9uCgogICAgQ2hhbmdlIHRvIHdyaXRlL3JlYWRYIGZ1bmN0aW9uIGFuZCBmaXggdGltZXIgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYjgxNzg2Y2ZmNDc2YzQxZTMzMmVhZWI2NzkxNThmNjUyN2NkNjdkNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIE5vdiA0IDExOjU4OjU4IDIwMDggKzA5MDAKCiAgICBzaDogTWlnby1SOiBVcGRhdGUgQlNDIHZhbHVlCgogICAgQSB2YWx1ZSBvZiBCU0MgQ1M0IHdhcyB3cm9uZywgRml4ZWQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDU3ODM3NThmZDI2MGEwMmY0NDU2NmFkOGYyOWY4OTk1NjVjZDA0MDMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CU1vbiBOb3YgMTcgMTY6NTI6MDkgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgbXM3NzIyc2UgYm9hcmQgY29uZmlnCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDE1ZTI2OTdjOWY3ZmIyYmE2NzJhMWE3MGYwN2NkNmQ5ZDRlOTJiNTEKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CU1vbiBOb3YgMTcgMTY6NTM6MDkgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgU3VwZXJIIHNlcmlhbCBkcml2ZXIKCiAgICBUaGUgYWRkcmVzcyBvZiBTQ0ZTUiByZWdpc3RlciBpcyB3cm9uZyBhdCBTSDc3MjAvU0g3NzIxLgogICAgVGhpcyBwYXRjaCBmaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgOWExZDM1NTdkY2Q0NzM2NWMxMmVlYWI1ODRiODIyZTU3ZDk5NDM1MgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBOb3YgMTEgMjI6MjA6MTUgMjAwOCArMDEwMAoKICAgIHNoOiBmaXggcnNrNzIwMyBhbmQgTWlnb1Igb3V0IG9mIHRyZWUgYnVpbGQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDE5NTFmODQ3ZjBhODUxODUzODcxYjYxM2FkN2NmMjFhNTI0MjIyNmMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIERlYyAxMCAxNDo0MToyNSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBVcGRhdGUgVEVYVF9CQVNFIGZvciBDUENJNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVpbGRpbmcgVS1Cb290IGZvciBDUENJNDA1IGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4YzkyYWY3YjJmYmQ2MGFlODczNzk0NzdmOTNjN2VjOTQ0MWI3NDUyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDkgMjA6MDg6MDEgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHNvbWUgZmVhdHVyZXMgZnJvbSBBTFBSIHRvIGZpdCBpbnRvIDI1NmsgYWdhaW4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2IwODllNGY4ODlhMjkwMjQ0OWQ1NWUwODFjODg2YWU2MDdjYWU4OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIERlYyAxMCAxMDozMjo1OSAyMDA4ICswMTAwCgogICAgVUJJOiBTZXQgdWJpX2Rldi50eXBlIGJhY2sgdG8gREVWX1RZUEVfTk9ORSB1cG9uIGZhaWxpbmcgaW5pdGlhbGl6YXRpb24KCiAgICBXaXRoIHRoaXMgcGF0Y2ggd2Ugc2V0IHRoZSB0eXBlIGJhY2sgdG8gTk9ORSB1cG9uIGZhaWxpbmcgVUJJIHBhcnRpdGlvbgogICAgaW5pdGlhbGl6YXRpb24uIE90aGVyd2lzZSBmdXJ0aGVyIGNhbGxzIHRvIHRoZSBVQkkgc3Vic3lzdGVtIHdvdWxkIHRyeQogICAgdG8gcmVhbGx5IGFjY2VzcyB0aGUgbm9uLWV4aXN0aW5nIFVCSSBwYXJ0aXRpb24uCgogICAgVGhhbmtzIHRvIE1pY2hhZWwgTGF3bmljayBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDgxNzMyOTM1MTYzOWE4ODk1Y2Q5Yjg3YjMzYWVmZjA0M2YzZDVhNDQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBEZWMgMTAgMTA6Mjg6MzMgMjAwOCArMDEwMAoKICAgIFVCSTogUmV0dXJuIC1FTk9NRU0gdXBvbiBmYWlsaW5nIG1hbGxvYwoKICAgIFJldHVybiB3aXRoIGNvcnJlY3QgZXJyb3IgY29kZSAoLUVOT01FTSkgZnJvbSB1YmlfYXR0YWNoX210ZF9kZXYoKSB1cG9uCiAgICBmYWlsaW5nIG1hbGxvYygpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyMTQ1MTg4YmVhMmRmOGYyYjQ3YTg3ZWMzMDcxYjU1MDI3ZThkMGFlCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIERlYyA5IDIzOjM0OjE1IDIwMDggLTA4MDAKCiAgICBGaXggY29tcGlsZSBlcnJvciBpbiBidWlsZGluZyBNQlg4NjBULgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOGZhYjQ5ZWE5MTFmZTkyNTM5MmZhNWFmY2M5YmM3MzczYTNkMGNlZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIE5vdiAyNSAxMTo0MjoyMCAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogUmVtb3ZlIFhVUFYyUCBib2FyZAoKICAgIC0tLQoKICAgIE1pY3JvYmxhemUgcGxhdGZvcm1zIHVzZSBnZW5lcmljIHNldHRpbmdzIGFuZCB0byBoYXZlCiAgICBtYW55IHBsYXRmb3JtcyBpcyBjb25mdXNpbmcgdGhhdCdzIHdoeSBJIGRlY2lkZWQgdG8gcmVtb3ZlIHRoaXMKICAgIHBsYXRmb3JtIGZyb20gVS1CT09ULiBtbDQwMSB0cmVlIGlzIHN1ZmZpY2llbnQgZm9yIGNvdmVyaW5nCiAgICBhbGwgTWljcm9ibGF6ZSBwbGF0Zm9ybXMuCgogICAgVGhpcyBjaGFuZ2Ugd2lsbCBnbyB0aHJvdWdoIG1pY3JvYmxhemUgY3VzdG9kaWFuIHRyZWUuCgpjb21taXQgOTliYTZmMzUzNTgyNzIwZGVmZmY2ZTZlNjc2MWRjNDU1YTIwN2QzMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE5vdiAyNCAxODoyNTo0MSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogUmVtb3ZlIENPTkZJR19MSUJGRFQgZHVlIHRvIGVycm9yIGluIGNvbW1vbiBmaWxlcwoKY29tbWl0IGU3ZDU5MWU4MjNhOTkxNTEzODMzYWY3MDMwNDY4NDA5ZTI1YTNiMTMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBOb3YgMjQgMTE6NDM6MDAgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IEZpeCBtbDQwMSB1YXJ0MTY1NTAgc2V0dGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBjODVmZjA1NTNhOGNmYmNjYTUxYzE1Yjk0N2UxZWQ1NWQzODEwYTM5CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTm92IDI0IDExOjM4OjIyIDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBTZXQgdXAgcmVsb2NhdGlvbiBpcyBkb25lCgpjb21taXQgYmNiNmRkOTE4N2Q0YjIzYzc0ODcwNDc2N2JkMTJkMjBjODI5ZTk5NgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyA5IDIzOjIwOjMxIDIwMDggLTA1MDAKCiAgICB0b29scy9uZXRjb25zb2xlOiBuZXcgc2NyaXB0IGZvciB3b3JraW5nIHdpdGggbmV0Y29uc29sZSBvdmVyIFVEUAoKICAgIFdoaWxlIHRoZSBkb2MvUkVBRE1FLk5ldENvbnNvbGUgZG9lcyBoYXZlIGEgc25pcHBldCBmb3IgcGVvcGxlIHRvCiAgICBjcmVhdGUgdGhlaXIgb3duIG5ldGNhdCBzY3JpcHQsIGl0J3MgYSBsb3QgZWFzaWVyIHRvIG1ha2UgYSBzaW1wbGUKICAgIGRlZGljYXRlZCBzY3JpcHQgYW5kIHRlbGwgcGVvcGxlIHRvIHVzZSBpdC4KCiAgICBBbHNvIHNwcnVjZSBpdCB1cCBhIGJpdCB0byBtYWtlIGl0IHVzZXIgZnJpZW5kbHkuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDhjNTE3MGE3ZDA4ODYwMWQ1ZjMwZDg1MDkzMzg4ZGFiMWYxZThlYzAKQXV0aG9yOiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KRGF0ZToJVHVlIERlYyA5IDIzOjIwOjE4IDIwMDggLTA1MDAKCiAgICBmcy9mYXQ6IGhhbmRsZSBGQVQgb24gU0FUQQoKICAgIFRoZSBGQVQgZmlsZSBzeXN0ZW0gZHJpdmVyIHNob3VsZCBhbHNvIGhhbmRsZSBGQVQgb24gU0FUQSBkZXZpY2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNvbmljIFpoYW5nIDxTb25pYy5aaGFuZ0BhbmFsb2cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDRjZDhlZDQwNjE1YTdkNzQxZWYyZjA5ZWU1Mzc3OWVjNjkwN2I4YTYKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgRGVjIDkgMjM6MjY6MzEgMjAwOCAtMDgwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIGluIGJ1aWxkaW5nIE1CWDg2MFQuCiAgICBCdWcgd2FzIGludHJvZHVjZWQgaW4gOWViNzliZDg4NTZiY2FiODk2ZWQ1ZTFmMWJjYTE1OTgwN2ExMjRkZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTdhMjRhNzhlZTZmMzRiODliODIxY2I3MGVkYTFjZjM0YWExMWQ5NwpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJTW9uIE5vdiAyNCAwODoxNTowMiAyMDA4IC0wNTAwCgogICAgbGliZmR0OiBGaXggcmVkZWZpbmVkIHVpbnRwdHJfdCB3YXJuaW5nIGZvciBVU0VfSE9TVENDCgogICAgQ29tcGlsaW5nIFUtQm9vdCBpbiBhbiBvbGQgT1MgZW52aXJvbm1lbnQgKFJlZEhhdC03LjMgIDotKQlnaXZlcyB0aGUKICAgIGZvbGxvd2luZyB3YXJuaW5ncyBmcm9tIEZEVDoKCiAgICBpbmNsdWRlL2xpYmZkdF9lbnYuaDo1MDogd2FybmluZzogcmVkZWZpbml0aW9uIG9mICd1aW50cHRyX3QnCiAgICAvdXNyL2luY2x1ZGUvc3RkaW50Lmg6MTI5OiB3YXJuaW5nOiAndWludHB0cl90JyBwcmV2aW91c2x5IGRlY2xhcmVkIGhlcmUKCiAgICBGaXg6IFByb3RlY3QgdGhlIGRlZmluaXRpb24gb2YgdWludHB0cl90IHdoZW4gY29tcGlsaW5nIG9uIHRoZSBob3N0CiAgICBzeXN0ZW0uCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAxZmMyYjE2NWM1MWQ2ZjQwYzhkNTA1ZjFiM2VhZWZkYjY1OTliMTdiCkF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE5vdiAyMiAwODo0MzoyOSAyMDA4ICsxMTAwCgogICAgTW92ZWQgc2M1MjAgUENJIGRlZmluaXRpb25zIHRvIHN0YW5kLWFsb25lIGZpbGUKCiAgICBTaWduZWQgT2ZmIEJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDFmNTA3MGMwYzE4ZmE1Njg0YmZjZTA5YzhhYmRmMTBjMDRlZDQ4ZmEKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTYXQgTm92IDIyIDA4OjQzOjIxIDIwMDggKzExMDAKCiAgICBGaXhlZCBwYXRoIHRvIHNjNTIwIFNTSSBpbmNsdWRlIGZpbGUKCiAgICBTaWduZWQgT2ZmIEJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IGQ0ZjcwZGE1NDRjMzNkYjNlNGZjZTY0NzNkZWE0ZWNjYTQzMjI1NDUKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglGcmkgTm92IDIxIDA2OjI4OjA1IDIwMDggKzExMDAKCiAgICBGaXhlZCBidWlsZCBlcnJvciBkdWUgdG8gI2RlZmluZSBvZiBfTElOVVhfU1RSSU5HX0hfIGluIDgyNTU5X2VlcHJvbS5jCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCBjMDM0MDc1YTcxM2I2MGU2NTRjNjRlODhlODdkYTI5NDQwZjMxYmI0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTm92IDEyIDEzOjMwOjEwIDIwMDggKzAxMDAKCiAgICBzZXJpYWw6IEFkZCB2Y3RoIFVBUlQgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBVQVJUIGRyaXZlciBmb3IgdGhlIHVwY29taW5nIFZDVEggYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQyYTgwZmZjM2I1MzdhOWM0NWFjZDI0NDRhNDJhNzdmMTQ3YzYwMgpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTm92IDEzIDE5OjQ5OjM2IDIwMDggKzAzMDAKCiAgICBqZmZzMjogY2FjaGUgZGF0YV9jcmMgcmVzdWx0cwoKICAgIEFzIHdlIG1vdmVkIGRhdGFfY3JjKCkgaW52b2NhdGlvbiBmcm9tIGpmZnMyXzFwYXNzX2J1aWxkX2xpc3RzKCkgdG8KICAgIGpmZnMyXzFwYXNzX3JlYWRfaW5vZGUoKSBkYXRhX2NyYyBpcyBnb2luZyB0byBiZSBjYWxjdWxhdGVkIG9uIGVhY2gKICAgIGlub2RlIGFjY2Vzcy4gVGhpcyBwYXRjaCBhZGRzIGNhY2hpbmcgb2YgZGF0YV9jcmMoKSByZXN1bHRzLiBUaGVyZQogICAgaXMgbm8gc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQgaW4gc3BlZWQgKGJlY2F1c2Ugb2YgZmxhc2ggYWNjZXNzCiAgICBjYWNoaW5nIGFkZGVkIGluIHByZXZpb3VzIHBhdGNoIEkgdGhpbmssIGNyYyBpbiBSQU0gaXMgcmVhbGx5IGZhc3QpCiAgICBidXQgdGhpcyBwYXRjaCBpbXBhY3RzIG1lbW9yeSB1c2FnZSAtLSBldmVyeSBiX25vZGUgc3RydWN0dXJlIHVzZXMKICAgIDEyIGJ5dGVzIGluc3RlYWQgb2YgOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA5YjcwNzYyMjllYzZhOTU4YmQ4MzVhYjcwNzQ1Zjc2NzYyOTdjZTgyCkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzUgMjAwOCArMDMwMAoKICAgIGpmZnMyOiBzdW1tYXJ5IHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVhZGluZyBmcyBpbmZvcm1hdGlvbiBmcm9tIHN1bW1hcnkKICAgIG5vZGUgaW5zdGVhZCBvZiBzY2FubmluZyBmdWxsIGVyYXNlYmxvY2suCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNzA3NDEwMDRkYzI4OTQ2Y2Q4MmM3YWY2Nzg5YzRkZGIzZmM5NDUyNgpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTm92IDEzIDE5OjQ5OjM0IDIwMDggKzAzMDAKCiAgICBqZmZzMjogYWRkIGJ1ZmZlciB0byBjYWNoZSBmbGFzaCBhY2Nlc3NlcwoKICAgIFdpdGggdGhpcyBwYXRjaCBKRkZTMiBjb2RlIGFsbG9jYXRlcyBtZW1vcnkgYnVmZmVyIG9mIG1heF90b3RsZW4gc2l6ZQogICAgKHNpemUgb2YgdGhlIGxhcmdlc3Qgbm9kZSwgY2FsY3VsYXRlZCBkdXJpbmcgc2NhbiB0aW1lKSBhbmQgdXNlcyBpdCB0bwogICAgc3RvcmUgZW50aXJlIG5vZGUuIFNwZWVkcyB1cCBsb2FkaW5nLiBJZiBtYWxsb2MgZmFpbHMgd2UgdXNlIG9sZCB3YXlzCiAgICB0byBkbyB0aGluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IE5leW1hbiA8YXZuQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgOGEzNmQzMWY3MjQxMTE0NGFjMDQxMmVlN2UxODgwZTgwMWFjZDc1NApBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTm92IDEzIDE5OjQ5OjMzIDIwMDggKzAzMDAKCiAgICBqZmZzMjogcmV3cml0ZSBqZmZzMiBzY2FubmluZyBjb2RlIGJhc2VkIG9uIExpbnV4IG9uZQoKICAgIFJld3JpdGVzIGpmZnMyXzFwYXNzX2J1aWxkX2xpc3RzKCkgZnVuY3Rpb24gaW4gc3R5bGUgb2YgTGludXgncwogICAgamZmczJfc2Nhbl9tZWRpdW0oKSBhbmQgamZmczJfc2Nhbl9lcmFzZWJsb2NrKCkuCiAgICBUaGlzIGluY2x1ZGVzOgogICAgIC0gQ2FjaGluZyBmbGFzaCBhY2Nlc2VzCiAgICAgLSBTbWFydCBkZWFsaW5nIHdpdGggZnJlZSBzcGFjZQoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBOZXltYW4gPGF2bkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IGUwYjU1MzI1NzllZGE4YjQ2MjlmMWI0ZjZlNDljM2NjNjBmNTIyMzcKQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozMiAyMDA4ICswMzAwCgogICAgamZmczI6IGFkZCBzZWN0b3Jfc2l6ZSBmaWVsZCB0byBwYXJ0X2luZm8gc3RydWN0dXJlCgogICAgVGhpcyBwYXRjaCBhZGRzIHNlY3Rvcl9zaXplIGZpZWxkIHRvIHBhcnRfaW5mbyBzdHJ1Y3R1cmUgKHVzZWQKICAgIGJ5IG5ldyBKRkZTMiBjb2RlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCBmNzM4NDY5NTY3NzhhN2RmZWU4MzQwM2VmOTc0N2FmZjc3MTk4ODQ4CkF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBOb3YgMTMgMTk6NDk6MzEgMjAwOCArMDMwMAoKICAgIGpmZnMyOiBmaXggc2VhcmNoaW5nIGZvciBsYXRlc3QgdmVyc2lvbiBpbiBqZmZzMl8xcGFzc19saXN0X2lub2RlcygpCgogICAgV2UgbmVlZCB0byB1cGRhdGUgaV92ZXJzaW9uIGluc2lkZSBjeWNsZSB0byBmaW5kIHJlYWxseSBsYXRlc3QgdmVyc2lvbgogICAgaW5zaWRlIGpmZnMyXzFwYXNzX2xpc3RfaW5vZGVzKCkuIFdpdGggdGhhdCBmaXhlZCB3ZSBjYW4gdXNlIGlzaXplIGluc2lkZQogICAgZHVtcF9pbm9kZSgpIGluc3RlYWQgb2YgY2FsbGluZyBleHBlbnNpdmUgamZmczJfMXBhc3NfcmVhZF9pbm9kZSgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBOZXltYW4gPGF2bkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgoKY29tbWl0IDExMTNjYjc2NGIzZGEyNTZlZjhhMWY5NTM5ZjRlZmJlMjIxZmYzYzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDkgMjM6MTM6NTEgMjAwOCArMDEwMAoKICAgIGV2YjY0MjYwOiBmaXggImNhc3QgdG8gcG9pbnRlciBmcm9tIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUiIHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMjc3NjgyNzMxNWMzZDQ2OWI4Y2I0Y2VjMTRkNTg4Nzc3OThkYWEyCkF1dGhvcjogU3RlZmFuIEFsdGhvZWZlciA8c3RlZmFuLmFsdGhvZWZlckB3ZWIuZGU+CkRhdGU6CVN1biBEZWMgNyAxOTozOToxMSAyMDA4ICswMTAwCgogICAgVVNCOiBkZXNjcmlwdG9yIGhhbmRsaW5nCgogICAgSGksCgogICAgSSBmb3VuZCBhIGJ1ZyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgdS1ib290IFVTQiBzdWJzeXN0ZW0gb24gSVhQNDI1IHByb2Nlc3NvcgogICAgKGJpZyBlbmRpYW4gWHNjYWxlIGFrYSBBUk12NSkuCiAgICBJIHJlY29nbml6ZWQgdGhhdCB0aGUgc2Vjb25kIHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIG9mIHRoZSBhdHRhY2hlZCBtZW1vcnkKICAgIHN0aWNrIHdhcyBjb3JydXB0ZWQuCgogICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBhcmUgdGhlIHBhY2tlZCBzdHJ1Y3R1cmVzIGJlbG93IChlaXRoZXIgdS1ib290IGFuZAogICAgdS1ib290LXVzYik6CgogICAgLS0tLS0tLS0tLS0tLS0KICAgIC8qIEVuZHBvaW50IGRlc2NyaXB0b3IgKi8KICAgIHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciB7Cgl1bnNpZ25lZCBjaGFyICBiTGVuZ3RoOwoJdW5zaWduZWQgY2hhciAgYkRlc2NyaXB0b3JUeXBlOwoJdW5zaWduZWQgY2hhciAgYkVuZHBvaW50QWRkcmVzczsKCXVuc2lnbmVkIGNoYXIgIGJtQXR0cmlidXRlczsKCXVuc2lnbmVkIHNob3J0IHdNYXhQYWNrZXRTaXplOwoJdW5zaWduZWQgY2hhciAgYkludGVydmFsOwoJdW5zaWduZWQgY2hhciAgYlJlZnJlc2g7Cgl1bnNpZ25lZCBjaGFyICBiU3luY2hBZGRyZXNzOwoKICAgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgLyogSW50ZXJmYWNlIGRlc2NyaXB0b3IgKi8KICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgewoJdW5zaWduZWQgY2hhciAgYkxlbmd0aDsKCXVuc2lnbmVkIGNoYXIgIGJEZXNjcmlwdG9yVHlwZTsKCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VOdW1iZXI7Cgl1bnNpZ25lZCBjaGFyICBiQWx0ZXJuYXRlU2V0dGluZzsKCXVuc2lnbmVkIGNoYXIgIGJOdW1FbmRwb2ludHM7Cgl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlQ2xhc3M7Cgl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlU3ViQ2xhc3M7Cgl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlUHJvdG9jb2w7Cgl1bnNpZ25lZCBjaGFyICBpSW50ZXJmYWNlOwoKCXVuc2lnbmVkIGNoYXIgIG5vX29mX2VwOwoJdW5zaWduZWQgY2hhciAgbnVtX2FsdHNldHRpbmc7Cgl1bnNpZ25lZCBjaGFyICBhY3RfYWx0c2V0dGluZzsKCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciBlcF9kZXNjW1VTQl9NQVhFTkRQT0lOVFNdOwogICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAtLS0tLS0tLS0tLS0KCiAgICBBcyB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciBpcyBvbmx5IDdieXRlIGluIGxlbmd0aCwgdGhlIHN0YXJ0IG9mIGFsbAogICAgb2RkIGVwX2Rlc2NbXSBzdHJ1Y3R1cmVzIGlzIG5vdCB3b3JkIGFsaWduZWQuIFRoaXMgbWFrZXMgd01heFBhY2tldFNpemUKICAgIG9mIHRoZXNlIHN0cnVjdHVyZXMgYWxzbyBub3Qgd29yZCBhbGlnbmVkLgoKICAgIEFSTXY1IEFyY2hpdGVjdHVyZSBob3dldmVyIGRvZXMgbm90IHN1cHBvcnQgbm9uLWFsaWduZWQgbXVsdGlieXRlCiAgICBkYXRhIHR5cGUgKHNlZSBBMi44IG9mIEFSTSBBcmNoaXRlY3R1cmUgUmVmZXJlbmNlIE1hbnVhbCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIEFsdGhvZWZlciA8c3RlZmFuLmFsdGhvZWZlckB3ZWIuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgNGMyNTNmZGIyYTE3NWVhMzQ3MmMzOGExNDU1YTE2ZmFhNThlODFmMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBEZWMgOSAxMDoyNzozMyAyMDA4IC0wNjAwCgogICAgZHJpdmVycy9mc2xfcGNpX2luaXQ6IEZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBmc2xfcGNpX2luaXQuYzogSW4gZnVuY3Rpb24gJ2ZzbF9wY2lfc2V0dXBfaW5ib3VuZF93aW5kb3dzJzoKICAgIGZzbF9wY2lfaW5pdC5jOjEyMjogd2FybmluZzogY29tcGFyaXNvbiBpcyBhbHdheXMgdHJ1ZSBkdWUgdG8gbGltaXRlZCByYW5nZSBvZiBkYXRhIHR5cGUKCiAgICBUaGUgY2hlY2sgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmUgQ09ORklHX1BIWVNfNjRCSVQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGRlZGFjYzE4YThjMmIzOTUxNTgxZWI3MjFmYTA1NWE0ZTBhYzQ4NDUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRGVjIDcgMDk6NDU6MzUgMjAwOCArMDEwMAoKICAgIHVzYnR0eS9vbWFwOiB1cGRhdGUgdG8gY3VycmVudCBBUEkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGVlMmU5YmE5MTdhNjJjYzJlM2E0ODRiYjc5YzhkYTBlMDFjYjkzZWQKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgOSAxNzo1MjowNSAyMDA4ICswMTAwCgogICAgdmlkZW86IGZpeCBGQURTODIzIGFuZCBSUnZpc2lvbiBjb21waWxpbmcgaXNzdWVzCgogICAgU2luY2UgY29tbWl0IDU2MTg1OGVlIGJ1aWxkaW5nIGZvciBGQURTODIzIGFuZCBSUnZpc2lvbgogICAgZG9lc24ndCB3b3JrLiBMZXQncyBpbmNsdWRlIHZlcnNpb24uaCBhbmQgdGltZXN0YW1wLmgKICAgIHVuY29uZGl0aW9uYWxseSB0byBmaXggdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDJkMmUwNTcyN2ZlNDAxM2Y4MDdmZmE4MTRkZmYwZTc1MjU5YTFkYjQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMiAxMDo1Mzo0NyAyMDA4ICswMTAwCgogICAgVUJJOiBGaXggc2l6ZSBwYXJzaW5nIGluICJ1YmkgY3JlYXRlIgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZWU5NTFiYTJhYzk4NzRkMmE5M2Q1MmU3YTE4N2QzMTg0YmU5MzdlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDI3IDE0OjA3OjA5IDIwMDggKzAxMDAKCiAgICBVQkk6IEVuYWJsZSByZS1pbml0aWFsaXppbmcgb2YgdGhlICJ1YmkgcGFydCIgY29tbWFuZAoKICAgIFdpdGggdGhpcyBwYXRjaCBub3csIHRoZSB1c2VyIGNhbiBjYWxsICJ1YmkgcGFydCIgbXVsdGlwbGUgdGltZXMgdG8KICAgIHJlLWNvbm5lY3QgdGhlIFVCSSBkZXZpY2UgdG8gYW5vdGhlciBNVEQgcGFydGl0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ZGVmMTJjYWUzM2QyZDNlYTJkZDU2YjE5N2ZkM2RmYjNhZDYwYmY0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDI3IDE0OjA1OjE1IDIwMDggKzAxMDAKCiAgICBNVEQ6IEZpeCBwcm9ibGVtIGJhc2VkIG9uIG5vbi13b3JraW5nIHJlbG9jYXRpb24gKGxpc3QgaGVhZCBtdGRfcGFydGl0aW9ucykKCiAgICBEb24ndCB1c2UgTElTVF9IRUFEKCkgYnV0IGluaXRpYWxpemUgdGhlIHN0cnVjdCB2aWEgSU5JVF9MSVNUX0hFQUQoKSB1cG9uCiAgICBmaXJzdCBjYWxsIG9mIGFkZF9tdGRfcGFydGl0aW9ucygpLiBPdGhlcndpc2UgdGhpcyB3b24ndCB3b3JrIG9uIHBsYXRmb3JtcwogICAgd2hlcmUgdGhlIHJlbG9jYXRpb24gaXMgYnJva2VuIChsaWtlIE1JUFMgb3IgUFBDKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWUzYWI2OGU5YWNmOWVkZjMwNGI4YWEzMmFkN2UwMDU0ODNhMmM0NwpBdXRob3I6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDEyIDE3OjI5OjQ4IDIwMDggLTA4MDAKCiAgICBTZWN0aW9uIG5hbWUgc2hvdWxkIGJlICIuZGF0YSIsIG5vdCAiZGF0YSIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgN2ZhNmEyZjNiNjY1NzlkZWE4YmMxYTkxNzc2NDZlMTE0MTczMWIxNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgOSAwMDozOTowOCAyMDA4ICswMTAwCgogICAgTUFLRUFMTDogQXV0b21hdGljYWxseSB1c2UgcGFyYWxsZWwgYnVpbGRzCgogICAgQWRkIGxvZ2ljIHRvIHRoZSBNQUtFQUxMIHNjcmlwdCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFUgY29yZXMKICAgIG9uIHRoZSBzeXN0ZW0sIGFuZCBydW4gYSBwYXJhbGxlbCBidWlsZCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lLgogICAgVXN1YWxseSB0aGlzIHNpZ25pZmljYW50cmx5IGFjY2VsZXJhdGVzIGJ1aWxkcy4KCiAgICBBbGxvdyB0byBtYW51YWxseSBhZGp1c3QgdGhlIG51bWJlciBvZiBwYXJhbGxlbCBtYWtlIGpvYnMgYnkgdXNpbmcKICAgIHRoZSAiQlVJTERfTkNQVVMiIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjY4NDA1ZmE3YzQ0MTU2YzUxOTJhNzA3Nzk5MjBjNzA5MDZhZjhkNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgOSAwMDoyNDozMCAyMDA4ICswMTAwCgogICAgdnh3b3Jrcy5oOiBGaXggYnVpbGQgcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IGNvbW1pdHMgMjlhNGMyNGQvZTkwODRiMjMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE1MzE3NmE5NDE0MTIwY2ExNzM2ZjNjYzQ5NTE2MjNkNmUxNGU2YWYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgTm92IDExIDA2OjA4OjU5IDIwMDggKzAxMDAKCiAgICBhdnIzMi9ib290bTogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZSAncmV0JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDQzNGM1MWE1ZTYyZjYwOGEyYTc4ZWQ1Mzk4YWM0M2ExYzc3Y2MxODMKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgTm92IDEyIDEzOjA2OjQ4IDIwMDggLTA2MDAKCiAgICBSZW1vdmUgdW5uZWVkZWQgQ09ORklHX1NIRUxMIHJlZmVyZW5jZXMKCiAgICBNYWtlIHNob3VsZCBiZSB1c2luZyB0aGUgYmFzaCBzaGVsbCBieSBkZWZhdWx0IHdoaWNoIG1ha2VzCiAgICBDT05GSUdfU0hFTEwgdW5uZWNlc3NhcnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IGNmN2E3Yjk5Nzk0YmFjOTM2ODk5ODE5Yjk1NTM5YmUxZGJkNzE3MDgKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglXZWQgTm92IDEyIDEyOjMzOjIwIDIwMDggLTA2MDAKCiAgICBVc2UgYmFzaCBmb3IgZGVmYXVsdCBHTlUgTWFrZSBzaGVsbCBhcHBsaWNhdGlvbgoKICAgIFNvbWUgTWFrZSBzY3JpcHQgY29tbWFuZHMgcmVseSBvbiBiYXNoLXNwZWNpZmljIGZlYXR1cmVzIGxpa2UgYnJhY2UKICAgIGV4cGFuc2lvbiwgc28gZGVmYXVsdCB0byBiYXNoIGZvciB0aGUgU0hFTEwgdmFyaWFibGUgd2l0aCBhIGZhbGxiYWNrCiAgICB0byB0aGUgc3RhbmRhcmQgc2ggc2hlbGwKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDRiNTMwMDE4NzY0OTM0YWQ1Njg5MTk2ZTlhYTU3MTRhNmY0ZDFhNmMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAxMiAwOTo1MDo0NSAyMDA4ICswMTAwCgogICAgamZmczI6IHJlbmFtZSBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2pmZnMyLmMKCiAgICByZW5hbWUgZGV2aWNlc19pbml0ICgpIGluIGNvbW1vbi9qZmZzMi5jIHRvCiAgICBqZmZzMl9kZXZpY2VzX2luaXQgKCksIGJlY2F1c2UgdGhlcmUgaXMgYWxzbyBhCiAgICBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2RldmljZXMuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhZjVlYjg0N2ExMGYxMDM3NTkwMDAxMzU1ZDg4YmFiM2ZlN2JlNDhiCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglNb24gTm92IDEwIDEyOjQ2OjIwIDIwMDggKzAwMDAKCiAgICBTUEFSQzogRml4ZWQgY29tcGlsZXIgZXJyb3IgaW50cm9kdWNlZCBieSBjb21taXQgYzE2MGE5NTQ0NzQzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1aWxkIGVycm9yIGZvciB0aGUgU1BBUkMgcGxhdGZvcm0uIEl0IHdhcwogICAgaW50cm9kdWNlZCBieSBjb21taXQgYzE2MGE5NTQ0NzQzZTgwZTg4ODllZGIyMjc1NTM4ZTc3NjRjZTMzNC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgNGM2MDI1OTg5OWFhMDBmNTlkYjBkOTM2Yjg4MDdmOWEyNjQxMWMwZgpBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglTdW4gTm92IDkgMTI6NTA6NTkgMjAwOCArMDEwMAoKICAgIG1nc3V2ZCBhZGQgdGhlIGJvYXJkLXNwZWNpZmljIHBhcnQgb2YgdGhlIEhETEMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Cgpjb21taXQgNTM0YTQzNTk2NjZhZjQ4YmQ2OWEzNzQzZDhhOGMyYmRiMWQzZWM3MApBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglTdW4gTm92IDkgMTI6NDU6MDMgMjAwOCArMDEwMAoKICAgIG1nY29nZSBhZGQgdGhlIGJvYXJkLXNwZWNpZmljIHBhcnQgb2YgdGhlIEhETEMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Cgpjb21taXQgMTM1ZjU1MzQ1MzhiYjhlYTRmMzhhNzAzMGRhMTIxODdkMjJlZjdlMApBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglTdW4gTm92IDkgMTI6MzY6MTUgMjAwOCArMDEwMAoKICAgIGtleW1pbGUgYWRkIHRoZSBjb21tb24gcGFydHMgb2YgdGhlIEhETEMgZHJpdmVyCgogICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBJQ04gcHJvdG9jb2wgdXNlZCBhY3Jvc3MgdGhlIGJhY2twbGFuZSBhbmQgaXMKICAgIG5lZWRlZCBieSBhbGwgdGhlIGtleW1pbGUgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IDFjYjgyYTkyMDdhNTUwNTU3Mzk5ZWFiYzdmZTQ3ZjIxYmJkOWRkZjgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTm92IDcgMjI6NDY6MjIgMjAwOCArMDEwMAoKICAgIGRyaXZlcnMvYmlvc19lbXVsYXRvcjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYmNkZjFkMmNmNmIyNGZiOTA1ZmQ3ZGE4MGRhNGIzYzY1YTc5OTViNQpBdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+CkRhdGU6CVRodSBOb3YgNiAxNDowMTo1MSAyMDA4IC0wNTAwCgogICAgY29tbW9uL2NtZF9pZGUuYzogQ29ycmVjdGVkIGVuZGlhbiBvcmRlciBwcmludGluZyBmb3IgY29tcGFjdCBmbGFzaCBzZXJpYWwgbnVtYmVyLgoKICAgIENvcnJlY3RlZCBlbmRpYW4gb3JkZXIgcHJpbnRpbmcgZm9yIGNvbXBhY3QgZmxhc2ggc2VyaWFsIG51bWJlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgoKY29tbWl0IDE2YTI4ZWYyMTljMjc0MjNhMWVmNTAyZjE5MDcwYzRkMzc1MDc5YjgKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiA2IDE1OjA0OjIzIDIwMDggKzAxMDAKCiAgICBJT01VWDogQWRkIGNvbnNvbGUgbXVsdGlwbGV4aW5nIHN1cHBvcnQuCgogICAgTW9kaWZpY2F0aW9ucyB0byBzdXBwb3J0IGNvbnNvbGUgbXVsdGlwbGV4aW5nLiAgVGhpcyBpcyBjb250cm9sbGVkIHVzaW5nCiAgICBDT05GSUdfU1lTX0NPTlNPTEVfTVVYIGluIHRoZSBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUuCgogICAgVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNwZWNpZnkgbXVsdGlwbGUgY29uc29sZSBkZXZpY2VzIGluIHRoZSBlbnZpcm9ubWVudAogICAgd2l0aCBhIGNvbW1hbmQgbGlrZSB0aGlzOiBzZXRlbnYgc3RkaW4gc2VyaWFsLG5jLiAgQXMgYSByZXN1bHQsIHRoZSB1c2VyIGNhbgogICAgZW50ZXIgdGV4dCBvbiBib3RoIHRoZSBzZXJpYWwgYW5kIG5ldGNvbnNvbGUgaW50ZXJmYWNlcy4KCiAgICBBbGwgZGV2aWNlcyAtIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciAtIGNhbiBiZSBzZXQgaW4gdGhpcyBtYW5uZXIuCgogICAgMSkgY29tbW9uL2lvbXV4LmMgYW5kIGluY2x1ZGUvaW9tdXguaCBjb250YWluIHRoZSBlbnZpcm9ubWVudCBzZXR0aW5nCiAgICBpbXBsZW1lbnRhdGlvbi4KICAgIDIpIGRvYy9SRUFETUUuaW9tdXggY29udGFpbnMgYSBzb21ld2hhdCBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgogICAgMykgVGhlIGltcGxlbWVudGF0aW9uIGluICgxKSBpcyBjYWxsZWQgZnJvbSBjb21tb24vY21kX252ZWRpdC5jIHRvCiAgICBoYW5kbGUgc2V0ZW52IGFuZCBmcm9tIGNvbW1vbi9jb25zb2xlLmMgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uIG9mCiAgICBpbnB1dC9vdXRwdXQgZGV2aWNlcyBhdCBib290IHRpbWUuCiAgICA0KSBjb21tb24vY29uc29sZS5jIGFsc28gY29udGFpbnMgdGhlIGNvZGUgbmVlZGVkIHRvIHBvbGwgbXVsdGlwbGUgY29uc29sZQogICAgZGV2aWNlcyBmb3IgaW5wdXQgYW5kIHNlbmQgb3V0cHV0IHRvIGFsbCBkZXZpY2VzIHJlZ2lzdGVyZWQgZm9yIG91dHB1dC4KICAgIDUpIGluY2x1ZGUvY29tbW9uLmggaW5jbHVkZXMgaW9tdXguaCBhbmQgY29tbW9uL01ha2VmaWxlIGdlbmVyYXRlcyBpb211eC5vCiAgICB3aGVuIENPTkZJR19TWVNfQ09OU09MRV9NVVggaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IDc3NGNlNzIwMjZmNzRhYzk2NDFiY2JiYzU4OGIyMGYyZTEzZjdhYjgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBOb3YgNCAxNjowMzo0NiAyMDA4IC0wNTAwCgogICAgc3RyaW5nczogdXNlIHB1dHMoKSByYXRoZXIgdGhhbiBwcmludGYoKQoKICAgIFdoZW4gcnVubmluZyBgc3RyaW5nc2Agb24gcmVhbGx5IGxvbmcgc3RyaW5ncywgdGhlIHN0YWNrIHRlbmRzIHRvIGdldAogICAgc21hc2hlZCBkdWUgdG8gcHJpbnRmKCkuICBTd2l0Y2ggdG8gcHV0cygpIGluc3RlYWQgc2luY2Ugd2UncmUgb25seSBwYXNzaW5nCiAgICB0aGUgZGF0YSB0aHJvdWdoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiMDMxNTBiNTJlM2M0OTFhODZhM2NjMDk0NTI3NGYwZThmOTg3MmU3CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KRGF0ZToJTW9uIE5vdiAzIDIyOjE2OjE4IDIwMDggKzAxMDAKCiAgICBVc2UgbmV3IENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzIGZvciBOZXRzdGFsIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Cgpjb21taXQgMjlhNGMyNGRlOTlkOGNiNGFjMzI5OTFjMDRjYWI4N2VkOTRjYTFmOQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+CkRhdGU6CU1vbiBOb3YgMyAyMjoxNTozNCAyMDA4ICswMTAwCgogICAgY21kX2VsZi5jOiBDbGVhbnVwIGJvb3R2eCBhbmQgaGFuZGxlIG5ldyBDT05GSUdfU1lTX1ZYV09SS1MgcGFyYW1ldGVycwoKICAgIC0gZml4IHNpemUgdG9vIHNtYWxsIGJ5IG9uZSBpbiBzcHJpbnRmCiAgICAtIGNoYW5nZWQgb2xkIChwcmUgMjAwNCkgZGV2aWNlIG5hbWUgaWJtRW1hYyB0byBlbWFjCiAgICAtIGJvb3QgZGV2aWNlIG1heSBiZSBvdmVycmlkZW4gaW4gYm9hcmQgY29uZmlnCiAgICAtIHNlcnZlcm5hbWUgbWF5IGJlIGRlZmluZWQgaW4gYm9hcmQgY29uZmlnCiAgICAtIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBtYXkgYmUgZGVmaW5lZCBpbiBib2FyZCBjb25maWcKICAgIC0gZml4ZWQgc29tZSBsaW5lIHdyYXBwaW5ncwogICAgLSByZXBsYWNlZAlyZWR1bmRhbnQgTUFYIGRlZmluZSBieSBtYXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgoKY29tbWl0IGU5MDg0YjIzZDE2MTAyZjQ0YWNlMjQzNzlhMWMwYzM1MjQ5N2VmODAKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgpEYXRlOglNb24gTm92IDMgMjI6MTQ6MzYgMjAwOCArMDEwMAoKICAgIEFkZCB2eHdvcmtzLmggdG8gaGFuZGxlIENPTkZJR19TWVNfVlhXT1JLUyBwYXJhbWV0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KCmNvbW1pdCAwYjJmNGVjYWQ0NzNkNzg1OTU5Yzc5NzZmMjBkMmEwMGJkMGVlMDFmCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KRGF0ZToJTW9uIE5vdiAzIDIyOjEzOjQ3IDIwMDggKzAxMDAKCiAgICBSRUFETUU6IERvY3VtZW50IENPTkZJR19TWVMgcGFyYW1ldGVycyBmb3Igdnh3b3JrcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Cgpjb21taXQgYWNlNTE0ODM3Y2FjNjU2ZTI5YzM3YTE5NTY5Y2I4ZWE4MzA3MTEyNgpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTE6MTI6MzggMjAwOCAtMDUwMAoKICAgIGxjZDogTGV0IHRoZSBib2FyZCBjb2RlIHNob3cgYm9hcmQtc3BlY2lmaWMgaW5mbyBjbGVhbnVwCgogICAgcmVtb3ZlIHVubmVlZGVkIHZlcnNpb24uaCBmcm9tIGxjZC5jCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTYxODU4ZWU3ZDAyNzRjM2U4OWRjOThkNGQwNjk4Y2I2ZmNmNmZkOQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBOb3YgMyAwOTozMDo1OSAyMDA4IC0wNjAwCgogICAgVXBkYXRlIFUtQm9vdCdzIGJ1aWxkIHRpbWVzdGFtcCBvbiBldmVyeSBjb21waWxlCgogICAgVXNlIHRoZSBHTlUgJ2RhdGUnIGNvbW1hbmQgdG8gYXV0by1nZW5lcmF0ZSBhIG5ldyBVLUJvb3QKICAgIHRpbWVzdGFtcCBvbiBldmVyeSBjb21waWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgODNhZDE3OWUyZjBmNjI1Yjg4YWRiOGVmNTY5NjcwOWU0NmZiOTA3NwpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUaHUgRGVjIDQgMjI6MjU6NTcgMjAwOCArMDEwMAoKICAgIFJlbW92ZSByZWR1bmRhbnQgYXJtdjQgZmxhZyBmcm9tIGFybTkyNmVqcyBjb21waWxlIGZsYWdzCgogICAgQ3VycmVudGx5IHRoZSBhcm05MjZlanMgdHJlZSBoYXMgdGhlIGFybXY0IG9wdGlvbiBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLgogICAgVGhpcyBmbGFnIGRvZXMgbm90IGJlbG9uZyBoZXJlIGJlY2F1c2UgYSBhcm05MjYgQ1BVIGlzIGFsd2F5cyBhIGFybXY1IENQVS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCA4OWE3YTg3ZjA4NGM2NTdmOGUzMmI1MTNhNzdiNTBlY2EwN2UxN2VjCkF1dGhvcjogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+CkRhdGU6CVNhdCBEZWMgNiAxMzoxMToxNCAyMDA4ICswMTAwCgogICAgYXQ5MTogQ2hvb3NlIGVudmlyb25tZW50IHZhcmlhYmxlcyBsb2NhdGlvbiB3aXRoaW4gbWFrZSBjb25maWcgdGFyZ2V0CgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBwb3NzaWJsaXR5IHRvIGNob29zZSB0aGUgbWVkaWEgd2hlcmUgdGhlIGVudmlyb25tZW50IHdpbGwKICAgIGJlIGxvY2F0ZWQuIFRoaXMgYWxsb3cgdG8gY2hvb3NlIHRoaXMgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiB3aXRob3V0IGVkaXRpbmcKICAgIGNvbmZpZyBmaWxlcy4KCiAgICBEb2N1bWVudGF0aW9uIGZpbGUgYWRkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+CiAgICBBY2tlZC1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDE0NTBjNGE2NjgyMzc4NTY3MDMwNDE0YTlmMTE5OGMzOWI3NzMwYzcKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMyAxNTozMDozNCAyMDA4ICswMTAwCgogICAgbHdtb24sIHRxbTh4eDogRml4IGJ1aWxkIGVycm9ycwoKICAgIENvbW1pdCA2YjU5ZTAzZTAyMzdhNDBhMjMwNWVhMzg1ZGVmZGZkOTIwMDA5NzhiCiAgICBsY2Q6IExldCB0aGUgYm9hcmQgY29kZSBzaG93IGJvYXJkLXNwZWNpZmljIGluZm8KCiAgICBpbnRyb2R1Y2VkIHNvbWUgYnVncyB3aGljaCBwcmV2ZW50IFUtQm9vdCBidWlsZGluZwogICAgZm9yIGx3bW9uIGJvYXJkIGlmIENPTkZJR19MQ0RfSU5GT19CRUxPV19MT0dPIHdpbGwKICAgIGJlIGRlZmluZWQgaW4gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24uCgogICAgQWxzbyAiTENEIGVuYWJsZWQiIGJ1aWxkaW5nIGZvciBUUU04MjNMIGRvZXNuJ3Qgd29yawogICAgc2luY2UgdGhpcyBjb21taXQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhYm92ZS1tZW50aW9uZWQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBiZmEwYWY2YjIyZmYyNWIwNzE5YTg5MTBmOWI2ZDFmOTc1YWE2ZmIwCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gTm92IDIgMDE6MTg6MTggMjAwOCAtMDQwMAoKICAgIGlnbm9yZSAuZ2RiX2hpc3RvcnkgZmlsZXMKCiAgICBXaGVuIHVzaW5nIGdkYiwgaGlzdG9yeSBmaWxlcyB3aWxsIG9mdGVuIGdldCBnZW5lcmF0ZWQuICBTbyBpZ25vcmUgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzhhYTdkZmMxOGY3Y2M5MGQwYWVhNmM3YmVjYmI2N2RmYzViYmE0YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTI6MjY6NTUgMjAwOCArMDEwMAoKICAgIEZQR0E6IG1vdmUgZnBnYSBkcml2ZXJzIHRvIGRyaXZlcnMvZnBnYQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmE4NmJiNmMyNTM3NmYwMzU4NDc4MjE5ZmEyOGQ3Yzg0ZGQwMWVkMApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxNjoyOTozOCAyMDA4IC0wNjAwCgogICAgbmV0OiBGaXggVGZ0cFN0YXJ0KCkgaXA6ZmlsZW5hbWUgYnVnCgogICAgVGhlIFRmdHBTdGFydCgpIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSAnQm9vdEZpbGUnCiAgICBzdHJpbmcgd2hlbiAnQm9vdEZpbGUnIGNvbnRhaW5zIGJvdGggYW4gSVAgYWRkcmVzcwogICAgYW5kIGZpbGVuYW1lIChlZyAxLjIuMy40Oi9wYXRoL2ZpbGUpLiBUaGlzIGNhdXNlcwogICAgc3Vic2VxdWVudCBjYWxscyB0byBUZnRwU3RhcnQgdG8gaW5jb3JyZWN0bHkgcGFyc2UKICAgIHRoZSBURlRQIGZpbGVuYW1lIGFuZCBzZXJ2ZXIgSVAgYWRkcmVzcyB0byB1c2UuCiAgICBGb3IgZXhhbXBsZToKCiAgICA9PiB0ZnRwIDB4MTAwMDAwIDEwLjUyLjAuNjI6L2hvbWUvcHR5c2VyL25vbl9leGlzdGFudAogICAgU3BlZWQ6IDEwMCwgaGFsZiBkdXBsZXgKICAgIFVzaW5nIGVUU0VDMSBkZXZpY2UKICAgIFRGVFAgZnJvbSBzZXJ2ZXIgMTAuNTIuMC42Mjsgb3VyIElQIGFkZHJlc3MgaXMgMTAuNTIuMjUzLjc5CgkJICAgICBeXl5eXl5eXl5eIENPUlJFQ1QKICAgIEZpbGVuYW1lICcvaG9tZS9wdHlzZXIvbm9uX2V4aXN0YW50Jy4KCSAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4gQ09SUkVDVAogICAgTG9hZCBhZGRyZXNzOiAweDEwMDAwMAogICAgTG9hZGluZzogKgogICAgVEZUUCBlcnJvcjogJ0ZpbGUgbm90IGZvdW5kJyAoMSkKICAgIFN0YXJ0aW5nIGFnYWluCgogICAgZVRTRUMyOiBObyBsaW5rLgogICAgU3BlZWQ6IDEwMCwgaGFsZiBkdXBsZXgKICAgIFVzaW5nIGVUU0VDMSBkZXZpY2UKICAgIFRGVFAgZnJvbSBzZXJ2ZXIgMTAuNTIuMC4zMzsgb3VyIElQIGFkZHJlc3MgaXMgMTAuNTIuMjUzLjc5CgkJICAgICBeXl5eXl5eXl5eIFdST05HCiAgICBGaWxlbmFtZSAnMTAuNTIuMC42MicuCgkgICAgICBeXl5eXl5eXl5eIFdST05HCiAgICBMb2FkIGFkZHJlc3M6IDB4MTAwMDAwCiAgICBMb2FkaW5nOiAqCiAgICBURlRQIGVycm9yOiAnRmlsZSBub3QgZm91bmQnICgxKQogICAgU3RhcnRpbmcgYWdhaW4KCiAgICBUZnRwU3RhcnQoKSB3YXMgbW9kaWZpZWQgdG8gbm90IG1vZGlmeSB0aGUgJ0Jvb3RGaWxlJyBzdHJpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDMyYzViZTUwYmYwNjAwYmZkYzU0MjIzZWYzNDFlZTljNjNkYjQ0NQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CU1vbiBEZWMgMSAxNjoyNjoyMSAyMDA4IC0wNjAwCgogICAgbmV0OiBBZGQgYWRkaXRpb25hbCBJUCBmcmFnbWVudGF0aW9uIGNoZWNrCgogICAgSWdub3JlIElQIHBhY2tldHMgd2hpY2ggaGF2ZSB0aGUgIm1vcmUgZnJhZ21lbnRzIiBmbGFnIGJpdAogICAgc2V0LiAgVGhpcyBmbGFnIGluZGljYXRlcyB0aGUgSVAgcGFja2V0IGlzIGZyYWdtZW50ZWQgYW5kCiAgICBtdXN0IGJlIGlnbm9yZWQgYnkgVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGUwYzA3Yjg2OGNhYjQwNWFiNGI1MzM1YTAyNDc4OTliZmM1ZWEwYjYKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gRGVjIDEgMTY6MjY6MjAgMjAwOCAtMDYwMAoKICAgIG5ldDogRGVmaW5lIElQIGZsYWcgZmllbGQgdmFsdWVzCgogICAgVGhlc2UgZGVmaW5lcyB3ZXJlIHB1bGxlZCBmcm9tIHRoZSAiQWRkIHNpbXBsZQogICAgSVAvVURQIGZyYWdtZW50YXRpb24gc3VwcG9ydCIgcGF0Y2ggZnJvbSBGcmFuawogICAgSGF2ZXJrYW1wIDxoYXZlckB2bmV0LmlibS5jb20+LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDIzYWZhYmE2NWVjNTIwNjc1N2U1ODllZjMzNGE4YjM4MTY4YzA0NWYKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMiAxMDozMTowNCAyMDA4ICswMTAwCgogICAgbmV0OiB0c2VjOiBGaXggTWFydmVsbCA4OEUxMTIxUiBwaHkgaW5pdAoKICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZW5zdXJlIHRoYXQgcGh5IGludGVycnVwdCBwaW4KICAgIHdvbid0IGJlIGFzc2VydGVkIGFmdGVyIGJvb3RpbmcuIFdlIGV4cGVyaWVuY2VkCiAgICBmb2xsb3dpbmcgaXNzdWVzIHdpdGggY3VycmVudCA4OEUxMTIxUiBwaHkgaW5pdDoKCiAgICBNYXJ2ZWxsIDg4RTExMjFSIHBoeSBjYW4gYmUgaGFyZHdhcmUtY29uZmlndXJlZAogICAgdG8gc2hhcmUgTURDL01ESU8gYW5kIGludGVycnVwdCBwaW5zIGZvciBib3RoIHBvcnRzCiAgICBQMCBhbmQgUDEgKGUuZy4gYXMgY29uZmlndXJlZCBvbiBzb2NyYXRlcyBib2FyZCkuCiAgICBQb3J0IDAgaW50ZXJydXB0IHBpbiB3aWxsIGJlIHNoYXJlZCBieSBib3RoIHBvcnRzCiAgICBpbiBzdWNoIGNvbmZpZ3VyYXRpb24uIEFmdGVyIGJvb3RpbmcgTGludXggYW5kCiAgICBjb25maWd1cmluZyBldGgwIGludGVyZmFjZSwgcG9ydCAwIHBoeSBpbnRlcnJ1cHRzCiAgICBhcmUgZW5hYmxlZC4gQWZ0ZXIgcmVib290aW5nIHdpdGhvdXQgcHJvcGVyIGV0aDAKICAgIGludGVyZmFjZSBzaHV0ZG93biBwb3J0IDAgcGh5IGludGVycnVwdHMgcmVtYWluCiAgICBlbmFibGVkIHNvIGFueSBjaGFuZ2Ugb24gcG9ydCAwIChsaW5rIHN0YXR1cywgZXRjLikKICAgIGNhdXNlIGFzc2VydGlvbiBvZiB0aGUgaW50ZXJydXB0LiBOb3cgYm9vdGluZyBMaW51eAogICAgYW5kIGNvbmZpZ3VyaW5nIGV0aDEgaW50ZXJmYWNlIHdpbGwgY2F1c2UgcGVybWFuZW50CiAgICBwaHkgaW50ZXJydXB0IHN0b3JtIGFzIHRoZSByZWdpc3RlcmVkIHBoeSAxIGludGVycnVwdAogICAgaGFuZGxlciBkb2Vzbid0IGFja25vd2xlZGdlIHBoeSAwIGludGVycnVwdHMuIFRoaXMKICAgIG9mIGNvdXJzZSBzaG91bGQgYmUgZml4ZWQgaW4gTGludXggZHJpdmVyIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyZTQ5NzBkODEwOWQ2OTBhZGNmNjE1ZDllM2NhYzdiNWIyZThlYWVkCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIERlYyAyIDEyOjU5OjUxIDIwMDggLTA2MDAKCiAgICBuZXQ6IEZpeCBkb3dubG9hZCBjb21tYW5kIHBhcnNpbmcKCiAgICBXaGVuIENPTkZJR19TWVNfSFVTSF9QQVJTRVIgaXMgZGVmaW5lZCBuZXR3b3JrIGRvd25sb2FkCiAgICBjb21tYW5kcyB3aXRoIDEgYXJndW1lbnQgaW4gdGhlIGZvcm1hdCAndGZ0cCAiL3BhdGgvZmlsZSInCiAgICBkbyBub3Qgd29yayBhcyBleHBlY3RlZC4gVGhlIGh1c2ggY29tbWFuZCBwYXJzZXIgc3RyaXBzCiAgICB0aGUgcXVvdGVzIGZyb20gIi9wYXRoL2ZpbGUiIHdoaWNoIGNhdXNlcyB0aGUgbmV0d29yawogICAgY29tbWFuZHMgdG8gaW50ZXJwcmV0ICIvcGF0aC9maWxlIiBhcyBhbiBhZGRyZXNzCiAgICBpbnN0ZWFkIG9mIHRoZSBpbnRlbmRlZCBmaWxlbmFtZS4KCiAgICBUaGUgcHJldmlvdXMgY2hlY2sgZm9yIGEgbGVhZGluZyBxdW90ZSBpbiBuZXRib290X2NvbW1vbigpCiAgICB3YXMgcmVwbGFjZWQgd2l0aCBhIGNoZWNrIHdoaWNoIGVuc3VyZXMgb25seSB2YWxpZAogICAgbnVtYmVycyBhcmUgdHJlYXRlZCBhcyBhZGRyZXNzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgM2MyYzJmNDI3OTA1MDQwYzE1MTNkMGM1MWQ2Mzc2ODljYmE0ODM0NgpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUaHUgTm92IDI3IDIyOjMwOjI3IDIwMDggKzAxMDAKCiAgICBSZW1vdmUgbm9uLWFzY2lpIGNoYXJhY3RlcnMgZnJvbSBmYXQgY29kZQoKICAgIFRoaXMgY29kZSBjb250YWlucyBzb21lIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGNvbW1lbnQgbGluZXMgYW5kIGNvZGUuCiAgICBNb3N0IGVkaXRvcnMgZG8gbm90IGRpc3BsYXkgdGhvc2UgY2hhcmFjdGVycyBwcm9wZXJseSBhbmQgZWRpdGluZyB0aG9zZQogICAgZmlsZXMgcmVzdWx0cyBhbHdheXMgaW4gZGlmZnMgYXQgdGhlc2UgcGxhY2VzIHdoaWNoIGFyZSB1c3VhbGx5IG5vdCByZXF1aXJlZAogICAgdG8gYmUgY2hhbmdlZCBhdCBhbGwuIFRoaXMgaXMgZXJyb3IgcHJvbmUuCgogICAgU28sIHJlbW92ZSB0aG9zZSB3ZWlyZCBjaGFyYWN0ZXJzIGFuZCByZXBsYWNlIHRoZW0gYnkgbm9ybWFsIEMtc3R5bGUKICAgIGVxdWl2YWxlbnRzIGZvciB3aGljaCB0aGUgcHJvcGVyIGRlZmluZXMgd2VyZSBhbHJlYWR5IGluIHRoZSBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZGM4ODllODY1MzU2NDk3ZDNlNDk1NTcwMTE4YzIyNDVlYmNlMjYzMQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMjggMjA6MTY6NTggMjAwOCArMDgwMAoKICAgIDg1eHg6IGZpeCB0aGUgd3JvbmcgRERSIHNldHRpbmdzIGZvciBNUEM4NTcyRFMKCiAgICBUaGUgZGVmYXVsdCBERFIgZnJlcSBpcyA0MDBNSHogb3IgODAwTSBkYXRhIHJhdGUsCiAgICB0aGUgb2xkIHNldHRpbmdzIGlzIHB1cmUgd3JvbmcgZm9yIHRoZSBkZWZhdWx0IGNhc2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWRmNTk1MzNmNzdkZTI4MjliNGI2NmU1Yjc2MjBlMDRlZGFhMzkxYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjQgMTA6Mjk6MjYgMjAwOCAtMDYwMAoKICAgIDg1eHg6IGluaXQgZ2QgYXMgZWFybHkgYXMgcG9zc2libGUKCiAgICBNb3ZlZCB1cCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgR0Qgc28gQyBjb2RlIGxpa2Ugc2V0X3RsYigpIGNhbiB1c2UKICAgIGdkLT5mbGFncyB0byBkZXRlcm1pbmUgaWYgd2UndmUgcmVsb2NhdGVkIG9yIG5vdCBpbiB0aGUgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFlZDQ2MWFmODEwMTJhMzk4YTIwNWU5YmU2N2FiMzc2Njc0OTE4MzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI0IDEwOjI5OjI1IDIwMDggLTA2MDAKCiAgICA4NXh4OiBGaXggcmVsb2NhdGlvbiBvZiBDQ1NSQkFSCgogICAgSWYgdGhlIHZpcnR1YWwgYWRkcmVzcyBmb3IgQ0NTUkJBUiBpcyB0aGUgc2FtZSBhZnRlciByZWxvY2F0aW9uIGJ1dAogICAgdGhlIHBoeXNpY2FsIGFkZHJlc3MgaXMgY2hhbmdpbmcgd2UnZCBlbmQgdXAgaGF2aW5nIHR3byBUTEIgZW50cmllcyB3aXRoCiAgICB0aGUgc2FtZSBWQS4gIEluc3RlYWQgd2UgbmV3IHVzIHRoZSBuZXcgQ0NTUkJBUiB2aXJ0IGFkZHJlc3MgKyA0ayBhcyBhCiAgICB0ZW1wIHZpcnQgYWRkcmVzcyB0byBhY2Nlc3MgdGhlIG9sZCBDQ1NSQkFSIHRvIHJlbG9jYXRlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVhMTU0YTE3ODExMzVkODIyZWVkZWU3NTY3Y2MxNTYwODllYWU5M2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI0IDEwOjI1OjE0IDIwMDggLTA2MDAKCiAgICBGU0w6IE1vdmVkIEJSX1BIWVNfQUREUiBmb3IgbG9jYWxidXMgdG8gY29tbW9uIGhlYWRlcgoKICAgIFRoZSBCUl9QSFlTX0FERFIgbWFjcm8gaXMgdXNlZnVsIG9uIGFsbCBtYWNoaW5lcyB0aGF0IGhhdmUgbG9jYWwgYnVzCiAgICB3aGljaCBpcyBwcmV0dHkgbXVjaCBhbGwgODN4eC84NXh4Lzg2eHggY2hpcHMuCgogICAgQWRkaXRpb25hbGx5IG1vc3QgODV4eCAmIDg2eHggd2lsbCBuZWVkIGl0IGlmIHRoZXkgd2FudCB0byBzdXBwb3J0CiAgICAzNi1iaXQgcGh5c2ljYWwgYWRkcmVzc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk0MjdjY2RlMDM1NWEyZWJmNDc0NTRlOGUxYmU1OWY1Yjk4NjRlMDgKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gRGVjIDEgMTM6NDc6MTIgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEFkZCBQT1JERVZTUl9QQ0kxIGRlZmluZQoKICAgIEFkZCBkZWZpbmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgUENJMSBpbnRlcmZhY2UgaXMgaW4gUENJIG9yIFBDSVggbW9kZS4KCiAgICBDb252ZXJ0IHVzZXJzIG9mIHRoZSBvbGQgUE9SREVWU1JfUENJIGNvbnN0YW50IHRvIHVzZSBNUEM4NXh4X1BPUkRFVlNSX1BDSTEKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM1ZGIxYzZkMzRiNTdhZTE1ZTk5Y2YwM2M4ZThmOGE2MTQ4ZDc0ZjMKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAyMSAxOToyNDoyMiAyMDA4IC0wNjAwCgogICAgZHJpdmVycy9mc2xfcGNpX2luaXQ6IEZpeCBpbmJvdW5kIHdpbmRvdyBtYXBwaW5nIGJ1ZwoKICAgIFRoZSBjdXJyZW50IGNvZGUgd2lsbCBjYXVzZSB0aGUgY3JlYXRpb24gb2YgYSA0R0Igd2luZG93CiAgICBzdGFydGluZyBhdCAwIGlmIHdlIGhhdmUgbW9yZSB0aGFuIDRHQiBvZiBSQU0gaW5zdGFsbGVkLAogICAgd2hpY2ggb3ZlcmxhcHMgd2l0aCBQQ0lfTUVNIHNwYWNlIGFuZCBjYXVzZXMgcGNpX2J1c190b19waHlzKCkKICAgIHRvIHJldHVybiBlcnJvbmVvdXMgaW5mb3JtYXRpb24uIExpbWl0IHRoZSBzaXplIHRvIDRHQiAtIDE7CiAgICB3aGljaCBjYXVzZXMgdGhlIGNvZGUgdG8gY3JlYXRlIG9uZSAyR0IgYW5kIG9uZSAxR0Igd2luZG93CiAgICBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVhMTA1YTMzM2RhYjZhMjNlOTJkNzYzY2U3NmQ2ZjMxZDU3ZjQ1ZGYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIwIDE1OjM2OjQ4IDIwMDggLTA2MDAKCiAgICBSZW1vdmVkIHVudXNlZCBDT05GSUdfTDFfSU5JVF9SQU0gc3ltYm9sLgoKICAgIFByZXZlbnQgZnVydGhlciB2aXJhbCBwcm9wb2dhdGlvbiBvZiB0aGUgdW51c2VkCiAgICBzeW1ib2wgQ09ORklHX0wxX0lOSVRfUkFNIGJ5IGp1c3QgcmVtb3ZpbmcgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzAwOGQyNmE0MGE3NmY5MGNhZTU4MjRjODEyY2ZlZDQ0OWZiOTdiOApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMDk6MjE6NDQgMjAwOCAtMDUwMAoKICAgIGZzbCBkZHIgc2tpcCBpbnRlcmxlYXZpbmcgaWYgbm90IHN1cHBvcnRlZC4KCiAgICBSZW1vdmVkIHdoaWxlKDEpIGhhbmcgaWYgbWVtY3RsX2ludGx2X2N0bCBpcyBzZXQgd3JvbmcuCiAgICBSZW1vdmUgZW1iZWRkZWQgdGFicyBmcm9tIHN0cmluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZDMzMmUxOGQwODJkZTc1ZWNhM2ZjMmM3Yzc3OGY1ZDQ1NzFhMDk2CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgTm92IDEzIDE4OjA4OjU3IDIwMDggKzAxMDAKCiAgICA4NXh4OiBzb2NyYXRlczogZml4IEREUiBTRFJBTSB0bGIgZW50cnkgY29uZmlndXJhdGlvbgoKICAgIHNpbmNlIGNvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3CiAgICB0bGIgZW50cnkgZm9yIHNvY3JhdGVzIEREUiBTRFJBTSB3aWxsIGJlIHJlY29uZmlndXJlZAogICAgYnkgc2V0dXBfZGRyX3RsYnMoKSBmcm9tIGluaXRkcmFtKCkgY2F1c2luZyBhbgogICAgaW5jb25zaXN0ZW5jeSB3aXRoIHByZXZpb3VzbHkgY29uZmlndXJlZCBERFIgU0RSQU0gdGxiCiAgICBlbnRyeSBmcm9tIHRsYl90YWJsZToKCiAgICBzb2NyYXRlcz5sMmNhbSA3IDkKICAgIElEWCAgUElECSAgRVBOICBTSVpFIFYgVFMJICAgUlBOIFUwLVUzIFdJTUdFIFVVVVNTUwogICAgICA3IDogMDAgMDAwMDAwMDAgMjU2TUIgViAgMCAtPiAwXzAwMDAwMDAwCTAwMDAgLUktRy0gLS0tUldYCiAgICAgIDggOiAwMCAwMDAwMDAwMCAyNTZNQiBWICAwIC0+IDBfMDAwMDAwMDAJMDAwMCAtLS0tLSAtLS1SV1gKICAgICAgOSA6IDAwIDEwMDAwMDAwIDI1Nk1CIFYgIDAgLT4gMF8xMDAwMDAwMAkwMDAwIC0tLS0tIC0tLVJXWAoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIHByZXNlbmNlIG9mIHRoZSBERFIgU0RSQU0gdGxiIGVudHJ5IGluCiAgICB0aGUgdGxiX3RhYmxlIGRlcGVuZGVudCBvbiBDT05GSUdfU1BEX0VFUFJPTSB0byBhdm9pZCB0aGlzCiAgICBpbmNvbnNpc3RlbmN5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTJjZDUwZWQ2ZWYwYWM2YjEyN2IzZDZkYjc1Njk3OWE4MzM2NzE4ZApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBOb3YgMTEgMTA6MTc6MTAgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEFkZCBDUFUgMiBlcnJhdGEgd29ya2Fyb3VuZCB0byBhbGwgODU0OCBib2FyZHMKCiAgICBBbGwgbXBjODU0OC1iYXNlZCBib2FyZHMgc2hvdWxkIGltcGxlbWVudCB0aGUgc3VnZ2VzdGVkIHdvcmthcm91bmQKICAgIHRvIENQVSAyIGVycmF0YS4gV2l0aG91dCB0aGUgd29ya2Fyb3VuZCwgaXRzIHBvc3NpYmxlIGZvciB0aGUKICAgIDg1NDgncyBjb3JlIHRvIGhhbmcgd2hpbGUgZXhlY3V0aW5nIGEgbXN5bmMgb3IgbWJhciAwIGluc3RydWN0aW9uCiAgICBhbmQgYSBzbm9vcGFibGUgdHJhbnNhY3Rpb24gZnJvbSBhbiBJL08gbWFzdGVyIHRhZ2dlZCB0byBtYWtlCiAgICBxdWljayBmb3J3YXJkIHByb2dyZXNzIGlzIHByZXNlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTU3ZjBmYTEzMzNjZGYzY2EzNjExMGFhYzI5MDA3MTJhNWY4Mjk3NgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTc6NTM6NDUgMjAwOCArMDgwMAoKICAgIDg1eHg6IHRoZSBERFIgdGxiIGlzIG1pc3NlZCBmb3IgdGhlICFDT05GSUdfU1BEX0VFUFJPTSBjYXNlCgogICAgd2UgbmVlZCBUTEIgZW50cnkgZm9yIEREUiBhdCAhU1BEIGNhc2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWIwYWQxYjFjN2ExNWZmNjc0OTc4NzA1YzdjNTIyNjQ5NzhkYzVkOApBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTc6NTM6MzggMjAwOCArMDgwMAoKICAgIDg1eHg6IHJlbW92ZSB0aGUgdW51c2VkIGRkcl9lbmFibGVfZWNjIGluIHRoZSBib2FyZCBmaWxlCgogICAgVGhlIEREUiBjb250cm9sbGVyIG9mIDg1NDgvODU0NC84NTY4Lzg1NzIvODUzNiBwcm9jZXNzb3JzCiAgICBoYXZlIHRoZSBFQ0MgZGF0YSBpbml0IGZlYXR1cmUsIGFuZCB0aGUgbmV3IEREUiBjb2RlIGlzCiAgICB1c2luZyB0aGUgZmVhdHVyZSwgYW5kIHdlIGRvbid0IG5lZWQgdGhlIHdheSB3aXRoIERNQSB0bwogICAgaW5pdCBtZW1vcnkgYW55IG1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGExMjlhNTdkOTIzZjdjMTVhYTFmNTY3MDI4YTgwYTMyZDY2YTEwMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMzAgMTk6MzY6NTMgMjAwOCArMDEwMAoKICAgIGF0OTFybTkyMDBkazogRml4IHR5cG8KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVkM2IxOGUwNWM5YThmZmE1ZmI2NDNkYTliY2VjNzQ1MmU1ZDVlMDEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTm92IDMwIDE5OjM2OjUwIDIwMDggKzAxMDAKCiAgICBBVDkxOiByZW1vdmUgbm9uIHN1cHBvcnRlZCBib2FyZCBBVDkxUk05MjAwREYgbWFjcm8KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJkODc2NzcyZWUwNDA5NWU1ZGQ5NDNkOTc1MTVhMWYxNGJhZDRiMWMKQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgpEYXRlOglUdWUgRGVjIDIgMTc6Mjc6NTQgMjAwOCArMDEwMAoKICAgIG10ZC9kYXRhZmxhc2guYzogZml4IGEgcHJvYmxlbSB3aXRoIHRoZSBsYXN0IHBhcnRpdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBwcm9ibGVtIHRoYXQgb25seSB0aGUgW05CX0RBVEFGTEFTSF9BUkVBIC0gMV0gZGF0YWZsYXNoCiAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgdG8gdXNlIHRoZSBhcmVhIHRvIHRoZSBlbmQgb2YgZGF0YWZsYXNoIHNpemUuCiAgICBOb3cgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBvbmx5IG9uZSBkYXRhZmxhc2ggcGFydGl0aW9uIGZyb20gMCB0byB0aGUgZW5kCiAgICBvZiBvZiBkYXRhZmxhc2ggc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgoKY29tbWl0IDAzZjc5Nzc5M2IxMjRkY2NhYWUxNDViOTc3ZDE1ZDZjYjllNzQ1MDQKQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgpEYXRlOglUdWUgRGVjIDIgMTc6MjA6MTcgMjAwOCArMDEwMAoKICAgIGZpeCBzb21lIGNvZGluZyBzdHlsZSB2aW9sYXRpb25zLgoKICAgIFRoaXMgcGF0Y2ggZml4IHNvbWUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KCmNvbW1pdCA1ZTQ2YjFlNTQxMTJmNGI3ZmQ1MTg1NjY1ZTU3MTUxMDEzMmMxMmE3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDI3IDE0OjExOjM3IDIwMDggKzAxMDAKCiAgICBPbmVOQU5EOiBBZGQgbWlzc2luZyBtdGQgaW5mbyBzdHJ1Y3QgYmVmb3JlIGNhbGxpbmcgb25lbmFuZF9lcmFzZSgpCgogICAgV2l0aG91dCB0aGlzIHBhdGNoICJzYXZlZW52IiBjcmFzaGVzIHdoZW4gTVREIHBhcnRpdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4KICAgIGZvciB1c2UgaW4gVUJJKSB2aWEgQ09ORklHX01URF9QQVJUSVRJT05TLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5MzgyZDQwNjRmYmFmZjVkYWFjZmY0YzMyMDkzNzBmYTU3MTM5NjYKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxNjo0Mzo1MiAyMDA4IC0wNjAwCgogICAgbXBjODY0MTogRml4IGVycm9yIGluIFJFQURNRQoKICAgIEkgbWFkZSBzb21lIHVwZGF0ZXMgdG8gdGhlIGNvZGUgdGhhdCBkaWRuJ3QgbWFrZSBpdCBpbnRvIHRoZQogICAgUkVBRE1FIC0gZml4IHRoaXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MDFhMTk0NjE2ZDk1ZTZmYzQyNmExNzZkOTYxNWNjYmY5ODc2YzdmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxMjowMTowMiAyMDA4IC0wNjAwCgogICAgUmVtb3ZlZCB1bnVzZWQgQ09ORklHX0wxX0lOSVRfUkFNIHN5bWJvbC4KCiAgICBQcmV2ZW50IGZ1cnRoZXIgdmlyYWwgcHJvcG9nYXRpb24gb2YgdGhlIHVudXNlZAogICAgc3ltYm9sIENPTkZJR19MMV9JTklUX1JBTSBieSBqdXN0IHJlbW92aW5nIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY5ODczOGU0NmNiNDYxZTI4YzJkNTgyMjhiYjM0YTJmY2Y1YTQ3NQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMjAgMTQ6MDI6NTYgMjAwOCAtMDYwMAoKICAgIDg2eHg6IEZpeCBub24tNjQtYml0IGNvbXBpbGF0aW9uIHByb2JsZW1zLgoKICAgIEludHJvZHVjaW5nIDY0LWJpdCAoMzYtYml0KSBzdXBwb3J0IGZvciB0aGUgTVBDODY0MUhQQ04KICAgIGZhaWxlZCB0byBhY2NvbW9kYXRlIHRoZSBvdGhlciB0d28gODZ4eCBib2FyZHMuCiAgICBJbnRyb2R1Y2UgZGVmaW5pdGlvbnMgZm9yIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTX3tMT1csSElHSH0KICAgIENPTkZJR19TWVNfQ0NTUl9ERUZBVUxUX0RCQVR7VSxMfSBhbmQgQ09ORklHX1NZU19DQ1NSX0RFRkFVTFRfSUJBVHtVLEx9CiAgICB3aXRoIG5vbWluYWwgMzItYml0IHZhbHVlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJlYmZjNmVmM2VjOTk0YzhlMTg3ODMyNjliMWQ4ZDQxZjhlMzhhZmQKQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVdlZCBOb3YgMjYgMTc6NDA6MzcgMjAwOCArMDEwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBjb21tYW5kIChhcHBseSBhZnRlIFVTQiBzdHlsZSBwYXRjaCwgODAgY2hhcnMgc3RyaWN0KQoKICAgIFJlbW92ZSBVU0Igb2Jzb2xldGUgY29tbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgZGUzOWY4YzE5ZDdjMTIwMTcyNDhjNDlkNDMyZGNiODFkYjY4ZjcyNApBdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KRGF0ZToJV2VkIE5vdiAyNiAxNzo0MTozNCAyMDA4ICswMTAwCgogICAgVVNCIHN0eWxlIHBhdGNoLCA4MCBjaGFycyBzdHJpY3QKCiAgICBVU0IgQ29kZSBzdHlsZSBwYXRjaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KCmNvbW1pdCBkMTBjNWE4N2NiOGFmZmJiNGQzNWEzMTEzNzAzMTZkNDM4M2Q1OThlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE5vdiA3IDIyOjQ2OjIxIDIwMDggKzAxMDAKCiAgICBkcml2ZXJzL3VzYjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Cgpjb21taXQgMjA3N2UzNDhjMmE4NDkwMTAyMmFkOTUzMTFiNDdiNzAzNjFlNmRhYQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI1IDEwOjQ3OjAyIDIwMDggLTA2MDAKCiAgICBOQU5EOiBGaXggbWlzcGxhY2VkIHJldHVybiBzdGF0ZW1lbnQgaW4gbmFuZF97cmVhZCx3cml0ZX1fc2tpcF9iYWQoKS4KCiAgICBUaGlzIGNhdXNlZCB0aGUgb3BlcmF0aW9uIHRvIGJlIG5lZWRsZXNzbHkgcmVwZWF0ZWQgaWYgdGhlcmUgd2VyZQogICAgbm8gYmFkIGJsb2NrcyBhbmQgbm8gZXJyb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OTI5NTAyOGU3ZDhmN2E1MjRmNDg1MzI4Mjc5ZDcyZmRiMTAyMzg1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTm92IDI0IDEyOjA5OjUwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IG1sMzAwIHJlbW92ZSBYaWxpbnggQlNQIGZyb20gbWwzMDAgZm9sZGVyCgogICAgVGhpcyBCU1Agc2hvdWxkIGJlIG91dHNpZGUgdS1ib290IHNvdXJjZSB0cmVlLgogICAgVGhlIHNlY29uZCByZWFzb24gaXMgdGhhdCB4aWxpbnggcHBjNDA1IHdhcyBtb3ZlZCB0byBnZW5lcmljIHBsYXRmb3JtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNGVlYTYyM2Q0OTc0YTE2OTAyNmE5NzViYTEyZmIyM2Q0ODE1NGIxCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBmZWF0dXJlcwoKICAgIFRoaXMgcGF0Y2ggZGlzYWJsZXMgc29tZSB1bnVzZWQgZmVhdHVyZXMgZnJvbSB0aGUgUENJNDA1IGNvbmZpZ3VyYXRpb24KICAgIHRvIGtlZXAgVS1Cb290IGltYWdlIHNpemUgYmVsb3cgMTkyay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwYzIzODVjM2JiNTFmNWQzOTExZmNlMWVjNDcyMGRiODZiNTM0YzJiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MDkgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogVXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciBQQ0k0MDUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNDhjODQ5ZDg2YTZmMDc4NTc1MmI5YmM0OTdhMzQ2NTg3MTNkMWQxCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MDggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gUENJNDA1IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2MzM2Mzk1ODdlMzU5NmYwZGJmNWU2MjQ3ZGQzZmFmODBiMWQ5MDYzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBOb3YgMjAgMDk6NTk6MDkgMjAwOCArMDEwMAoKICAgIHBvd2VycGMsIGtleW1pbGUgYm9hcmRzOiBleHRyYWN0IGlkZW50aWNhbCBjb25maWcgb3B0aW9ucwoKICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMgdGhlIGlkZW50aWNhbCBjb25maWcgb3B0aW9ucyBmb3IgdGhlCiAgICBrZXltaWxlIGJvYXJkcyBtZ2NvZ2UsIG1nc3V2ZCBhbmQga21ldGVyMSBpbiBhIG5ldwogICAgY29tbW9uIGNvbmZpZyBmaWxlIGtleW1pbGUtY29tbW9uLmguCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk0ODJhOGUzZDZhYzc2NmQ5MGU1MDU5ZGNlNzc3YjFlNGM4NjhhMzAKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiAyMSAwODoyOTo0MCAyMDA4ICswMTAwCgogICAgcG93ZXJwYzoga2V5bWlsZTogQWRkIGEgY2hlY2sgZm9yIHRoZSBQSUdHWSBkZWJ1ZyBib2FyZAoKICAgIENoZWNrIHRoZSBwcmVzZW5jZSBvZiB0aGUgUElHR1kgb24gdGhlIGtleW1pbGUgYm9hcmRzIG1nY29nZSwKICAgIG1nc3V2ZCBhbmQga21ldGVyMS4gSWYgdGhlIFBJR0dZIGlzIG5vdCBwcmVzZW50LCBkb250IHJlZ2lzdGVyCiAgICB0aGlzIEV0aGVybmV0IGRldmljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNThjNjk2ZWVkODM5YWY4OTRlMDI2NTA2NDY2OWM0MDJkYzI4YjM3MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHhwZXJ0LmRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjQgMjE6NTA6NTkgMjAwOCArMDEwMAoKICAgIEFUOTFSTTkyMDBESzogZml4IGJyb2tlbiBib290IGZyb20gTk9SIGZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4MDUyMzUyZjIwYjMzYmVmOGY5ODcyZmM5ODNlYWM3M2Q0NjkzYzM4CkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglUdWUgTm92IDE4IDEwOjQ4OjQ2IDIwMDggKzAxMDAKCiAgICBhdDkxcm05MjAwOiBmaXggYnJva2VuIGJvb3QgZnJvbSBub3IgZmxhc2gKCiAgICBUaGlzIHBhdGNoIGZpeCB0aGUgYnJva2VuIGJvb3QgZnJvbSBOT1IgRmxhc2ggb24gQVQ5MVJNOTIwMCBib2FyZHMsIGlmCiAgICBDT05GSUdfQVQ5MVJNOTIwMCBpcyBkZWZpbmVkIGFuZCBub3IgcHJlbG9hZGVyIGlzIHVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgoKY29tbWl0IDI1ZWE2NTJlOTA3NTE2YTI4M2IzODIzN2U4MzcxMmE5MThmMTI1ZDcKQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE5vdiAxNyAxNTo1ODowMCAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgcHJvb2Ytb2YtY29uY2VwdCBDRkkgZmxhc2ggc3VwcG9ydAoKICAgIFdpdGggdGhpcyBwYXRjaCBVQkkgY2FuIGJlIHVzZWQgb24gQ0ZJIGZsYXNoIGNoaXBzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU2YTdlZGJjMTc3OGQyNzQzMWFjNjYzYjQwYTcxZGFmYTVkMjA1NzgKQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE5vdiAxNyAxNTo1Nzo1OSAyMDA4ICswMTAwCgogICAgbXRkOiBSZW1vdmUgYSBwcmludGYoKSBmcm9tIGFkZF9tdGRfZGV2aWNlKCkuCgogICAgUmVtb3ZlIGEgcHJpbnRmKCkgZnJvbSBhZGRfbXRkX2RldmljZSgpLCB3aGljaCBwcm9kdWNlcyBzcHVyaW91cyBvdXRwdXQuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTE4MDllZDUxZDgzMjdhOGRiYmYyOWFhOThhMDkxMTU0YzI4MjE3MQpBdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgpEYXRlOglNb24gTm92IDE3IDE1OjU3OjU4IDIwMDggKzAxMDAKCiAgICBjZmktbXRkOiBBZGQgY2ZpLW10ZCBkcml2ZXIuCgogICAgQWRkIGNmaS1tdGQgZHJpdmVyLCB3aGljaCBleHBvcnRzIENGSSBmbGFzaCB0byBNVEQgbGF5ZXIuCiAgICBUaGlzIGFsbG93cyBDRkkgZmxhc2ggZGV2aWNlcyB0byBiZSB1c2VkIGZyb20gTVREIGxheWVyLgoKICAgIEJ1aWxkaW5nIG9mIHRoZSBuZXcgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYnkgQ09ORklHX0ZMQVNIX0NGSV9NVEQKICAgIG9wdGlvbi4gSW5pdGlhbGl6YXRpb24gaXMgZG9uZSBieSBjYWxsaW5nIGNmaV9tdGRfaW5pdCgpIGZyb20KICAgIGZsYXNoX2luaXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZWE4MDhlZmRmOWFhNWQ5MDY3ZmJmYWMzMmFjZGU4NTM5MTI5ZWQyCkF1dGhvcjogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBOb3YgMTcgMTU6NDk6MzIgMjAwOCArMDEwMAoKICAgIGNmaV9mbGFzaDogQWRkIGludGVyZmFjZSBmb3IgZmxhc2ggdmVyYm9zaXR5IGNvbnRyb2wKCiAgICBBZGQgaW50ZXJmYWNlIGZvciBmbGFzaCB2ZXJib3NpdHkgY29udHJvbC4gSXQgYWxsb3dzCiAgICB0byBkaXNhYmxlIG91dHB1dCBmcm9tIGxvdy1sZXZlbCBmbGFzaCBBUEkuIEl0IGlzIHVzZWZ1bAogICAgd2hlbiBjYWxsaW5nIHRoZXNlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZnJvbSBjb250ZXh0IG90aGVyCiAgICB0aGFuIGZsYXNoIGNvbW1hbmRzIChmb3IgZXhhbXBsZSB0aGUgTVREL0NGSSBpbnRlcmZhY2UKICAgIGltcGxtZW50YXRpb24pLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViYzk3ODRjZTY1MjgzODViYjhkMjU1OGU3ODM2MjJkNGJiZjIwZjgKQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxNToxNzozOCAyMDA4ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBFeHBvcnQgZmxhc2hfc2VjdG9yX3NpemUoKSBmdW5jdGlvbi4KCiAgICBFeHBvcnQgZmxhc2hfc2VjdG9yX3NpemUoKSBmdW5jdGlvbiBmcm9tIGRyaXZlcnMvbXRkL2NmaV9mbGFzaC5jLAogICAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgdXBjb21pbmcgY2ZpLW10ZCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDVhYTVhN2Y0ZDViY2I3OTkyN2RkZmM4OTZjMWQ3YzQzMjZlMjM1ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAxNyAxNDo0NToyMiAyMDA4ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBNYWtlIGFsbCBmbGFzaCBhY2Nlc3MgZnVuY3Rpb25zIHdlYWsKCiAgICBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIGZsYXNoIGFjY2VzcyBmdW5jdGlvbnMgYXMgd2VhayBzbyB0aGF0CiAgICB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGJvYXJkIHNwZWNpZmljIHZlcnNpb25zLgoKICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQgd2hlcmUgdGhlIE5PUgogICAgRkxBU0ggdW5mb3J0dW5hdGVseSBjYW4ndCBiZSBhY2Nlc3NlZCBtZW1vcnktbWFwcGVkLiBTcGVjaWFsCiAgICBhY2Nlc3NvciBmdW5jdGlvbnMgYXJlIG5lZWRlZCBoZXJlLgoKICAgIFRvIGVuYWJsZSB0aGlzIHdlYWsgZnVuY3Rpb25zIHlvdSBuZWVkIHRvIGRlZmluZQogICAgQ09ORklHX0NGSV9GTEFTSF9VU0VfV0VBS19BQ0NFU1NPUlMgaW4geW91ciBib2FyZCBjb25maWcgaGVhZGVyLgogICAgT3RoZXJ3aXNlIHRoZSAib2xkIiBkZWZhdWx0IGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWQgcmVzdWx0aW5nCiAgICBpbiBzbWFsbGVyIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBhNWM0MDY3MDE3NjMxZDkwM2UxYWZhNmFkNjE1ZjBjZTE5ZmVhNTE3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI0IDA4OjMxOjE2IDIwMDggKzAxMDAKCiAgICBVQkk6IENoYW5nZSBwYXJzaW5nIG9mIHNpemUgaW4gY29tbWFuZHMgdG8gZGVmYXVsdCB0byBoZXgKCiAgICBDdXJyZW50bHkgdGhlIHNpemUgcGFyYW1ldGVycyBvZiB0aGUgVUJJIGNvbW1hbmRzIChlLmcuICJ1Ymkgd3JpdGUiKSBhcmUKICAgIGRlY29kZWQgYXMgZGVjaW1hbCBpbnN0ZWFkIG9mIGhleCBhcyBkZWZhdWx0LiBUaGlzIHBhdGNoIG5vdyBpbnRlcnByZXRzCiAgICBhbGwgdGhlc2UgdmFsdWVzIGNvbnNpc3RhbnRseSBhcyBoZXgsIGFzIGFsbCBvdGhlciBzdGFuZGFyZCBVLUJvb3QgY29tbWFuZHMKICAgIGRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZTAxYzc2YzNjY2M0ZTZjNTk4OTIyOGVlZDU4ZTk1NWEzYTFhOTY4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTm92IDIxIDEzOjA2OjA2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1MMiBzaG91bGRuJ3QgaW5jbHVkZSB0aGUgNHh4IEVNQUMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFhNmEwMGRjYzViZGZjNmU5YjRiMDBmMzljMWY1ODNhN2Y5NmZjN2YKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBOb3YgMTQgMTY6MTk6MTkgMjAwOCArMDMwMAoKICAgIHBwYzR4eDoga2F0bWFpOiBDaGFuZ2UgZGVmYXVsdCBjb25maWcKCiAgICAgVGhpcyBwYXRjaCBlbmFibGVzIHN1cHBvcnQgZm9yIEVYVDIsIGFuZCBpbmNyZWFzZXMgdGhlCiAgICBDT05GSUdfU1lTX0JPT1RNQVBTWiBzaXplIGZvciB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCiAgICBvZiB0aGUga2F0bWFpIGJvYXJkcyB0byB1c2UgdGhlbSBhcyB0aGUgUkFJRC1yZWZlcmVuY2UKICAgIEFNQ0Mgc2V0dXBzLgoKICAgICBFWFQyIGVuYWJsaW5nIGFsbG93cyBvbmUgdG8gYm9vdCBrZXJuZWxzIGZyb20gdGhlIEVYVDIKICAgIGZvcm1hdHRlZCBDb21wYWN0IEZsYXNoIGNhcmRzLgoKICAgICBDT05GSUdfU1lTX0JPT1RNQVBTWiBpbmNyZWFzaW5nIGFsbG93cyBvbmUgdG8gYm9vdCB0aGUKICAgIExpbnV4IGtlcm5lbHMsIHdoaWNoIHVzZSBQQUdFX1NJWkUgb2YgMjU2S0IuIE90aGVyd2lzZSwKICAgIHRoZSBtZW1vcnkgYXJlYSB3aXRoIERUQiBmaWxlICh3aGljaCBpcyBwbGFjZWQgYXQgdGhlCiAgICBlbmQgb2YgdGhlIGJvb3RtYXAgYXJlYSkgd2lsbCB0dXJuIG91dCB0byBiZSBvdmVybGFwcGVkCiAgICB3aXRoIHRoZSBCU1Mgc2VnbWVudCBvZiB0aGUgMjU2S0Iga2VybmVsLCBhbmQgemVyb2VkCiAgICBpbiBlYXJseV9pbml0KCkgb2YgTGludXguCgogICAgIEFjdHVhbGx5LCBpbmNyZWFzaW5nIG9mIHRoZSBib290bWFwIHNpemUgY291bGQgYmUgZG9uZQogICAgdmlhIHNldHRpbmcgb2YgdGhlIGJvb3RtX3NpemUgVS1Cb290IHZhcmlhYmxlLCBidXQgaXQgbG9va3MKICAgIGxpa2UgdGhlIGN1cnJlbnQgVS1Cb290IGltcGxlbWVudGF0aW9uIGhhdmUgc29tZSBib290bV9zaXplLQogICAgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGxvc3QuIEluIG1hbnkgcGxhY2VzIHRocm91Z2ggdGhlIFUtQm9vdAogICAgY29kZSB0aGUgQ09ORklHX1NZU19CT09UTUFQU1ogZGVmaW5pdGlvbiBpcyB1c2VkIGRpcmVjdGx5CiAgICAoaW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVhZCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHRoZQogICAgZW52aXJvbm1lbnQpLiBUaGUgc2FtZSBpcyB0cnV0aCBmb3IgdGhlIGJvb3RfanVtcF9saW51eCgpCiAgICBmdW5jdGlvbiBpbiBsaWJfcHBjL2Jvb3RtLmMsIHdoZXJlIFUtQm9vdCB0cmFuc2ZlcnMgY29udHJvbAogICAgdG8gTGludXggcGFzc2luZyB0aGUgQ09ORklHX1NZU19CT09UTUFQU1ogKG5vdCBib290bV9zaXplKQogICAgdmFsdWUgdG8gdGhlIGJvb3Rpbmcga2VybmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRkZjQ1Y2M3NThkMzk0NTkxZmI5YmNkY2JlOTY1MzBmNzMzZjJiY2UKQXV0aG9yOiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2g3MUBnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMjAgMTQ6MDk6NTAgMjAwOCAtMDYwMAoKICAgIHBwYzR4eDogQ2hhbmdlZCA0NjBFWC9HVCBPQ00gVExCIGFuZCBpbnRlcm5hbCBTUkFNIGluaXRpYWxpemF0aW9uCgogICAgRXhwYW5kZWQgT0NNIFRMQiB0byBhbGxvdyBhY2Nlc3MgdG8gNjRLIE9DTSBhcyB3ZWxsIGFzIDI1Nksgb2YKICAgIGludGVybmFsIFNSQU0uCgogICAgQWRqdXN0ZWQgaW50ZXJuYWwgU1JBTSBpbml0aWFsaXphdGlvbiB0byBtYXRjaCB1cGRhdGVkIHVzZXIKICAgIG1hbnVhbCByZWNvbW1lbmRhdGlvbi4KCiAgICBPQ00gJiBJU1JBTSBhcmUgbm93IG1hcHBlZCBhcyBmb2xsb3dzOgoJICAgIHBoeXNpY2FsCSAgICB2aXJ0dWFsCSAgICBzaXplCiAgICBJU1JBTSAgIDB4NF8wMDAwXzAwMDAgICAweEUzMDBfMDAwMCAgICAgMjU2awogICAgT0NNICAgICAweDRfMDAwNF8wMDAwICAgMHhFMzA0XzAwMDAgICAgIDY0awoKICAgIEEgc2luZ2xlIFRMQiB3YXMgdXNlZCBmb3IgdGhpcyBtYXBwaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTWl0Y2hlbGwgPGRtaXRjaDcxQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiMTRjYTRiNjFhNjgxZjc1ZjMxMjU2NzZlMDlkN2NlNmFmNjZlOTI3CkF1dGhvcjogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgpEYXRlOglUaHUgTm92IDIwIDE0OjAwOjQ5IDIwMDggLTA2MDAKCiAgICBwcGM0eHg6IEFkZGVkIHBwYzR4eC1pc3JhbS5oIGZvciBpbnRlcm5hbCBTUkFNIGFuZCBMMiBjYWNoZSBEQ1JzCgogICAgQWRkZWQgaW5jbHVkZS9hc20tcHBjL3BwYzR4eC1pc3JhbS5oIGFuZCBtb3ZlZCBpbnRlcm5hbCBTUkFNIGFuZAogICAgTDIgY2FjaGUgRENScyBmcm9tIHBwYzQ0MC5oIHRvIHRoaXMgbmV3IGhlYWRlci4KCiAgICBBbHNvIGNvbnZlcnRlZCB0aGVzZSBEQ1IgZGVmaW5lcyBmcm9tIGxvd2VyY2FzZSB0byB1cHBlcmNhc2UgYW5kCiAgICBtb2RpZmllZCByZWZlcmVuY2luZyBtb2R1bGVzIHRvIHVzZSB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTWl0Y2hlbGwgPGRtaXRjaDcxQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MTFlMmIyYWY4MjBkMjFkOTkzMWQ0Y2Y4MDU3ZDM4OTQ2MDBmZDU0CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJVGh1IE5vdiAyMCAxNDozNzo1NyAyMDA4IC0wNTAwCgogICAgcHBjNHh4OiBEZWxldGUgdW51c2VkIGRlZmluaXRpb25zIGZvciBTRFIwX0REUkNGRyBmcm9tIHBwYzR4eC5oCgogICAgVGhlIGRlZmluaXRpb25zIG9mIGJpdHMgaW4gU0RSX0NGRyBhcmUgaW5jb3JyZWN0LCBhbmQgbm90IHVzZWQgd2l0aGluCiAgICBVLUJvb3QuICBUaGVyZWZvcmUsIHRoZXkgY2FuIGJlIHJlbW92ZWQuCgogICAgVGhlIG5hbWluZyBvZiB0aGUgc2RyX2RkcmRsL3Nkcl9jZmcgcmVnaXN0ZXJzIGRvIG5vdCBmb2xsb3cgY29udmVudGlvbnMsCiAgICBhbmQgYXJlIHVudXNlZCwgc28gdGhleSBjYW4gYmUgcmVtb3ZlZCB0b28uCgogICAgQSBkZWZpbml0aW9uIGZvciBTRFIwX0REUkNGRyBpcyBhZGRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUyM2M3Yzk1YTk2ZWIwZjA2OGVmZTVjNTMyMjE1YTEwYTE1MTJhOTUKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE5vdiAxMCAyMDoxNToyNSAyMDA4ICswMTAwCgogICAgQVJNOiBPTUFQOiBDb252ZXJ0IElPIG1hY3JvcwoKICAgIENvbnZlcnQgSU8gbWFjcm9zIHRvIHJlYWR4L3dyaXRleC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KCmNvbW1pdCAyNjNiNzQ5ZTJlMjU0NzNhNDg3NzZkMzE3YmQyYTdlMmRkY2RkMjEyCkF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KRGF0ZToJU3VuIE5vdiA5IDE1OjUzOjE0IDIwMDggKzAxMDAKCiAgICBsaWJfYXJtOiBkb19ib290bV9saW51eCgpIC0gY29ycmVjdCBhIHNtYWxsIG1pc3Rha2UKCiAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIGEgc21hbGwgYnVnIGluIHRoZSAiaWYiIGNvbmRpdGlvbjoKICAgIHRoZSBwYXJhbWV0ZXIgImZsYWciIGlzIDAgYW5kIHRoZSAiaWYiIGNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS4KICAgIFRoZSByZXN1bHQgaXMgLSB0aGUgYm9vbSBjb21tYW5kIGRvZXNuJ3Qgc3RhcnQgdGhlIGtlcm5lbC4KICAgIEFmZmVjdGVkIHRhcmdldHM6IGFsbCBhcm0gYmFzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KCmNvbW1pdCAzZTBjZGEwNzFhNjdjYjU3MDllM2ZhNGZhZjZiMzFhNzMxODU5YWNjCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU3VuIE5vdiA5IDAwOjE0OjQ2IDIwMDggKzAxMDAKCiAgICBBVDkxOiBFbmFibGUgUExMQiBmb3IgVVNCCgogICAgQXQgbGVhc3Qgc29tZSAob2xkID8pIHZlcnNpb25zIG9mIHRoZSBBVDkxQm9vdHN0cmFwIGRvIG5vdCBzZXQgdXAgdGhlCiAgICBQTExCIGNvcnJlY3RseSB0byA0OCBNSHogaW4gb3JkZXIgdG8gbWFrZSBVU0IgaG9zdCBmdW5jdGlvbiBjb3JyZWN0bHkuCgogICAgVGhpcyBwYXRjaCBzZXRzIHVwIHRoZSBQTExCIHRvIHRoZSBzYW1lIHZhbHVlcyBMaW51eCB1c2VzLCBhbmQgbWFrZXMgVVNCCiAgICB3b3JrIG9rIG9uIHRoZSBmb2xsb3dpbmcgQ1BVczoKCS0gQVQ5MUNBUDkKCS0gQVQ5MVNBTTkyNjAKCS0gQVQ5MVNBTTkyNjMKCiAgICBUaGlzIHBhdGNoIGFsc28gZGVmaW5lcyBDT05GSUdfVVNCX1NUT1JBR0UgYW5kIENPTkZJR19DTURfRkFUIGZvciBhbGwKICAgIHRoZSByZWxldmFudCBBVDkxQ0FQOS9BVDkxU0FNOSBhdG1lbCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWQyMjlhNDRlMTYyYWYwZjY1ZTU3ZTRlM2RjMTMzZDVmMDM2NGVjYgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CUZyaSBOb3YgNyAxMzo1NToxNCAyMDA4ICswMTAwCgogICAgQVQ5MTogVXNlIEFUOTFfQ1BVX0NMT0NLIGluIGRpc3BsYXlzCgogICAgSW50cm9kdWNlIEFUOTFfQ1BVX0NMT0NLIGFuZCB1c2UgaXQgZm9yIGRpc3BsYXlpbmcgdGhlIENQVQogICAgc3BlZWQgaW4gdGhlIExDRCBkcml2ZXIuCgogICAgQWxzbyBtYWtlIEFUOTFfTUFJTl9DTE9DSyBhbmQgQVQ5MV9NQVNURVJfQ0xPQ0sgcmVmbGVjdCB0aGUKICAgIGNvcnJlc3BvbmRpbmcgYm9hcmQgY2xvY2tzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgZmVkMzZhYzVhZTYxMzc3M2I2Y2Q5MGU2MWUyOTJjNDU0NDBlMTBjOApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgTm92IDIwIDA5OjU3OjQ3IDIwMDggKzAxMDAKCiAgICBwb3dlcnBjOiA4M3h4OiBhZGQgc3VwcG9ydCBmb3IgdGhlIGttZXRlcjEgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGttZXRlcjEgYm9hcmQgZnJvbSBLZXltaWxlLAogICAgYmFzZWQgb24gYSBGcmVlc2NhbGUgTVBDODM2MCBDUFUuCgogICAgLSBzZXJpYWwgY29uc29sZSBvbiBVQVJUIDEKICAgIC0gMjU2IE1CIEREUjIgUkFNCiAgICAtIDY0IE1CIE5PUiBGbGFzaAogICAgLSBFdGhlcm5ldCBSTUlJIE1vZGUgb3ZlciBVQ0M0CiAgICAtIFBIWSBTTVNDIExBTjg3MDAKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjVmYjRlYWFlYWIzZjg4NjYwMjA4MThmNDcyOWQ5OTBkY2M5MWNmMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyMCAxMTo0NjoyMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBDbGVhciBhbGwgcG90ZW50aWFsbHkgcGVuZGluZyBleGNlcHRpb25zIGluIE1DU1IKCiAgICBUaGlzIGlzIG5lZWRlZCBvbiBDYW55b25sYW5kcyB3aGljaCBzdGlsbCBoYXMgYW4gZXhjZXB0aW9uIHBlbmRpbmcKICAgIHdoaWxlIHJ1bm5pbmcgcmVsb2NhdGVfY29kZSgpLiBUaGlzIGxlYWRzIHRvIGEgZmFpbHVyZSBhZnRlciB0cmFwX2luaXQoKQogICAgaXMgbW92ZWQgdG8gdGhlIHRvcCBvZiBib2FyZF9pbml0X3IoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmFjZGFkNWYyNjAyZTg5OWEwMTc0NjkxNmJlZGRiZjllODU2YjVlZQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgTm92IDE5IDEwOjEwOjMwIDIwMDggKzAxMDAKCiAgICBwb3dlcnBjOiA4M3h4OiBhZGQgbWlzc2luZyBUSU1JTkdfQ0ZHMV9DQVNMQVRfKiBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJmMmE1YzM3MTRkMTdmNGVhZDE4YjcxMzEyOGI3MjI2ZTBlODIyZjQKQXV0aG9yOiBIb3dhcmQgR3JlZ29yeSA8R3JlZy5Ib3dhcmRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE5vdiA0IDE0OjU1OjMzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBJbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBERFIgbWVtb3J5CgogICAgbW9kaWZ5IHRoZSBDQVMgdGltaW5ncy4gbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZXNlCiAgICBzZXR0aW5ncyBkZWNyZWFzZSB2YXJpb3VzIHdhaXQgdGltZXMgaW4gdGhlIEREUiBpbnRlcmZhY2UuCiAgICBCZWNhdXNlIHRoZXNlIHdhaXQgdGltZXMgYXJlIGluIGNsb2NrIGN5Y2xlcywgYW5kIHRoZSBERFIKICAgIGNsb2NrIG9uIHRoZSA4MzE1IFJEQiBydW5zIHNsb3dlciB0aGFuIG9uIHNvbWUgb3RoZXIgODN4eAogICAgcGxhdGZvcm1zLCB3ZSBjYW4gZGlhbCBkb3duIHRoZXNlIHZhbHVlcyB3aXRob3V0IGEgcHJvYmxlbSwKICAgIHRoZXJlYnkgZGVjcmVhc2luZyB0aGUgbGF0ZW5jeSBvZiBtZW1vcnkgYSBsaXR0bGUuCgogICAgU2lnbmVkLW9mZi1ieTogSG93YXJkIEdyZWdvcnkgPEdyZWcuSG93YXJkQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MDAwYjA4NmIzM2E1YTgxZjNmMzkwZjM3ZTE3OGRiNzk1NmRjMDhiCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJRnJpIE9jdCAyNCAxNDo1NTozMyAyMDA4ICswMjAwCgogICAgQVJNOiBBZGQgQXBvbGxvbiBVQkkgc3VwcG9ydAoKICAgIFRvIGVuYWJsZSBVQkkgb24gQXBvbGxvbiB5b3UgbmVlZCB0byB1bmNvbW1lbnQgdGhlIENPTkZJR19TWVNfVVNFX1VCSQogICAgbWFjcm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2OTRhMGIzZjFjMGFjY2QwZGU5NGI4OTU1NTE1NWQ2OWY4MDIyODI0CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxMTo0NzowNSAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgVUJJIGNvbW1hbmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGVzZSBVQkkgY29tbWFuZHM6CgogICAgdWJpIHBhcnQgW25hbmR8b25lbmFuZF0gW3BhcnRdIC0gU2hvdyBvciBzZXQgY3VycmVudCBwYXJ0aXRpb24KICAgIHViaSBpbmZvIFtsW2F5b3V0XV0gLURpc3BsYXkgdm9sdW1lIGFuZCBVQkkgbGF5b3V0IGluZm9ybWF0aW9uCiAgICB1YmkgY3JlYXRlW3ZvbF0gdm9sdW1lIFtzaXplXSBbdHlwZV0gLSBDcmVhdGUgdm9sdW1lIG5hbWUgd2l0aCBzaXplCiAgICB1Ymkgd3JpdGVbdm9sXSBhZGRyZXNzIHZvbHVtZSBzaXplIC0gV3JpdGUgdm9sdW1lIGZyb20gYWRkcmVzcyB3aXRoIHNpemUKICAgIHViaSByZWFkW3ZvbF0gYWRkcmVzcyB2b2x1bWUgW3NpemVdIC0gUmVhZCB2b2x1bWUgdG8gYWRkcmVzcyB3aXRoIHNpemUKICAgIHViaSByZW1vdmVbdm9sXSB2b2x1bWUgLSBSZW1vdmUgdm9sdW1lCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OGJlM2ExMDU2ZDg4YzZkMDVmM2U5MTQzODkyODI4MDdlNjk5MjNhCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjozODoyNCAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDgvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0N2FlNjY5M2Y1NGY4MDQ1NWFlMzJjMmUwZDk5NWUwZTRiZGMxNWI5CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjozNjozNiAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDcvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ZTZlZTdhZDI3ZGU1MjE2ZGIxYmFlZjc2ZjM4YzM0MjljOGY0YTJhCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjozMjozNiAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDYvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjOTFhNzE5ZGFhMzMxYjU4NTYxMDkzMTMzNzFlNGVjZTVlYzA2ZDk2CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyODowNiAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDUvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNDEyZmVmYTA3OWM2YWE5YTk3NjNmNjg2OWJmNzg3ZWE2YmY2ZTFiCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyNzoyMyAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDQvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZDI2MmM0ODUzY2I1YjZkZGNlMWEyOGE5NjQxZjJkZTM2ODhkN2VhCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyNjo1NCAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDMvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NjFkZjgzMzYxYWZmOWExNGYyMjYyMTQyMjRlYjhhMDZlMDViYTI0CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyNTo0NCAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDIvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMzk5ZDRhMjgxNzEzZDVlZjJkNzY0ZjA1ZDU0NWZlNjFlM2JkNTY5CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyMzowNiAyMDA4ICswMTAwCgogICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDEvOCkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCiAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQogICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQogICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMjljMjJmNWFiZTZlMGY0YmFhNjI1MWVmZWQ2MDc0Y2RmYzNkYjc5CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KRGF0ZToJV2VkIE5vdiAxOSAxNjoyMDozNiAyMDA4ICswMTAwCgogICAgTVREOiBBZGQgTVREIHBhcml0aW9uaW5nIGluZnJhc3RydWN0dXJlCgogICAgVGhpcyBNVEQgcGFydCBpbmZyYXN0cnVjdHVyZSB3aWxsIGJlIHVzZWQgYnkgdGhlIHVwY29taW5nCiAgICBVQkkgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDliODI3Y2YxNzIwYWNkYTI0NzNhZmE1MTY5NTZlYWI2ZjdjY2E5YTEKQXV0aG9yOiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CkRhdGU6CVRodSBPY3QgMTYgMjI6NTQ6MDMgMjAwOCArMDUzMAoKICAgIEFsaWduIGVuZCBvZiBic3MgYnkgNCBieXRlcwoKICAgIE1vc3Qgb2YgdGhlIGJzcyBpbml0aWFsaXphdGlvbiBsb29wIGluY3JlbWVudHMgNCBieXRlcwogICAgYXQgYSB0aW1lLiBBbmQgdGhlIGxvb3AgZW5kIGlzIGNoZWNrZWQgZm9yIGFuICdlcXVhbCcKICAgIGNvbmRpdGlvbi4gTWFrZSB0aGUgYnNzIGVuZCBhZGRyZXNzIGFsaWduZWQgYnkgNCwgc28KICAgIHRoYXQgdGhlIGxvb3Agd2lsbCBlbmQgYXMgZXhwZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2VsdmFtdXRodWt1bWFyIDxzZWx2YS5tdXRodWt1bWFyQGUtY29uaW5mb3RlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzZjUxMGRiNTIyZDE2MDE3OWRmZjNkZGNjZTliMThmNjI0MWMyYzI0CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMTAgMTk6NDU6MzUgMjAwOCAtMDYwMAoKICAgIG1wYzg2NDE6IGZpeCBhZGRyZXNzLWNlbGxzIGRlZmF1bHQgaW4gb2xkIC5kdHMgZGV0ZWN0aW9uCgogICAgYWRkcmVzcy1jZWxscyBkZWZhdWx0cyB0byAyLCBub3QgMTsgc28gaW4gdGhlIHVubGlrZWx5CiAgICBldmVudCB0aGF0IGl0IGlzbid0IHNwZWNpZmllZCwgdGhpcyBwYXRjaCBpcyByZXF1aXJlZAogICAgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQwMjVhYTRiMjBhMDYxOGEyYmFkYTAxMzJhOWEwYTRhZmI3MTdmMWEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAxNzoxNDozOSAyMDA4IC0wNTAwCgogICAgbGliX3BwYzogTW92ZSB0cmFwX2luaXQgdG8gb2NjdXIgZWFybGllcgoKICAgIERvaW5nIHRyYXBfaW5pdCBpbW1lZGlhdGVseSBvbmNlIHdlJ3JlIHJ1bm5pbmcgZnJvbSBSQU0KICAgIG1lYW5zIHdlJ3JlIG5vIGxvbmdlciBkZXBlbmRlbnQgb24gdGhlIHBoeXNpY2FsIGxvY2F0aW9uIG9mCiAgICB0aGUgZmxhc2ggb24gbm9uLUJvb2tFIHBsYXRmb3Jtcy4gQmVmb3JlIHRyYXBfaW5pdCwgdGhvc2UKICAgIHBsYXRmb3JtcyBzd2l0Y2ggdG8gcmVhbCBtb2RlIGFuZCBnbyB0byAweGZmZjAwMTAwIG9uIGV4Y2VwdGlvbi4KICAgIEFmdGVyIHRoZSBzd2l0Y2gsIHRoZXkgZ28gdG8gMHgwMDAwMDEwMCAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8KICAgIG1vdmUgdGhlIGZsYXNoIGxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ1MjA4MmIxMmM2ZTU0NTcwNWExOTQzM2EyZjQxNDI1MjY1MzYxODkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiA3IDEzOjQ2OjE5IDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBUcnkgdG8gZGV0ZWN0IG9sZCAuZHRzIGZpbGVzCgogICAgU2luY2Ugd2UndmUgY2hhbmdlZCB0aGUgbWVtb3J5IG1hcCBvZiB0aGUgYm9hcmQsIGJlIG5pY2UgYW5kCiAgICBhZGQgc29tZSBjaGVja2luZyB0byB0cnkgdG8gY2F0Y2ggb3V0LW9mLWRhdGUgLmR0cyBmaWxlcy4gIFdlIGRvCiAgICB0aGlzIGJ5IGNoZWNraW5nIHRoZSBDQ1NSQkFSIGxvY2F0aW9uIGluIHRoZSAuZHRzIGFuZCBjb21wYXJpbmcKICAgIGl0IHRvIHRoZSBDQ1NSQkFSIGxvY2F0aW9uIGluIHUtYm9vdC4gIElmIHRoZXkgZG9uJ3QgbWF0Y2gsIGEKICAgIHdhcm5pbmcgbXNnIGlzIHByaW50ZWQuICBUaGlzIGlzbid0IGZvb2xwcm9vZiwgYnV0IGl0J3Mgc2ltcGxlIGFuZAogICAgd2lsbCBjYXRjaCBtb3N0IG9mIHRoZSBjYXNlcyB3aGVyZSBhbiBvdXQtb2YtZGF0ZSAuZHRzIGlzIHByZXNlbnQsCiAgICBpbmNsdWRpbmcgYWxsIG9mIHRoZSBjYXNlcyB3aGVyZSBhIG5ldyB1LWJvb3QgaXMgdXNlZCB3aXRoIGFuIG9sZAogICAgc3RhbmRhcmQgTVBDODY0MSAuZHRzIGZpbGUgYXMgc3VwcGxpZWQgd2l0aCBMaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZGIwNDAwYTI3ODM5ZjkxYzA0N2RjYjgzZjRhMGYwOWUwNTRhMTgwCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgNiAxMzowNDowOSAyMDA4IC0wNjAwCgogICAgdG9wbGV2ZWwgTWFrZWZpbGU6IEFkZCBNUEM4NjQxSFBDTl8zNkJJVCB0YXJnZXQKCiAgICBUaGlzIHdpbGwgZW5hYmxlIENPTkZJR19QSFlTXzM2QklUIGZvciBNUEM4NjQxSFBDTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMTExZDMyYzQ5NGU4MjUxYjkwOTE3NDQ3Nzk2YTcyMDZiNzU3ZTFlCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgNiAxNzozNzozNSAyMDA4IC0wNjAwCgogICAgbXBjODY0MTogU3VwcG9ydCAzNi1iaXQgcGh5c2ljYWwgYWRkcmVzc2luZwoKICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG1lbW9yeSBtYXAgd2l0aCBhbGwgdGhlIGRldmljZXMKICAgIGluIDM2LWJpdCBwaHlzaWNhbCBzcGFjZSwgaW4gYWRkaXRpb24gdG8gdGhlIDMyLWJpdCBtYXAuCiAgICBUaGUgQ0NTUiByZWxvY2F0aW9uIGlzIG1vdmVkIChhZ2Fpbiwgc29ycnkpIHRvCiAgICBhbGxvdyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3MgdG8gYmUgMzYgYml0cyAtIHRoaXMKICAgIHJlcXVpcmVzIHRyYW5zbGF0aW9uIHRvIGJlIGVuYWJsZWQuICBXaXRoIDM2LWJpdCBwaHlzaWNhbAogICAgYWRkcmVzc2luZyBlbmFibGVkLCB3ZSBhcmUgbm8gbG9uZ2VyIHJ1bm5pbmcgd2l0aCBWQT1QQQogICAgdHJhbnNsYXRpb25zLiAgVGhpcyBtZWFucyB3ZSBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KICAgIHRoZSB0d28gaW4gdGhlIGNvbmZpZyBmaWxlLiAgVGhlIGV4aXN0aW5nIHJlZ2lvbiBuYW1lIGlzCiAgICB1c2VkIHRvIGluZGljYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MsIGFuZCBhIF9QSFlTIHZhcmlldHkKICAgIGlzIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZSBwaHlzaWNhbCBhZGRyZXNzLgoKICAgIExhcmdlIHBoeXNpY2FsIGFkZHJlc3NpbmcgaXMgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KICAgIFNldCBDT05GSUdfUEhZU182NEJJVCBpbiB0aGUgY29uZmlnIGZpbGUgdG8gdHVybiB0aGlzIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM3NTlhMDFhMDAyMmRlOTM3OGEzYTc2MWY0OTc4NmY4NzY4NGM5MTYKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA2IDE3OjM2OjA0IDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBDaGFuZ2UgMzItYml0IG1lbW9yeSBtYXAKCiAgICBUaGUgbWVtb3J5IG1hcCBvbiB0aGUgODY0MWhwY24gaXMgbW9kaWZpZWQgdG8gbG9vayBtb3JlIGxpa2UKICAgIHRoZSA4NXh4IGJvYXJkczsgdGhpcyBpcyBhIHN0ZXAgdG93YXJkcyBhIG1vcmUgc3RhbmRhcmRpemVkCiAgICBsYXlvdXQgZ29pbmcgZm9yd2FyZC4gQXMgcGFydCBvZiB0aGlzIGNoYW5nZSwgd2Ugbm93IHJlbG9jYXRlCiAgICB0aGUgZmxhc2guCgogICAgVGhlIHJlZ2lvbnMgZm9yIHNvbWUgb2YgdGhlIG1hcHBpbmdzIHdlcmUgZmFyIGxhcmdlciB0aGFuIHRoZXkKICAgIG5lZWRlZCB0byBiZS4gIEkgaGF2ZSByZWR1Y2VkIHRoZSBtYXBwaW5ncyB0byBtYXRjaCB0aGUKICAgIGFjdHVhbCBzaXplcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLgoKICAgIEluIGFkZGl0aW9uIEkgaGF2ZSByZW1vdmVkIHRoZSBjb21tZW50cyBhdCB0aGUgaGVhZAogICAgb2YgdGhlIEJBVCBibG9ja3MgaW4gdGhlIGNvbmZpZyBmaWxlLCByYXRoZXIgdGhhbiB1cGRhdGluZwogICAgdGhlbS4gIFRoZXNlIGdldCBob3JyaWJseSBvdXQgb2YgZGF0ZSwgYW5kIGl0J3MgYSBzaW1wbGUKICAgIG1hdHRlciB0byBsb29rIGF0IHRoZSBkZWZpbmVzIHRvIHNlZSB3aGF0IHRoZXkgYXJlIHNldCB0bwogICAgc2luY2UgZXZlcnl0aGluZyBpcyByaWdodCBoZXJlIGluIHRoZSBzYW1lIGZpbGUuCgogICAgRG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIHRvIHJlZmxlY3QgdGhlIG5ldyBtYXAsIGFzIHRoaXMKICAgIGNoYW5nZSBpcyB1c2VyIHZpc2libGUsIGFuZCBhZmZlY3RzIHRoZSBPUyB3aGljaCBydW5zIHBvc3QtdWJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmY5YThjMzQzMDllZDkyNzYyNTgyOTVkYjllOTIxMmFhYmIyNTMxYQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzUgMjAwOCAtMDYwMAoKICAgIG1wYzg2eHg6IENoYW5nZSBlYXJseSBGTEFTSCBtYXBwaW5nIHRvIDFNIGF0IENPTkZJR19NT05JVE9SX0JBU0VfRUFSTFkKCiAgICBXZSBkZWZpbmUgQ09ORklHX01PTklUT1JfQkFTRV9FQVJMWSB0byBkZWZpbmUgdGhlIGluaXRpYWwgbG9jYXRpb24KICAgIG9mIHRoZSBib290cGFnZSBpbiBmbGFzaC4JVXNlIHRoaXMgdG8gY3JlYXRlIGFuIGVhcmx5IG1hcHBpbmcKICAgIGRlZmluaXRpb24gZm9yIHRoZSBGTEFTSCwgYW5kIGNoYW5nZSB0aGUgZWFybHlfYmF0cyBjb2RlIHRvIHVzZSB0aGlzLgoKICAgIFRoaXMgIGNoYW5nZSBmYWNpbGl0YXRlcyB0aGUgcmVsb2NhdGlvbiBvZiB0aGUgZmxhc2ggc2luY2UgdGhlIGVhcmx5CiAgICBtYXBwaW5ncyBhcmUgbm8gbG9uZ2VyIHRpZWQgdG8gdGhlIGZpbmFsIGxvY2F0aW9uIG9mIHRoZSBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMWUxY2Y2OTU0N2IxMzgxNzNmODdhN2Y4MWM0MmE1ZDhkYmZkZTNkCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNSAxNDo1NTozNCAyMDA4IC0wNjAwCgogICAgbXBjODZ4eDogVXNlIFNSUjAvMS9yZmkgdG8gZW5hYmxlIGFkZHJlc3MgdHJhbnNsYXRpb24sIG5vdCBibHIKCiAgICBVc2luZyBhIG10bXNyL2JsciBtZWFucyB0aGF0IHlvdSBoYXZlIHRvIGJlIGV4ZWN1dGluZyBhdCB0aGUKICAgIHNhbWUgdmlydHVhbCBhZGRyZXNzIG9uY2UgeW91IGVuYWJsZSB0cmFuc2xhdGlvbi4gIFRoaXMgaXMKICAgIHVubmVjZXNzYXJpbHkgcmVzdHJpY3RpdmUsIGFuZCBpcyBub3QgcmVhbGx5IGhvdyB0aGlzIGlzCiAgICB1c3VhbGx5IGRvbmUuICBDaGFuZ2UgaXQgdG8gdXNlIHRoZSBtb3JlIGNvbW1vbiBtdHNwciBTUlIwL1NSUjEKICAgIGFuZCByZmkgbWV0aG9kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZiZjk4YjEzNjJmMGNiMjM3NjIwMzU1ZWQzZTY3NjJmZmY4MjM4OGQKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjMzIDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBtYWtlIERJQUdfQUREUiA9PSBGTEFTSF9CQVNFCgogICAgQ3VycmVudGx5LCB0aGF0J3Mgd2hhdCBpdCBpcywgYnV0IGl0J3MgaGFyZGNvZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE3MGRlYWNiMWRkYzM5MTY0YmRiNjhmMzk2M2UwYzA0NTZhNTM2OWIKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjMyIDIwMDggLTA2MDAKCiAgICBtcGM4NjQxOiBEcm9wIGltYWdpbmFyeSBzZWNvbmQgZmxhc2ggYmFuaywgbWFwIDhNQgoKICAgIFRoZXJlJ3MgYSBsb3Qgb2Ygc2V0dXAgYW5kIGZvbyBmb3IgdGhlIHNlY29uZCBmbGFzaAogICAgYmFuay4gIFRoZSBwcm9ibGVtIGlzLCB0aGlzIGJvYXJkIGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSBvbmUuCiAgICBDbGVhbiB0aGlzIHVwLiAgQWxzbywgdGhlIGZsYXNoIGlzIDhNIGluIHNpemUuICBHZXQgcmlkCiAgICBvZiB0aGUgY29uZnVzaW5nIGFsaWFzZWQgb3Zlcm1hcHBpbmcsIGFuZCBqdXN0IG1hcCA4TS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZjJkNjYwMjdiZmM2MGRjN2VlYTJmMDk2YWY4ODkxOTg4YzVhYmU0CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNSAxNDo1NTozMSAyMDA4IC0wNjAwCgogICAgbXBjODY0MTogb25seSBkZWZpbmUgQ09ORklHX0VOVl9TSVpFIG9uY2UKCiAgICBJdCdzIGN1cnJlbnRseSBkZWZpbmVkIHR3aWNlIGluc2lkZSBpbiBhbiBpZi9lbHNlIGJsb2NrLCBidXQKICAgIGJvdGggaGFsdmVzIHNldCB0aGUgc2FtZSB2YWx1ZS4gIE1vdmUgdGhlIGRlZmluZSBvdXRzaWRlCiAgICB0aGUgaWYuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjRiZmI0OGMzNWZlZDZhZDFmMDQ3ZTNlNGEyN2RmMzAyNDgyY2Q5MwpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDUgMTQ6NTU6MzAgMjAwOCAtMDYwMAoKICAgIG1wYzg2eHg6IE1vdmUgc2V0dXBfYmF0cyBpbnRvIGNwdV9pbml0X2YKCiAgICBJbiBvcmRlciB0byBsYXRlciBhbGxvdyBmb3IgYSBwaHlzaWNhbCByZWxvY2F0aW9uIG9mIHRoZQogICAgZmxhc2gsIHNldHVwX2JhdHMsIHdoaWNoIHNldHMgdXAgdGhlIGZpbmFsIEJBVCBtYXBwaW5nCiAgICBmb3IgdGhlIGJvYXJkLCBuZWVkcyB0byBoYXBwZW4gKmFmdGVyKiBpbml0X2xhd3MoKS4KICAgIE90aGVyd2lzZSwgdGhlcmUgd2lsbCBiZSBubyB3aW5kb3cgcHJvZ3JhbW1lZCBmb3IgdGhlIGZsYXNoCiAgICBhdCB0aGUgbmV3IHBoeXNpY2FsIGxvY2F0aW9uIGF0IHRoZSBwb2ludCB3aGVuIHdlIGNoYW5nZQogICAgdGhlIG1tdSB0cmFuc2xhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwNWRmM2U1YTYzOGJlOGM1YjA4OTllYWUxNzY2YmJlOGU0YjkyYzE3CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBOb3YgNSAxNDo1NToyOSAyMDA4IC0wNjAwCgogICAgbXBjODY0MTogUmVtb3ZlIGV4dHJhICIwIiBmcm9tIEJSMiBkZWZpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZGYzZmU3ZDM5YTFlZTA3MzUzMTI4YWY1MjIxNDIyY2U5Y2NmYWQ2CkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAwOTowODoxOCAyMDA4IC0wNDAwCgogICAgZHJpdmVycy9xZS91ZWNfcGh5LmM6IEFkZGVkIFBIWS1sZXNzIChmaXhlZCBQSFkpIGRyaXZlci4KCiAgICBDb3BpZWQgb3ZlciB0aGUgZml4ZWQgUEhZIGRyaXZlciBhcyB1c2VkIGluIHBwNHh4LzR4eF9lbmV0LmMuCiAgICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgUEhZLWxlc3MgTUFDIGNvbm5lY3Rpb25zIHRvIHRoZSBVRUMuCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTRiZGNjOWZiNjY3MGFmZGU5YzI2ZGNmMzY0ZjU4Mjg3OWJmMjFkNgpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjMgMTY6Mjc6MjQgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBBZGQgbWlpIGRyaXZlciBpbiBkcml2ZXJzL25ldAoKICAgIEFsbCBDRiBwbGF0Zm9ybXMnIG1paS5jIGFyZSBjb25zb2xpZGF0ZWQgaW50byBvbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyNWE4NTkwNjZiM2FmMTA3MGViNjlmMTIwMjIxMTNjMGE5MWJkODEzCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE9jdCAyNyAyMzo1MzoxNyAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUFBDNHh4IEVNQUMgdG8gY3B1X2V0aF9pbml0KCkKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZDAzYTRlMjBlNTg1NTJjYjk2ZDYxYTBlOGI1NmNkYjZjYzYwMTI2CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIE5vdiA5IDIxOjI5OjIzIDIwMDggLTA4MDAKCiAgICBNb3ZlZCBQUEM0eHggRU1BQyBkcml2ZXIgdG8gZHJpdmVycy9uZXQKCiAgICBBbHNvIGNoYW5nZWQgcGF0aCBpbiBhbGwgbGlua2VyIHNjcmlwdHMgdGhhdCByZWZlcmVuY2UgdGhpcyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NmUyMWY4NmU4MjY2ZWQ0MDc1OWU1NDk1ZWU0NjEyNjVkN2Y2ZDI4CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE9jdCAyNyAyMzo1MDoxNSAyMDA4IC0wNzAwCgogICAgQ2hhbmdlZCBQUEM0eHggRU1BQyBkcml2ZXIgdG8gcmVxdWlyZSBDT05GSUdfUFBDNHh4X0VNQUMKCiAgICBBbGwgaW4tdHJlZSBJQk0vQU1DQyBQUEM0eHggYm9hcmRzIHVzaW5nIHRoZSBFTUFDIGdldCB0aGlzIG5ldyBDT05GSUcKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ZWI3OWJkODg1NmJjYWI4OTZlZDVlMWYxYmNhMTU5ODA3YTEyNGRkCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAyMjowMjo0OSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDOFhYIFNDQyB0byBjcHVfZXRoX2luaXQoKQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTliZWM5NmQ2MzU5YWM5ZjkwYTg1Mjk2MmJmMzA0MGNhZDllMDI1NgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBPY3QgMjIgMjM6NDc6NTEgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE1QQzgyMjAgRkVDIHRvIGNwdV9ldGhfaW5pdCgpCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwZTg0NTRlOTkwMzg1YTU4ZjcwOGMyZmMyNmQzMWFjMDQxYzdhNmM1CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIE9jdCAyMiAyMzozMjo0OCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUUUgRXRoZXJuZXQgY29udHJvbGxlciB0byBjcHVfZXRoX2luaXQoKQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMzQ1NmExNDgyNzZkNTQ5NGI1M2VlNDAyNDJlZmI2NDYyZDE2MzUwNApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBPY3QgMjIgMjM6MjA6MjkgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEZDQyBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdAoKICAgIEFmZmVjdGVkIGJvYXJkczoKCVNldmVyYWwgTVBDOHh4IGJvYXJkcwoJU2V2ZXJhbCBNUEM4MjYwL01QQzgyNzIgYm9hcmRzCglTZXZlcmFsIE1QQzg1eHggYm9hcmRzCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2MmUxNWI0OTdmNWM2MzM0YzA1OTUxMjY3OGM4ZGI3OTQwYWU0YzYxCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAyMjoxNTozNSAyMDA4IC0wNzAwCgogICAgRml4IHR5cG8gaW4gY3B1L21wYzg1eHgvY3B1LmMKCiAgICBDT05GSUdfTVBDODV4eF9GRUMgLT4gQ09ORklHX01QQzg1WFhfRkVDCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1ZGZiM2VlM2Y1NGUyMzgyYTA4ZDcyOTA2ZjBlNzllY2Y5NDRmNmUzCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU3VuIE9jdCAxOSAxMjowODo1MCAyMDA4ICswOTAwCgogICAgbmV0OiBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIEF1MXgwMCBTb0MgZXRoZXJuZXQgTUFDIHRvIGNwdV9ldGhfaW5pdAoKICAgIFRoaXMgcGF0Y2ggd2lsbCBtb3ZlIGF1MXgwMF9ldGhfaW5pdGlhbGl6ZSBmcm9tIG5ldC9ldGguYyB0byBjcHVfZXRoX2luaXQKICAgIGFzIGEgcGFydCBvZiBvbmdvaW5nIGV0aF9pbml0aWFsaXplIGNsZWFudXAgd29yay4gIFRoZSBmdW5jdGlvbiByZXQgdmFsdWUKICAgIGlzIGFsc28gZml4ZWQgYXMgaXQgc2hvdWxkIGJlIG5lZ2F0aXZlIG9uIGZhaWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgY2M5NDA3NGVjYWMxODg1ZDE4ZGRiNjgzZWI5MzRiM2MwMjY4YWE1YgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CUZyaSBTZXAgNSAwMTo1NToyMiAyMDA4IC0wNDAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgSVhQNFhYX05QRSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdCgpCgogICAgQWxzbywgcmVtb3ZlZCB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmMmE3ODA2ZmMyM2U4MmQzMGM4NTQ4OTExMzY5ZTBjNTMwNjA3MzU0CkF1dGhvcjogQ2xpdmUgU3R1YmJpbmdzIDx1Ym9vdEB4ZW50ZWNoLmNvLnVrPgpEYXRlOglNb24gT2N0IDI3IDE1OjA1OjAwIDIwMDggKzAwMDAKCiAgICB4aWxpbnhfZW1hY2xpdGUgYnVmZmVyIG92ZXJydW4KCiAgICBQYXRjaCB0byBmaXggYnVmZmVyIGFsbG9jYXRpb24gc2l6ZSBhbmQgYWxpZ25tZW50LiBCdWZmZXIgbmVlZHMgdG8gYmUgdTMyIGFsaWduZWQgYW5kCiAgICBQS1RTSVpFX0FMSUdOIGJ5dGVzIGxvbmcuCgogICAgQWNrZWQtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDAxMTViMTk1MzcxOGEyOTY5ZjY0NjlkM2Q1ZGE1MWJhMTFlMTJkNDIKQXV0aG9yOiByaWNoYXJkcmV0YW51YnVuIDxyaWNoYXJkcmV0YW51YnVuQHJ1Z2dlZGNvbS5jb20+CkRhdGU6CUZyaSBTZXAgMjYgMDg6NTk6MTIgMjAwOCAtMDQwMAoKICAgIE5FVDogUUU6IFVFQzogTWFrZSB1ZWNfbWlpcGh5X3JlYWQoKSBhbmQgdWVjX21paXBoeV93cml0ZSgpIHVzZSB0aGUgZGV2bmFtZSBhcmcuCgogICAgVGhlIGN1cnJlbnQgdWVjX21paXBoeV9yZWFkIGFuZCB1ZWNfbWlpcGh5X3dyaXRlIGhhcmRjb2RlIGFjY2VzcyBkZXZsaXN0WzBdCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZXNlIGZ1bmN0aW9uIHVzZSB0aGUgZGV2bmFtZSBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCBpbiB0bwogICAgYWxsb3cgYWNjZXNzIHRvIHRoZSBwaHkgcmVnaXN0ZXJzIG9mIG90aGVyIGRldmljZXMgaW4gZGV2bGlzdFtdLgoKICAgIFNpZ25lZC1vZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0NGRjYjczMzIwMzNkYjhkZTI4MTBmMmZmZmNhZTMwODRmMTVjOGQ0CkF1dGhvcjogcmljaGFyZHJldGFudWJ1biA8cmljaGFyZHJldGFudWJ1bkBydWdnZWRjb20uY29tPgpEYXRlOglNb24gT2N0IDYgMTU6MzE6NDMgMjAwOCAtMDQwMAoKICAgIEFkZHMgdHdvIG1vcmUgZXRoZXJuZXQgaW50ZXJmYWNlIHRvIDgzeHgKCiAgICBGaXhlZCBjb21waWxlciB3YXJuaW5nICJkZWNsYXJlZCBidXQgdW51c2VkIiBldGg1X3VlY19pbmZvIGFuZCBldGg2X3VlY19pbmZvLgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ4MDAzZmEwMzczMzkwMWI3M2Q2YzQ2NjdiNGQ4MGZjOGViMWRkZDMKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTm92IDcgMTM6NTQ6MzEgMjAwOCArMDEwMAoKICAgIEFUOTE6IFJlcGxhY2UgQVQ5MV9CQVNFX0VNQUMgYnkgdGhlIGJvYXJkIHNwZWNpZmljIHZhbHVlcy4KCiAgICBBVDkxX0JBU0VfRU1BQyBpcyBuZXZlciB1c2VkIG91dHNpZGUgdGhlIGJvYXJkIHNwZWNpZmljIGZpbGVzLAogICAgc28gcmVwbGFjZSBpdHMgdXNhZ2UgYnkgdGhlIGJvYXJkIHNwZWNpZmljIEFUOTF4eHhfQkFTRV9FTUFDLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGM5MWUxN2FmZmExNzVjZTA2YWZhODliMDQ3NTIzMDFlYjRhNjE2NjYKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTm92IDcgMTI6MDk6MjEgMjAwOCArMDEwMAoKICAgIEFUOTE6IFJlcGxhY2UgKHVuZGVmaW5lZCkgQVQ5MV9JRF9VUyogYnkgdGhlIGJvYXJkIHNwZWNpZmljIHZhbHVlcy4KCiAgICBBVDkxX0lEX1VTMCAvIEFUOTFfSURfVVMxIC8gQVQ5MV9JRF9VUzIgd2VyZSB1c2VkIGJ1dCBuZXZlciBkZWZpbmVkLgogICAgU2luY2UgdGhleSBhcmUgbmV2ZXIgdXNlZCBvdXRzaWRlIHRoZSBib2FyZCBzcGVjaWZpYyBmaWxlcywgdGhleSBjYW4KICAgIGJlIHJlcGxhY2VkIGJ5IHRoZSBib2FyZCBzcGVjaWZpYyBBVDkxeHh4X0lEX1VTMCAvIEFUOTF4eHhfSURfVVMxIC8KICAgIEFUOTF4eHhfSURfVVMyLgoKICAgIEJ1ZyBzcG90dGVkIGJ5IEplc3VzIEFsdmFyZXogPGphbHZhcmV6QG1pY3JvbWludC5jb20+LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI4OTYyZjVhMmRlODFiYzBlZWQxYzBiMDhjNmJmYWExY2MxMzRlYTIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgTm92IDEgMTA6NDc6NTkgMjAwOCArMDEwMAoKICAgIE1ha2VmaWxlL2F0OTFzYW05OiBtb3ZlIHNvbWUgYXQ5MXNhbTkgdG8gdGhlIGNvcnJlY3Qgc3Vic2VjdGlvbiBmb3IgYXJtOTI2ZWpzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxMDc5NDMyZTA0Y2NmNzFhYTM2ODQxODExODYxODJjZDYzNTEyZjE5CkF1dGhvcjogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+CkRhdGU6CUZyaSBPY3QgMzEgMTI6Mjg6NDMgMjAwOCArMDEwMAoKICAgIEN1c3RvbSBBRkVCOTI2MCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBwcm92aWRlcyBzdXBwb3J0IGZvciBBRkVCOTI2MCBib2FyZCwgYSBwcm9kdWN0IG9mCiAgICBPcGVuU291cmNlIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZS4gU29tZSBjb21tZXJ0aWFsIHByb2plY3RzCiAgICBhcmUgbWFkZSB3aXRoIHRoaXMgZGVzaWduLiBBIGJvYXJkIGlzIGJhc2ljYWxseSBBVDkxU0FNOTI2MC1FSwogICAgd2l0aCBzb21lIG1vZGlmaWNhdGlvbnMgYW5kIGRpZmZlcmVudCBwZXJpcGhlcmFscyBhbmQgZGlmZmVyZW50CiAgICBwYXJ0cyB1c2VkLiBNYWluIHB1cnBvc2Ugb2YgdGhpcyBwcm9qZWN0IGlzIHRvIGdhaW4gZXhwZXJpZW5jZSBpbgogICAgaGFyZHdhcmUgZGVzaWduLgogICAgTW9yZSBpbmZvOiBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvYXJtOWZwZ2EtZXZvbHV0aW9uLWJvYXJkCiAgICAoSW4gUnVzc2lhbiBvbmx5LCBzb3JyeSkuCiAgICBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnk6IHN2bjovLzE5NC44NS4yMzguMjIvaG9tZS91c2Vycy9nZW9yZ2Uvc3ZuL2FybTllYgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgoKY29tbWl0IDI2ZWVjZDI0Zjk3MTMwZTU2ZTljMmMyYWYwZTcxNGUwNWJjZTZlMDAKQXV0aG9yOiBUb21vaGlybyBNYXN1YnVjaGkgPHRvbW9oaXJvX21hc3VidWNoaWF0dHJpcGVha3MuY28uanA+CkRhdGU6CVR1ZSBPY3QgMjEgMTM6MTc6MTYgMjAwOCArMDkwMAoKICAgIENoYW5nZSB0byB1c2UgImRvX2RpdiIgbWFjcm8KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb21vaGlybyBNYXN1YnVjaGkgPHRvbW9oaXJvX21hc3VidWNoaUB0cmlwZWFrcy5jby5qcD4KCmNvbW1pdCBlMzUyNDk1MzE4ZDgwNTZhMDBmYWEyMWI2MzNiM2U0Mzc0YmZiZjUyCkF1dGhvcjogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+CkRhdGU6CVdlZCBPY3QgMjIgMTY6MDA6MjYgMjAwOCAtMDQwMAoKICAgIEFSTTkyNkVKLVM6IHJlbG9jYXRlIE9NQVAgc3BlY2lmaWMgJ2NwdWluZm8uYycgaW50byBPTUFQIGRpcmVjdG9yeQoKICAgIE9NQVAgaWRlbnRpZmljYXRpb24gaXMgaW1wbGVtZW50ZWQgaW4gJ2NwdWluZm8uYycgYW5kIGxvY2F0ZWQgaW4gQVJNOTI2RUotUyBkaXJlY3RvcnkuCiAgICBJdCBtYWtlcyBzZW5zZSB0byBwbGFjZSB0aGlzIGZpbGUgaW4gT01BUCBzcGVjaWZpYyBzdWJkaXJlY3RvcnksIGkuZS4gY3B1L2FybTkyNmVqcy9vbWFwCgogICAgU2lnbmVkLW9mZi1ieTogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+Cgpjb21taXQgMjQ4YjJjMzY3MjEwYzA2ZGJkNWZiZGVjZjI3ZTk3ZmJlOWQwNWZkYgpBdXRob3I6IFJvbWFuIE1hc2hhayA8cm9tZXo3NzdAZ21haWwuY29tPgpEYXRlOglUdWUgT2N0IDIxIDAzOjAxOjQxIDIwMDggLTA3MDAKCiAgICBBUk0vVmVyc2F0aWxlIHBvcnQ6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9ucwoKICAgIFJlbW92YWwgb2YgbmV2ZXIgdXNlZCBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+Cgpjb21taXQgMTI2NmRmODg3NzgxYzc3OWRlYWY2ZDA1ZWVhMmVmOTBhNDcwY2IzNApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDMgMTU6NDQ6MDEgMjAwOCAtMDYwMAoKICAgIHBvd2VycGM6IGNoYW5nZSA4Nnh4IFNNUCBib290IG1ldGhvZAoKICAgIFdlIHB1dCB0aGUgYm9vdHBnIGZvciB0aGUgc2Vjb25kYXJ5IGNwdXMgaW50byBtZW1vcnkgYW5kIHVzZQogICAgQlBUUiB0byBnZXQgdG8gaXQuCVRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgY29udmVydGluZyB0byB0aGUKICAgIGVQQVBSIGJvb3QgbWV0aG9kb2xvZ3kuICBBbHNvLCB0aGUgY29kZSBpcyB3cml0dGVuIHRvCiAgICBkZWFsIHByb3Blcmx5IHdpdGggbW9yZSB0aGFuIDRHQiBvZiBSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjU0MzE1NjA2ODJkOGYzMThmYmM0OWRiODdjZmUxM2FiNDFkMmVlNApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMxIDE3OjEzOjQ5IDIwMDggLTA1MDAKCiAgICA4NjQxSFBDTjogQ29uZmlnIGZpbGUgY2xlYW51cAoKICAgIFRoZXJlIGFyZSBzZXZlcmFsIGl0ZW1zIGluIHRoZSBjb25maWcgZmlsZSB0aGF0IHdlcmUgaGFyZGNvZGVkCiAgICBidXQgdGhhdCBzaG91bGQgcmVhbGx5IGJlIGJhc2VkIG9uIG90aGVyIGNvbmZpZyBvcHRpb25zLCBzaW5jZQogICAgdGhlIHJlZ2lvbnMgYXJlIGNvbnRpZ3VvdXMgYW5kIGRlcGVuZCBvbiBiZWluZyBzby4JVGhpcyBjbGVhbnMKICAgIHRoYXQgdXAgYSBiaXQuICBBbHNvLCBhZGQgQlJfUEhZU19BRERSKCkgbWFjcm8gdG8gY29udmVydAogICAgYWRkcmVzc2VzIGludG8gdGhlIHByb3BlciBmb3JtYXQgZm9yIEJSIHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0Yzc3ZGUzZjE0NGNhMDg4YzM4NjdiZDYyNDA3MThjMTBmNWE5ZDY5CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTc6MTM6MzIgMjAwOCAtMDUwMAoKICAgIDg2eHg6IE1ha2UgZHJhbV9zaXplIGEgcGh5c19zaXplX3QKCiAgICBJdCdzIGN1cnJlbnRseSBhIGxvbmcgYW5kIHNob3VsZCBiZSBwaHlzX3NpemVfdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMDQ5OTJmYzU0MTMwMmE2YmFjNzQ0NDhlMDFlN2ZkYWQyMGFiY2EwCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBOb3YgMiAxODoxOTozMiAyMDA4IC0wNjAwCgogICAgcG93ZXJwYyA4Nnh4OiBIYW5kbGUgQ0NTUiByZWxvY2F0aW9uIGVhcmxpZXIKCiAgICBDdXJyZW50bHksIHRoZSBDQ1NSIGdldHMgcmVsb2NhdGVkIHdoaWxlIHRyYW5zbGF0aW9uIGlzCiAgICBlbmFibGVkLCBtZWFuaW5nIHdlIG5lZWQgMiBCQVQgdHJhbnNsYXRpb25zIHRvIGdldCB0byBib3RoIHRoZQogICAgb2xkIGxvY2F0aW9uIGFuZCB0aGUgbmV3IGxvY2F0aW9uLglBbHNvLCB0aGUgREVGQVVMVAogICAgQ0NTUiBsb2NhdGlvbiBoYXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBCQVQgdGhhdCBtYXBzIHRoZQogICAgRkxBU0ggcmVnaW9uLiAgTW92aW5nIHRoZSByZWxvY2F0aW9uIHJlbW92ZXMgdGhpcyB1bm5lY2Vzc2FyeQogICAgZGVwZW5kZW5jeS4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgYW5kIG1vcmUgaW50dXRpdmUgdG8KICAgIG1vZGlmeSB0aGUgYm9hcmQncyBtZW1vcnkgbWFwLgoKICAgIFN3YXAgQkFUcyAzIGFuZCA0IG9uIDg2MTAgc28gdGhhdCBhbGwgODZ4eCBib2FyZHMgdXNlIHRoZSBzYW1lCiAgICBCQVQgZm9yIENDU1Igc3BhY2UuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWY1ZDEwMGU4ZDVjZDQ5ZDY5ZDUyZDIwZjExODFlYjA2ZGRiNGRkZgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMxIDE3OjE0OjE0IDIwMDggLTA1MDAKCiAgICBtcGM4NjQxOiBNYWtlIFBDSSBhbmQgUklPIG11dHVhbGx5IGV4Y2x1c2l2ZSwgZml4IG5vbi1QQ0kgYnVpbGQKCiAgICBZb3UgY2FuJ3QgYWN0dWFsbHkgaGF2ZSBib3RoLCBhbmQgd2l0aCBzb21lIGNvbWluZyBjaGFuZ2VzIHRvCiAgICBjaGFuZ2UgdGhlIG1lbW9yeSBtYXAgZm9yIHRoZSBib2FyZCBhbmQgc3VwcG9ydCAzNi1iaXQgcGh5c2ljYWwsCiAgICB3ZSBuZWVkIHRoZSBleHRyYSBCQVQgdGhhdCBpcyBiZWluZyBjb25zdW1lZCBieSBoYXZpbmcgYm90aC4KCiAgICBJIGFsc28gbWFrZSBub24tUENJIGNvbmZpZ3MgYnVpbGQgY2xlYW5seSwgZm9yIHRoZSBzYWtlIG9mIHNhbml0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ODY5M2I4NWQ0MmZmNDM4Mzc1ZGM2ZDZkY2FkYzcwZWI3YjA1MGJiCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTc6MTQ6MDAgMjAwOCAtMDUwMAoKICAgIG1wYzg2NDE6IFN0b3Agc3VwcG9ydGluZyBub24tUENJX1BOUCBjb25maWdzCgogICAgV2UgZG9uJ3QgYWN0dWFsbHkgZXZlciBkbyB0aGlzLCByZW1vdmUgdGhlIGNvZGUgc28gd2UKICAgIGNhbiBzdG9wIG1haW50YWluaW5nIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU0ZjY5ZDFiZDIxYTEyMDQ5NzQ0OTg5ZDJkZDZiNTE5OWM5YjhmMjMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDI0IDEyOjU5OjEyIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogRml4IE01MzI5RVZCIGFuZCBNNTM3M0VWQiBuYW5kIGlzc3VlCgogICAgRml4IGNvbXBpbGF0aW9uIGlzc3VlIGNhdXNlZCBieSBhIGZldyBtaXNtYXRjaGVzLgogICAgUHJvdmlkZSBwcm9wZXIgbmFuZCBjaGlwIHNlbGVjdCBlbmFibGUvZGlzYWJsZSBpbgogICAgbmFuZF9od2NvbnRyb2woKSByYXRoZXIgdGhhbiBpbiBib2FyZF9uYW5kX2luaXQoKQogICAganVzdCBlbmFibGUgb25jZS4gUmVtb3ZlIHJlZHVuZGFudCBsb2NhbCBuYW5kIGRyaXZlcgogICAgZnVuY3Rpb25zIC0gbmFuZF9yZWFkX2J5dGUoKSwgbmFuZF93cml0ZV9ieXRlKCkgYW5kCiAgICBuYW5kX2Rldl9yZWFkeSgpIHRvIHVzZSBjb21tb24gbmFuZCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYjI3MDg0NDIyMjRhNTUxYTBiODY1YjUyNzEwMzA2MzMzODg4OTMyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyMiAxMTo1NTozMCAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IEZpeCBjb21waWxhdGlvbiBlcnJvcgoKICAgIFRoZSBlcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBjaGFuZ2UgZm9yIHN0cm1oeigpIGluIGNwdS5jLgogICAgQSBmZXcgb2YgdGhlbSB3ZXJlIG9uZSBleHRyYSBjbG9zZSBwYXJlbnRoZXNpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUzNmU3ZGFjMTY3Njk5NTQ5MTVhNDg0ZTY4MmEyZWZiMjg2OTkxMzMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDIyIDExOjM4OjIxIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjUzMDF4IENQVSBhbmQgTTUzMDE3RVZCIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEyMWQwYzJjYzlhZGQ4ODk0ZDk3MWFiNzkxZjQwMzJmMDc3ZGI4MTcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDIxIDE1OjM3OjAyIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIFNCRiBzdXBwb3J0IGZvciBNNTIyNzdFVkIKCiAgICBBZGQgc2VyaWFsIGJvb3Qgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjIwMjgxNmM2MTA0MmMxODNmZTY3ZDA5N2E1ODkzYjBmMmRhZmJhMApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjEgMTQ6MTk6MjYgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBVc2UgQ0ZJIGRyaXZlciBmb3IgTTUyNzJDMwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjM5NjJkM2Y1NzRlNWExY2ZmYWNkNGU5YmM0ODcxMzA2MGEyYTMxNApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjEgMTM6NDc6NTQgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBSZWxvY2F0ZSBGRUMncyBHUElPIGFuZCBtaWkgZnVuY3Rpb25zIHByb3RvY29scwoKICAgIFBsYWNlIEZFQyBwaW4gYXNzaWdubWVudHMgaW4gY3B1X2luaXQuYyBmcm9tIHBsYXRmb3JtJ3MKICAgIG1paS5jCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZTgwZjVhYTA5ZjhkNDFiYWM1MGIzOGRjNzQ4OGVjZDIyMTA3ODAyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyMSAxMjoxNTo0NCAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IFJlbW92ZSBwbGF0Zm9ybXMgbWlpLmMgZmlsZQoKICAgIFdpbGwgdXNlIG1jZm1paS5jIGRyaXZlciBpbiBkcml2ZXJzL25ldCByYXRoZXIgdGhhbgogICAga2VlcCBjcmVhdGluZyBuZXcgbWlpLmMgZm9yIGVhY2ggZnV0dXJlIHBsYXRmb3JtLgogICAgUmVtb3ZlIEVCK01DRi1FVjEyMywgY29icmE1MjcyLCBpZG1yLCBNNTIzNUVWQiwKICAgIE01MjcxRVZCLCBNNTI3MkMzLCBNNTI3NUVWQiwgTTUyODJFVkIsIE01MzI5RVZCLAogICAgTTUzNzNFVkIsIE01NDQ1MUVWQiwgTTU0NDU1RVZCLCBNNTQ3eEVWQiwgYW5kIE01NDh4RVZCJ3MKICAgIG1paS5jCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwMTI1MjJmZWYzYjM4MjQ2OTEyNWJlYjQ2YTMxNWFiNGRlZTAyZmIwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyMSAxMDowMzowNyAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IE1vZHVsZXMgaGVhZGVyIGZpbGVzIGNsZWFudXAKCiAgICBDb25zb2xpZGF0ZSBBVEEsIGVQT1JULCBRU1BJLCBGbGV4Q2FuLCBQV00sIFJORywKICAgIE1ESEEsIFNLSEEsIElOVEMsIGFuZCBGbGV4QnVzIHN0cnVjdHVyZXMgYW5kCiAgICBkZWZpbml0aW9ucyBpbiBpbW1hcF81eHh4LmggdG8gbW9yZSB1bmlmeSBtb2R1bGVzCiAgICBoZWFkZXIgZmlsZXMuIEFwcGVuZCBEU1BJIHN1cHBvcnQgZm9yIG01NDd4Xzh4LgogICAgU1NJIGNsZWFudXAuIFJlbW92ZSBVU0IgSG9zdCBzdHJ1Y3R1cmUgZnJvbSBpbW1hcF81MzkuaC4KICAgIEFwcGx5IGNoYW5nZXMgdG8gdXNlIEZsZXhCdXMgc3RydWN0dXJlcyBpbiBtY2Y1MngyJ3MKICAgIGNwdV9pbml0LmMgYW5kIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYzIzMzFhZWU5OWFkMzZiZTBmY2ZlZDhjNDk5MjJlM2M2MWI1NzZkCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyMSAwODo1MjozNiAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IFJlbW92ZSBsaW5rZXIgZmlsZQoKICAgIEVhY2ggZGlmZmVyZW50IGJ1aWxkIGZvciBNNTQ0NTVFVkIgYW5kIE01MjM1RVZCIHdpbGwKICAgIGNyZWF0ZSBhIHUtYm9vdC5sZHMgbGlua2VyIGZpbGUuIEl0IGlzIHJlZHVuZGFudCB0bwogICAga2VlcCB0aGUgdS1ib290LmxkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDgyOTMyMzA3M2M1MDU1NTZlZDVmNTA3M2Y5MWFkYjUwNDU4NGQ0NQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTE6MjY6NDQgMjAwOCAtMDUwMAoKICAgIHBwYzogRml4IGNvbXBpbGUgd2FybmluZ3Mgd2hlbiAhQ09ORklHX09GX0xJQkZEVAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgYTgwYjIxZDUxMjc1ODMxNzFkNmU5YmM3ZjcyMjk0NzY0MTg5ODAxMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMTI6MTI6MTIgMjAwOCArMDEwMAoKICAgIGNvbW1vbi9NYWtlZmlsZTogY3JlYXRlIG90aGVycyBncm91cCBmb3Igbm9uIGNvcmUsIGVudmlyb25tZW50IGFuZCBjb21tYW5kIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2MGM2OGQ5YzFjNmQxOGNlMDJjODYyYTA1NzE4ZmQ5NGY5N2MxM2QwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAzMSAwMToxMzozNyAyMDA4ICswMTAwCgogICAgVFFNODI2MDogdXNlIENGSSBmbGFzaCBkcml2ZXIgaW5zdGVhZCBvZiBjdXN0b20gZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjBkMDQ3NzRmNGVmM2Y2ZTM4OTc0NjM2ZTBlMzZhZTBmMGI1NTAxZgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAxNzozNTozMCAyMDA4IC0wNTAwCgogICAgQ29uc29saWRhdGUgTUFYL01JTiBkZWZpbml0aW9ucwoKICAgIFRoZXJlIHdlcmUgc2V2ZXJhbCwgbm93IHRoZXJlIGlzIG9uZSAodHdvIGlmIHlvdSBjb3VudCB0aGUgbG93ZXItY2FzZQogICAgdmVyc2lvbnMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyOThlNDc2YzY2ZmQ4OGQwYmM0ZjAzNzExMTg2NTJkMmI1ZGU0ZThhCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVRodSBPY3QgMzAgMDk6MjM6MDkgMjAwOCArMDEwMAoKICAgIG1nc3V2ZDogcmVtb3ZlIHVudXNlZCBkZWZpbmVzIGluIGNvbmZpZyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDNjYmQ4MjMxMTZlYThiN2M2NTRlMjc1YThjMmZjYTg3Y2QxZjVkYzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTm92IDIgMTY6MTQ6MjIgMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNDdmOTU3YWI1MjMwMTk5OTJmZGVmODU3YWYwMWJkNzFjNThhNGRhCkF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAyMjozMzoyMSAyMDA4ICswMTAwCgogICAgTkFORDogQWxsb3cgTkFORCBhbmQgT25lTkFORCB0byBjb2V4aXN0CgogICAgVGhpcyByZW1vdmVzIGluIG5hbmQuaCBjb2RlIHRoYXQgaXMgdmVyYmF0aW0gZHVwbGljYXRlZCBmcm9tIGJibS5oLAogICAgaW5jbHVkaW5nIGRpcmVjdGx5IGJibS5oIGluIG5hbmQuaC4gVGhlIHByZXZpb3VzIHN0YXRlIG9mIGFmZmFpcnMKICAgIHByZXZlbnRlZCBjb21waWxpbmcgY29kZSBmb3IgYSBib2FyZCBob3N0aW5nIGJvdGggTkFORCBhbmQgT25lTkFORCBjaGlwcy4KCiAgICBSZXBvcnRlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmY3N2M3ZjQ1YjlhMzdlZjI2NWE4ZGJlM2MxOGVmYTcwNmZlZDIxNApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMxIDEzOjUxOjEyIDIwMDggLTA1MDAKCiAgICBKRkZTMjogRWxpbWluYXRlIGNvbXBpbGVyIGVycm9yIHdoZW4gYm90aCBOQU5EIGFuZCBPbmVOQU5EIGFyZSBlbmFibGVkLgoKICAgIFJlcG9ydGVkLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzU3ZmMyODk0N2UyNDhmYjAzYzQ5YTI4YjQ2NzY4NjI5OTg5NTA1NQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMzEgMDU6MDc6MDQgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IEFkZCBOQU5EIHN1cHBvcnQgZm9yIE1QQzg1MzZEUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyAxTSBUTEImTEFXIHNpemUgZm9yIE5BTkQgb24gTVBDODUzNkRTLCBhc3NpZ25zIDB4ZmZhMDAwMDAKICAgIGZvciBDT05GSUdfU1lTX05BTkRfQkFTRSBhbmQgYWRkcyBvdGhlciBOQU5EIHN1cHBvcnRzIGluIGNvbmZpZyBmaWxlLgogICAgSXQgYWxzbyBtb3ZlcyBlbnZpcm9ubWVudChDT05GSUdfRU5WX0FERFIpIG91dHNpZGUgb2YgdS1ib290IGltYWdlLgoKICAgIFNpbmdlZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2ZmMxMTBiZDhhOGQ2NDJiOGY3YjA2NTNiZDlhMDhhMGI3YzNkNTBiCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzMSAwNTowNjoxNCAyMDA4IC0wNTAwCgogICAgTkFORDogRml4IENPTkZJR19FTlZfQUREUiBmb3IgTVBDODU3MkRTCgogICAgQ09ORklHX0VOVl9BRERSIHNob3VsZCBiZSAoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLSBDT05GSUdfRU5WX1NFQ1RfU0laRSkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTFiNTcyYTgwMWJlNTc3OTBmZTI2YWRhYTUzMDIxMGU3ZmJhNTljYwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAxMDo0OTo0OCAyMDA4ICswOTAwCgogICAgc2g6IHJzazcyMDM6IE1vdmVkIHJzazcyMDMgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA1ODQ1M2IwMGIzZWJiMjZhYWE5MDEyMTAwMjNmOTk1MDRhOTBiYjAwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjQ4OjMxIDIwMDggKzA5MDAKCiAgICBzaDogTWlnb1I6IE1vdmVkIE1pZ29SIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzFkYTJhMjI4MTdiYTg1YjQzN2FmYTJmNGU3MTVlNjU4YjIxOWZkMQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJRnJpIE9jdCAyNCAxMDozOTo0NCAyMDA4ICswOTAwCgogICAgc2g6IHIyZHBsdXM6IE1vdmVkIHIyZHBsdXMgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3ODM4NWJmMjM1OWQ4MjgxODRkMGIzNjQ5ZjdhZTZiOTMzNDIwMDAwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjM2OjEzIDIwMDggKzA5MDAKCiAgICBzaDogc2g3NzYzcmRwOiBNb3ZlZCBzaDc3NjNyZHAgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjNjUyNWQ0NTljMzUwYmZjMjQ2ZWE3ODI2NDU2YWY3N2UxZTMxNGViCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjM1OjE5IDIwMDggKzA5MDAKCiAgICBzaDogc2g3Nzg1bGNyOiBNb3ZlZCBzaDc3ODVsY3IgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhY2QzZTMwZDA5YTczZjg3NjIyMmYwZDQ5NmM0ZjUyZWU5ZDA3NzFkCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgT2N0IDI0IDEwOjM0OjIxIDIwMDggKzA5MDAKCiAgICBzaDogcjc3ODBtcDogTW92ZWQgcjc3ODBtcCBib2FyZCB0byBib2FyZC9yZW5lc2FzCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGY4NGU2ZWEyNzUzNTNiOGZlYTc3MmVjNzU1M2ZmN2U0YjFmNjQyZTAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CUZyaSBPY3QgMjQgMTA6MzI6MTQgMjAwOCArMDkwMAoKICAgIHNoOiBhcDMyNXJ4YTogTW92ZWQgYXAzMjVyeGEgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA5YWJkYTZiYTczNWVmYjA1OWY2M2RjYjI1ZDc4YjE3NGJmY2FkMWFkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAzMSAwMToxMjoyOCAyMDA4ICswMTAwCgogICAgQ0ZJIERyaXZlcjogRml4ICJmbGFzaCBub3QgcmVhZHkiIHByb2JsZW0KCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBOT1IgZmxhc2ggaXMgYXR0YWNoZWQKICAgIHRvIGEgNjQgYml0IGJ1cy4gIFRoZSB0b2dnbGUgYml0IGRldGVjdGlvbiBpbiBmbGFzaF90b2dnbGUoKSBpcyBiYXNlZAogICAgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgc2FtZSBmbGFzaCBhZGRyZXNzIGlzIHJlYWQgdHdpY2Ugd2l0aG91dAogICAgYW55IG90aGVyIGludGVyamFjZW50IGZsYXNoIGFjY2Vzc2VzLiAgSG93ZXZlciwgb24gMzIgYml0IHN5c3RlbXMgdGhlCiAgICBmdW5jdGlvbiBmbGFzaF9yZWFkNjQoKSBbYXMgY3VycmVudGx5IGltcGxlbWVudGVkXSBkb2VzIG5vdCBwZXJmb3JtCiAgICBhbiBhdG9taWMgNjQgYml0IHJlYWQgLSBpbnN0ZWFkLCB0aGlzIGlzIGJyb2tlbiBkb3duIGludG8gdHdvIDMyIGJpdAogICAgcmVhZCBhY2Nlc3NlcyBvbiBhZGRyZXNzZXMgImFkZHIiIGFuZCAiYWRkciArIDQiLiAgU28gaW5zdGVhZCBvZgogICAgcmVhZGluZyBhIDY0IGJpdCB2YWx1ZSB0d2ljZSBmcm9tICJhZGRyIiwgd2Ugc2VlIGEgc2VxdWVuY2Ugb2YgNCAzMgogICAgYml0IHJlYWRzIGZyb20gImFkZHIiLCAiYWRkciArIDQiLCAiYWRkciIsIGFuZCAiYWRkciArIDQiLglUaGUKICAgIGNvbnNlcXVlbmNlIGlzIHRoYXQgZmxhc2hfdG9nZ2xlKCkgZmFpbHMgdG8gd29yay4KCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzaW1wbGUsIGJ1dCBzb21ld2hhdCB1Z2x5IHNvbHV0aW9uLCBhcyBpdAogICAgYXZvaWRzIHRoZSB1c2Ugb2YgZmxhc2hfcmVhZDY0KCkgaW4gdGhpcyBjcml0aWNhbCBwbGFjZSAoYnkgYnJlYWtpbmcKICAgIGl0IGRvd24gbWFudWFsbHkgaW50byAzMiBiaXQgcmVhZCBvcGVyYXRpb25zKSBpbnN0ZWFkIG9mIHJld3JpdGluZwogICAgZmxhc2hfcmVhZDY0KCkgc3VjaCB0byBwZXJmb3JtIGF0b21pYyA2NCBiaXQgcmVhZHMgYXMgb25lIGNvdWxkCiAgICBleHBlY3QuICBIb3dldmVyLCBzdWNoIGEgcmV3cml0ZSB3b3VsZCByZXF1aXJlIHRoZSB1c2Ugb2YgZmxvYXRpbmcKICAgIHBvaW50IGxvYWQgb3BlcmF0aW9ucywgd2hpY2ggYmVjb21lcyBwcmV0dHkgY29tcGxleDoKCglzYXZlIE1TUjsKCXNldCBGbG9hdGluZyBQb2ludCBFbmFibGUgYml0IGluIE1TUjsKCXVzZSAibGZkIiBpbnN0cnVjdGlvbiB0byBwZXJmb3JtIGF0b21pYyA2NCBiaXQgcmVhZDsKCXVzZSAic3RmZCIgdG8gc3RvcmUgdmFsdWUgdG8gdGVtcG9yYXJ5IHZhcmlhYmxlIG9uIHN0YWNrOwoJbG9hZCB1NjQgdmFsdWUgZnJvbSB0ZW1wb3JhcnkgdmFyaWFibGU7CglyZXN0b3JlIHNhdmVkIE1TUjsKCXJldHVybiB1NjQgdmFsdWU7CgogICAgVGhlIGJlbmVmaXQtY29zdCByYXRpbyBvZiBzdWNoIGFuIGltcGxlbWVudGF0aW9uIHdhcyBjb25zaWRlcmVkIHRvbwogICAgYmFkIHRvIGFjdHVhbGx5IGF0dGVtcHQgdGhpcywgZXNwZWNpYWxseSBhcyB3ZSBjYW4gZXhwZWN0IHRoYXQgc3VjaAogICAgYW4gaW1wbGVtZW50YXRpb24gd291bGQgbm90IG9ubHkgaGF2ZSBhIGJpZ2dlciBtZW1vcnkgZm9vdHByaW50IGJ1dAogICAgYWxzbyBjYXVzZSBhIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2RkNGZlNjNiMDk0ZDRiNzY3ZjEyZmYyNDFkNzI1NjZiNDYxZWU2MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAzMSAxMDo0ODowOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggc3BlbGxpbmcgZXJyb3IgaW4gTUFJTlRBSU5FUlMgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiZTI3MDc5ODkwMGI3NWFkOWM0N2M3Yjc5YzcyZjcwNDQxMTk2YzU2CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTM6Mzc6MDAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIFBNQzQ0MCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBicmluZ3MgUE1DNDQwIGJvYXJkIHN1cHBvcnQgdXAgdG8gZGF0ZToKCiAgICAtIGZpeCBHUElPIGNvbmZpZ3VyYXRpb24KICAgIC0gYWRkIG1pc2NfaW5pdF9mKCkKICAgIC0gdXNlIGJldHRlciB2YWx1ZXMgZm9yIHVzYmFjdCB2YXJpYWJsZQogICAgLSBmaXggVVNCIDIuMCBwaHkgcmVzZXQgc2VxdWVuY2UKICAgIC0gc2hyaW5rIEJBUjIgdG8gc2F2ZSBQQ0kgYWRkcmVzcyBzcGFjZQogICAgLSBhZGQgRkRUIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTE4M2IxYTdmYzA0MjA2ZDk3NzlkMTNmMTZlMDM4NTNkN2U5NjVkCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTM6MzY6NTkgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IFBNQzQ0MCBCU1AgY29tbWFuZHMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBQTUM0NDAgQlNQIGNvbW1hbmRzIHBhaW5pdCBhbmQgc2VsZnJlc2V0CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzZiNTY1YjY5Zjg4NmQ1YWU3NDhkYjY1ZTQ0ZjQ2NGIwZTcwZDQxYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgT2N0IDI4IDEzOjM2OjU4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBQTUM0NDAgYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNhMGMyZDQyYjkzMTE2YThlMWI4ZWY4YWQ0NDkzYzdkYzliNWYyZTQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1NyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggZXNkIGxvYWRwY2kgY29tbWFuZAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgZXNkJ3MgbG9hZHBjaSBjb21tYW5kIHdoZW4gbm90IGFsbAogICAgbWVtb3J5IG9uIGFkYXB0ZXIgYm9hcmRzIGlzIGFjY2Vzc2FibGUgdmlhIFBDSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0OTJhYTllYTEzNzkxY2E0NTkxYjViZGU4OTVhNDI1ZTI3YWUyZDEwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTM6MzY6NTYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ2xlYW4gdXAgUE1DNDQwIGhlYWRlcgoKICAgIC1Db2RpbmdzdHlsZSBjbGVhbnVwCiAgICAtUmVtb3ZlIHVudXNlZCBHUElPIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI5NTEzMzI1OGE0NGY5N2E1N2ZiMmVjMzM5YWVjZmRhMTFmNGRiOTUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1NSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBIYW5kbGUgb3RoZXIgYm9hcmQgdmFyaWFudCBpbiBQTUM0NDAgRlBHQSBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2MyZGM5YjA4Y2Y3YzA5ZjlmMjM3ZjhjYjkzMDNmMTE2MDNkNGZiMApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglNb24gT2N0IDI3IDEyOjM1OjU5IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1lcmdlIHhpbGlueC1wcGM0NDAgYW5kIHhpbGlueC1wcGM0MDUgY2ZnCgogICAgWGlsaW54IHBwYzQ0MCBhbmQgcHBjNDA1IGhhdmUgbWFueSBzaW1pbGFyaXRpZXMuIFRoaXMgcGF0Y2ggbWVyZ2UgdGhlCiAgICBjb25maWcgZmlsZXMgb2YgYm90aCBpbmZyYXN0dWN0dXJlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNiZWZkODU2MzNkMzNjNGRjY2ExZjM1OWMzZjQ4NDhjNWFiOGU0ZDIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjUgMDY6NDU6MzEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29ycmVjdGx5IGNvbmZpZ3VyZSB0aGUgR1BJTyBwaW4gbXV4aW5nIG9uIEFyY2hlcwoKICAgIEFyY2hlcyBkb2Vzbid0IHVzZSBQZXJDUzMgYnV0IEdQSU80Mywgc28gbGV0J3MgY29uZmlndXJlIHRoZSBHUElPCiAgICBwaW4gbXVsdGlwbGV4aW5nIGNvcnJlY3RseQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3Yzg0ZmU2YTA2ZGFkOWY3OTNlZDg1YjM5YjFlNmMxMWE3ODgyZjVjCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE9jdCAzMCAyMzoyMjowNCAyMDA4ICswMTAwCgogICAgRml4IHRvIHRoZSBhdXRvLXVwZGF0ZSBmZWF0dXJlIGRvY3VtZW50YXRpb24gKENPTkZJR19VUERBVEVfVEZUUF9NU0VDX01BWCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRiYzdkZWVlOTA5NWYyMWUyNDNiNzI0Y2EzZDYzNDI1MWMxZDU0MzIKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJV2VkIE9jdCAyOSAyMzoyNzo0NSAyMDA4IC0wNTAwCgogICAgbGliZmR0OiBGaXggYnVnIGluIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkKCiAgICBUaGVyZSdzIGN1cnJlbnRseSBhbiBvZmYtYnktb25lIGJ1ZyBpbiBmZHRfc3Vibm9kZV9vZmZzZXRfbmFtZWxlbigpCiAgICB3aGljaCBjYXVzZXMgaXQgdG8ga2VlcCBzZWFyY2hpbmcgYWZ0ZXIgaXQncyBmaW5pc2hlZCB0aGUgc3Vibm9kZXMgb2YKICAgIHRoZSBnaXZlbiBwYXJlbnQsIGFuZCBpbnRvIHRoZSBzdWJub2RlcyBvZiBzaWJsaW5ncyBvZiB0aGUgb3JpZ2luYWwKICAgIG5vZGUgd2hpY2ggY29tZSBhZnRlciBpdCBpbiB0aGUgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjI0MmEwODg3MTgzOWVhYzA4MWJhNWI1OTlhZjk3OWYzYTE0OGEwZApBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CkRhdGU6CVR1ZSBPY3QgMjggMDg6MjY6NTIgMjAwOCArMDEwMAoKICAgIGZkdF9yZXNpemUoKTogZW5zdXJlIG1pbmltdW0gcGFkZGluZwoKICAgIGZkdF9hZGRfbWVtX3JzdigpIHJlcXVpcmVzIHNwYWNlIGZvciBhIHN0cnVjdCBmZHRfcmVzZXJ2ZV9lbnRyeQogICAgKDE2IGJ5dGVzKSwgc28gbWFrZSBzdXJlIHRoYXQgZmR0X3Jlc2l6ZSBhdCBsZWFzdCBhZGRzIHRoYXQgbXVjaAogICAgcGFkZGluZywgbm8gbWF0dGVyIHdoYXQgdGhlIGxvY2F0aW9uIG9yIHNpemUgb2YgdGhlIGZkdCBpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNjg1Yjc0YzY0YTM4ODQ5ZjFhMTI5YjNhYjg0NmZiZjY3ZGQ5MzdlCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAyMTo1OTozNSAyMDA4ICswODAwCgogICAgNzR4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKCiAgICBUaGUgcGF0Y2ggaXMgZm9sbG93aW5nIHRoZSBjb21taXQgMzkyNDM4NDA2MDQxNDE1ZmU2NGFiODc0OGVjNWFiNWFkMDFkMWNmNwoKICAgIG1wYzg2eHg6IHVzZSByNCBpbnN0ZWFkIG9mIHIyIGluIGxvY2tfcmFtX2luX2NhY2hlIGFuZCB1bmxvY2tfcmFtX2luX2NhY2hlCgogICAgVGhpcyBpcyBuZWVkZWQgaW4gdW5sb2NrX3JhbV9pbl9jYWNoZSgpIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gQyBhbmQKICAgIHdpbGwgY29ycnVwdCB0aGUgc21hbGwgZGF0YSBhcmVhIGFuY2hvciB0aGF0IGlzIGtlcHQgaW4gUjIuCgogICAgbG9ja19yYW1faW5fY2FjaGUoKSBpcyBtb2RpZmllZCBzaW1pbGFybHkgYXMgZ29vZCBjb2RpbmcgcHJhY3RpY2UsIGJ1dAogICAgaXMgbm90IGNhbGxlZCBmcm9tIEMuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CgogICAgYWxzbywgdGhlIHIyIGlzIHVzZWQgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUwNTNhYjE5MDNjY2FlNjA0OGVmNzU5MDI1YjlmNjc1YmJhOTE0NTAKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxMTo0NTowNCAyMDA4IC0wNTAwCgogICAgbXBjODN4eCBwY2k6IFJvdW5kIHVwIG1lbW9yeSBzaXplIGluIGluYm91bmQgd2luZG93LgoKICAgIFRoZSBjdXJyZW50IGNhbGN1bGF0aW9uIHdpbGwgZmFpbCB0byBjb3ZlciBhbGwgbWVtb3J5IGlmCiAgICBpdHMgc2l6ZSBpcyBub3QgYSBwb3dlciBvZiB0d28uCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFjNjcxOTc3ZGM4MTM1OTYyOGJlMjdhYzk5YzE3NGU3NmU4MDY5YmEKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDIzIDIxOjE5OjEzIDIwMDggKzA4MDAKCiAgICA4Nnh4OiByZW1vdmUgdGhlIHVudXNlZCBkZWZpbml0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYWE0NGM1ZGM4Mzc1NmMzMDY3YjllNmM5ZGI2MjZmYWNkMGIwNjYwCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo0Nzo0OSAyMDA4ICswODAwCgogICAgODZ4eDogcmVtb3ZlIHRoZSByZWR1bmRhbnQgcjIgZ2xvYmFsIGRhdGEgcG9pbnRlciBzYXZlCgogICAgVGhlIGNvbW1pdCA2NzI1NjY3OGYwMGMwOWIwYTdmMTllODYyZTVjMTg0NzU1M2QzMWJjIGFkZAogICAgdGhlIGFub3RoZXIgZ2xvYmFsIGRhdGEgcG9pbnRlciBzYXZlLCBidXQgaW4gZmFjdCB0aGUKICAgIGdsb2JhbCBkYXRhIHBvaW50ZXIgd2lsbCBiZSBpbml0aWFsaXplZCBpbiB0aGUgYm9hcmRfaW5pdF9yLAogICAgc28gcmVtb3ZlIGl0IHN1Y2ggYXMgdGhlIDg1eHgvODN4eCBmYW1pbHkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxrdW1hci5nYWxhQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ4ODhlOTU0NDQxOTY2NTMzNGE2ZjQ3ZjgxZjM0MDExY2VhMzhmMwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTc6NDc6NDEgMjAwOCArMDgwMAoKICAgIDg2eHg6IHJlbW92ZSB0aGUgdW51c2VkIGNvZGUgZm9yIDg2eHggZmFtaWx5CgogICAgSSBiZWxpZXZlIHRoZXNlIGNvZGUgd2FzIGNvcGllZCBmcm9tIDc0eHggZmFtaWx5LCBidXQgZm9yCiAgICA4Nnh4LCBpdCBpcyB1bnVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxrdW1hci5nYWxhQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWJhMWVmNTA3NDAyYmM1ZTM0NGRjMzc0MjAzNzkyYTQwZjIyMmU4YQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMjggMTc6NDY6MzUgMjAwOCArMDgwMAoKICAgIDg2eHg6IHJlbW92ZSB0aGUgc2Vjb25kIEREUiBMQVcgc2V0dGluZyBmb3IgbXBjODY0MWhwY24KCiAgICBUaGUgRERSMSBMQVcgd2lsbCBwcmVjZWRlbmNlIHRoZSBERFIyIExBVywgc28gcmVtb3ZlCiAgICB0aGUgc2Vjb25kIEREUiBMQVcuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMzdhMmRmZDExYWM1MWFlMzE1NGYxM2YzMjM2MDliMzNhNGEwNzJlCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAyOCAxNzo0NjoyMyAyMDA4ICswODAwCgogICAgODZ4eDogcmVtb3ZlIHRoZSB1bnVzZWQgZGRyX2VuYWJsZV9lY2MgaW4gdGhlIGJvYXJkIGZpbGUKCiAgICBUaGUgRERSIGNvbnRyb2xsZXIgb2YgODZ4eCBwcm9jZXNzb3JzIGhhdmUgdGhlIEVDQyBkYXRhIGluaXQKICAgIGZlYXR1cmUsIGFuZCB0aGUgbmV3IEREUiBjb2RlIGlzIHVzaW5nIHRoZSBmZWF0dXJlLCB3ZSBkb24ndAogICAgbmVlZCB0aGUgd2F5IHdpdGggRE1BIHRvIGluaXQgbWVtb3J5IGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8a3VtYXIuZ2FsYUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRjMmFkYWQ4NWJmNTgwZDY1OTE2Yzk0MDY4M2Y2ZTk2NzFlOGE1ZGQKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDI4IDE3OjQ2OjEyIDIwMDggKzA4MDAKCiAgICA4Nnh4OiBNb3ZlIHRoZSBjbGVhcl90bGJzIGJlZm9yZSBNTVUgdHVybiBvbgoKICAgIFdlIG11c3QgaW52YWxpZGF0ZSBUTEJzIGJlZm9yZSBNTVUgdHVybiBvbiwgYnV0CiAgICBjdXJyZW50bHkgdGhlIGNvZGUgaXMgbm90LCBpZiB0aGVyZSBhcmUgc29tZSBzdGFsZQogICAgVExCIGVudHJ5IHZhbGlkIGluIHRoZSBUTEJzLCBpdCB3aWxsIGNhdXNlIHN0cmFuZ2UKICAgIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWNkYWRlMDdiMTE4ZDA3MTU0Y2I4ODI2NTBmOTc3OGNlY2M4YTg3YwpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI3IDE1OjU3OjA4IDIwMDggLTA1MDAKCiAgICBtcGM4MzEzZXJkYjogRG9jdW1lbnQgTkFORCBib290LgoKICAgIFByZXZpb3VzbHksIHRoZSBkb2N1bWVudGF0aW9uIGNsYWltZWQgdGhhdCBOQU5EIGJvb3QgaXMgbm90IHN1cHBvcnRlZC4KICAgIFRoaXMgaXMgbm8gbG9uZ2VyIHRydWUuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ3OGJjNmIyYWViZjU1NjZhYWM0NjRmOTM2Yjg4ZGZkOTdhYjBiZApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDI5IDE0OjIwOjI2IDIwMDggLTA1MDAKCiAgICBOQU5EOiBQcm9wZXJseSBjcmVhdGUgSkZGUzIgY2xlYW5tYXJrZXJzLgoKICAgIEFzIHJlcG9ydGVkIGJ5IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+LCB0aGUgIm5hbmQgZXJhc2UgY2xlYW4iCiAgICBjb21tYW5kIGlzIGN1cnJlbnRseSBicm9rZW4sIGFuZCBhbW9uZyBvdGhlciB0aGluZ3MgY2F1c2VzIGFsbCBibG9ja3MKICAgIHRvIGJlIG1hcmtlZCBiYWQuCgogICAgVGhpcyBpbXBsZW1lbnRzIGl0IHByb3Blcmx5IHVzaW5nIE1URF9PT0JfQVVUTywgYWxvbmcgd2l0aCBzb21lCiAgICBpbmRlbnRhdGlvbiBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmN2ZlNTdjMDk4NjZiNDQ2OTJkMThjOGNmMjI4MjhiZDEzN2VjNThkCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMTM6NDI6NDEgMjAwOCAtMDUwMAoKICAgIE5BTkQgZnNsIGVsYmM6IFNldCBGTVJbRUNDTV0gYmFzZWQgb24gcGFnZSBzaXplLgoKICAgIEhhcmR3YXJlIGV4cGVjdHMgRUNDTSAwIGZvciBzbWFsbCBwYWdlIGFuZCBFQ0NNIDEgZm9yIGxhcmdlIHBhZ2UKICAgIHdoZW4gYm9vdGluZyBmcm9tIE5BTkQsIHNvIHVzZSB0aG9zZSBkZWZhdWx0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMDEzYjc0OTc1ZGFiMDgwNWVmNmQzNjliMDEzMjMwYzRlOGE2NjBkCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyOSAxMzozMjo1OSAyMDA4IC0wNDAwCgogICAgTkFORDogQWRkIHN1cHBvcnQgZm9yIE1QQzg1NzJEUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyAxTSBUTEImTEFXIHNpemUgZm9yIE5BTkQgb24gTVBDODU3MkRTLCBhc3NpZ25zCiAgICAweGZmYTAwMDAwIGZvciBDT05GSUdfU1lTX05BTkRfQkFTRSBhbmQgYWRkcyBvdGhlciBOQU5EIHN1cHBvcnRzIGluCiAgICBjb25maWcgZmlsZS4KCiAgICBJdCBhbHNvIG1vdmVzIGVudmlyb25tZW50KENPTkZJR19FTlZfQUREUikgb3V0c2lkZSBvZiB1LWJvb3QgaW1hZ2UsIHRvCiAgICBtYWtlIHJvb20gZm9yIHRoZSBpbmNyZWFzZWQgY29kZSBzaXplIHdpdGggTkFORCBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGUxOTBiMDNhYWYyMzA5YmQyZTAyNWQxMTg3YTJjYTg4MGZlZGM5NQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjkgMTE6MDU6NTUgMjAwOCAtMDQwMAoKICAgIE1ha2UgRnJlZXNjYWxlIGxvY2FsIGJ1cyByZWdpc3RlcnMgYXZhaWxhYmxlIGZvciBib3RoIDgzeHggYW5kIDg1eHguCgogICAgLSBSZW5hbWUgbGJ1czgzeHhfdCB0byBmc2xfbGJ1c190IGFuZCBtb3ZlIGl0IHRvIGFzbS9mc2xfbGJjLmggc28gdGhhdCBpdAogICAgICBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggODN4eCBhbmQgODV4eAogICAgLSBSZW1vdmUgbGJ1czgzeHhfdCBhbmQgcmVwbGFjZSBpdCB3aXRoIGZzbF9sYnVzX3QgaW4gYWxsIDgzeHggYm9hcmRzCiAgICAgIGZpbGVzIHdoaWNoIHVzZSBsYnVzODN4eF90LgogICAgLSBNb3ZlIEZNUiwgRklSLCBGQ1IsIEZQQVIsIExURVNSIGZyb20gbXBjODN4eC5oIHRvIGFzbS9mc2xfbGJjLmggc28gdGhhdAogICAgICA4NXh4IGNhbiBzaGFyZSB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjk1YzEzMGU0YmY3NWI0NDQ3MjBkZGZkODNhY2E4OGY0MWMwNDZjZgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI3IDE1OjM4OjMwIDIwMDggLTA1MDAKCiAgICBOQU5EOiBBbGlnbiByaWdodCBjb2x1bW4gb2YgdGhlIHNob3J0aGVscCB3aXRoIG90aGVyIGNvbW1hbmRzLgoKICAgIEkgYWNjaWRlbnRhbGx5IGJyb2tlIHRoaXMgaW4gd2hlbiBtYWtpbmcgY29uc2lzdGVudCB0aGUgcGFydGlhbAogICAgYWxpZ25tZW50IG9mIHRoZSBsb25naGVscC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzM2VmZGU1ZWNhYzkxYWIxMThmZjAwYjk1YTE4MWZkNmQ3NWY4NjQ1CkF1dGhvcjogS2FybCBCZWxkYW4gPGthcmwuYmVsZGFuQGdtYWlsLmNvbT4KRGF0ZToJTW9uIFNlcCAxNSAxNjowODowMyAyMDA4ICswMjAwCgogICAgTkFORDogUmVzZXQgY2hpcCBvbiBwb3dlci11cAoKICAgIFNvbWUgY2hpcHMgcmVxdWlyZSBhIFJFU0VUIGFmdGVyIHBvd2VyLXVwIChlLmcuIE1pY3JvbiBNVDI5RnhHeHh4eHgpLgogICAgVGhlIGZpcnN0IGNvbW1hbmQgc2VudCBpcyBOQU5EX0NNRF9SRUFESUQuCiAgICBJc3N1ZSBhIE5BTkRfQ01EX1JFU0VUIGluIG5hbmRfc2Nhbl9pZGVudCBiZWZvcmUgcmVhZGluZyB0aGUgZGV2aWNlIGlkLgogICAgVGVzdGVkIHdpdGggYW4gTVQyOUY0RzA4QUFDLgoKICAgIFNpZ25lZC1vZmYtYnk6IEthcmwgQmVsZGFuIDxrYXJsLmJlbGRhbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNDU5MTJkOGFiYzUyZGU3OTZiOTA1OWE1OGZhZjdjNDE2NmVhYjU4CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMjQgMTY6MjA6NDMgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IHN5bmMgd2l0aCAyLjYuMjcKCiAgICBUaGlzIGJyaW5ncyB0aGUgY29yZSBOQU5EIGNvZGUgdXAgdG8gZGF0ZSB3aXRoIHRoZSBMaW51eCBrZXJuZWwuCgogICAgU2luY2UgdGhlcmUgd2VyZSBzZXZlcmFsIGRyaXZlcnMgaW4gTGludXggYXMgb2YgdGhlIGxhc3QgdXBkYXRlIHRoYXQgYXJlCiAgICBub3QgaW4gdS1ib290LCBJJ20gbm90IGJyaW5naW5nIG92ZXIgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQKICAgIHNpbmNlIGluIHRoZSBhYnNlbmNlIG9mIGFuIGludGVyZXN0ZWQgcGFydHkuCgogICAgSSBkaWQgbm90IHVwZGF0ZSBPbmVOQU5EIHNpbmNlIGl0IHdhcyByZWNlbnRseSBzeW5jZWQgYnkgS3l1bmdtaW4gUGFyaywKICAgIGFuZCBJJ20gbm90IHN1cmUgZXhhY3RseSB3aGF0IHRoZSBjb21tb24gYW5jZXN0b3IgaXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjFkMGRiMTgwNWMzMzk1MTQ5Nzc3ZTUwN2I2ZGE1MzQxMGFiYWM0ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMTc6MjU6NDcgMjAwOCAtMDUwMAoKICAgIGJvb3RtOiBBZGRlZCBDT05GSUdfQk9PVE1fe0xJTlVYLCBORVRCU0QsIFJURU1TfQoKICAgIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNvbmZpZyBvdXQgYm9vdG0gc3VwcG9ydCBmb3IgTGludXgsIE5ldEJTRCwgUlRFTVMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDVhOTgxMjdkODFhNmVlZmM1YTc4YTcwNGRmNjE5YmZlMzYyZWViODcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDE3OjI1OjQ2IDIwMDggLTA1MDAKCiAgICBib290bTogc3VwcG9ydCBzdWJjb21tYW5kcyBpbiBsaW51eCBwcGMgYm9vdG0KCiAgICBBZGQgc3VwcG9ydCBmb3IgJ2JkdCcsICdjbWRsaW5lJywgJ3ByZXAnIHRvIHRoZSBsaW51eCBQUEMgYm9vdG0uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0OWMzYTg2MWQxMTczNTgzOGYxZjFiMTE5OTljZTQzMzAwNmRjOTE5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE9jdCAyMSAxNzoyNTo0NSAyMDA4IC0wNTAwCgogICAgYm9vdG06IEFkZCBzdWJjb21tYW5kcwoKICAgIEFkZCB0aGUgYWJpbGl0eSB0byBicmVhayB0aGUgc3RlcHMgb2YgdGhlIGJvb3RtIGNvbW1hbmQgaW50byBzZXZlcmFsCiAgICBzdWJjb21tYW5kczogc3RhcnQsIGxvYWRvcywgcmFtZGlzaywgZmR0LCBiZHQsIGNtZGxpbmUsIHByZXAsIGdvLgoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRvIHRoaW5ncyBsaWtlIG1hbmlwdWxhdGUgZGV2aWNlIHRyZWVzIGJlZm9yZQogICAgdGhleSBhcmUgcGFzc2VkIHRvIGEgYm9vdGluZyBrZXJuZWwgb3Igc2V0dXAgbWVtb3J5IGZvciBhIHNlY29uZGFyeQogICAgY29yZSBpbiBtdWx0aWNvcmUgc2l0dWF0aW9ucy4KCiAgICBOb3QgYWxsIE9TIHR5cGVzIHN1cHBvcnQgYWxsIHN1YmNvbW1hbmRzIChjdXJyZW50bHkgb25seSBzdGFydCwgbG9hZG9zLAogICAgcmFtZGlzaywgZmR0LCBhbmQgZ28gYXJlIHN1cHBvcnRlZCkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZTA4MzE1OTMzNTM3ZjA2MWJjMWNlNjFmMzNhMjljNTY0NThiYmFkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE9jdCAyMSAxNzoyNTo0NCAyMDA4IC0wNTAwCgogICAgYm9vdG06IE1vdmUgdG8gdXNpbmcgYSBmdW5jdGlvbiBwb2ludGVyIHRhYmxlIGZvciB0aGUgYm9vdCBvcyBmdW5jdGlvbgoKICAgIFRoaXMgcmVtb3ZlcyBhIGJpdCBvZiBjb2RlIGFuZCBtYWtlcyBpdCBlYXNpZXIgZm9yIHRoZSB1cGNvbWluZyBzdWIgYm9vdG0KICAgIGNvbW1hbmQgc3VwcG9ydCB0byBjYWxsIGludG8gdGhlIHByb3BlciBPUyBzcGVjaWZpYyBoYW5kbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGEzNjlmNGE0OTJmYTI4MDVkODc3NzVkMjczODBmMGVlYWNhMzVhYTYKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDI5IDIzOjAzOjE0IDIwMDggKzEwMDAKCiAgICBpMzg2OiBSZW5hbWVkIHNob3dfYm9vdF9wcm9ncmVzcyBpbiBhc3NlbWJsZXIgY29kZQoKICAgIFJlbmFtZWQgc2hvd19ib290X3Byb2dyZXNzIGluIGFzc2VtYmxlciBpbml0IHBoYXNlIHRvCiAgICBzaG93X2Jvb3RfcHJvZ3Jlc3NfYXNtIHRvIGF2b2lkIGxpbmsgY29uZmxpY3RzIHdpdGggQyB2ZXJzaW9uCgogICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KCmNvbW1pdCA0NDQyZjQ1YjBlMWNiYWQzNWFhMjJkNGNhZDIyYjkwYTU3ZTNmMzJkCkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJTW9uIE9jdCAyNyAxNjo0MjowMCAyMDA4IC0wNTAwCgogICAgODV4eDogVXBkYXRlIE1QQzg1eHhfUE9SREVWU1JfSU9fU0VMIG1hc2sKCiAgICBUaGUgTVBDODU3MiBoYXMgYSA0LWJpdCB3aWRlIFBPUkRFVlNSIElPX1NFTCBmaWVsZC4gT3RoZXIgTVBDODV4eAogICAgcHJvY2Vzc29ycyBoYXZlIGEgMy1iaXQgd2lkZSBJT19TRUwgZmllbGQgYnV0IGhhdmUgdGhlIG1vc3QKICAgIHNpZ25pZmljYW50IGJpdCBpcyB3aXJlZCB0byAwIHNvIHRoaXMgY2hhbmdlIHNob3VsZCBub3QgYWZmZWN0CiAgICB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgY2Q0MjUxNjI0MjA1Y2I5NzEwNGY2ZTMyNjc5ZGM3NzU0OTM0ZjcxMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI3IDE2OjA5OjQyIDIwMDggLTA1MDAKCiAgICBwb3dlcnBjOiBmaXggcGNpIHdpbmRvdyBpbml0aWFsaXphdGlvbiB0byB3b3JrIHdpdGggPiA0R0IgRFJBTQoKICAgIFRoZSBleGlzdGluZyBjb2RlIGhhcyBhIGZldyBlcnJvcnMgdGhhdCBuZWVkIHRvIGJlIGZpeGVkIGluCiAgICBvcmRlciB0byBzdXBwb3J0IGxhcmdlIFJBTSBzaXplcy4gIEZpeCB0aG9zZSwgYW5kIGFkZCBhCiAgICBjb21tZW50IHRvIG1ha2UgaXQgY2xlYXJlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIxOTU0MmExYTY2Y2EwMTdiMTI4NjA5MjA3MTRhOTg1OWIxOGE1ZDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gT2N0IDI3IDEzOjE2OjIwIDIwMDggLTA1MDAKCiAgICBwY2kvZnNsX3BjaV9pbml0OiBSZW1vdmVkIGEgYnVuY2ggcG9pbnRsZXNzIHRyYWlsaW5nIGJhY2tzbGFzaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNmI1OWUwM2UwMjM3YTQwYTIzMDVlYTM4NWRlZmRmZDkyMDAwOTc4YgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjIyIDIwMDggKzAyMDAKCiAgICBsY2Q6IExldCB0aGUgYm9hcmQgY29kZSBzaG93IGJvYXJkLXNwZWNpZmljIGluZm8KCiAgICBUaGUgaW5mb3JtYXRpb24gZGlzcGxheWVkIHdoZW4gQ09ORklHX0xDRF9JTkZPIGlzIHNldCBpcyBpbmhlcmVudGx5CiAgICBib2FyZC1zcGVjaWZpYywgc28gaXQgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIGJvYXJkIGNvZGUuIFRoZSBjdXJyZW50IGNvZGUKICAgIGRlYWxpbmcgd2l0aCB0aGlzIG9ubHkgaGFuZGxlcyB0d28gY2FzZXMsIGFuZCBpcyBhbHJlYWR5IGEgaG9ycmlibGUgbWVzcwogICAgb2YgI2lmZGVmZmVyeS4KCiAgICBZZXMsIHRoaXMgZHVwbGljYXRlcyBzb21lIGNvZGUsIGJ1dCBpdCBhbHNvIGFsbG93cyBib2FyZHMgdG8gcHJpbnQgbW9yZQogICAgYm9hcmQtc3BlY2lmaWMgaW5mb3JtYXRpb247IHRoaXMgdXNlZCB0byBiZSB2ZXJ5IGRpZmZpY3VsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNmY5M2QyYjhmY2E1MDQyMDBhNTc1OGY3YzZkZDJkNjg1MjkwMDc2NQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjIxIDIwMDggKzAyMDAKCiAgICBsY2Q6IFNldCBsY2RfaXNfZW5hYmxlZCBiZWZvcmUgY2xlYXJpbmcgdGhlIHNjcmVlbgoKICAgIFRoaXMgYWxsb3dzIHRoZSBsb2dvL2luZm8gcmVuZGVyaW5nIHJvdXRpbmVzIHRvIHVzZSB0aGUgcmVndWxhcgogICAgbGNkX3B1dGMvbGNkX3B1dHMvbGNkX3ByaW50ZiBjYWxscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMTViMTdhYjUyYjdjMTVkNDZkOWZjNjMxY2MwNjA5MmUxZTc2NGRlMgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjIwIDIwMDggKzAyMDAKCiAgICBsY2Q6IEltcGxlbWVudCBsY2RfcHJpbnRmKCkKCiAgICBsY2RfcHJpbnRmKCkgaGFzIGEgcHJvdG90eXBlIGluIGluY2x1ZGUvbGNkLmggYnV0IG5vIGltcGxlbWVudGF0aW9uLiBGaXgKICAgIHRoaXMgYnkgYm9ycm93aW5nIHRoZSBsY2RfcHJpbnRmKCkgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgY29nZW50IGJvYXJkCiAgICBjb2RlICh3aGljaCBhcHBlYXJzIHRvIHVzZSBpdHMgb3duIExDRCBmcmFtZXdvcmsuKQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA3MGRiYzU0YzBhNWM3OThiY2Y4MmFlMmExZTIyNzQwNGY0MTJlODkyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gU2VwIDEgMTY6MjE6MTkgMjAwOCArMDIwMAoKICAgIGF0bWVsX2xjZGZiOiBTdHJhaWdodGVuIG91dCBmdW5reSB2bF9zeW5jIGxvZ2ljCgogICAgSWYgdGhlIGJvYXJkIF9kaWRuJ3RfIHJlcXVlc3QgSU5WTElORV9JTlZFUlRFRCwgd2Ugc2V0IElOVkxJTkVfSU5WRVJURUQsCiAgICBvdGhlcndpc2Ugd2UgZG9uJ3QuIFdURj8KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMjNiYjI4ZjBmNzZiNDZjNGI1NzMzNzRiMGJiM2IzZjIzZDg1ZWY1NQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjE4IDIwMDggKzAyMDAKCiAgICBhdG1lbF9sY2RmYjogRWxpbWluYXRlIHVubmVlZGVkICNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgoKICAgIGF0bWVsX2xjZGZiIGRvZXNuJ3QgYWN0dWFsbHkgbmVlZCBhbnl0aGluZyBmcm9tIGFzbS9hcmNoL2hhcmR3YXJlLmguIEl0CiAgICBpbmNsdWRlcyBhIGZpbGUgdGhhdCBkb2VzLCBhc20vYXJjaC9ncGlvLmgsIGJ1dCB0aGlzIGZpbGUgZG9lc24ndAogICAgaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4gbGlrZSBpdCdzIHN1cHBvc2VkIHRvLgoKICAgIEFkZCB0aGUgbWlzc2luZyBpbmNsdWRlIHRvIGFzbS9hcmNoL2dwaW8uaCBhbmQgcmVtb3ZlIHRoZSB3b3JrYXJvdW5kCiAgICBmcm9tIHRoZSBhdG1lbF9sY2RmYiBkcml2ZXIuIFRoaXMgbWFrZXMgdGhlIGRyaXZlciBjb21waWxlIG9uIGF2cjMyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBjMjA4M2UwZTExYTAzZWY4YmUyZTlmMGVkODcyMGZkYzIwODMyZjNlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE9jdCAyMiAxNDozODo1NSAyMDA4IC0wNTAwCgogICAgODZ4eDogQ29udmVydCBhbGwgZnNsX3BjaV9pbml0IHVzZXJzIHRvIG5ldyBBUElzCgogICAgQ29udmVydGVkIE1QQzg2MTBIQ1BELCBNUEM4NjQxSFBDTiwgYW5kIFNCQzg2NDFEIHRvIHVzZQogICAgZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MoKSBhbmQgZnRfZnNsX3BjaV9zZXR1cCgpLgoKICAgIFdpdGggdGhlc2UgY2hhbmdlcyB0aGUgYm9hcmQgY29kZSBpcyBhIGJpdCBzbWFsbGVyIGFuZCB3ZSBnZXQgZG1hLXJhbmdlcwogICAgc2V0IGluIHRoZSBkZXZpY2UgdHJlZSBmb3IgdGhlc2UgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJkYmEwZGVhOThjMGRlZTE3OTlmZmQ2ZmQ2ZWI1NDE2NDVkYmJkOTgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDA4OjI4OjMzIDIwMDggLTA1MDAKCiAgICA4NXh4OiBDb252ZXJ0IGFsbCBmc2xfcGNpX2luaXQgdXNlcnMgdG8gbmV3IEFQSXMKCiAgICBDb252ZXJ0ZWQgQVRVTTg1NDgsIE1QQzg1MzZEUywgTVBDODU0NERTLCBNUEM4NTQ4Q0RTLCBNUEM4NTY4TURTLAogICAgTVBDODU3MkRTLCBUUU04NXh4LCBhbmQgU0JDODU0OCB0byB1c2UgZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MoKQogICAgYW5kIGZ0X2ZzbF9wY2lfc2V0dXAoKS4KCiAgICBXaXRoIHRoZXNlIGNoYW5nZXMgdGhlIGJvYXJkIGNvZGUgaXMgYSBiaXQgc21hbGxlciBhbmQgd2UgZ2V0IGRtYS1yYW5nZXMKICAgIHNldCBpbiB0aGUgZGV2aWNlIHRyZWUgZm9yIHRoZXNlIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTJhYWI0NjA3MjdlNWY2NzQzNTNhODNhODEwMDBlZjc5NGJmZmNhZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMjMgMDA6MDE6MDYgMjAwOCAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IEFkZGVkIGZkdCBoZWxwZXIgZm9yIHNldHRpbmcgdXAgYnVzLXJhbmdlcyAmIGRtYS1yYW5nZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjlhMWZhOTc4N2EzYTc5NTczZjVmOTMyYTRmOGFhMjE2YmNiMTc4NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBPY3QgMjIgMTQ6MDY6MjQgMjAwOCAtMDUwMAoKICAgIHBjaS9mc2xfcGNpX2luaXQ6IEFkZCBhIGNvbW1vbiBQQ0kgaW5ib3VuZCBzZXR1cCBmdW5jdGlvbgoKICAgIEFkZCBhIGNvbW1vbiBzZXR1cCBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHBjaV9yZWdpb24ocykgYmFzZWQKICAgIG9uIGhvdyBtdWNoIG1lbW9yeSB3ZSBoYXZlIGluIHRoZSBzeXN0ZW0uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYxMmVhMDEwMThhNDU5MjM0ZDU0ZWQ1N2VjNmE1YTI0NGNlNzU2NzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDEwOjEzOjE0IDIwMDggLTA1MDAKCiAgICBwY2kvZnNsX3BjaV9pbml0OiBFbmFibGUgbGFyZ2VyIGFkZHJlc3MgYW5kIHNldHRpbmcgaW5ib3VuZCB3aW5kb3dzIHByb3Blcmx5CgogICAgKiBQQ0kgSW5ib3VuZCB3aW5kb3cgd2FzIHNldHVwIGluY29ycmVjdGx5LiAgVGhlIFBDSSBhZGRyZXNzIGFuZCBzeXN0ZW0KICAgICAgYWRkcmVzcyB3ZXJlIHN3YXBwZWQuICBUaGUgUENJIGFkZHJlc3Mgc2hvdWxkIGJlIHNldHRpbmcgcGl3YXIvcGl3YmVhcgogICAgICBhbmQgdGhlIHN5c3RlbSBhZGRyZXNzIHNob3VsZCBiZSBzZXR0aW5nIHBpdGFyLgoKICAgICogUmVtb3ZlZCBtYXNraW5nIG9mIGFkZHJlc3NlcyB0byBhbGxvdyBmb3Igc3lzdGVtIGFkZHJlc3MgdG8gc3VwcG9ydAogICAgICBzeXN0ZW0gYWRkcmVzcyAmIFBDSSBhZGRyZXNzID4zMi1iaXRzCgogICAgKiBTZXQgUElXQkVBUiAmIFBPVEVBUiB0byBhbGxvdyBmb3IgZnVsbCA2NC1iaXQgUENJIGFkZHJlc3NlcwoKICAgICogUmVzcGVjdCB0aGUgUENJX1JFR0lPTl9QUkVGRVRDSCBmb3IgaW5ib3VuZCB3aW5kb3dzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhhYjQ1MWM0NmI4NDZmMmJiZDcxMjJiMjlmZmRkOWE0YTA0ZGEyMjgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgT2N0IDIyIDIzOjMzOjU2IDIwMDggLTA1MDAKCiAgICBmZHQ6IEFkZGVkIGhlbHBlciB0byBzZXQgUENJIGRtYS1yYW5nZXMgcHJvcGVydHkKCiAgICBBZGRlZCBmZHRfcGNpX2RtYV9yYW5nZXMoKSB0aGF0IHBhcnNlcyB0aGUgcGNpX3JlZ2lvbiBpbmZvIGZyb20gdGhlCiAgICBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgYW5kIHBvcHVsYXRlcyB0aGUgZG1hLXJhbmdlcyBiYXNlZCBvbiBpdC4KCiAgICBUaGUgbWF4ICMgb2Ygd2luZHdzL2RtYS1yYW5nZXMgd2Ugc3VwcG9ydCBpcyAzIHNpbmNlIG9uIGVtYmVkZGVkCiAgICBQb3dlclBDIGJhc2VkIHN5c3RlbXMgdGhpcyBpcyB0aGUgbWF4IG51bWJlciBvZiB3aW5kb3dzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzYmVkMmFhZjJkNTBmZDEzMjczYzE0ZDE3ZDRmZDQwZWY0MmUwZDBmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAyMyAwMDowNTo0NyAyMDA4IC0wNTAwCgogICAgZmR0OiBBZGQgZmR0X2dldHByb3BfdTMyX2RlZmF1bHQgaGVscGVycwoKICAgIEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIHJldHVybiBmaW5kIGEgbm9kZSBhbmQgcmV0dXJuIGl0J3MgcHJvcGVydHkKICAgIG9yIGEgZGVmYXVsdCB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA4YmE5M2Y2OGExYmFlODllMDMzNTI3Y2U2N2I0MWI0YTg3YWE1YjdmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIE9jdCAyMSAxODowNjoxNSAyMDA4IC0wNTAwCgogICAgODZ4eDogRW5hYmxlIDY0LWJpdCBQQ0kgcmVzb3VyY2VzIG9uIGFsbCBGcmVlc2NhbGUgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAxNTFjYmFjY2Y0NTA0ODIxZWNmZGUwMjE3Mjk5YmQ3NDAwODZiYjYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIxIDExOjMzOjU4IDIwMDggLTA1MDAKCiAgICA4NXh4OiBFbmFibGUgNjQtYml0IFBDSSByZXNvdXJjZXMgb24gYWxsIEZyZWVzY2FsZSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzBlNzZkNWUzYmM0YzUyMDhlZTYzNTg1ZmUxMmI0MDlkOTMwOGNkOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjEgMDg6MzY6MDggMjAwOCAtMDUwMAoKICAgIHBjaTogQWxsb3cgZm9yIFBDSSBhZGRyZXNzZXMgdG8gYmUgNjQtYml0CgogICAgUENJIGJ1cyBpcyBpbmhlcmVudGx5IDY0LWJpdC4gIFdoaWxlIG5vdCBhbGwgc3lzdGVtIHJlcXVpcmUgYWNjZXNzIHRvCiAgICB0aGUgZnVsbCA2NC1iaXQgUENJIGFkZHJlc3MgcmFuZ2Ugc29tZSBkby4JVGhpcyBhbGxvd3MgdGhvc2Ugc3lzdGVtcwogICAgdG8gZW5hYmxlIHRoZSBmdWxsIFBDSSBhZGRyZXNzIHdpZHRoIHZpYSBDT05GSUdfU1lTX1BDSV82NEJJVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhZTVmOTQzYmE4ZWRlNDQ4YTRiMWExNDVmZDg5MTE4NTY3MDFlY2M1CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAyMToxODo1MyAyMDA4ICswODAwCgogICAgODV4eDogRml4IHRoZSBpbmNvcnJlY3QgcmVnaXN0ZXIgdXNlZCBmb3IgRERSIGVycmF0dW0xCgogICAgVGhlIDg1NzIgRERSIGVycmF0dW0xOgogICAgRERSIGNvbnRyb2xsZXIgbWF5IGVudGVyIGFuIGlsbGVnYWwgc3RhdGUgd2hlbiBvcGVyYXRpbmcKICAgIGluIDMyLWJpdCBidXMgbW9kZSB3aXRoIDQtYmVhdCBidXJzdHMuCgogICAgRGVzY3JpcHRpb246CiAgICBXaGVuIG9wZXJhdGluZyB3aXRoIGEgMzItYml0IGJ1cywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdAogICAgRERSX1NEUkFNX0NGR1s4X0JFXSBpcyBjbGVhcmVkIHdoZW4gRERSMiBtZW1vcmllcyBhcmUgdXNlZC4KICAgIFRoaXMgZm9yY2VzIHRoZSBERFIgY29udHJvbGxlciB0byB1c2UgNC1iZWF0IGJ1cnN0cyB3aGVuCiAgICBjb21tdW5pY2F0aW5nIHRvIHRoZSBEUkFNcy4gSG93ZXZlciwgYW4gaXNzdWUgZXhpc3RzIHRoYXQKICAgIGNvdWxkIGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uIHdoZW4gdGhlIEREUiBjb250cm9sbGVyIGlzCiAgICBpbiAzMi1iaXQgYnVzIG1vZGUgd2hpbGUgdXNpbmcgNC1iZWF0IGJ1cnN0cy4KCiAgICBQcm9qZWN0ZWQgSW1wYWN0OgogICAgSWYgdGhlIEREUiBjb250cm9sbGVyIGlzIG9wZXJhdGluZyBpbiAzMi1iaXQgYnVzIG1vZGUgd2l0aAogICAgNC1iZWF0IGJ1cnN0cywgdGhlbiB0aGUgY29udHJvbGxlciBtYXkgZW50ZXIgaW50byBhIGJhZCBzdGF0ZS4KICAgIEFsbCBzdWJzZXF1ZW50IHJlYWRzIGZyb20gbWVtb3J5IGlzIGNvcnJ1cHRlZC4KICAgIEZvdXItYmVhdCBidXJzdHMgd2l0aCBhIDMyLWJpdCBidXMgb25seSBpcyB1c2VkIHdpdGggRERSMiBtZW1vcmllcy4KICAgIFRoZXJlZm9yZSwgdGhpcyBlcnJhdHVtIGRvZXMgbm90IGFmZmVjdCBERFIzIG1vZGUuCgogICAgV29yayBBcm91bmRzOgogICAgVG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSwgc29mdHdhcmUgbXVzdCBzZXQgREVCVUdfMVszMV0gaW4KICAgIEREUiBtZW1vcnkgbWFwcGVkIHNwYWNlIChDQ1NSQkFSIG9mZnNldCArIDB4MmYwMCBmb3IgRERSXzEKICAgIGFuZCBDQ1NSQkFSIG9mZnNldCArIDB4NmYwMCBmb3IgRERSXzIpLgoKICAgIEN1cnJlbmx0eSwgdGhlIGNvZGUgaXMgdXNpbmcgaW5jb3JyZWN0IHJlZ2lzdGVyIEREUl9TRFJBTV9DRkdfMgogICAgYXMgY29uZGl0aW9uLCBidXQgaXQgc2hvdWxkIGJlIEREUl9TRFJBTV9DRkcgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNWI2OTMwOTBlZDA4ZDI0YzE4NDkxZGY5ZDhmYzczODdiMjkwNmYzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyMyAyMToxNzoxOSAyMDA4ICswODAwCgogICAgODV4eDogcmVtb3ZlIHVudXNlZCBjb25maWcgZGVmaW5pdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGYwNjBjM2JmODI4MzIzMzFhNTA5ZjJlNWQyNDQyNTM5ZTdhYWQwOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMjMgMDE6NDc6MzggMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCBiYXNpYyBlNTAwbWMgY29yZSBzdXBwb3J0CgogICAgSW50cm9kdWNlIENPTkZJR19FNTAwTUMgdG8gZGVhbCB3aXRoIHRoZSBtaW5vciBkaWZmZXJlbmNlcyBiZXR3ZWVuCiAgICBlNTAwdjIgYW5kIGU1MDBtYy4KCiAgICAqIENlcnRhaW4gZmllbGRzIG9mIEhJRDAvMSBkb24ndCBleGlzdCBhbnltb3JlIG9uIGU1MDBtYwogICAgKiBDYWNoZSBsaW5lIHNpemUgaXMgNjQtYnl0ZXMgb24gZTUwMG1jCiAgICAqIHJlc2V0IHZhbHVlIG9mIFBJUiBpcyBkaWZmZXJlbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzOGE1YjZlZGQzMGYyOWZkNWZkYjFkN2Y2NzQ1MjE5MDZjMGU2NzcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgT2N0IDIzIDAxOjQ3OjM3IDIwMDggLTA1MDAKCiAgICA4NXh4OiBVc2UgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRSBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlcgoKICAgIFVzaW5nIENPTkZJR19TWVNfQ0FDSEVMSU5FX1NJWkUgaW5zdGVhZCBvZiAzMSBtZWFucyB3ZSBjYW4gaGFuZGxlCiAgICBlNTAwbWMncyA2NC1ieXRlIGNhY2hlbGluZSBwcm9wZXJseSB3aGVuIGl0IGdldHMgYWRkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1ZGViODAyMmMzNzQ5ZmFhYzMwZTlhZDk2OTQ2OTFlMjQ0MmI1YzkzCkF1dGhvcjogR2VvcmcgU2NoYXJkdCA8c2NoYXJkdEB0ZWFtLWN0ZWNoLmRlPgpEYXRlOglGcmkgT2N0IDI0IDEzOjUxOjUyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE5ldyBib2FyZCBhdm5ldCBmeDEyIG1pbmltb2R1bAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYXZuZXQgZngxMiBtaW5pbW9kdWwuCiAgICBJdCBuZWVkcyB0aGUgInBwYzR4eDogR2VuZXJpYyBhcmNoaXRlY3R1cmUgZm9yIHhpbGlueCBwcGM0MDUiCiAgICBwYXRjaCBmcm9tIFJpY2FyZG8uCgogICAgU2lnbmVkLW9mZi1ieTogR2VvcmcgU2NoYXJkdCA8c2NoYXJkdEB0ZWFtLWN0ZWNoLmRlPgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWY0ZDUzMjYwZWM2ZjhmMTIyYWVkNzVjY2U3Yzc1N2Q5N2E1NTFlMApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUdWUgT2N0IDIxIDE4OjI5OjQ2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEdlbmVyaWMgYXJjaGl0ZWN0dXJlIGZvciB4aWxpbnggcHBjNDA1KHYzKQoKICAgIEFzICJwcGM0NHg6IFVuaWZpY2F0aW9uIG9mIHZpcnRleDUgcHA0NDAgYm9hcmRzIiBkaWQgZm9yIHRoZSB4aWxpbngKICAgIHBwYzQ0MCBib2FyZHMsIHRoaXMgcGF0Y2ggcHJlc2VudHMgYSBjb21tb24gYXJjaGl0ZWN0dXJlIGZvciBhbGwgdGhlCiAgICB4aWxpbnggcHBjNDA1IGJvYXJkcy4KCiAgICBBbnkgY3VzdG9tIHhpbGlueCBwcGM0MDUgYm9hcmQgY2FuIGJlIGFkZGVkIHZlcnkgZWFzaWx5IHdpdGggbm8gY29kZQogICAgZHVwbGljaXR5LgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgc2ltcGxlIGdlbmVyaWMgYm9hcmQsIHRoYXQgY2FuIGJlIHVzZWQgb24gYWxtb3N0CiAgICBhbnkgZGVzaWduIHdpdGggeGlsaW54IHBwYzQwNSByZXBsYWNpbmcgdGhlIGZpbGUgcHBjNDA1LWdlbmVyaWMveHBhcmFtZXRlcnMuaAoKICAgIFRoaXMgcGF0Y2ggaXMgcHJlcGFyZWQgdG8gd29yayB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBFREsgKDEwLjEpCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDg1YzAwYTU3ZmFiODZmNzJhMzc2OTQ4MGM2NmJmMWNhMjJlMTQ1OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAyNCAwODo1NjowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBEaXNhYmxlIEREUjIgYXV0b2NhbGlicmF0aW9uIG9uIEtpbGF1ZWEgZm9yIG5vdwoKICAgIFNpbmNlIHRoZSBuZXcgYXV0b2NhbGlicmF0aW9uIHN0aWxsIGhhcyBzb21lIHByb2JsZW1zIG9uIHNvbWUgS2lsYXVlYQogICAgYm9hcmRzIHdpdGggMjAwTUh6IEREUjIgZnJlcXVlbmN5IHdlIGRpc2FibGUgdGhlIGF1dG9jYWxpYnJhdGlvbiBhbmQKICAgIHVzZSB0aGUgaGFyZGNvZGVkIHZhbHVlcyBhcyBkb25lIGJlZm9yZS4gVGhpcyBzZWVtcyB0byB3b3JrIHJlbGlhYmx5CiAgICBvbiBhbGwga25vd24gRERSMiBmcmVxdWVuY2llcy4KCiAgICBBZnRlciB0aGUgYXV0b2NhbGlicmF0aW9uIGlzc3VlIGlzIGZpeGVkIHdlIHdpbGwgZW5hYmxlIGl0IGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMTc3ZjQyNTBjNzI5NzI3YjE2MjlmYThkOGQ2NTU2Yzk5OWU5YjhjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglXZWQgQXByIDkgMDI6MDI6MDcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggdXAgVUFSVCBzdGF0dXMgYml0IGhhbmRsaW5nCgogICAgU29tZSBCbGFja2ZpbiBVQVJUcyBhcmUgcmVhZC10by1jbGVhciB3aGlsZSBvdGhlcnMgYXJlIHdyaXRlLXRvLWNsZWFyLgogICAgVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgd2hlbiB3ZSBwb2xsIHRoZSBMU1IgYW5kIHRoZW4gbGF0ZXIgdHJ5IGFuZCBoYW5kbGUKICAgIGFueSBlcnJvcnMgZGV0ZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFlMDkxMDI5OGYzMWY1YmIzZDMzYTY0Yjg0NjdjNjBlYTNjNWQ2ZDAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjA6NDI6MTcgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBiZjU2MS1lemtpdDogZHJvcCByZWR1bmRhbnQgY29kZQoKICAgIENvbW1vbiBCbGFja2ZpbiBjb2RlIGFscmVhZHkgYW5ub3VuY2VzIENQVSBpbmZvcm1hdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZTJlZWE5OGJmZjEzNjlmNzdhOWY1OWE1ZmQwYmQ0OTI4YmMzMzMyZQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMDo0MzoxMCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJmNTYxLWV6a2l0OiBkcm9wIHBvaW50bGVzcyBVU0IgY29kZQoKICAgIFRoZSBVU0IvTEFOIHJlZ2lzdGVyIHNldHRpbmdzIGFyZSBub3QgYWN0dWFsbHkgdXNlZC9uZWVkZWQgaW4gb3JkZXIgdG8KICAgIGRyaXZlIHRoaW5ncyBmcm9tIFUtQm9vdCwgc28gZHJvcCB0aGUgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYzIzYmZmNjNmYjAzY2I5ZGJjZDI2NTIyODQxZTUzZjliMzRmYTFhYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IE9jdCAxMSAyMDo0Nzo1OCAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGxpbmtlciBzY3JpcHRzOiBmb3JjZSBzdGFydC5vIGFuZCBzZXQgaW5pdGNvZGUgYm91bmRhcmllcwoKICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydC5vIG9iamVjdCBpcyBhbHdheXMgdGhlIGZpcnN0IG9iamVjdCBpbiBvdXIgbGlua2VyCiAgICBzY3JpcHQgcmVnYXJkbGVzcyBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBhbmQgYWRkIHNvbWUgbGlua2VyIHN5bWJvbHMKICAgIHNvIHRoZSBsZHIgdXRpbGl0eSBjYW4gcHJvcGVybHkgbG9jYXRlIHRoZSBpbml0Y29kZSB3aGVuIGdlbmVyYXRpbmcgYSBMRFIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJkMzNlNWM2MTNjZjcwZTNjYjUxYTczZmRkNjUzZmU4M2I5NDJiYjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVNhdCBPY3QgMTEgMjE6MTk6MzkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBzbWFsbCBjcHUgaW5pdCBvcHRpbWl6YXRpb24gd2hpbGUgc2V0dGluZyBpbnRlcnJ1cHQgbWFzawoKICAgIFVzZSB0aGUgc3RpIGluc3RydWN0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCBpbnRlcnJ1cHQgbWFzayByYXRoZXIgdGhhbgogICAgYmFuZ2luZyBvbiB0aGUgY29yZSBJTUFTSyBNTVIgdG8gc2F2ZSBib3RoIHNwYWNlIGFuZCB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5NjA5MjIyOTFjOTU5NGFjYjU3NWNlYzdlNDdkN2JlZDliNTgxODJjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgT2N0IDExIDIxOjE4OjEwIDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogc2V0IGluaXRpYWwgc3RhY2sgY29ycmVjdGx5IGFjY29yZGluZyB0byBCbGFja2ZpbiBBQkkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjVjZDMzZDgyZWE1MjFiN2JkOTBjYTg1OGY4OTE5ZmFlMWU5NzMyYgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEFwciAyMCAwMzoxMTo1MyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IG1ha2UgYmF1ZCBjYWxjdWxhdGlvbiBtb3JlIGFjY3VyYXRlCgogICAgV2Ugc2hvdWxkIHVzZSB0aGUgYWxnb3JpdGhtIGluIHRoZSBMaW51eCBrZXJuZWwgc28gdGhhdCB0aGUgVUFSVCBkaXZpc29yCiAgICBjYWxjdWxhdGlvbiBpcyBtb3JlIGFjY3VyYXRlLiAgSXQgYWxzbyBmaXhlcyBwcm9ibGVtcyBvbiBzb21lIHBpY2t5IFVBUlRzCiAgICB0aGF0IGhhdmUgc2FtcGxpbmcgYW5vbWFsaWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwYmExZGExMTZlNWVkY2IwYzVhZTRhNzU4NWQ3M2Y2NTQ4NDAwYTA2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDQ6MjE6NDEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkZWNvZGUgaHdlcnJjYXVzZS9leGNhdXNlIHdoZW4gY3Jhc2hpbmcKCiAgICBIYXZpbmcgdG8gZGVjb2RlIGh3ZXJyY2F1c2UvZXhjYXVzZSB2YWx1ZXMgaXMgYSBwYWluLCBzbyBhdXRvbWF0ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmRlOTViYjIwYzQ4OGYyMDI5OGRmNjg4MWI3MDBhNWE3NTdlZTc4MApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDA0OjIwOjU0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZml4IHJlZ2lzdGVyIGR1bXAgbWVzc2FnZXMKCiAgICBNYWtlIHN1cmUgd2UgcmVwb3J0IFJFVEkvSVBFTkQgY29ycmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3MTMzOTk5ZTZmNjJhOWEwMWY2YThmZmUyMzRiODUzMmIzYWQxZTRiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gT2N0IDYgMDQ6MTk6MzQgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkb24ndCBib3RoZXIgZGlzcGxheWluZyByZWJvb3QgbXNnIHdoZW4gY3Jhc2hpbmcKCiAgICBUaGUgaGFuZyBmdW5jdGlvbiBhbHJlYWR5IHRlbGxzIHlvdSB0byByZWJvb3QsIHNvIG5vIHBvaW50IGluIHNob3dpbmcgaXQKICAgIHR3aWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA3MGM0YzAzMmVhMTEyY2M0MmFhMWNlOTU5YzMzZmM0ODI1ZWFlZjk1CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gSnVuIDEgMDE6MjM6NDggMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBlbmFibGUgc3VwcG9ydCBmb3IgbmVzdGVkIGludGVycnVwdHMKCiAgICBEdXJpbmcgY3B1IGluaXQsIG1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRoZSBDRUMgcHJvcGVybHkgc28gdGhhdAogICAgaW50ZXJydXB0cyBjYW4gZmlyZSBhbmQgYmUgaGFuZGxlZCB3aGlsZSBVLUJvb3QgaXMgcnVubmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMzk3ODI3MjdlMTg1ODYwZmFhNDg4NGMyYjA0ZTg0Y2IzM2QxYzZjZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjU1OjI1IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogaW5pdCBOQU5EIGJlZm9yZSByZWxvY2F0aW5nIGVudgoKICAgIElmIGJvb3Rpbmcgb3V0IG9mIE5BTkQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGluaXRpYWxpemUgaXQgcHJvcGVybHkKICAgIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJlbG9jYXRlIHRoZSBlbnZpcm9ubWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMGY5YTg4MTk0MTZiYTQwYTUzZGU1MGFmMTQ4ODQ3YTBlNTA4Zjg0ZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE4OjQwOjEzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogY2hlY2sgY2FjaGUgYml0cywgbm90IGNwbGIgYml0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAyYzFlYTllMzcwY2I3MmRkNmE1YWEzMjMzOGU4N2E4YTFmNzdiZDc2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUaHUgQXVnIDcgMTc6NTI6NTkgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBkcm9wIHVudXNlZCBjYWNoZSBmbHVzaCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDUwZjBkMjExOTEyYTY0OGUzMWFhOTEyM2I0NjY1YTA0NDRiYjhjYTkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxNToyMTo0NyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IHVuaWZ5IGNhY2hlIGhhbmRsaW5nIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgM2M4Nzk4OTgzNDAzY2I2OGE4MjdkN2EwZDA5YjExMzQ1MjRhMWI3ZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIE9jdCA2IDAzOjM5OjA3IDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogb25seSBpbml0aWFsaXplIHRoZSBSVEMgd2hlbiBhY3R1YWxseSB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDYyMWU1NzliODEyZGQxYTJlNjc3N2Y3Y2JmNmU1NWU3MzY1MDU4MjMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBPY3QgNiAwMzo0NDozMyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCBTV1JTVCByZWdpc3RlciBkZWZpbml0aW9uCgogICAgVGhlIFNXUlNUIHJlZ2lzdGVyIGlzIGEgMTZiaXQsIG5vdCAzMmJpdCwgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDA2MTIxYzRlMmQxODM4ODdkY2Q3YTRjYTJkY2QzOTViMjEzZWExNWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxODo1NDo1NyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGJ1aWxkIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYWRiZmVlYjdiMzJmNzM3YTk3MzhkYWE1ODMzNTBkMmJiOWVkMDE3YQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE3OjUwOjI2IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogZG9jdW1lbnQgc29tZSBvZiB0aGUgYmxhY2tmaW4gZGlyZWN0b3JpZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZTQzMzc5NjhlNDM2OThhNjhiYTYwODM2OWY0NmQ0YTQxMTQxMTFjYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDE1OjE2OjU2IDIwMDggLTA0MDAKCiAgICBCbGFja2Zpbjogb25seSBlbmFibGUgaGFyZHdhcmUgZXJyb3IgaXJxIGJ5IGRlZmF1bHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmI2NmYwOGYyNTdlZjZhMDY3ODVmMjdiM2M2ZGMyYTRjZmM5Y2FjNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjM2OjQzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogcHVudCBvbGQgdW51c2VkIG1lbV9pbml0LmggaGVhZGVyCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGJjYzEyMWEwMTYwODA0MjA2NmExOWFiNWJmZjViY2ZiODA1YmY0MDYKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxMzoxODo1NSAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGRlbGV0ZSB1bnVzZWQgcGFnZV9kZXNjcmlwdG9yX3RhYmxlX3NpemUgZGVmaW5lCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDMwZmI5ZDI0YWUxNmU1YjBlZDM5ZTViN2NjODU5ODExNjVjYTk4YmMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBBdWcgNyAxMzoxNzowMyAyMDA4IC0wNDAwCgogICAgQmxhY2tmaW46IGZpeCB0eXBvIGluIGJvb3QgbW9kZSBjb21tZW50IGFuZCBhZGQgTkFORCBkZWZpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMmU1Y2JlNTQ2MWM1YzRjNjY2NWUzMThjZmU5NTBhNWExNTBkOTk5YwpBdXRob3I6IEJlbiBNYWFuIDxtb29AY293PgpEYXRlOglUaHUgQXVnIDcgMTM6MTQ6MjEgMjAwOCAtMDQwMAoKICAgIEJsYWNrZmluOiBmaXggcG9ydCBtdXggZGVmaW5lcyBmb3IgQkY1NHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDY1NmVmMmJhMjc0OTEwZDMxMzY0ZmUwMjJmNmM3ZGIwMDUxNjYwZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjA5OjUwIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdXBkYXRlIGFub21hbHkgbGlzdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgNTBjYTk1NDAyODc2Y2Y3YmFjNGUyZDRmNzg1NWY2MTZhMDM4NzYzZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVGh1IEF1ZyA3IDEzOjA4OjU0IDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdW5pZnkgRFNQSUQvREJHU1RBVCBNTVIgZGVmaW5pdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDlkOGM3YzY5NmRlYzM3MGNhNzE0YzAzYmViNmU3OWQ0YzkwYmQ1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjEgMTU6NTM6NTEgMjAwOCArMDIwMAoKICAgIEZpeCBzdHJtaHooKTogYXZvaWQgcHJpbnRpbmcgbmVnYXRpdmUgZnJhY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YTdmNmI3NTBkOGRlNTQzZmRmOGU1OGFjZDg2NzQ1MDEwMDU0NTcxCkF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KRGF0ZToJRnJpIE9jdCAxNyAwODo1NTo1MSAyMDA4IC0wNDAwCgogICAgbXBjODN4eDogUmVtb3ZlZCAjaWZkZWYgQ09ORklHX01QQzgzNFggZGVwZW5kZW5jeSBvbiB1cG1jb25maWcgZnVuY3Rpb24KCiAgICBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgb3RoZXIgODNYWCBiYXNlZCBwbGF0Zm9ybXMgd2hpY2ggYWxzbyBoYXZlIFVQTQogICAgKGUuZy4gODM2MCkgdG8gY29uZmlndXJlIGFuZCB1c2UgdGhlaXIgVVBNIGluIHUtYm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzYmYxYmUzYzBjZmIxMTI5YjY4Y2MxNDc0MTE5ZTVmMzIzNTM2NDg4CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVR1ZSBPY3QgMTQgMjI6NTg6NTMgMjAwOCArMDQwMAoKICAgIG1wYzgzeHg6IGFkZCBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBVU0IgSG9zdC9GdW5jdGlvbiBmb3IgTVBDODM3WEVNRFMKCiAgICBXaXRoIHRoaXMgcGF0Y2ggdS1ib290IGNhbiBmaXh1cCB0aGUgZHJfbW9kZSBhbmQgcGh5X3R5cGUgcHJvcGVydGllcwogICAgZm9yIHRoZSBEdWFsLVJvbGUgVVNCIGNvbnRyb2xsZXIuCgogICAgV2hpbGUgYXQgaXQsIGFsc28gcmVtb3ZlICNpZmRlZnMgYXJvdW5kIGluY2x1ZGVzLCB0aGV5IGFyZSBub3QgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMzM3OWYzZmQxMzk2OTkzNGMwMDA5N2MwNTc1NGU3YTg5OTBmZDM5CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBPY3QgOCAyMDo1Mjo1NCAyMDA4ICswNDAwCgogICAgbXBjODN4eDogYWRkIEVMQkMgTkFORCBzdXBwb3J0IGZvciB0aGUgTVBDODM3WEVNRFMgYm9hcmRzCgogICAgVGhvdWdoIE5BTkQgY2hpcCBpcyByZXBsYWNlYWJsZSBvbiB0aGUgTVBDODM3WEUtTURTIGJvYXJkcywgdGhlCiAgICBjdXJyZW50IHNldHRpbmdzIGRvbid0IHdvcmsgd2l0aCB0aGUgZGVmYXVsdCBjaGlwIG9uIHRoZSBib2FyZC4KICAgIE5ldmVydGhlbGVzcyBGcmVlc2NhbGUncyBVLUJvb3Qgc2V0cyB0aGUgb3B0aW9uIHJlZ2lzdGVyIGNvcnJlY3RseSwKICAgIHNvIEkganVzdCBkdW1wZWQgdGhlIHJlZ2lzdGVyIGZyb20gdGhlIHdvcmtpbmcgdS1ib290LiBNeSBndWVzcyBpcwogICAgdGhhdCB0aGUgb2xkIHNldHRpbmdzIHdlcmUgYXBwbGljYWJsZSBmb3Igc29tZSBwaWxvdCBib2FyZHMsIG5vdAogICAgZm91bmQgaW4gdGhlIHByb2R1Y3Rpb24uCgogICAgVGhpcyBwYXRjaCBhbHNvIGVuYWJsZXMgRlNMIEVMQkMgZHJpdmVyIHNvIHRoYXQgd2UgY291bGQgYWNjZXNzCiAgICB0aGUgTkFORCBzdG9yYWdlIGluIHRoZSB1LWJvb3QuCgogICAgVGhlIE5BTkQgc3VwcG9ydCBjb3N0cyBhYm91dCA0NUtCLCBzbyB0aGUgdS1ib290IG5vIGxvbmdlciBmaXRzCiAgICBpbnRvIHR3byAxMjhLQiBOT1IgZmxhc2ggc2VjdG9ycywgdGh1cyB3ZSBhbHNvIGhhdmUgdG8gYWRqdXN0CiAgICBlbnZpcm9ubWVudCBsb2NhdGlvbjogYWRkIGFub3RoZXIgMTI4S0IgdG8gdGhlIG1vbml0b3IgbGVuZ3RoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKICAgIEl0IGlzIGR1ZSB0byBoYXJkd2FyZSBkZXNpZ24gYW5kIGxvZ2ljIGRlZmVjdCwgdGhhdCBpcyB0aGUKICAgIEkvT1swOjddIG9mIE5BTkQgY2hpcCBpcyBjb25uZWN0ZWQgdG8gTEFEWzc6MF0sIHNvIHdoZW4KICAgIHRoZSBOQU5EIGNoaXAgY29ubmVjdGVkIHRvIG5MQ1MzLCAgeW91IGhhdmUgdG8gc2V0IHVwIHRoZQogICAgT1IzW0JDVExEXSA9ICcxJyBmb3Igbm9ybWFsIG9wZXJhdGlvbiwgb3RoZXJ3aXNlIGl0IHdpbGwgaGF2ZQogICAgYnVzIGNvbnRlbnRpb24gZHVlIHRvIHRoZSBwaW4gNDgvMjUgb2YgVTYwIGlzIGVuYWJsZWQuCgogICAgU2V0dXAgdGhlIE9SM1tCQ1RMRF0gPSAnMScgLCB0aGF0IG1lYW5pbmcgdGhlIExCQ1RMIGlzIG5vdAogICAgYXNzZXJ0ZWQgdXBvbiBhY2Nlc3MgdG8gdGhlIE5BTkQgY2hpcCwga2VlcCB0aGUgZGVmYXVsdCBzdGF0ZS4KCiAgICBBY2tlZC1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDBmN2JiYWU5MmUzYjEzZjJiMzdhZWIxZGVmOWJiMTI0NDU1MjFiNwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgT2N0IDIgMTk6MTc6MzMgMjAwOCArMDQwMAoKICAgIG1wYzgzeHg6IGZpeCBQQ0kgc2NhbiBoYW5nIG9uIHRoZSBzdGFuZGFsb25lIE1QQzgzN3hFLU1EUyBib2FyZHMKCiAgICBUaGUgTVBDODM3eEUtTURTIGJvYXJkJ3MgQ1BMRCBjYW4gYXV0by1kZXRlY3QgaWYgdGhlIGJvYXJkIGlzIG9uIHRoZSBQSUIsCiAgICBzdGFuZGFsb25lIG9yIGFjdGluZyBhcyBhIFBDSSBhZ2VudC4gVXNlcidzIEd1aWRlIHNheXM6CgogICAgLSBXaGVuIHRoZSBDUExEIHJlY29nbml6ZXMgaXRzIGxvY2F0aW9uIG9uIHRoZSBQSUIgaXQgYXV0b21hdGljYWxseQogICAgICBjb25maWd1cmVzIFJDVyB0byB0aGUgUENJIEhvc3QuCiAgICAtIElmIHRoZSBDUExEIGZhaWxzIHRvIHJlY29nbml6ZSBpdHMgbG9jYXRpb24gdGhlbiBpdCBpcyBhdXRvbWF0aWNhbGx5CiAgICAgIGNvbmZpZ3VyZWQgYXMgYW4gQWdlbnQgYW5kIHRoZSBQQ0kgaXMgY29uZmlndXJlZCB0byBhbiBleHRlcm5hbCBhcmJpdGVyLgoKICAgIFRoaXMgc291bmRzIGdvb2QuIFRob3VnaCBpbiB0aGUgc3RhbmRhbG9uZSBzZXR1cCB0aGUgQ1BMRCBzZXRzIFBDSV9IT1NUCiAgICBmbGFnIChpdCdzIG9rLCB3ZSBjYW4ndCBhY3QgYXMgUENJIGFnZW50cyBzaW5jZSB3ZSByZWNlaXZlIENMS0lOLCBub3QKICAgIFBDSUNMSyksIGJ1dCB0aGUgQ1BMRCBkb2Vzbid0IHNldCB0aGUgQVJCSVRFUl9FTkFCTEUgZmxhZywgYW5kIHdpdGhvdXQKICAgIGFueSBhcmJpdGVyIGJhZCB0aGluZ3Mgd2lsbCBoYXBwZW4gKGhlcmUgdGhlIGJvYXJkIGhhbmdzIGR1cmluZyBhbnkgY29uZmlnCiAgICBzcGFjZSByZWFkcykuCgogICAgSW4gdGhpcyBzaXR1YXRpb24gd2UgbXVzdCBkaXNhYmxlIHRoZSBQQ0kuIEFuZCBpbiBjYXNlIG9mIGFueWJvZHkgcmVhbGx5CiAgICB3YW50IHRvIHVzZSBhbiBleHRlcm5hbCBhcmJpdGVyLCB3ZSBwcm92aWRlICJwY2lfZXh0ZXJuYWxfYXJpYnRlciIKICAgIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZGE4M2E2M2Q4ZTFiNGJkZGViODI1ODFiMTc0NWEwOWFhYzNlMmQzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMiAxODozMjoyNSAyMDA4ICswNDAwCgogICAgbXBjODN4eDogYWRkIFNHTUlJIHJpc2VyIG1vZHVsZSBzdXBwb3J0IGZvciB0aGUgTVBDODM3OEUtTURTIGJvYXJkcwoKICAgIFRoaXMgaW52b2x2ZXMgY29uZmlndXJpbmcgdGhlIFNlckRlcyBhbmQgZml4aW5nIHVwIHRoZSBmbGFncyBhbmQKICAgIFBIWSBhZGRyZXNzZXMgZm9yIHRoZSBUU0VDcy4KCiAgICBGb3IgTGludXggd2UgYWxzbyBmaXggdXAgdGhlIGRldmljZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNmQ5Yzg5MTZkZTljMjRmMmM1MmQwYjAxY2YwMGQyZTc0YTA0Y2Q4CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMiAxODozMTo1OSAyMDA4ICswNDAwCgogICAgbXBjODN4eDogYWRkIFRTRUNzJyBIUkNXSCBtYXNrcyBmb3IgTVBDODM3eCBwcm9jZXNzb3JzCgogICAgV2UnbGwgdXNlIHRoZXNlIG1hc2tzIHRvIHBhcnNlIFRTRUMgbW9kZXMgb3V0IG9mIEhSQ1dILgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZjljYzY2MDhiNGUxY2VmZGU1NmMwZmI5OWFlMWM5NWM0MjU3NWZmCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBPY3QgMiAxODozMTo1NiAyMDA4ICswNDAwCgogICAgbXBjODN4eDogc2VyZGVzOiBhZGQgZm9yZ290dGVuIHNoaWZ0cyBmb3IgcmZja3MKCiAgICBUaGUgcmZja3Mgc2hvdWxkIGJlIHNoaWZ0ZWQgYnkgMjggYml0cyBsZWZ0LiBXZSBkaWRuJ3Qgbm90aWNlIHRoZSBidWcKICAgIGJlY2F1c2Ugd2Ugd2VyZSB1c2luZyBvbmx5IDEwME1IeiBjbG9ja3MgKGZvciB3aGljaCByZmNrcyA9PSAwKS4KCiAgICBUaG91Z2gsIGZvciBTR01JSSB3ZSdsbCBuZWVkIDEyNU1IeiBjbG9ja3MuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU1YzUzMTk4NGRjZjkzM2U0Y2QxM2ExODdhN2UwOGU4NzNiN2NlZDEKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IE9jdCAyIDE4OjMxOjUzIDIwMDggKzA0MDAKCiAgICBtcGM4M3h4OiBmaXggc2VyZGVzIHNldHVwIGZvciB0aGUgTVBDODM3OEUgYm9hcmRzCgogICAgTVBDODM3eEUgc3BlY3Mgc2F5cyB0aGF0IFNlckRlczEgaGFzOgoKICAgIOKAlCBUd28gbGFuZXMgcnVubmluZyB4MSBTR01JSSBhdCAxLjI1IEdicHM7CiAgICDigJQgVHdvIGxhbmVzIHJ1bm5pbmcgeDEgU0FUQSBhdCAxLjUgb3IgMy4wIEdicHMuCgogICAgQW5kIGZvciBTZXJEZXMyOgoKICAgIOKAlCBUd28gbGFuZXMgcnVubmluZyB4MSBQQ0kgRXhwcmVzcyBhdCAyLjUgR2JwczsKICAgIOKAlCBPbmUgbGFuZSBydW5uaW5nIHgyIFBDSSBFeHByZXNzIGF0IDIuNSBHYnBzOwogICAg4oCUIFR3byBsYW5lcyBydW5uaW5nIHgxIFNBVEEgYXQgMS41IG9yIDMuMCBHYnBzLgoKICAgIFRoZSBzcGVjIGFsc28gZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBQRVggb3B0aW9ucyBhcmUgbm90IHZhbGlkIGZvcgogICAgdGhlIFNEMS4KCiAgICBOZXZlcnRoZWxlc3MgTVBDODM3OCBSREIgYW5kIE1EUyBib2FyZHMgY29uZmlndXJlIHRoZSBTRDEgZm9yIFBFWCwKICAgIHdoaWNoIGlzIHdyb25nIHRvIGRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YzJmZjMyM2E5NGUyN2U0ODFmNzBjNDQ4MzhkNDNmY2Q4NDRkZDQ2CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMTg6MTI6MzcgMjAwOCArMDQwMAoKICAgIG1wYzgzeHg6IG1wYzgzNjBlbWRzOiByZXdvcmsgTEJDIFNEUkFNIHNldHVwCgogICAgQ3VycmVudGx5IDY0TSBvZiBMQkMgU0RSQU0gYXJlIG1hcHBlZCBhdCAweEYwMDAwMDAwIHdoaWNoIG1ha2VzCiAgICBpdCBkaWZmaWN1bHQgdG8gdXNlIChiL2MgdGhlbiB0aGUgbWVtb3J5IGlzIGRpc2NvbnRpbnVvdXMgYW5kCiAgICB0aGVyZSBpcyBxdWl0ZSBiaWcgbWVtb3J5IGhvbGUgYmV0d2VlbiB0aGUgRERSL1NEUkFNIHJlZ2lvbnMpLgoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyBMQkMgU0RSQU0gc2V0dXAgc28gdGhhdCBub3cgd2UgZHluYW1pY2FsbHkKICAgIHBsYWNlIHRoZSBMQkMgU0RSQU0gbmVhciB0aGUgRERSIChvciBhdCAweDAgaWYgdGhlcmUgaXNuJ3QgYW55CiAgICBERFIgbWVtb3J5KS4KCiAgICBXaXRoIHRoaXMgcGF0Y2ggd2UncmUgYWJsZSB0bzoKCiAgICAtIEJvb3Qgd2l0aG91dCBleHRlcm5hbCBERFIgbWVtb3J5OwogICAgLSBVc2UgbW9zdCAiRERSICsgU0RSQU0iIHNldHVwcyB3aXRob3V0IG5lZWQgdG8gc3VwcG9ydCBmb3IKICAgICAgc3BhcnNlL2Rpc2NvbnRpbnVvdXMgbWVtb3J5IG1vZGVsIGluIHRoZSBzb2Z0d2FyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGVmMDgxOWU5MjBiMDViMzRiNTZkOGI0MmUxZTQzZDliODlhNTJkNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHhwZXJ0LmRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjEgMTE6MjM6NTYgMjAwOCArMDIwMAoKICAgIEZEVDogZG9uJ3QgdXNlIHByaXZhdGUga2VybmVsIGhlYWRlciBmaWxlcwoKICAgIE9uIHNvbWUgc3lzdGVtcyAoZm9yIGV4YW1wbGUgRmVkb3JhIENvcmUgNCkgVS1Cb290IGJ1aWxkcyB3aXRoIHRoZQogICAgZm9sbG93aW5nIHdhbnJpbmdzIG9ubHk6CgogICAgLi4uCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvd2QvZ2l0L3UtYm9vdC9pbmNsdWRlL2xpYmZkdF9lbnYuaDozMywKCQkgICAgIGZyb20gZmR0LmM6NTE6CgkJIC91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmg6NjoyOiB3YXJuaW5nOiAjd2FybmluZyB1c2luZyBwcml2YXRlIGtlcm5lbCBoZWFkZXI7IGluY2x1ZGUgPGVuZGlhbi5oPiBpbnN0ZWFkIQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjRkMTRjNTU1MDRjZTQwMjg3MzIxYmQ2M2VlMjY5ZTMyMzNlZTRhZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAxMyAxNToxNTozMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgMS4wICYgMS4wNjYgR0h6IHRvIGNhbnlvbmxhbmRzIGJvb3RzdHJhcCBjb21tYW5kIGZvciBQTEwgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDNjYmNlNjlkNDhkMDUyNTc0ZDcxZjUwNzI0YmU1NDZkOTBhNDZhNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAxMyAxMDo0NToxNCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb3JyZWN0bHkgc2V0dXAgcmFuZ2VzIHByb3BlcnR5IGluIGViYyBub2RlCgogICAgUHJldmlvdXNseSBvbmx5IHRoZSBOT1IgZmxhc2ggbWFwcGluZyB3YXMgd3JpdHRlbiBpbnRvIHRoZSByYW5nZXMKICAgIHByb3BlcnR5IG9mIHRoZSBlYmMgbm9kZS4gVGhpcyBwYXRjaCBub3cgd3JpdGVzIGFsbCBlbmFibGVkIGNoaXAKICAgIHNlbGVjdCBhcmVhcyBpbnRvIHRoZSByYW5nZXMgcHJvcGVydHkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ3YjI2ZDU4MzI4ZjEzNzQ3MWVhOTdkZTM4MmJmYTYzZjcyMzk5MzEKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglXZWQgT2N0IDggMTU6Mzc6NTAgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIEdEU3lzIG5lbyA0MDVFUCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjMTFkYTE5NDU0NWQyZjRiYmI1NGJlMWJiNWU1MDRlMjBjZThjMTZjCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDE0OjQ2OjEzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBjb25maWdzIGZvciBOZXRzdGFsIGJvYXJkcwoKICAgIEkgcmVvcmdhbml6ZWQgbXkgY29uZmlnIGZpbGVzLCBwdXR0aW5nIHRoZSBjb21tb24gc3R1ZmYgaW50byBuZXRzdGFsLWNvbW1vbi5oCiAgICAoZ290IHRoZSBpZGVhIGJ5IGxvb2tpbmcgYSBhbWNjLWNvbW1vbi5oIGZyb20gU3RlZmFuKS4KCiAgICBBZGRlZCBzdHVmZiB0byBib290IHRoZSBuZXcgcG93ZXJwYyBsaW51eCB2aWEgTkZTIChvbmx5IHRlc3RlZCB3aXRoIEhDVTQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzljMTFkNzUxZTQyNDJjZjI5YzNjM2MyOTBkOTcxZjZkMGNiMWQxNQpBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglXZWQgT2N0IDggMTA6MTM6MTkgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIHJvdXRpbmUgdG8gcmV0cmlldmUgQ1BVIG51bWJlcgoKICAgIFByb3ZpZGUgYSB3ZWFrIGRlZmluZWQgcm91dGluZSB0byByZXRyaWV2ZSB0aGUgQ1BVIG51bWJlciBmb3IKICAgIHJlZmVyZW5jZSBib2FyZHMgdGhhdCBoYXZlIG11bHRpcGxlIENQVSdzLglEZWZhdWx0IGJlaGF2aW9yCiAgICBpcyB0aGUgZXhpc3Rpbmcgc2luZ2xlIENQVSBwcmludCBvdXRwdXQuICBSZWZlcmVuY2UgYm9hcmRzIHdpdGgKICAgIG11bHRpcGxlIENQVSdzIG5lZWQgdG8gcHJvdmlkZSBhIGJvYXJkIHNwZWNpZmljIHJvdXRpbmUuCiAgICBTZWUgYm9hcmQvYW1jYy9hcmNoZXMvYXJjaGVzLmMgZm9yIGFuIGV4YW1wbGUuCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OTIxN2JhZTQwZTkwOTgyYWI1NDAwZDg0OWMwOGFmNjgzYWNlMDM2CkF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CkRhdGU6CVdlZCBPY3QgOCAxMDoxMzoxNCAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgc3RhdGljIHN1cHBvcnQgZm9yIDQ0eCBJQk0gU0RSQU0gQ29udHJvbGxlcgoKICAgIFRoaXMgcGF0Y2ggYWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNvbmZpZ3VyZSBhIFBQQzQ0MCBiYXNlZCBJQk0gU0RSQU0KICAgIENvbnRyb2xsZXIgd2l0aCBzdGF0aWMsIGNvbXBpbGVkLWluLCB2YWx1ZXMuIFBQQzQ0MCBtZW1vcnkgc3Vic3lzdGVtCiAgICBpbmNsdWRlcyBhIE1lbW9yeSBRdWV1ZSBjb3JlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjA5ZjA5ZDM4OTkwMTdhYWFhMmIwMzFiYmE2M2MyNzFlOWM0OGU0ZApBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglXZWQgT2N0IDggMTA6MTI6NTMgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIEFNQ0MgQXJjaGVzIGJvYXJkIHN1cHBvcnQgKGR1YWwgNDYwR1QpCgogICAgVGhlIEFyY2hlcyBFdmFsdWF0aW9uIGJvYXJkIGlzIGJhc2VkIG9uIHRoZSBBTUNDIDQ2MEdUIFNvQyBjaGlwLgogICAgVGhpcyBib2FyZCBpcyBhIGR1YWwgcHJvY2Vzc29yIGJvYXJkIHdpdGggZWFjaCBwcm9jZXNzb3IgcHJvdmlkaW5nCiAgICBpbmRlcGVuZGVudCByZXNvdXJjZXMgZm9yIFJhcGlkIElPLCBHaWdhYml0IEV0aGVybmV0LCBhbmQgc2VyaWFsCiAgICBjb21tdW5pY2F0aW9ucy4gRWFjaCA0NjBHVCBoYXMgaXQncyBvd24gNTEyTUIgRERSMiBtZW1vcnksIDMyTUIgTk9SCiAgICBGTEFTSCwgVUFSVCwgRUVQUk9NIGFuZCB0ZW1wZXJhdHVyZSBzZW5zb3IsIGFsb25nIHdpdGggYSBzaGFyZWQgZGVidWcKICAgIHBvcnQuIFRoZSB0d28gNDYwR1QncyB3aWxsIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlciB2aWEgc2hhcmVkCiAgICBtZW1vcnksIEdpZ2FiaXQgRXRoZXJuZXQgYW5kIHgxIFBDSS1FeHByZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDU1YjEyZjJmZmQ3YzM0ZWVhN2U5ODNhMDU4OGIyNGYyZTY5ZTBlMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHhwZXJ0LmRlbnguZGU+CkRhdGU6CVN1biBPY3QgMTkgMjE6NTQ6MzAgMjAwOCArMDIwMAoKICAgIFRRTTgyNjA6IGVudmlyb25tZW50IGluIGZsYXNoIGluc3RlYWQgRUVQUk9NLCBiYXVkcmF0ZSAxMTVrCgogICAgU2V2ZXJhbCBjdXN0b21lcnMgaGF2ZSByZXBvcnRlZCBwcm9ibGVtcyB3aXRoIHRoZSBlbnZpcm9ubWVudCBpbgogICAgRUVQUk9NLCBpbmNsdWRpbmcgY29ycnVwdGVkIGNvbnRlbnQgYWZ0ZXIgYm9hcmQgcmVzZXQuIFByb2JhYmx5IHRoZQogICAgY29kZSB0byBwcmV2ZW50IEkyQyBFbmdlIENvbmRpdGlvbnMgaXMgbm90IHdvcmtpbmcgc3VmZmljaWVudGx5LgoKICAgIFdlIG1vdmUgdGhlIGVudmlyb25tZW50IHRvIGZsYXNoIG5vdywgd2hpY2ggYWxsb3dzIHRvIGhhdmUgYSBiYWNrdXAKICAgIGNvcHkgcGx1cyBnaXZlcyBtdWNoIGZhc3RlciBib290IHRpbWVzLgoKICAgIEFsc28sIGNoYW5nZSB0aGUgZGVmYXVsdCBjb25zb2xlIGluaXRpYWxpemF0aW9uIHRvIDExNTIwMCBicHMgYXMgdXNlZAogICAgb24gbW9zdCBvdGhlciBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxODM2ODgxMTkwYjNkOGE2OTE4YjBkNjRiMzlmZTMyYmJiZGY4NWQ4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJU3VuIE9jdCAxOSAxMjo0OToxOSAyMDA4IC0wNTAwCgogICAgODV4eDogRml4IGNvbXBpbGUgd2FybmluZyBpbiBtcGM4NTM2ZHMuYwoKICAgIG1wYzg1MzZkcy5jOiBJbiBmdW5jdGlvbiAnaXNfc2F0YV9zdXBwb3J0ZWQnOgogICAgbXBjODUzNmRzLmM6NjE1OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2RldmRpc3InCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4ZWQ0NGQ5MWM4MTIyZDAwMzY4NTIzYjBiNzQ2NjkxYzg5NWQzYjNjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxOSAwMjozNTo1MCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogZml4ICJNSHoiIHNwZWxsaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwOGVmODllY2QxNzQ5NjliMzU0NGYzZjBjN2NkMWRlM2M1N2Y3MzdiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxOSAwMjozNTo0OSAyMDA4ICswMjAwCgogICAgVXNlIHN0cm1oeigpIHRvIGZvcm1hdCBjbG9jayBmcmVxdWVuY2llcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDUwYzdkNGJlMTUwYjIyNTJjMGQyZTE2Y2ZjZjY5NjQzYmRkNmRjOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBPY3QgMTkgMDI6MzU6NDggMjAwOCArMDIwMAoKICAgIHN0cm1oeigpOiBSb3VuZCBudW1iZXJzIHdoZW4gcHJpbnRpbmcgY2xvY2sgZnJlcXVlbmNpZXMKCiAgICBSb3VuZCBjbG9jayBmcmVxdWVuY2llcyBmb3IgcHJpbnRpbmcuCgogICAgTWFueSBib2FyZHMgcHJpbnRlZCBvZmYgY2xvY2sgZnJlcXVlbmNpZXMgbGlrZSAzOTkgTUh6IGluc3RlYWQgb2YgdGhlCiAgICBleGFjdCA0MDAgTUh6IGJlY2F1c2UgbnVtYmVyZXMgd2VyZSBub3Qgcm91bmRlZC4gVGhpcyBpcyBmaXhlZCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2ODFjMDJkMDViMjljNmQ0NjA5MzUyNTA1MmM3NGI5YzRkZGM4YjA4CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE9jdCAyMCAxNToxNjo0NyAyMDA4IC0wNTAwCgogICAgODV4eDogcHJvcGVybHkgZG9jdW1lbnQgTVBDODV4eF9QT1JERVZTUjJfU0VDX0NGRwoKICAgIENvbW1pdCBmN2QxOTBiMSBjb3JyZWN0ZWQgdGhlIHZhbHVlIG9mIE1QQzg1eHhfUE9SREVWU1IyX1NFQ19DRkcsIGJ1dCBmb3Jnb3QKICAgIHRvIGFkZCBhIGNvbW1lbnQgdGhhdCB0aGUgY29ycmVjdCB2YWx1ZSBkaXNhZ3JlZXMgd2l0aCB0aGUgODU0NCByZWZlcmVuY2UKICAgIG1hbnVhbC4gIFRoZSBjaGFuZ2Vsb2cgZm9yIHRoYXQgY29tbWl0IGlzIGFsc28gd3JvbmcsIGFzIGl0IHNheXMgImJpdCAyOCIKICAgIHdoZW4gaXQgc2hvdWxkIGJlICJiaXQgMjQiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzYwZmU3MWU4MmI4M2UyNjRjOTY0Yzk0NDdjNTM3ZTlhMWY2NDNjOApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDE4OjI0OjA2IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2U6IGFkZCByZWR1bmRhbnQgZW52aXJvbm1lbnQgc2VjdG9yCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNTNlYmYwYzQ3MGM4N2Q1ZjlmYTc2NDYyZTVmNDA2NGQyNmE5YjE2YQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDE4OjIzOjI3IDIwMDggKzAyMDAKCiAgICBtZ3N1dmQ6IHVwZGF0ZSBzaXplIG9mIGVudmlyb25tZW50CgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMmUyNmQ4MzdmMTE0NjBjMGU2ZGVkZTdkNjU0MjRhMzFlMDE4M2QwOQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTAgMTE6NDE6MDAgMjAwOCArMDgwMAoKICAgIEVuYWJsZWQgdGhlIEZyZWVzY2FsZSBTR01JSSByaXNlciBjYXJkIG9uIDg1MzZEUwoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2UxODNjYWQwYzVhYjY0MTVkY2E5NWQ2YWMyOTBlYTkxOGIyOGM1NQpBdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTAgMTE6NDA6NTkgMjAwOCArMDgwMAoKICAgIEVuYWJsZWQgdGhlIEZyZWVzY2FsZSBTR01JSSByaXNlciBjYXJkIG9uIDg1NzJEUwoKICAgIFRoaXMgcGF0Y2ggYmFzZWQgb24gQW5keSdzIHdvcmsuCiAgICBJbmNsdWRpbmcgY29tbWFuZCAncGl4aXNfc2V0X3NnbWlpJyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmZmMTg4YmFmOTQyN2MzNTc0NTM1NjQzOTQzNWFjZjM4NjRkNGM2NQpBdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTAgMTE6NDA6NTggMjAwOCArMDgwMAoKICAgIE1ha2UgcGl4aXNfc2V0X3NnbWlpIG1vcmUgZ2VuZXJhbCB0byBzdXBwb3J0IE1QQzg1eHggYm9hcmRzLgoKICAgIFRoZSBwaXhpcyBzZ21paSBjb21tYW5kIGRlcGVuZCBvbiB0aGUgRlBHQSBzdXBwb3J0IG9uIHRoZSBib2FyZCwgc29tZSA4NXh4CiAgICBib2FyZHMgc3VwcG9ydCBTR01JSSByaXNlciBjYXJkIGJ1dCBkaWQgbm90IHN1cHBvcnQgdGhpcyBjb21tYW5kLCBkZWZpbmUKICAgIENPTkZJR19QSVhJU19TR01JSV9DTUQgZm9yIHRob3NlIGJvYXJkcyB3aGljaCBzdXBwb3J0IHRoZSBzZ21paSBjb21tYW5kLgoKICAgIE5vdCBsaWtlIDg1NDQsIDg1NzIgaGFzIDQgZVRzZWMgc28gdGhhdCB0aGUgb3RoZXIgdHdvJ3MgcGl4aXMgYml0cwogICAgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgODU0NC4gVGhlcmVmb3IsIGRlZmluZSBQSVhJU19WU1BFRUQyX01BU0sgYW5kCiAgICBQSVhJU19WQ0ZHRU4xX01BU0sgaW4gaGVhZGVyIGZpbGUgZm9yIGJvdGggYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWU5ODFkNjgzZDIzNjMyMDRjNzY3NzM5NDFjMmU5YzIwNDRjODA4ZgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgOCAyMzozODowMiAyMDA4IC0wNTAwCgogICAgQWRkIGNwdS84eHh4IHRvIFRBR1NfU1VCRElSUwoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFmN2QyMmI4YjUyZmMwOGM0ZDE3YTZhN2RiMWU2NjQyODFhZWQ2MwpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgOSAwMToyNTo1NSAyMDA4IC0wNTAwCgogICAgZnNsX2xhdyBjbGVhciBlbmFibGUgYmVmb3JlIGNoYW5naW5nLgoKICAgIERlYnVnIHNlc3Npb25zIG1heSBoYXZlIGxlZnQgZW5hYmxlZCBsYXdzLgogICAgQ2hhbmdpbmcgbGF3YmFyIHdpdGggYW4gdW5rb3duIGVuYWJsZWQgdGd0aWQgY291bGQgY2F1c2UgcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NmJlNTEwZjdiNTQ0M2U3ZTkzN2Y2OTZiZmJlMDM3ZmRjNzQwYjE1CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCA5IDAwOjI5OjI3IDIwMDggLTA1MDAKCiAgICBtcGM4NTcyIGFkZGl0aW9uYWwgZW5kLXBvaW50IG1vZGUKCiAgICBtcGM4NTcyIHN1cHBvcnRzIGFsbCBwY2llIGNvbnRyb2xsZXJzIGFzIGVuZC1wb2ludHMgd2l0aCBjZmdfaG9zdF9hZ2VudD0wLgogICAgSW5jbHVkZSBob3N0X2FnZW50ID09IDAgZGVjb2RlIGZvciBlbmQtcG9pbnQgZGV0ZXJtaW5hdGlvbi4KCiAgICBUaGlzIGlzIG5vdCBuZWVkZWQgZm9yIHRoZSBkcyByZWZlcmVuY2UgYm9hcmQgc2luY2UgcGNpZTMgd2lsbCBiZSBhIGhvc3QKICAgIGluIG9yZGVyIHRvIGNvbm5lY3QgdG8gdGhlIHVsaSBjaGlwLiAgSW5jbHVkZSBpdCBoZXJlIGFzIGEgcmVmZXJlbmNlIGZvcgogICAgb3RoZXIgbXBjODU3MiBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ODU2YjNkMDIyMWE4Mzg1ODBlNmJiMDZmNjE0MjVmZDc1MjliYTkzCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDIzOjM3OjU5IDIwMDggLTA1MDAKCiAgICA4NXh4IGlmIE5VTV9DUFVTPjEsIHByaW50IGNwdSBudW1iZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3ZmVjYzNlMjUwNTBhMDM2YzlmNTBmMGQyYjg1YmMzMTk5YTk2ZTAKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDggMjM6Mzg6MDEgMjAwOCAtMDUwMAoKICAgIHBpeGlzIGRvIG5vdCBwcmludCBsb25nIGhlbHAgaWYgbm90IGNvbmZpZ3VyZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBlMTdmMDJhOGE3OGQ4NTIyNWE0ZDgwNWY2YTFlYTk1YTBhNDYwYjUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgNyAwODowOTo1MCAyMDA4IC0wNTAwCgogICAgSGF2ZSB1LWJvb3QgcGFzcyBzdGFzaGluZyBwYXJhbWV0ZXJzIGludG8gZGV2aWNlIHRyZWUKCiAgICBTb21lIGNvcmVzIGRvbid0IHN1cHBvcnQgZXRoZXJuZXQgc3Rhc2hpbmcgYXQgYWxsLCBhbmQgc29tZQogICAgaW5zdGFuY2VzIGhhdmUgZXJyYXRhLiAgQWRkcyAzIHByb3BlcnRpZXMgdG8gZ2lhbmZhciBub2RlcwogICAgd2hpY2ggc3VwcG9ydCBzdGFzaGluZy4gIEZvciBub3csIGp1c3QgYWRkIHRoaXMgc3VwcG9ydCB0bwogICAgODV4eCBTb0NzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMjE2MTdmZDI2NWI3YzEyNmM2ZTJmMmQ4YTIzY2RiMDBkNGZhZGU3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjU3IDIwMDggLTA0MDAKCiAgICBBZGQgRERSIG9wdGlvbnMgc2V0dGluZyBvbiBNUEM4NjQxSFBDTiBib2FyZAoKICAgICogQWRkIGJvYXJkIHNwZWNpZmljIHBhcmFtZXRlciB0YWJsZSB0byBjaG9vc2UgY29ycmVjdCBjcG8sIGNsa19hZGp1c3QsCiAgICB3cml0ZV9kYXRhX2RlbGF5IGJhc2VkIG9uIGJvYXJkIGRkciBmcmVxdWVuY3kgYW5kIG5fcmFua3MuCgogICAgKiBTZXQgb2R0X3JkX2NmZyBhbmQgb2R0X3dyX2NmZyBiYXNlZCBvbiB0aGUgZGltbSMgYW5kIENTIy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYTA2NjA3ZDYwZDBhNjM3ODgxMmVmNThmZDFlYWIyYTdmNzcxMTEKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTI6Mzc6NDEgMjAwOCAtMDQwMAoKICAgIEFkZCBkZHIgaW50ZXJsZWF2aW5nIHN1cHBwb3J0IGZvciBNUEM4NTcyRFMgYm9hcmQKCiAgICAqIEFkZCBib2FyZCBzcGVjaWZpYyBwYXJhbWV0ZXIgdGFibGUgdG8gY2hvb3NlIGNvcnJlY3QgY3BvLCBjbGtfYWRqdXN0LAogICAgd3JpdGVfZGF0YV9kZWxheSwgMlQgYmFzZWQgb24gYm9hcmQgZGRyIGZyZXF1ZW5jeSBhbmQgbl9yYW5rcy4KCiAgICAqIFNldCBvZHRfcmRfY2ZnIGFuZCBvZHRfd3JfY2ZnIGJhc2VkIG9uIHRoZSBkaW1tIyBhbmQgQ1MjLgoKICAgICogU2V0IG1lbW9yeSBjb250cm9sbGVyIGludGVybGVhdmluZyBtb2RlIHRvIGJhbmsgaW50ZXJsZWF2aW5nLCBhbmQgZGlzYWJsZQogICAgYmFuayhjaGlwIHNlbGVjdCkgaW50ZXJsZWF2aW5nIG1vZGUgYnkgZGVmYXVsdCwgYmVjYXVzZSB0aGUgZGVmYXVsdCBvbi1ib2FyZAogICAgRERSIERJTU1zIGFyZSAyeDUxMk1CIHNpbmdsZS1yYW5rLgoKICAgICogQ2hhbmdlIENPTkZJR19JQ1MzMDdfUkVGQ0xLX0haIGZyb20gMzMzMzMzMzMgdG8gMzMzMzMwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjI5M2I0MTdhYzZhYjhlMzE3Y2EyYjc3MDM3N2NhOTNlZGYyMzcwCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjI2IDIwMDggLTA0MDAKCiAgICBBZGQgZGVidWcgaW5mb3JtYXRpb24gZm9yIEREUiBjb250cm9sbGVyIHJlZ2lzdGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzlmZmQ4MzliMWFkYTUwMmM4NmY4OGVkYWYxNTM0NDI2YjY2ODhjZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMyAxMjozNzoxMCAyMDA4IC0wNDAwCgogICAgQ2hlY2sgRERSIGludGVybGVhdmluZyBtb2RlCgogICAgKiBDaGVjayBERFIgaW50ZXJsZWF2aW5nIG1vZGUgZnJvbSBlbnZpcm9ubWVudCBieSByZWFkaW5nIG1lbWN0bF9pbnRsdl9jdGwgYW5kCiAgICBiYV9pbnRsdl9jdGwuCiAgICAqIFByaW50IEREUiBpbnRlcmxlYXZpbmcgbW9kZSBpbmZvcm1hdGlvbgogICAgKiBBZGQgZG9jL1JFQURNRS5mc2wtZGRyIHRvIGRlc2NyaWJlIHRoZSBpbnRlcmxlYXZpbmcgc2V0dGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGZiNDkxMDhlNGY4NmMyMjI0ZTFmMzAxMjQzMjhiMGRlNjZlZjcyZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMyAxMjozNjo1NSAyMDA4IC0wNDAwCgogICAgUGFzcyBkaW1tIHBhcmFtZXRlcnMgdG8gcG9wdWxhdGUgcG9wdWxhdGUgY29udHJvbGxlciBvcHRpb25zCgogICAgQmVjYXVzZSBzb21lIGRpbW0gcGFyYW1ldGVycyBsaWtlIG5fcmFua3MgbmVlZHMgdG8gYmUgdXNlZCB3aXRoIHRoZSBib2FyZAogICAgZnJlcXVlbmN5IHRvIGNob29zZSB0aGUgYm9hcmQgcGFyYW1ldGVycyBsaWtlIGNsa19hZGp1c3QgZXRjLiBpbiB0aGUKICAgIGJvYXJkX3NwZWNpZmljX3BhcmFtZXN0ZXJzIHRhYmxlIG9mIHRoZSBib2FyZCBkZHIgZmlsZSwgd2UgbmVlZCB0byBwYXNzCiAgICB0aGUgZGltbSBwYXJhbWV0ZXJzIHRvIHRoZSBib2FyZCBmaWxlLgoKICAgICogbW92ZSBkZHIgZGltbSBwYXJhbWV0ZXJzIGhlYWRlciBmaWxlIGZyb20gL2NwdSB0byAvaW5jbHVkZSBkaXJlY3RvcnkuCiAgICAqIGFkZCBkZHIgZGltbSBwYXJhbWV0ZXJzIHRvIHBvcHVsYXRlIGJvYXJkIHNwZWNpZmljIG9wdGlvbnMuCiAgICAqIEZpeCBmc2xfZGRyX2JvYXJkX29wdGlvbnMoKSBmb3IgYWxsIHRoZSA4eHh4IGJvYXJkcyB3aGljaCBjYWxsIHRoaXMgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkYmJiYjNhYmVmZjMyNTg1NWNhZTc2ZTMzZDY5ZDU2NjU2MzE0NDNmCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDEyOjM2OjM5IDIwMDggLTA0MDAKCiAgICBNYWtlIEREUiBpbnRlcmxlYXZpbmcgbW9kZSB3b3JrIGNvcnJlY3RseQoKICAgIEZpeCBzb21lIGJ1Z3M6CiAgICAgIDEuIENvcnJlY3RseSBzZXQgaW50bHZfY3RsIGluIGNzX2NvbmZpZy4KICAgICAgMi4gQ29ycmVjdGx5IHNldCBzYSwgZWEgaW4gY3NfYm5kcyB3aGVuIGJhbmsgaW50ZXJsZWF2aW5nIG1vZGUgaXMgZW5hYmxlZC4KICAgICAgMy4gU2V0IGJhc2VfYWRkcmVzcyBhbmQgdG90YWwgbWVtb3J5IGZvciBlYWNoIGRkciBjb250cm9sbGVyIGluIG1lbW9yeQoJIGNvbnRyb2xsZXIgaW50ZXJsZWF2aW5nIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYzlhYTc2YmY5MDEzMDY5ZTI0MjU4ZjQ2ZjQ2ODdjOWY5OGEwMmQ2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIFNlcCAyMiAyMzo0MDo0MiAyMDA4IC0wNTAwCgogICAgODV4eDogRW5hYmxlIGludGVycnVwdCBhbmQgc2V0ZXhwciBjb21tYW5kcyBvbiBGcmVlc2NhbGUgODV4eCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdjMGQ0YTc1MDhkMjUyZDJkN2MxMzdlZWIzNzY4MTQxMzJkZGEzMGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gU2VwIDIyIDE0OjExOjExIDIwMDggLTA1MDAKCiAgICA4NXh4OiBJbXByb3ZlIGZsYXNoIHJlbWFwcGluZyBvbiBNUEM4NTcyRFMgJiBNUEM4NTM2RFMKCiAgICBDaGFuZ2luZyB0aGUgZmxhc2ggZnJvbSBjYWNoZWFibGUgdG8gY2FjaGUtaW5oaWJpdGVkIHdhcyB0YWtpbmcgYSBzaWduaWZpY2FudAogICAgYW1vdW50IG9mIHRpbWUgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2Ugd2VyZSBpdGVyYXRpbmcgb3ZlciB0aGUgZnVsbCAyNTZNIG9mCiAgICBmbGFzaC4gIEluc3RlYWQgd2UgY2FuIGp1c3QgZmx1c2ggdGhlIEwxIGQtY2FjaGUgYW5kIGludmFsaWRhdGUgdGhlIGktY2FjaGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1NGUwOTFkM2I2MDNhMzMzMmM2MTkxOTljYTgzYTA3ZTk1OTYwZGE0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIFNlcCAyMiAxNDoxMToxMCAyMDA4IC0wNTAwCgogICAgODV4eDogRXhwb3J0IGludmFsaWRhdGVfe2ksZH1jYWNoZSBhbmQgYWRkIGZsdXNoX2RjYWNoZQoKICAgIEFkZGVkIHRoZSBhYmlsaXR5IGZvciBDIGNvZGUgdG8gaW52YWxpZGF0ZSB0aGUgaS9kLWNhY2hlJ3MgYW5kCiAgICB0byBmbHVzaCB0aGUgZC1jYWNoZS4gIFRoaXMgYWxsb3dzIHVzIHRvIG1vcmUgZWZmaWNpZW50IGNoYW5nZSBtYXBwaW5ncwogICAgZnJvbSBjYWNoZS1hYmxlIHRvIGNhY2hlLWluaGliaXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDYyNTBmMGY2Mjk3YzViYTlhZWNkZWE2MjkwNzk5YTk1YzVkNGIxZGEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxNjoxMTo1MiAyMDA4ICswMjAwCgogICAgbWdjb2dlLCBtZ3N1dmQ6IGV4dHJhY3QgbW9yZSBjb21tb24gY29kZQoKICAgIGluIGZ0X2Jsb2JfdXBkYXRlICgpIGZvciBib3RoIGJvYXJkcyB3YXMgYW4gdW5uZWNjZXNzYXJ5CiAgICByZXBldGl0aW9uIG9mIGNvZGUsIHdoaWNoIHRoaXMgcGF0Y2ggbW92ZXMgaW4gYSBjb21tb24KICAgIGZ1bmN0aW9uIGZvciB0aGlzIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA5ZTI5OTE5MmNhOTg1MGNmNzI1NDU2Mzg4MDQyYTVhYTVhNmYzZWM3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTI6MTU6NTUgMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiB1c2UgaW5fKi9vdXRfKiBhY2Nlc29ycwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGEyMWNhOTVmOGI5ZGNhMjI3MTQ5NTJiMzQ4ZTQ5MDVhYzE1N2I1Y2QKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxMzo1Mjo1MSAyMDA4ICswMjAwCgogICAgbWdzdXZkOiBmaXggY29tcGlsZXIgd2FybmluZyB3aGVuIHVzaW5nIHNvZnRfaTJjIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGNhYzljZjc4NzVjMmEwMWQ2MzQyMjgyMGVkNDczMmE5YmRmNWFiN2IKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxMjoxNTowNSAyMDA4ICswMjAwCgogICAgbWdzdXZkOiBmaXggY29kaW5nIHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNWY0YzMxMzdmNGYwNTE3ODc3MDdjNTQ4MTMzODIzZjE2NTZlYjUwOApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE3IDEyOjEzOjMwIDIwMDggKzAyMDAKCiAgICBtZ2NvZ2U6IFNlY29uZCBGbGFzaCBvbiBDUzUgbm90IG9uIENTMQoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDc2ZGExOWRmNWI4ZTE4NmQyNjlmMjkxOTA2OTZiZDMxZmI2YzgzNmIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgT2N0IDE2IDIxOjUyOjA4IDIwMDggLTA1MDAKCiAgICBBZGRlZCBhcmNoX2xtYl9yZXNlcnZlIHRvIGFsbG93IGFyY2ggc3BlY2lmaWMgbWVtb3J5IHJlZ2lvbnMgcHJvdGVjdGlvbgoKICAgIEVhY2ggYXJjaGl0ZWN0dXJlIGhhcyBkaWZmZXJlbnQgd2F5cyBvZiBkZXRlcm1pbmUgd2hhdCByZWdpb25zIG9mIG1lbW9yeQogICAgbWlnaHQgbm90IGJlIHZhbGlkIHRvIGdldCBvdmVyd3JpdHRlbiB3aGVuIHdlIGJvb3QuICBUaGlzIHByb3ZpZGVzIGEKICAgIGhvb2sgdG8gYWxsb3cgdGhlbSB0byByZXNlcnZlIGFueSByZWdpb25zIHRoZXkgY2FyZSBhYm91dC4JQ3VycmVudGx5CiAgICBvbmx5IHBwYywgbTY4ayBhbmQgc3BhcmMgbmVlZC91c2UgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGUwMmQ0YTk5MDRjOGYzNjM5NTk5NGMwYzgxNDY5ZDU1MmI4MmY1ZWEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxNiAxNjozMjozNSAyMDA4ICswMjAwCgogICAgbWdjb2dlOiBhZGRlZCBDT05GSUdfRklUIHRvIHN1cHBvcnQgdGhlIG5ldyB1LWJvb3QgaW1hZ2UgZm9ybWF0CgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNmQwZjZiY2YzMzdjNTI2MWMwOGZhYmUxMjk4MjE3OGMyYzQ4OWQ3NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBPY3QgMTYgMTU6MDE6MTUgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfIG1hY3JvcyB0byBDT05GSUdfU1lTCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3MWVkYzI3MTgxNmVjODJjZjA1NTBkZDY5ODBiZTJkYTNjYzJhZDllCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIE9jdCAxMyAxNDoxMjo1NSAyMDA4IC0wNTAwCgogICAgNzR4eC83eHgvODZ4eDogUmVuYW1lIGZsdXNoX2RhdGFfY2FjaGUgdG8gZmx1c2hfZGNhY2hlIHRvIG1hdGNoIDg1eHggdmVyc2lvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjc5OWNiNGMwZWViYjA3NjJlOTFlOTY1M2Q4YjljYzlhOTg0NDBlMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBTZXAgMjMgMTA6MDU6MDIgMjAwOCAtMDUwMAoKICAgIEV4cG9zZSBjb21tYW5kIHRhYmxlIHNlYXJjaCBmb3Igc3ViLWNvbW1hbmRzCgogICAgU3ViLWNvbW1hbmQgY2FuIGJlbmVmaXQgZnJvbSB1c2luZyB0aGUgc2FtZSB0YWJsZSBhbmQgc2VhcmNoIGZ1bmN0aW9ucwogICAgdGhhdCB0b3AgbGV2ZWwgY29tbWFuZHMgaGF2ZS4gIEV4cG9zZSB0aGlzIGZ1bmN0aW9uYWxpdHkgYnkgcmVmYWN0b3JpbmcKICAgIGZpbmRfY21kKCkgYW5kIGludHJvZHVjaW5nIGZpbmRfY21kX3RibCgpIHRoYXQgc3ViLWNvbW1hbmQgcHJvY2Vzc2luZwogICAgY2FuIGNhbGwuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmN2U1MWIyNzUwODQ0NmY4Y2FlMzkyNzk3NTgxNzEzNzk3OWFkNWU4CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6NDE6MzMgMjAwOCArMDIwMAoKICAgIG1nc3V2ZCwgbWdjb2dlOiBhZGRlZCBCT09UQ09VTlQgZmVhdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA4ZjY0ZGE3ZjgzYjU1Mzg4OWJjMDg0MDBjOTcwNDc5OTgzODJlOWQyCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6NDE6MDAgMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgSVZNIEVFcHJvbS4KCiAgICBUaGUgRUVwcm9tIGNvbnRhaW5zIHNvbWUgTWFudWZhY3R1cmVyaW5mb3JtYXRpb24sCiAgICB3aGljaCBhcmUgcmVhZCBmcm9tIHUtYm9vdCBhdCBib290IHRpbWUsIGFuZCBzYXZlZAogICAgaW4gc2FtZSBodXNoIHNoZWxsIHZhcmlhYmxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA4MTQ3M2Y2NzgxMGM0YzliN2VmYWVkOGRlZTI1OGVkNmJjNGM3OTgzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6NDA6MjggMjAwOCArMDIwMAoKICAgIGh1c2g6IGFkZCBzaG93dmFyIGNvbW1hbmQgZm9yIGh1c2ggc2hlbGwuCgogICAgVGhpcyBuZXcgY29tbWFuZCBzaG93cyB0aGUgbG9jYWwgdmFyaWFibGVzIGRlZmluZWQgaW4KICAgIHRoZSBodXNoIHNoZWxsOgoKICAgID0+IGhlbHAgc2hvd3ZhcgogICAgc2hvd3ZhcgoJLSBwcmludCB2YWx1ZXMgb2YgYWxsIGh1c2hzaGVsbCB2YXJpYWJsZXMKICAgIHNob3d2YXIgbmFtZSAuLi4KCS0gcHJpbnQgdmFsdWUgb2YgaHVzaHNoZWxsIHZhcmlhYmxlICduYW1lJwoKICAgIEFsc28gbWFrZSB0aGUgc2V0X2xvY2FsX3ZhcigpIGFuZCB1bnNldF9sb2NhbF92YXIgKCkKICAgIG5vIGxvbmdlciBzdGF0aWMsIHNvIGl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBsb2NhbAogICAgaHVzaCBzaGVsbCB2YXJpYWJsZXMgYXQgYm9vdCB0aW1lLiBJZiBDT05GSUdfSFVTSF9JTklUX1ZBUgogICAgaXMgZGVmaW5lZCwgdS1ib290IGNhbGxzIGh1c2hfaW5pdF92YXIgKCksIHdoZXJlCiAgICBib2FyZHNwZWNpZmljIGNvZGUgY2FuIGRlZmluZSBsb2NhbCBodXNoIHNoZWxsCiAgICB2YXJpYWJsZXMgYXQgYm9vdHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNjdiMjNhMzIyODQ4ZDgyOGE1ZTQ1YzA1NjdiNzI3NjJiZmRlN2FiZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM5OjQ3IDIwMDggKzAyMDAKCiAgICBJMkM6IGFkZGluZyBuZXcgImkyYyBidXMiIENvbW1hbmQgdG8gdGhlIEkyQyBTdWJzeXN0ZW0uCgogICAgV2l0aCB0aGlzIENvbW1hbmQgaXQgaXMgcG9zc2libGUgdG8gYWRkIG5ldyBJMkMgQnVzc2VzLAogICAgd2hpY2ggYXJlIGJlaGluZCAxIC4uIG4gSTJDIE11eGVzLiBEZXRhaWxzIHNlZSBSRUFETUUuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgYzI0ODUzNjQ0ZGRkMmRkMmU0MjQ2YjU4NTRhOTNlNjI1NGExNDA5MgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM5OjA4IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2ZDogYWRkIGJvYXJkIHNwZWNpZmljIEkyQyBkZWJsb2NraW5nIG1lY2hhbmlzbS4KCiAgICBBcyBkb2N1bWVudGVkIGluIGRvYy9JMkNfRWRnZV9Db25kaXRpb25zLCBhZGRpbmcgYQogICAgYm9hcmQgc3BlY2lmaWMgZGVibG9ja2luZyBtZWNoYW5pc20gdmlhIENGR19JMkNfSU5JVF9CT0FSRAogICAgZm9yIHRoZSBtZ2NvZ2UgYW5kIG1nc3V2ZCBib2FyZC4KCiAgICBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBLZXltaWxlIGluIGFzc29jaWF0aW9uCiAgICB3aXRoIEFuYXRlY2ggYW5kIEF0bWVsIGluIDE5OTguIFRoZSBDb2RlIHRvZ2dlbHMgdGhlIFNDTAogICAgdW50aWwgdGhlIFNDQSBsaW5lIGdvZXMgdG8gSElHSCAobWF4LiAxNiB0aW1lcykuCiAgICBBbmQgYWZ0ZXIgdGhpcywgYSBzdGFydCBjb25kaXRpb24gaXMgc2VudC4KCiAgICBUaGlzIGlzIGFub3RoZXIgYXBwcm9hY2ggdG8gZGVibG9jayB0aGUgSTJDIEJ1cy4gVGhlCiAgICBzb2Z0IEkyQyBkcml2ZXIgYWN0dWFsbHkgc2VuZHMgOSBjbG9ja3Mgd2l0aCBTREEgSGlnaCwKICAgIGFuZCB0aGVuIGEgc3RvcCBhdCB0aGUgZW5kLCB0byBkZWJsb2NrIHRoZSBJMkMgQnVzLgoKICAgIE1heWJlIHdlIHNob3VsZCB1c2UgdGhlIGFwcHJvYWNoIGZyb20gS2V5bWlsZSBhcwogICAgdGhlIG5ldyBzdGFuZGFyZD8KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA0Y2ExMDdlZmZlYmZiYWJhYzEwNTdjMzk2MzIxMDVkYWNlZjk1OTU3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6Mzg6MzggMjAwOCArMDIwMAoKICAgIHNvZnRfaTJjOiBBZGQgQ0ZHX0kyQ19JTklUX0JPQVJEIG9wdGlvbgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgb3B0aW9uIGZvciBhIGJvYXJkc3BlY2lmaWMKICAgIEkyQyBkZWJsb2NraW5nIG1lY2hhbmlzbSBmb3IgdGhlIHNvZnQgaTJjIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBlNWU0ZWRkOWYxZjc2MjEwYTA5YzM0ZWU4MzVmNmNmZjYwZmRiYmQxCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6Mzg6MDcgMjAwOCArMDIwMAoKICAgIG1nY29nZSwgbWdzdXZkOiBhZGQgRFRUIChMTTc1KSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDhlNDQyZGY0MzhhYjY3NzA1NzU3MWUzYWMwMTg0NmJmZjc3MTliY2UKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozNzozNCAyMDA4ICswMjAwCgogICAgbG03NTogTWFrZSB0aGUgTE03NSBNVUxUSV9CVVMgY29tcGF0aWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAxMmYxNjc4MTI3YzFkZjJiMjg3OGJhOTNjODg5NDhiZWRjMDYwNzc1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6Mzc6MDQgMjAwOCArMDIwMAoKICAgIGxtNzU6IGZpeCBDb2RpbmdzdHlsZSBpc3N1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgZjIyMDI0NTBjNzViYTY5MzRiMzU2MDI0MTAxNTAwZGRjZGU2ZTJhNgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM2OjMzIDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2ZDogYWRkZWQgRUVwcm9tIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOTY2MWJmOWQxMjBmNzYwMjM4YjJhMDczYjg0ZjJiYWYwNTAxMDA1NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjM2OjAzIDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2ZDogYWRkIEkyQyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDk4YWVkMzc5NTg2YTE1NTI5MmVmYmYzMjA5MzU2ODM2NTg0YjYwMWMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozNToyNiAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IHByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MgaWYgZHJpdmVyIGRvZXMgbm90IHVzZSBDUFUgUGlucy4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBmb2xsb3dpbmcgd2FybmluZ3MsIHdoZW4gdXNpbmcKICAgIHRoZSBzb2Z0X2kyYyBkcml2ZXIgdXNpbmcgbm8gQ1BVIHBpbnMgb24gTVBDODJ4eCBvciBNUEM4eHgKICAgIHN5c3RlbXM6CgogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfcmVzZXQnOgogICAgc29mdF9pMmMuYzo5Mzogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfc3RhcnQnOgogICAgc29mdF9pMmMuYzoxMjQ6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKICAgIHNvZnRfaTJjLmM6IEluIGZ1bmN0aW9uICdzZW5kX3N0b3AnOgogICAgc29mdF9pMmMuYzoxNDY6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKICAgIHNvZnRfaTJjLmM6IEluIGZ1bmN0aW9uICdzZW5kX2Fjayc6CiAgICBzb2Z0X2kyYy5jOjE3MTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpbW1yJwogICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3dyaXRlX2J5dGUnOgogICAgc29mdF9pMmMuYzoxOTY6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKICAgIHNvZnRfaTJjLmM6IEluIGZ1bmN0aW9uICdyZWFkX2J5dGUnOgogICAgc29mdF9pMmMuYzoyNDQ6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA3OTliNzg0YWEwMGNiMDNhMzUyODQ3YWI5ZjlhY2RkZTc5YjcyZDIxCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6MzQ6NDUgMjAwOCArMDIwMAoKICAgIGkyYzogYWRkIENPTkZJR19JMkNfTVVMVElfQlVTIGZvciBzb2Z0X2kyYyBhbmQgbXBjODI2MCBpMmMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDA4MDllYTJmNDM0MGFiMjA0NzQwMGM3ZDNkMzA0N2Y5Nzk4N2QwZmQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTozNDowNSAyMDA4ICswMjAwCgogICAgbWdjb2dlOiBmaXggQ29kaW5nIFN0eWxlIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBlNDNhMjdjNDk3MTIyMDNmZTg4NDhhMTc3MTQzMzA2MjNlZGZiMmViCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTUgMDk6MzM6MzAgMjAwOCArMDIwMAoKICAgIEkyQzogYWRkIG5ldyBjb21tYW5kIGkyYyByZXNldC4KCiAgICBJZiBJMkMgQnVzIGlzIGJsb2NrZWQgKHNlZSBkb2MvSTJDX0VkZ2VfQ29uZGl0aW9ucyksCiAgICBpdCBpcyBub3QgcG9zc2libGUgdG8gZ2V0IG91dCBvZiB0aGlzLCB1bnRpbCB0aGUKICAgIGNvbXBsZXRlIEhhcmR3YXJlIGdldHMgYSByZXNldC4gVGhpcyBuZXcgY29tbWFuZG8KICAgIGNhbGxzIGFnYWluIGkyY19pbml0IChhbmQgdGhhdCBjYWxscyBpMmNfaW5pdF9ib2FyZAogICAgaWYgZGVmaW5lZCksIHdoaWNoIHdpbGwgZGVibG9jayB0aGUgSTJDIEJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODZlOWNkZjhjNDE1YzFhOTcyNWU5ZGFlNTIzN2JhMWU3YmQ5ZjY4NgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglXZWQgT2N0IDE1IDA5OjMyOjI1IDIwMDggKzAyMDAKCiAgICBtZ3N1dmQsIG1nY29nZTogbW92ZSB0aGlzIDIgYm9hcmRzIGluIG9uZSBkaXIuCgogICAgVGhlcmUgYXJlIHNvbWUgbW9yZSBleHRlbnNpb25zLCB3aGljaCBhcmUgZm9yIGJvdGggYm9hcmRzCiAgICBhbmQgc29tZSBtb3JlIGJvYXJkcyBmcm9tIHRoaXMgbWFudWZhY3R1cmVyIHdpbGwgZm9sbG93IHNvb24uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFjNmZlNmVhYzc1ZDY5NWZkZTY3N2FmODMzMGMwZGJlNzVmYjZhMmIKQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgpEYXRlOglXZWQgT2N0IDggMTM6NDQ6MjcgMjAwOCArMDIwMAoKICAgIGh3bW9uOiBBZGQgTE02MyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBMTTYzIHRlbXBlcmF0dXJlCiAgICBzZW5zb3Igd2l0aCBpbnRlZ3JhdGVkIGZhbiBjb250cm9sLiBJdCdzIHVzZWQgb24gdGhlIEdEU3lzCiAgICBOZW8gYm9hcmQgKDQwNUVQKSB3aGljaCB3aWxsIGJlIHN1Ym1pdHRlZCBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3YmE4OTBiZjJmMmI5MjgzMTQyMDI0M2MwNTg5NTFhYTgzMTExOWZkCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVdlZCBPY3QgOCAxMTowMToxNyAyMDA4ICswOTAwCgogICAgQWRkIFJlZCBCbGFjayBUcmVlIHN1cHBvcnQKCiAgICBOb3cgaXQncyB1c2VkIGF0IFVCSSBtb2R1bGUuIE9mIGNvdXJzZSBvdGhlciBtb2R1bGVzIGNhbiB1c2UgaXQuCiAgICBJZiB5b3Ugd2FudCB0byB1c2UgaXQsIHBsZWFzZSBkZWZpbmUgQ09ORklHX1JCVFJFRQoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgZmJkODVhZDY1ZGQ5Yzk4ZjM2ZWQzZmIxMmZlNDFmMzgxYjdkNDc5NApBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KRGF0ZToJTW9uIE9jdCA2IDE2OjEwOjUzIDIwMDggLTA0MDAKCiAgICBDT05GSUdfRUZJX1BBUlRJVElPTjogQWRkZWQgc3VwcG9ydCBmb3IgRUZJIHBhcnRpdGlvbiBpbiBjbWRfZXh0MmZzLmMKCiAgICBBZGRlZCBzdXBwb3J0IGZvciBDT05GSUdfRUZJX1BBUlRJVElPTiB0byBleHQyIGNvbW1hbmRzLgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+Cgpjb21taXQgMDdmM2Q3ODliOWJlYjdjZTMyNzhjOTc0ZjRkNWM4ZjUxYjZhYjU2NwpBdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KRGF0ZToJRnJpIFNlcCAyNiAxMToxMzoyMiAyMDA4IC0wNDAwCgogICAgQWRkIHN1cHBvcnQgZm9yIENPTkZJR19FRklfUEFSVElUSU9OIChHVUlEIFBhcnRpdGlvbiBUYWJsZSkKCiAgICBUaGUgR1VJRCAoR2xvYmFsbHkgVW5pcXVlIElkZW50aWZpZXIpIFBhcnRpdGlvbiBUYWJsZSAoR1BUKSBpcyBhIHBhcnQKICAgIG9mIEVGSS4gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1VJRF9QYXJ0aXRpb25fVGFibGUKCiAgICBCYXNlZCBvbiBsaW51eC9mcy9wYXJ0aXRpb25zL2VmaS5bY2hdCgogICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+Cgpjb21taXQgZmJjODdkYzA1NDZkZmY3MDliMzhmMzU4ZTJjNWQ1ZTM5YzRjYTM3NApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBPY3QgMSAxNToyNjozMiAyMDA4ICswMjAwCgogICAgRklUOiBvdXRwdXQgaW1hZ2UgbG9hZCBhZGRyZXNzIGZvciB0eXBlICdmaXJtd2FyZScsIGZpeCBtZXNzYWdlIHdoaWxlIHRoZXJlCgogICAgTm93IHRoYXQgdGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgdXNlcyB0aGUgJ2Zpcm13YXJlJyB0eXBlIGZvciB1cGRhdGVzLCBpdCBpcwogICAgdXNlZnVsIHRvIGluc3BlY3QgdGhlIGxvYWQgYWRkcmVzcyBvZiBzdWNoIGltYWdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRiYWU5MDkwNGI2OWNlM2RlYjlmN2MzMzRlZjEyZWQ3NGUxOGEyNzUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDEgMTU6MjY6MzEgMjAwOCArMDIwMAoKICAgIEF1dG9tYXRpYyBzb2Z0d2FyZSB1cGRhdGUgZnJvbSBURlRQIHNlcnZlcgoKICAgIFRoZSBhdXRvLXVwZGF0ZSBmZWF0dXJlIGFsbG93cyB0byBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHNvZnR3YXJlIHVwZGF0ZXMKICAgIGZyb20gYSBURlRQIHNlcnZlciBhbmQgc3RvcmUgdGhlbSBpbiBGbGFzaCBtZW1vcnkgZHVyaW5nIGJvb3QuIFVwZGF0ZXMgYXJlCiAgICBjb250YWluZWQgaW4gYSBGSVQgZmlsZSBhbmQgcHJvdGVjdGVkIHdpdGggU0hBLTEgY2hlY2tzdW0uCgogICAgTW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBjYW4gYmUgZm91bmQgaW4gZG9jL1JFQURNRS51cGRhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAzZjBjZjUxZGFiYWNjMjcyNDczMWM1MDc5YTYwZWE5ODkxMDNiYjhmCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjI3IDIwMDggKzAyMDAKCiAgICBmbGFzaDogZmFjdG9yIG91dCBhZGp1c3Rpbmcgb2YgRmxhc2ggYWRkcmVzcyB0byB0aGUgZW5kIG9mIHNlY3RvcgoKICAgIFRoZSB1cGNvbWluZyBhdXRvbWF0aWMgdXBkYXRlIGZlYXR1cmUgbmVlZHMgdGhlIGFiaWxpdHkgdG8gYWRqdXN0IGFuCiAgICBhZGRyZXNzIHdpdGhpbiBGbGFzaCB0byB0aGUgZW5kIG9mIGl0cyByZXNwZWN0aXZlIHNlY3Rvci4gRmFjdG9yIG91dAogICAgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGEgbmV3IGZ1bmN0aW9uIGZsYXNoX3NlY3Rfcm91bmRiKCkuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlODNjYzA2Mzc1YWMyYmVhMDgzMGM2ZWQwZjlkOGZkYzNjMWIyN2Q1CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjI5IDIwMDggKzAyMDAKCiAgICBuZXQ6IE1ha2UgVEZUUCBzZXJ2ZXIgdGltZW91dCBjb25maWd1cmFibGUKCiAgICBUaGVyZSBhcmUgdHdvIGFzcGVjdHMgb2YgYSBURlRQIHRyYW5zZmVyIGludm9sdmluZyB0aW1lb3V0czoKICAgIDEuIHRpbWVvdXQgd2FpdGluZyBmb3IgaW5pdGlhbCBzZXJ2ZXIgcmVwbHkgYWZ0ZXIgc2VuZGluZyBSUlEKICAgIDIuIHRpbWVvdXRzIHdoaWxlIHRyYW5zZmVycmluZyBhY3R1YWwgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIKCiAgICBTaW5jZSB0aGUgdXBjb21pbmcgYXV0by11cGRhdGUgZmVhdHVyZSBhdHRlbXB0cyBhIFRGVFAgZG93bmxvYWQgZHVyaW5nIGVhY2gKICAgIGJvb3QsIGl0IGlzIHVuZGVzaXJhYmxlIHRvIGhhdmUgYSBsb25nIGRlbGF5IHdoZW4gdGhlIFRGVFAgc2VydmVyIGlzIG5vdAogICAgYXZhaWxhYmxlLiBUaHVzLCB0aGlzIGNvbW1pdCBtYWtlcyB0aGUgc2VydmVyIHRpbWVvdXQgKDEuKSBjb25maWd1cmFibGUgYnkgdHdvCiAgICBnbG9iYWwgdmFyaWFibGVzOgoKICAgIFRmdHBSUlFUaW1lb3V0TVNlY3MKICAgIFRmdHBSUlFUaW1lb3V0Q291bnRNYXgKCiAgICBUZnRwUlJRVGltZW91dE1TZWNzIG92ZXJyaWRlcyBkZWZhdWx0IHRpbWVvdXQgd2hlbiB0cnlpbmcgdG8gY29ubmVjdCB0byBhIFRGVFAKICAgIHNlcnZlciwgVGZ0cFJSUVRpbWVvdXRDb3VudE1heCBvdmVycmlkZXMgZGVmYXVsdCBudW1iZXIgb2YgY29ubmVjdGlvbiByZXRyaWVzLgogICAgVGhlIHRvdGFsIGRlbGF5IHdoZW4gdHJ5aW5nIHRvIGRvd25sb2FkIGEgZmlsZSBmcm9tIGEgbm9uLWV4aXN0aW5nIFRGVFAgc2VydmVyCiAgICBpcyBUZnRwUlJRVGltZW91dE1TZWNzIHggVGZ0cFJSUVRpbWVvdXRDb3VudE1heCBtaWxsaXNlY29uZHMuCgogICAgVGltZW91dHMgZHVyaW5nIGZpbGUgdHJhbnNmZXJzICgyLikgYXJlIHVuYWZmZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNDlmM2JkYmJhODA3MWY1NmQ5NTBhOTQ5OGI2Y2RiOTk4YjM1MzQwYQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBPY3QgMSAxNToyNjoyOCAyMDA4ICswMjAwCgogICAgbmV0OiBleHByZXNzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBOZXRTZXRUaW1lb3V0KCkgaW4gbWlsbGlzZWNvbmRzCgogICAgRW5mb3JjZSBtaWxsaXNlY29uZCBzZW1hbnRpY3Mgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIE5ldFNldFRpbWVvdXQoKSAtLQogICAgdGhlIGNoYW5nZSBpcyB0cmFuc3BhcmVudCBmb3Igd2VsbC1iZWhhdmluZyBib2FyZHMgKENGR19IWiA9PSAxMDAwIGFuZAogICAgZ2V0X3RpbWVyKCkgY291bnRpaW5nIGluIG1pbGxpc2Vjb25kcykuCgogICAgUmF0aW9uYWxlIGZvciB0aGlzIHBhdGNoIGlzIHRvIGVuYWJsZSBtaWxsaXNlY29uZCBncmFudWxhcml0eSBmb3IKICAgIG5ldHdvcmstcmVsYXRlZCB0aW1lb3V0cywgd2hpY2ggaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgYXV0b21hdGljCiAgICBzb2Z0d2FyZSB1cGRhdGUgZmVhdHVyZS4KCiAgICBTdW1tYXJ5IG9mIGNoYW5nZXM6CiAgICAtIGRvIG5vdCBzY2FsZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gTmV0U2V0VGltZW91dCgpIGJ5IENGR19IWgogICAgLSBjaGFuZ2UgdGltZW91dCB2YWx1ZXMgdXNlZCBpbiB0aGUgbmV0d29ya2luZyBjb2RlIHRvIG1pbGxpc2Vjb25kcwoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGM2OGEwNWZlZWI4OGRlOWZjZjE1OGU2N2ZmNjQyM2M0Y2M5ODhmODgKQXV0aG9yOiByaWNoYXJkcmV0YW51YnVuIDxyaWNoYXJkcmV0YW51YnVuQHJ1Z2dlZGNvbS5jb20+CkRhdGU6CU1vbiBTZXAgMjkgMTg6Mjg6MjMgMjAwOCAtMDQwMAoKICAgIEFkZHMgdHdvIG1vcmUgZXRoZXJuZXQgaW50ZXJmYWNlIHRvIDgzeHgKCiAgICBBZGRlZCBhcyBhIGNvbnZlbmllbmNlIGZvciBvdGhlciBwbGF0Zm9ybXMgdGhhdCB1c2VzIE1QQzgzNjAgKGhhcyA4IFVDQykuCiAgICBTaXggZXRoIGludGVyZmFjZSBpcyBjaG9zZW4gYmVjYXVzZSB0aGUgcGxhdGZvcm0gSSBhbSB1c2luZyBjb21iaW5lcwogICAgVUNDMSYyIGFuZCBVQ0MzJjQgYXMgMTAwMCBFdGggYW5kIHRoZSBvdGhlciBmb3VyIFVDQ3MgYXMgMTAvMTAwIEV0aC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZ2VkQ29tLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNDE0MTBlZWU0NzJiMGY0MmUwM2E3N2Y5NjFiYmM1NWVmNThmM2MwMQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjQgMTE6NDI6MTIgMjAwOCAtMDUwMAoKICAgIENoYW5nZSBVRUMgUEhZIGludGVyZmFjZSB0byBSR01JSSBvbiBNUEM4NTY4TURTCgogICAgQ2hhbmdlIFVFQyBwaHkgaW50ZXJmYWNlIGZyb20gR01JSSB0byBSR01JSSBvbiBNUEM4NTY4TURTIGJvYXJkCgogICAgQmVjYXVzZSBvbiBNUEM4NTY4TURTLCBHTUlJIGludGVyZmFjZSBpcyBvbmx5IHJlY29tbWVuZGVkIGZvciAxMDAwTWJwcyBzcGVlZCwKICAgIGJ1dCBSR01JSSBpbnRlcmZhY2UgY2FuIHdvcmsgYXQgMTAvMTAwLzEwMDBNYnBzLCBhbmQgUkdNSUkgaW50ZXJmYWNlIHdvcmtzIG1vcmUgc3RhYmxlLgoKICAgIE5vdyBib3RoIFVFQzEgYW5kIFVFQzIgY2FuIHdvcmsgcHJvcGVybHkgdW5kZXIgdS1ib290LgoKICAgIEl0IGlzIGFsc28gaW4gY29uc2lzdGVudCB3aXRoIHRoZSBrZXJuZWwgc2V0dGluZyBmb3IgODU2OCBVRUMgcGh5IGludGVyZmFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiNTliMTZjYTI0YmM3ZTc3ZWMxMTMwMjFhNmQ3N2I5YjMyZmNmMTkyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAxOCAyMTozMDozMSAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MjAwOC4xMCByZWxlYXNlOiB1cGRhdGUgQ0hBTkdFTE9HICYgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY3YTM1YTYwY2Y0NTQ5MTg3MWE1YzI4ZTlhZDI0ZGIwMDU0ODc4NTcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxNyAxODoyNDowNiAyMDA4ICswMjAwCgogICAgbWdjb2dlOiBhZGQgcmVkdW5kYW50IGVudmlyb25tZW50IHNlY3RvcgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMjUzN2VlODU5NTRhZjlkMDM2YjE4YjY0NGYzZTE4ZDgzN2JmNGE1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTg6MjM6MjcgMjAwOCArMDIwMAoKICAgIG1nc3V2ZDogdXBkYXRlIHNpemUgb2YgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmYTdiMWMwN2U5MzcxYWVhOGY4N2VlNmQzYzJlYTU1NjRiZDhjYzhkCkF1dGhvcjogTGVwY2hhIFN1Y2hpdCA8U3VjaGl0LkxlcGNoYUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDE2IDEzOjM4OjAwIDIwMDggLTA1MDAKCiAgICA4M3h4IE5BTkQgYm9vdDogd2FpdCBmb3IgTFRFU1JbQ0NdCgogICAgQXQgbGVhc3Qgc29tZSByZXZpc2lvbnMgb2YgdGhlIDgzMTMsIGFuZCBwb3NzaWJseSBvdGhlciBjaGlwcywgZG8gbm90CiAgICB3YWl0IGZvciBhbGwgcGFnZXMgb2YgdGhlIGluaXRpYWwgNEsgTkFORCByZWdpb24gdG8gYmUgbG9hZGVkIGJlZm9yZQogICAgYmVnaW5uaW5nIGV4ZWN1dGlvbjsgdGh1cywgd2Ugd2FpdCBmb3IgaXQgYmVmb3JlIGJyYW5jaGluZyBvdXQgb2YgdGhlCiAgICBmaXJzdCBOQU5EIHBhZ2UuCgogICAgVGhpcyBmaXhlcyB3YXJtIHJlc2V0IHByb2JsZW1zIHdoZW4gYm9vdGluZyBmcm9tIE5BTkQgb24gODMxM2VyZGIuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjI5ZTBlYTBhZjAzZDU5M2M2NDYxNDEzNmFjYzcyM2E3YTAyMmEyCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglGcmkgT2N0IDE3IDEyOjU0OjE4IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFBQQzQ0eCBNUSBpbml0aWFsaXphdGlvbgoKICAgIFNldCB0aGUgTVEgUmVhZCBQYXNzaW5nICYgTUNJRiBDeWNsZSBsaW1pdHMgdG8gdGhlIHJlY29tbWVuZGVkIGJ5IEFNQ0MKICAgIHZhbHVlcy4gVGhpcyBmaXhlcyB0aGUgb2NjYXNpb25hbCA0NDBTUGUgaGFyZCBsb2NraW5nIGlzc3VlcyB3aGVuIHRoZSA0NDBTUGUncwogICAgZGVkaWNhdGVkIERNQSBlbmdpbmVzIGFyZSB1c2VkIChlLmcuIGJ5IHRoZSBoL3cgYWNjZWxlcmF0ZWQgUkFJRCBkcml2ZXIpLgoKICAgIFByZXZpb3VzbHkgdGhlIGFwcHJvcHJpYXRlIGluaXRpYWxpemF0aW9uIGhhZCBiZWVuIG1hZGUgaW4gTGludXgsIGJ5IHRoZQogICAgcHBjNDQwc3BlIEFETUEgZHJpdmVyLCB3aGljaCBpcyB3cm9uZyBiZWNhdXNlIG1vZGlmeWluZyB0aGUgTVEgY29uZmlndXJhdGlvbgogICAgcmVnaXN0ZXJzIGFmdGVyIG5vcm1hbCBvcGVyYXRpb24gaGFzIGJlZ3VuIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIGNvdWxkCiAgICBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KCiAgICBDb21tZW50IGZyb20gU3RlZmFuOiBUaGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdlIHRoZSByZXN1bHRpbmcgdmFsdWUgb2YgdGhlCiAgICBNUSByZWdpc3RlcnMuIEl0IGV4cGxpY2l0bHkgc2V0cy9jbGVhcnMgYWxsIGJpdHMgdG8gdGhlIGRlc2lyZWQgc3RhdGUgd2hpY2gKICAgIGJldHRlciBkb2N1bWVudHMgdGhlIHJlc3VsdGluZyByZWdpc3RlciB2YWx1ZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gcHJlLXNldAogICAgZGVmYXVsdCB2YWx1ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVjMDgxYzJjMTkwMTQ4YjM3NGU4NmE3OTVmYjZiMWM0OWNhZWI1NDkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgMTcgMTI6NTE6NDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUFBDNDR4IE1RIGluaXRpYWxpemF0aW9uCgogICAgU2V0IHRoZSBNUSBSZWFkIFBhc3NpbmcgJiBNQ0lGIEN5Y2xlIGxpbWl0cyB0byB0aGUgcmVjb21tZW5kZWQgYnkgQU1DQwogICAgdmFsdWVzLiBUaGlzIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIDQ0MFNQZSBoYXJkIGxvY2tpbmcgaXNzdWVzIHdoZW4gdGhlIDQ0MFNQZSdzCiAgICBkZWRpY2F0ZWQgRE1BIGVuZ2luZXMgYXJlIHVzZWQgKGUuZy4gYnkgdGhlIGgvdyBhY2NlbGVyYXRlZCBSQUlEIGRyaXZlcikuCgogICAgUHJldmlvdXNseSB0aGUgYXBwcm9wcmlhdGUgaW5pdGlhbGl6YXRpb24gaGFkIGJlZW4gbWFkZSBpbiBMaW51eCwgYnkgdGhlCiAgICBwcGM0NDBzcGUgQURNQSBkcml2ZXIsIHdoaWNoIGlzIHdyb25nIGJlY2F1c2UgbW9kaWZ5aW5nIHRoZSBNUSBjb25maWd1cmF0aW9uCiAgICByZWdpc3RlcnMgYWZ0ZXIgbm9ybWFsIG9wZXJhdGlvbiBoYXMgYmVndW4gaXMgbm90IHN1cHBvcnRlZCBhbmQgY291bGQKICAgIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgoKICAgIENvbW1lbnQgZnJvbSBTdGVmYW46IFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgdGhlIHJlc3VsdGluZyB2YWx1ZSBvZiB0aGUKICAgIE1RIHJlZ2lzdGVycy4gSXQgZXhwbGljaXRseSBzZXRzL2NsZWFycyBhbGwgYml0cyB0byB0aGUgZGVzaXJlZCBzdGF0ZSB3aGljaAogICAgYmV0dGVyIGRvY3VtZW50cyB0aGUgcmVzdWx0aW5nIHJlZ2lzdGVyIHZhbHVlIGluc3RlYWQgb2YgcmVseWluZyBvbiBwcmUtc2V0CiAgICBkZWZhdWx0IHZhbHVlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjdkMTkwYjFjMGIzYWI3ZmM1MzA3NGFkMjg2MmY3ZGU5OWRlMzdmZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMTYgMjE6NTg6NTAgMjAwOCAtMDUwMAoKICAgIDg1eHg6IFVzaW5nIHByb3BlciBJMkMgc291cmNlIGNsb2NrIGRpdmlkZXIgZm9yIE1QQzg1NDQKCiAgICBUaGUgTVBDODU0NCBSTSBpbmNvcnJlY3Qgc2hvd3MgdGhlIFNFQ19DRkcgYml0IGluIFBPUkRFVlNSMiBhcyBiZWluZwogICAgYml0IDI2LCBpbnN0ZWFkIGl0IHNob3VsZCBiZSBiaXQgMjguICBUaGlzIGNhdXNlZCBpbiBpbmNvcnJlY3QKICAgIGludGVycHJldGF0aW9uIG9mIHRoZSBpMmNfY2xrIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRoZSBTRUMgY2xrIG9uCiAgICBNUEM4NTQ0LiAgVGhlIFNFQyBjbGsgaXMgY29udHJvbGxlZCBieSBjZmdfc2VjX2ZyZXEgdGhhdCBpcyByZXBvcnRlZAogICAgaW4gUE9SREVWU1IyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDI2NTNiODI2YWRiMzE5YTFkZjA2ZTI0ZWYyNjA5NmIyYTVkOWQyYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMTYgMjE6NTg6NDkgMjAwOCAtMDUwMAoKICAgIFJldmVydCAiODV4eDogVXNpbmcgcHJvcGVyIEkyQyBzb3VyY2UgY2xvY2sgZGl2aWRlciBmb3IgTVBDODU0NCIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IGRmZmQyNDQ2ZmIwNDFmMzhlZjAzNGIwZmNmNDFlNTFlNWU0ODkxNTkuCgogICAgVGhlIGZpeCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggaXMgbm90IGNvcnJlY3QuICBUaGUgcHJvYmxlbSBpcwogICAgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBub3QgY29ycmVjdCBmb3IgdGhlIE1QQzg1NDQgd2l0aCByZWdhcmRzCiAgICB0byB3aGljaCBiaXQgaW4gUE9SREVWU1IyIGlzIGZvciB0aGUgU0VDX0NGRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIxNzljNDc2NmJmZmVlY2U5OGU1ZTkyMDQwNjI5YTk2Yzk3ZTIzMGMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgT2N0IDE1IDEwOjE5OjQxIDIwMDggLTA1MDAKCiAgICA4NXh4OiBGaXggY29tcGlsZSB3YXJuaW5nCgogICAgbXBjODUzNmRzLmM6IEluIGZ1bmN0aW9uICdpc19zYXRhX3N1cHBvcnRlZCc6CiAgICBtcGM4NTM2ZHMuYzo2MTQ6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZGV2ZGlzcicKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDkwMjliNjhmM2Y4MWIzMDEzMDQ0ZjE2N2VhMDI1ZTgzNmU2YzhjMGUKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDE1IDEwOjQwOjI0IDIwMDggKzA4MDAKCiAgICBGaXggdGhlIGZ1bmN0aW9uIGNvbmZsaWN0IGluIHg4NmVtdSB3aGVuIERFQlVHIGlzIG9uCgogICAgVGhlIGZ1bmN0aW9uIHBhcnNlX2xpbmUoKSBpbiBjb21tb24vbWFpbi5jIHdhcyBleHBvc2VkIGdsb2JhbGx5IGJ5IGNvbW1pdAogICAgNjYzNmI2MmE2ZWZjN2YxNGU2ZTc4ODc4ODYzMWFlN2E3ZmNhNDUzNywgUmVzdWx0IGluIGNvbmZsaWN0IHdpdGggdGhlIHNhbWUKICAgIG5hbWUgZnVuY2l0b24gaW4gZHJpdmVycy9iaW9zX2VtdWxhdG9yL3g4NmVtdS9kZWJ1Zy5jIHdoZW4gZGVmaW5lIHRoZSBERUJVRy4KICAgIFRoaXMgcGF0Y2ggZml4IHRoaXMgYnkgcmVuYW1pbmcgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWJ1Zy5jIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNGRiYWNmNjlhNjY5YTE3NDg3MDU0NTUyZmMyNzYxMTQ5ZGQ2NzY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAxNTo1MDo0NSAyMDA4ICswMjAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0csIHByZXBhcmUgMjAwOC4xMC1yYzMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDM3NGI5MDM4MjkzZDAxZDg3NDRhNDZhZjliNzg1NGE2ZmQ5OWIyMjgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAxNSAwOTo1MToxOSAyMDA4ICswMjAwCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gbGliX3BwYy9ib2FyZC5jCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW50cm9kdWNlZCBieSBjb21taXQgMGY4Y2JjMTgKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTcyNDU1NTc1NWE2ZjEwNjY2MzY0ODFiNDFmNzA5NGUwY2U5M2E2OQpBdXRob3I6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KRGF0ZToJVGh1IE9jdCA5IDEwOjI5OjE0IDIwMDggKzA1MzAKCiAgICBtcGM4M3h4OiB3YWl0IHRpbGwgVVBNIGNvbXBsZXRlcyB0aGUgd3JpdGUgdG8gYXJyYXkKCiAgICBSZWZlcmVuY2UgbWFudWFsIHN0YXRlcyB0aGF0IE14TVJbTUFEXSBpbmNyZW1lbnQgaXMgdGhlIGluZGljYXRpb24KICAgIG9mIHdyaXRlIHRvIFVQTSBhcnJheSBpcyBjb21wbGV0ZS4gSG9ub3VyIHRoYXQuIEFsc28sIG1ha2UgdGhlIGR1bW15CiAgICB3cml0ZSBleHBsaWNpdC4KCiAgICBhbHNvIGZpeCB0aGUgY29tbWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAzZTJkYmIxOGU4NThlMmY3YTZhYWE0MzdmMjkwZjM2OTBkMDJkNTEKQXV0aG9yOiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CkRhdGU6CVdlZCBPY3QgOCAxODoxMjoyMCAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIHVud2FudGVkICc7JyBhdCBlbmQgb2YgZGVmaW5lLgoKICAgIEN1cnJlbnRseSB0aGlzIGlzIG5vdCBjcmVhdGluZyBhbnkgcHJvYmxlbS4gQnV0IGl0IHdpbGwgcmVzdWx0CiAgICBpbiBjb21waWxhdGlvbiBlcnJvciB3aGVuIHVzZWQgYXMgYmVsb3cuCgogICAgcHJpbnRmKCJDRkdfU0RSQU1fQ0ZHMiAtICUwOHhcbiIsIENGR19TRFJBTV9DRkcyKTsKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+CgogICAgY29udGludWF0aW9uIG9mIHRoZSB0aGVtZSBiYXNlZCBvbiBnaXQgZ3JlcCAiXiNkZWZpbmUgQ0ZHXy4qOyQiIGluY2x1ZGUvCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMjkzNGE1NjY1MGU5YTZjNTQ0MzJmOWNlNmRjMzY3NTc5NjczODVlCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CU1vbiBPY3QgNiAxMDo1Mzo1OSAyMDA4IC0wNDAwCgogICAgQVJNIERhVmluY2k6IEFkZCBtYWludGFpbmVyIGluZm9ybWF0aW9uIGZvciBTRkZTRFIgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgMTJjNjY3MGY4NzNlZDYzMmMyNjRhNmYzZThiZjEyOTdkNWMzZGRiYwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTYXQgT2N0IDQgMTk6MjY6MTYgMjAwOCArMDIwMAoKICAgIGFwaTogZml4IHR5cGUgbWlzbWF0Y2gKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgdHlwZSBtaXNtYXRjaCBhbmQgdGh1cyByZW1vdmVzIGEgY29tcGlsZXIKICAgIHdhcm5pbmcgd2hlbiBjb21waWxpbmcgd2l0aCBDT05GSUdfQVBJIG9uIHBvd2VycGMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgOWJjMmU0ZWVlM2JjYjhlNjM4NDdkN2E3MzNlMGM2MDc4MDdkNjE0MQpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBPY3QgMSAxMjoyNTowNCAyMDA4IC0wNTAwCgogICAgY21kX2kyYzogRml4IGhlbHAgZm9yIENPTkZJR19JMkNfQ01EX1RSRUUgJiYgIUNPTkZJR19JMkNfTVVMVElfQlVTCgogICAgT3JpZ2luYWwgY29kZSBkaXNwbGF5ZWQ6CiAgICAgPT4gaGVscCBpMmMKICAgICBpMmMgaTJjIHNwZWVkIFtzcGVlZF0gLSBzaG93IG9yIHNldCBJMkMgYnVzIHNwZWVkCiAgICAgaTJjIG1kIGNoaXAgYWRkcmVzc1suMCwgLjEsIC4yXSBbIyBvZiBvYmplY3RzXSAtIHJlYWQgZnJvbSBJMkMgZGV2aWNlCiAgICAgLi4uCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBhMGIxYjYxMGU5ODBlMjUzZDRjMjUxOWVlMTViZDA5MzdjM2Y4YmUxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAxNCAyMjoxMzo0MSAyMDA4ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGY4Y2JjMTgyOWQ5YzdkOTYxNmZkMjliMzY2YTk5ZDAzN2ZhY2RjZApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTAgMTE6NDE6MDEgMjAwOCArMDgwMAoKICAgIERvIG5vdCBpbml0IFNBVEEgd2hlbiBkaXNhYmxlZCBvbiA4NTM2RFMuCgogICAgU0dNSUkgYW5kIFNBVEEgc2hhcmUgdGhlIHNlcmRlcyBvbiBNUEM4NTM2IENQVSwgV2hlbiBTQVRBIGRpc2FibGVkIGFuZCB0aGUKICAgIGRyaXZlciBzdGlsbCB0cnkgdG8gYWNjZXNzIHRoZSBTQVRBIHJlZ2lzdGVycywgdGhlIGNwdSB3aWxsIGhhbmd1cC4KICAgIFRoaXMgcGF0Y2ggdHJ5IHRvIGZpeCB0aGlzIGJ5IHJlYWRpbmcgdGhlIHNlcmRlcyBzdGF0dXMgYmVmb3JlIHRoZSBTQVRBCiAgICBpbml0aWFsaXplLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDlkYmMzNjY3NDQ5NjAwMTM5NjVmY2U4ODUxMDM1YjYxNDFmM2IzYWUKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJRnJpIE9jdCAxMCAxMDoyMzoyMiAyMDA4ICswMjAwCgogICAgVGhlIFBJUEVfSU5URVJSVVBUIGZsYWcgaXMgdXNlZCB3cm9uZwoKICAgIEF0IGEgbG90IG9mIHBsYWNlcyBpbiB0aGUgY29kZSB0aGUgUElQRV9JTlRFUlJVUFQgZmxhZ3MgYW5kIGZyaWVuZHMKICAgIGFyZSB1c2VkIHdyb25nLiBUaGUgd3JvbmcgYml0cyBhcmUgY29tcGFyZWQgdG8gdGhpcyBmbGFnIHJlc3VsdGluZwogICAgaW4gd3JvbmcgY29uZGl0aW9ucy4gQWxzbyB0aGVyZSBhcmUgbWFjcm9zIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yCiAgICBQSVBFXyogZmxhZ3MuCiAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGVtIGFsbCwgaG93ZXZlciwgSSB3YXMgbm90IGFibGUgdG8gdGVzdCB0aGUKICAgIGNoYW5nZXMsIGJlY2F1c2UgSSBkbyBub3QgaGF2ZSBhbnkgb2YgdGhlc2UgYm9hcmRzLgoKICAgIFJldmlldyByZXF1aXJlZCEKCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgNDg4NjcyMDg0NDRjYjJhODJlMmFmOWMzMjQ5ZTkwYjdlZDRhMTc1MQpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglGcmkgT2N0IDEwIDEwOjIzOjIxIDIwMDggKzAyMDAKCiAgICBmaXggVVNCIGluaXRpYWxpc2F0aW9uIHByb2NlZHVyZQoKICAgIFRoZSBtYXggcGFja2V0IHNpemUgaXMgZW5jb2RlZCBhcyAwLDEsMiwzIGZvciA4LDE2LDMyLDY0IGJ5dGVzLgogICAgQXQgc29tZSBwbGFjZXMgZGlyZWN0bHkgOCwxNiwzMiw2NCB3YXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBlbmNvZGVkCiAgICB2YWx1ZS4gTWFkZSBhIGVudW0gZm9yIHRoZSBvcHRpb25zIHRvIG1ha2UgdGhpcyBtb3JlIGNsZWFyIGFuZCB0byBoZWxwCiAgICBwcmV2ZW50aW5nIHNpbWlsYXIgZXJyb3JzIGluIHRoZSBmdXR1cmUuCgogICAgQWZ0ZXIgZml4aW5nIHRoaXMgYnVnIGl0IGJlY2FtZSBjbGVhciB0aGF0IGFub3RoZXIgYnVnIGV4aXN0ZWQgd2hlcmUKICAgIHRoZSAncGlwZScgaXMgYW5kLWVkIHdpdGggUElQRV8qIGZsYWdzLCB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuCiAgICAndXNiX3BpcGV0eXBlKHBpcGUpJywgb3IgZXZlbiBiZXR0ZXIgdXNiX3BpcGVpbnQocGlwZSkuCgogICAgQWxzbyByZW1vdmVkIHRoZSB0cmlwbGUgJ2dldF9kZXZpY2VfZGVzY3JpcHRvcicgc2VxdWVuY2UsIGl0IGhhcyBubyB1c2UsCiAgICBhbmQgV2luZG93cyBub3IgTGludXggYmVoYXZlcyB0aGF0IHdheS4KICAgIFRoZXJlIGlzIGFsc28gYSBwb2xsIGdvaW5nIG9uIHdpdGggYSB0aW1lb3V0IHdoZW4gdXNiX2NvbnRyb2xfbXNnKCkgZmFpbHMuCiAgICBIb3dldmVyLCB0aGUgcG9sbCBpcyB1c2VsZXNzLCBiZWNhdXNlIHRoZSBmbGFnIHdpbGwgbmV2ZXIgYmUgc2V0IG9uIGEgZXJyb3IsCiAgICBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvZGUgdGhhdCBydW5zIGluIGEgcGFyYWxsZWwgdGhhdCBjYW4gc2V0IHRoaXMgZmxhZy4KICAgIENoYW5nZWQgdGhpcyB0byBzb21ldGhpbmcgbW9yZSBsb2dpY2FsLgoKICAgIFRlc3RlZCBvbiBBVDkxU0FNOTI2MWVrIGFuZCBjb21wYXJlZCB0aGUgZmxvdyBvbiB0aGUgVVNCIGJ1cyB0byB3aGF0CiAgICBMaW51eCBpcyBkb2luZy4gVGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBhbnltb3JlIGluIHRoZSBlYXJseSBpbml0aWFsaXNhdGlvbgogICAgc2VxdWVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGVjNGQ4YzFjMWQ5NGE3OTBjMTQ3M2FlOGFhY2UyODJiODE3YzMxMjMKQXV0aG9yOiBOaWtpdGEgVi4gWW91c2hjaGVua28gPHlvdXNoQGNzLm1zdS5zdT4KRGF0ZToJRnJpIE9jdCAzIDAwOjAzOjU1IDIwMDggKzA0MDAKCiAgICBmc2xfZGl1OiBmaXggYWxpZ25tZW50IGVycm9yIHRoYXQgY2F1c2VkIG1hbGxvYyBjb3JydXB0aW9uCgogICAgV2hlbiBhbGlnbmluZyBtYWxsb2MoKWVkIHNjcmVlbl9iYXNlLCBpbnZhbGlkIG9mZnNldCB3YXMgYWRkZWQuCiAgICBUaGlzIG5vdCBvbmx5IGNhdXNlZCBtaXNhbGlnbmVkIHJlc3VsdCAod2hpY2ggZGlkIG5vdCBjYXVzZSBoYXJkd2FyZQogICAgbWlzYmVoYXZpb3VyKSwgYnV0IC0gd29yc2UgLSBjYXVzZWQgc2NyZWVuX2Jhc2UgKyBzbWVtX2xlbiB0bwogICAgYmUgb3V0IG9mIG1hbGxvYygpZWQgc3BhY2UsIHdoaWNoIGluIHR1cm4gY2F1c2VkIGJyZWFrYWdlIG9mCiAgICBmdXRoZXIgbWFsbG9jKCkvZnJlZSgpIG9wZXJhdGlvbi4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHNjcmVlbl9iYXNlIGFsaWdubWVudC4KCiAgICBBbHNvIHRoaXMgcGF0Y2ggbWFrZXMgbWVtc2V0KCkgdGhhdCBjbGVhbnMgZnJhbWVidWZmZXIgdG8gYmUgZXhlY3V0ZWQKICAgIG9uIGZpcnN0IGluaXRpYWxpemF0aW9uIG9mIGRpdSwgbm90IG9ubHkgb24gcmUtaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzCiAgICBjb3JyZWN0IHRvIGNsZWFuIHRoZSBmcmFtZWJ1ZmZlciBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgcmFuZG9tIGdhcmJhZ2U7CiAgICBJIGJlbGlldmUgdGhhdCB3YXMgZGlzYWJsZWQgb25seSBiZWNhdXNlIHRoYXQgbWVtc2V0IGNhdXNlZCBicmVha2FnZQogICAgb2YgbWFsbG9jL2ZyZWUgZGVzY3JpYmVkIGFib3ZlIC0gd2hpY2ggbm8gbG9uZ2VyIGhhcHBlbnMgd2l0aCB0aGUgZml4CiAgICBkZXNjcmliZWQgYWJvdmUuCgogICAgU2lnbmVkLW9mZi1ieTogTmlraXRhIFYuIFlvdXNoY2hlbmtvIDx5b3VzaEBkZWJpYW4ub3JnPgoKY29tbWl0IDNkMGVhMzExMGYzNDMxYjZjMmFlZTg4Mjc4NGYzOWY5N2IyMGJjZTkKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIFNlcCAyNCAxMDoyOTozNyAyMDA4ICswMjAwCgogICAgYXBpOiBGaXggYnVpbGRpbmcgd2l0aCBDT05GSUdfQVBJCgogICAgVGhpcyBwYXRjaCBmaXhlcyBidWlsZGluZyB3aXRoIENPTkZJR19BUEkgYW5kIENPTkZJR19VU0JfU1RPUkFHRS4KCiAgICBVU0JfTUFYX1NUT1JfREVWIGlzIGRlZmluZWQgaW4gaW5jbHVkZS91c2IuaCwgYnV0CiAgICBuZWVkZWQgaW4gYXBpL2FwaV9zdG9yYWdlLmMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYWJiYjkwNjY2ZDVlZjJmNTAwZWJiZWRiYjgwZmY2MGFkYzU2YjA0MwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBTZXAgMjMgMTI6Mzk6NDAgMjAwOCAtMDUwMAoKICAgIFJlbW92ZSB1bnVzZWQgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0VOQUJMRSByZWZlcmVuY2VzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCA4MWU2MTIwMTRjNDBjOTIyZWMzNTQ4OGQxN2M1MDRkNGU5Mjg2ZjA2CkF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KRGF0ZToJVHVlIFNlcCAyMyAxMjozODo0MiAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIENGR19FRVBST01fUEFHRSogZGVwZW5kZW5jaWVzIGZvciB0ZW1wZXJhdHVyZSBzZW5zb3JzCgogICAgVGhlIGNoZWNrcyBmb3IgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0VOQUJMRSBhbmQKICAgIENGR19FRVBST01fUEFHRV9XUklURV9CSVRTIGluIHZhcmlvdXMgdGVtcGVyYXR1cmUKICAgIHNlbnNvciBkcml2ZXJzIGFyZSBub3QgbmVjZXNzYXJ5CgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBjNDY5ODBmNmQyMTM1YWRlMzQ1ZGFkYzFmYjFmMWY0YzhiYmYyNTVhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgT2N0IDE0IDA3OjA0OjM4IDIwMDggLTA0MDAKCiAgICBjbWRfc3BpOiByZW1vdmUgYnJva2VuIHNpZ25lZCBjYXN0aW5nIGZvciBkaXNwbGF5CgogICAgU2luY2Ugd2UncmUgd29ya2luZyB3aXRoIHVuc2lnbmVkIGRhdGEsIHlvdSBjYW4ndCBhcHBseSBhIHNpZ25lZCBwb2ludGVyCiAgICBjYXN0IGFuZCB0aGVuIGF0dGVtcHQgdG8gcHJpbnQgdGhlIHJlc3VsdC4JT3RoZXJ3aXNlIHlvdSBnZXQgd3Jvbmcgb3V0cHV0CiAgICB3aGVuIHRoZSBzaWduIGJpdCBpcyBzZXQgbGlrZSAiMHhGRiIgaW5jb3JyZWN0bHkgZXh0ZW5kZWQgdG8gIjB4RkZGRkZGRkYiLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkNWZkMGI0OTIxMGM5NDFkZThhMWZjZTM5NDdhY2U5MjI0M2FiNWNhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgT2N0IDE0IDA3OjA1OjI0IDIwMDggLTA0MDAKCiAgICBzdHJpbmdzIGNtZDogZHJvcCBvbGQgQ09ORklHX0NGR19TVFJJTkdTIGRlZmluZQoKICAgIFdlIGRvbid0IG5lZWQgQ09ORklHX0NGR19TVFJJTkdTIGFueW1vcmUgbm93IHRoYXQgd2UgaGF2ZSB0aGUgZGVmaW5lCiAgICBDT05GSUdfQ01EX1NUUklOR1MgYW5kIE1ha2VmaWxlIGNvbnRyb2wuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZlY2I1YWRlM2IzN2Y2Mjk4MWYyYjA1YjYyMTAwNTg1MDE3M2FhYTkKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDE5IDE3OjMyOjQ5IDIwMDggKzA4MDAKCiAgICBGaXggdGhlIE5BTkQgc2l6ZSBvdmVyZmxvdyBpc3N1ZS4KCiAgICBXaGVuIHRoZSB0b3RhbCBzaXplIG9mIGFsbCBOQU5EIGRldmljZXMgZXhjZWVkcyA0IEdpQiwgdGhlIHNpemUgIHdpbGwKICAgIG92ZXJmbG93LiBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGlzLgoKICAgIE5vdGUgdGhhdCB3ZSBzdGlsbCBoYXZlIGEgcHJvYmxlbSB3aGVuIGEgc2luZ2xlIE5BTkQgZGV2aWNlIGlzIGJpZ2dlcgogICAgdGhhbiA0IEdpQjogdGhlbiB0aGUgb3ZlcmZsb3cgd291bGQgYWN0dWFsbHkgaGFwcGVuIGVhcmxpZXIsIGkuIGUuCiAgICB3aGVuIHN0b3JpbmcgdGhlIHNpemUgaW4gbmFuZF9pbmZvW10uc2l6ZSwgYXMgbmFuZF9pbmZvW10uc2l6ZSBpcyBhbgogICAgInVfaW50MzJfdCIuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzBmNTc0NzE3Mjc3MjM4YjkwMTRiODEzNmM5MGVlYTc3MTk2NDkwZgpBdXRob3I6IExvdWlzIFN1IDxsb3Vpc0Bhc2l4LmNvbS50dz4KRGF0ZToJV2VkIEp1bCA5IDExOjAxOjM3IDIwMDggKzA4MDAKCiAgICBBWDg4MTgwOiBuZXcgZ2lnYWJpdCBuZXR3b3JrIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IExvdWlzIFN1IDxsb3Vpc0Bhc2l4LmNvbS50dz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzlkNmI2OTI1MzQ0NzQwY2ExZGIyZjhhNmJhYjc5MjFmZjgyMGRlMwpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJVHVlIEF1ZyAxOSAxNjowNzowMyAyMDA4ICswMjAwCgogICAgZW5hYmxlIDEwLzEwME0gYXQgVlNDODYwMSBhdCB0c2VjIGRyaXZlcgoKICAgIEN1cnJlbnRseSBWU0M4NjAxIGRvZXNuJ3QgbGluayB3aXRoIDEwLzEwME0gcGFydG5lcnMgaWYgdGhlCiAgICBFRVBST00vU3RyYXBwaW5nIGlzIG5vdCBzZXQgdXAuCiAgICBTZXR0aW5nIHRoZSBhdXRvLW5lZyByZWdpc3RlciBmaXhlcyB0aGlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNzAyYzg1YjBlODc2ZDU4N2MxMWFjZGJiNTU3MzhlZTUyYWNkNTRmNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIFNlcCAzMCAxNTowMjo1MyAyMDA4ICswOTAwCgogICAgbmV0OiBuZTIwMDA6IERpdmlkZWQgYSBmdW5jdGlvbiBvZiBORTIwMDAgZHJpdmVyCgogICAgZ2V0X3Byb20gZnVuY3Rpb24gd2FzIHVzZWQgX19hdHRyaXV0ZV9fICwgYnV0IGl0IGlzIG5vdCBlbmFibGUuCiAgICBheDg4Nzk2Lm8gZG9lcyBub3QgZG8gbGluayBiZXNpZGVzIG5lMjAwMC5vLiBXaGVuIGxkIGlzIGNhcnJpZWQKICAgIG91dCwgZ2V0X3Byb20gZnVuY3Rpb24gb2YgYXg4ODc5Ni5jIGlzIGlnbm9yZWQuCiAgICBUaGlzIHByb2JsZW0gaXMgYSB0aGluZyBieSBzcGVjaWZpY2F0aW9ucyBvZiBsZC4KICAgIEkgY2hlY2tlZCBhbmQgdGVzdCB0aGlzIHBhdGNoIG9uIFN1cGVySCBhbmQgTUlQUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDA1YzdlOTA3MGZlNGQ3NTFlMDI5ZmQ5NTI0YmZiYmM5M2NiYjEzOTMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBPY3QgMTQgMTE6MTA6NTkgMjAwOCArMDkwMAoKICAgIHNoOiByc2s3MjAzOiBBZGQgc21jOTExeCBkcml2ZXIgc3VwcG9ydCB0byBib2FyZCBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjYWU2ZjkwOWJhZjg2MzU3YjNjMGJkMDFhY2ZjNDE0MzQ4YzRkMTc1CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgT2N0IDkgMTM6NTQ6MzMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY2Fubm90IGV4ZWN1dGUgYSBzdGFuZC1hbG9uZSBhcHBsaWNhdGlvbgoKICAgIEFkZHJlc3MgY2FsY3VsYXRlZCBpbiBFWFBPUlRfRlVOQyBpbiBTdXBlckggd2FzIHdyb25nLCBJIHJldmlzZWQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZkZjBlZmQ1Yzg2Y2ExNjg5ZGVlYjI3MzhiNDZiN2Q4M2NlMjI4ZWYKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDggMjM6Mzg6MDAgMjAwOCAtMDUwMAoKICAgIGZzbF9wY2lfaW5pdCBkbyBub3Qgc2NhbiBidXMgd2hlbiBjb25maWd1cmVkIGFzIGFuIGVuZC1wb2ludAoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmMDk5YmJhYzFiYTVkZmI0NmVlN2FkMjlkYzUzNzEzZjA1MDFiYTUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJVHVlIFNlcCAxNiAxNzowNzo1MyAyMDA4IC0wNDAwCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSByZWR1bmRhbnQgc2V0dGluZyBvZiBHRF9GTEdfUkVMT0MgZm9yIHNmZnNkciBib2FyZC4KCiAgICBUaGlzIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IHRoYXQgdGhlIEdEX0ZMR19SRUxPQyBmbGFnIGlzIHNldCBmb3IKICAgIGFsbCBBUk0gYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IGQ5NzdhNTczNTY2NTdiYTI0MTI1NjIzMWVmY2EzMjgyOGE1ODIyZjkKQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+CkRhdGU6CVNhdCBTZXAgMTMgMTA6MDQ6MzIgMjAwOCArMDIwMAoKICAgIEZpeCBsem1hIHVuY29tcHJlc3MgY2FsbCAoaW1hZ2Vfc3RhcnQgd3JvbmdseSB1c2VkIGluc3RlYWQgaW1hZ2VfbGVuKQoKICAgIFNpZ25lZC1vZmYtYnk6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KCmNvbW1pdCAzOTI0Mzg0MDYwNDE0MTVmZTY0YWI4NzQ4ZWM1YWI1YWQwMWQxY2Y3CkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMjggMTQ6MDk6MTUgMjAwOCAtMDcwMAoKICAgIG1wYzg2eHg6IHVzZSByNCBpbnN0ZWFkIG9mIHIyIGluIGxvY2tfcmFtX2luX2NhY2hlIGFuZCB1bmxvY2tfcmFtX2luX2NhY2hlCgogICAgVGhpcyBpcyBuZWVkZWQgaW4gdW5sb2NrX3JhbV9pbl9jYWNoZSgpIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gQyBhbmQKICAgIHdpbGwgY29ycnVwdCB0aGUgc21hbGwgZGF0YSBhcmVhIGFuY2hvciB0aGF0IGlzIGtlcHQgaW4gUjIuCgogICAgbG9ja19yYW1faW5fY2FjaGUoKSBpcyBtb2RpZmllZCBzaW1pbGFybHkgYXMgZ29vZCBjb2RpbmcgcHJhY3RpY2UsIGJ1dAogICAgaXMgbm90IGNhbGxlZCBmcm9tIEMuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWM3Y2JjZDM0ZDBlZTU2Njg3NWE0ZmQwZjJhM2U1YTYyYmJhOTIxYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMTkgMTU6MDU6MzQgMjAwOCAtMDUwMAoKICAgIDg2eHg6IHJlbW92ZSByZWR1ZGFudCBjb2RlIHdpdGggbGliX3BwYy9pbnRlcnJ1cHRzLmMKCiAgICBGb3Igc29tZSByZWFzb24gd2UgZHVwbGljYXRlZCB0aGUgbWFqb3JpdHkgb2YgY29kZSBpbiBsaWJfcHBjL2ludGVycnVwdHMuYwogICAgTm90IGtub3cgaG93IHRoYXQgaGFwcGVuZWQsIGJ1dCB0aGVyZSBpcyBubyBnb29kIHJlYXNvbiBmb3IgaXQuCgogICAgVXNlIHRoZSBpbnRlcnJ1cHRfaW5pdF9jcHUoKSBhbmQgdGltZXJfaW50ZXJydXB0X2NwdSgpIHNpbmNlIGl0cyB3aHkKICAgIHRoZXkgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZDAxZjY2ZDIzNTExODUxNWI1MDg2Yjg4ZjgyNDk4YmMwNjk1ZDZhCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCA5IDAxOjI2OjM2IDIwMDggLTA1MDAKCiAgICBDRkk6IGNmaV9mbGFzaCB3cml0ZSBmaXggZm9yIEFNRCBsZWdhY3kKCiAgICBUaGUgZmxhc2hfdW5sb2NrX3NlcSByZXF1aXJlcyBhIHNlY3RvciBmb3IgQU1EX0xFR0FDWS4KICAgIEZpeCBhIHJldGNvZGUgY2hlY2sgdHlwZW8uCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1NDJiMzg1YTYyMGExNzgzNDU0YTAwNDI0OTMwZTUxODk1ZjQ1MDczCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgNyAxMzoxMzoxMCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggVVNCIDIuMCBwaHkgcmVzZXQgc2VxdWVuY2UKCiAgICBUaGlzIHBhdGNoIGZpeGVzIFVTQiAyLjAgY29tbXVuaWNhdGlvbiBpc3N1ZXMgb24gc29tZSBEVTQ0MCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGY4YzFjZTExMTE0YzIyNjBkZWRiNTU0NzI4MTk0NWY3ZGI4ZmE1YwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgT2N0IDcgMTM6MTM6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIHN0cmFwcGluZyBtb2RlIGZvciA2NjdNSHogQ1BVIGZyZXF1ZW5jeSBvbiBEVTQ0MCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZhMTMzZDZhMDBiMWZjN2I5MjU3Y2Q1OTI1ZDhjYjY3Zjc1ZWNkYTIKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIE9jdCA3IDEzOjEzOjA4IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBEVTQ0MCBHUElPIGNvbmZpZ3VyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNWRkMDI1YzcwZmNjNDM4OTMxN2RiMmYyYTlkMTQ3OTUxNzIxMzdkCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBPY3QgNyAxMzoxMzowNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgRFU0NDAgY29uZmlnCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjNiZjkyNzM5MzlmZmUxYTYwYTMyYTJlZWY5MDkwOTdmMTVkZjU2YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBPY3QgOCAxNTozNjozOSAyMDA4IC0wNTAwCgogICAgTVBDODU3MkRTOiBGaXggY29tcGlsZSB3YXJuaW5ncwoKICAgIENvbW1pdCA0NDVhN2IzODMwOGViMDViNDFkZTc0MTY1YjIwODU1ZGI1OGM3ZWU1IGludHJvZHVjZWQgdGhlIGZvbGxvd2luZwogICAgY29tcGlsZSB3YXJuaW5nczoKCiAgICBjbWRfaTJjLmM6MTEyOiB3YXJuaW5nOiBtaXNzaW5nIGJyYWNlcyBhcm91bmQgaW5pdGlhbGl6ZXIKICAgIGNtZF9pMmMuYzoxMTI6IHdhcm5pbmc6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAnaTJjX25vX3Byb2Jlc1swXScpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkZmZkMjQ0NmZiMDQxZjM4ZWYwMzRiMGZjZjQxZTUxZTVlNDg5MTU5CkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVR1ZSBTZXAgMzAgMTA6NTU6NTcgMjAwOCArMDIwMAoKICAgIDg1eHg6IFVzaW5nIHByb3BlciBJMkMgc291cmNlIGNsb2NrIGRpdmlkZXIgZm9yIE1QQzg1NDQKCiAgICBNZWFzdXJlbWVudHMgd2l0aCBvdXIgTVBDODU0NCBib2FyZCBzaG93ZWQgdGhhdCB0aGUgSTJDIGJ1cyBmcmVxdWVuY3kKICAgIGlzIHdyb25nIGJ5IGEgZmFjdG9yIG9mIDEuNS4gT2J2aW91c2x5LCB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlCiAgICBNUEM4NXh4X1BPUkRFVlNSMl9TRUNfQ0ZHIGJpdCBvZiB0aGUgY2ZnX3NlY19mcmVxIHJlZ2lzdGVyIGlzIG5vdAogICAgY29ycmVjdC4gVGhlcmUgc2VlbXMgdG8gYmUgYW4gZXJyb3IgaW4gdGhlIDg1NDQgUk0uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgZTQ2YzdiZmI4YmMzYzMwNGNlZGQyMGY3YTM2NWQ2ZTc4ZDdlYWYxNwpBdXRob3I6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE9jdCA4IDEzOjQxOjMwIDIwMDggKzAyMDAKCiAgICBGU0w6IEZpeCBnZXRfY3B1X2JvYXJkX3JldmlzaW9uKCkgcmV0dXJuIHZhbHVlLgoKICAgIGdldF9jcHVfYm9hcmRfcmV2aXNpb24oKSByZXR1cm5lZCBib2FyZCByZXZpc2lvbiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBzdG9yZWQKICAgIGluIGdsb2JhbCBzdGF0aWMgc3RydWN0IGVlcHJvbS4gSXQgc2hvdWxkIGluc3RlYWQgdXNlIG9uZSBmcm9tIGxvY2FsIHN0cnVjdAogICAgYm9hcmRfZWVwcm9tLCB0byB3aGljaCB0aGUgZGF0YSBpcyBhY3R1YWxseSByZWFkIGZyb20gRUVQUk9NLiBUaGUgYnVnIGxlZCB0bwogICAgc3lzdGVtIGhhbmcgYWZ0ZXIgcHJpbnRpbmcgTDEgY2FjaGUgaW5mb3JtYXRpb24gb24gVS1Cb290IHN0YXJ0dXAuIFRoZSBwcm9ibGVtCiAgICB3YXMgb2JzZXJ2ZWQgb24gTVBDODU1NUNEUyBzeXN0ZW0gYW5kIHBvc3NpYmx5IGFmZmVjdHMgb3RoZXIgRnJlZXNjYWxlIE1QQzg1eHgKICAgIGJvYXJkcyB1c2luZyBDRkdfSTJDX0VFUFJPTV9DQ0lELgoKICAgIFRoZSBjaGFuZ2UgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbiBNUEM4NTU1Q0RTIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Cgpjb21taXQgNzQ3ZjMxNmNjYTQ4NGVkNjI3YTk3ZGQzMzkxZmViYWJjZTM4NDE4NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBTZXAgMzAgMjA6MDg6NDkgMjAwOCArMDIwMAoKICAgIHVwZGF0ZSB1SW1hZ2UgRklUIG11bHRpIGRvY3VtZW50YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc3YTAzNTVmNjBiODAxZjIzMmNlMGE1YmZiZTk1MzMxZmEzYjZiYzAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgU2VwIDMwIDIwOjA4OjM2IDIwMDggKzAyMDAKCiAgICBtb3ZlIFJFQURNRS5pbXgzMSB0byBkb2MvIGFuZCBtZXJnZSB3aXRoIFJFQURNRS5teDMxCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxZWQ3YTdmMGY1NzFiMTNkNDY1MzBmOGY4YjlhZmYzOTU3ZjE1YTk2CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgU2VwIDI1IDIwOjU0OjM3IDIwMDggKzAyMDAKCiAgICBpLk1YMzE6IHN3aXRjaCB0byBDRkdfSFo9MTAwMAoKICAgIFN3aXRjaCB0byB0aGUgc3RhbmRhcmQgQ0ZHX0haPTEwMDAgdmFsdWUsIHdoaWxlIGF0IGl0LCBtaW5vciB3aGl0ZS1zcGFjZQogICAgY2xlYW51cCwgcmVtb3ZlIENGR19DTEtTX0lOX0haIGZyb20gY29uZmlnLWhlYWRlcnMuIFRlc3RlZCBvbiBteDMxYWRzLAogICAgcHJvdmlkZXMgMiUgb3IgMC40JSBwcmVjaXNpb24gZGVwZW5kaW5nIG9uIHRoZQogICAgQ09ORklHX01YMzFfVElNRVJfSElHSF9QUkVDSVNJT04gZmxhZy4gTWVhc3VyZWQgd2l0aCBzdG9wLXdhdGNoIG9uIDEwMHMKICAgIGJvb3QtZGVsYXkuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IGY0MWIxNDRjMTEzNDFiNTcxZWFiN2RjZWY2YzRiOGUwM2M5MmQyYjIKQXV0aG9yOiBnbnVzZXJjbiA8Z251c2VyY25AZ21haWwuY29tPgpEYXRlOglXZWQgT2N0IDggMTg6NTg6NTggMjAwOCArMDIwMAoKICAgIEZpeCBidWc6IGluIGFyY2gtYXJtLCBlbnZfZ2V0X2NoYXIgZG9zZSBub3Qgd29yayBmaW5lCgogICAgZHVlIHRvIHRoZSBhcm0gaW1wbGVtZW50YXRpb24gd2hpY2ggc3VwcG9zZWQgdGhhdCBVLUJvb3QgaXMgaW4gUkFNCiAgICB3aGVuIHdlIGp1bXAgdG8gc3RhcnRfYXJtYm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IGdudXNlcmNuIDxnbnVzZXJjbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY4YTAwZGVhODQxZDVkNzVkZTFmOGU4MTA3ZTkwZWUxYmVlZGRmNWYKQXV0aG9yOiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KRGF0ZToJTW9uIE9jdCA2IDEwOjE2OjEzIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IFJlc2V0IGFuZCByZWxvY2sgbWVtb3J5IERMTCBhZnRlciBTRFJBTV9DTEtUUiBjaGFuZ2UKCiAgICBBZnRlciBjaGFuZ2luZyBTRFJBTV9DTEtUUiBwaGFzZSB2YWx1ZSByZXJ1biB0aGUgbWVtb3J5IHByZWxvYWQKICAgIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIChJTklUUExSKSB0byByZXNldCBhbmQgcmVsb2NrIHRoZSBtZW1vcnkKICAgIERMTC4gQ2hhbmdpbmcgdGhlIFNEUkFNX0NMS1RSIG1lbW9yeSBjbG9jayBwaGFzZSBjb2Fyc2UgdGltaW5nCiAgICBhZGp1c3RtZW50IGVmZmVjdHMgdGhlIHBoYXNlIHJlbGF0aW9uc2hpcCBvZiB0aGUgaW50ZXJuYWwsIHRvIHRoZQogICAgUFBDIGNoaXAsIGFuZCBleHRlcm5hbCwgdG8gdGhlIFBQQyBjaGlwLCB2ZXJzaW9ucyBvZiBNRU1DTEtfT1VULgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTI5NzI0NmJiYWE5OTQzYzBkYTFlYzJlNzE3YjcyZTRhYjZiODMwZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMyAxMTo0ODowMyAyMDA4IC0wNDAwCgogICAgUmVtb3ZlIHJlZHVuZGFudCAjZGVmaW5lIGZvciBNUEM4NTM2RFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0NWE3YjM4MzA4ZWIwNWI0MWRlNzQxNjViMjA4NTVkYjU4YzdlZTUKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDMgMTE6NDc6MzAgMjAwOCAtMDQwMAoKICAgIEFkZCBJRCBFRVBST00gc3VwcG9ydCBmb3IgTVBDODU3MkRTCgogICAgVGhlIElEIEVFUFJPTSBvbiBNUEM4NTcyRFMgYm9hcmQgbG9jYXRlcyBvbiBJMkMgYnVzIDEuIEl0cyB0aGUgc3RvcmFnZSBmb3IKICAgIHN5c3RlbSBpbmZvcm1hdGlvbiBsaWtlIG1hYyBhZGRyZXNzZXMgZXRjLiBUaGlzIHBhdGNoIGVuYWJsZXMgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjNiYTMxN2E1YzVmM2E3YWFiZjU4MGZkZGMyMTFmNGJiNWE0NTQwCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAzIDExOjQ2OjU5IDIwMDggLTA0MDAKCiAgICBNaW5vciBmaXhlcyBmb3IgSTJDIGFkZHJlc3Mgb24gTVBDODU3MkRTCgogICAgTVBDODU3MkRTIGhhcyB0d28gaTJjIGJ1c2VzLiBUaGlzIHBhdGNoIG1vdmVzIHRoZSBERFIgU1BEX0VFUFJPTSB0byBpMmMgYnVzIDEKICAgIGFjY29yZGluZyB0byB0aGUgYm9hcmQgc3BlYywgYW5kIGFkZHMgdGhlIDJuZCBpMmMgYnVzIG9mZnNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMwMzkxMTExYzMzYzIyZmFiZWRkZjhmNGNhODAxZWM3NjQ1YjRmNWMKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglTYXQgU2VwIDI3IDE0OjQwOjU3IDIwMDggKzA4MDAKCiAgICBGaXggdGhlIGluY29ycmVjdCBERFIgY2xrIGZyZXEgcmVwb3J0aW5nIG9uIDg1MzZEUwoKICAgIE9uIDg1MzZEUyBib2FyZCwgV2hlbiB0aGUgRERSIGNsayBpcyBzZXQgYXN5bmMgbW9kZShTVzNbNjo4XSAhPSAxMTEpLAogICAgVGhlIGRpc3BsYXkgaXMgc3RpbGwgc3luYyBtb2RlIEREUiBmcmVxLiBUaGlzIHBhdGNoIHRyeSB0byBmaXgKICAgIHRoaXMuIFRoZSBkaXNwbGF5IEREUiBmcmVxIGlzIG5vdyB0aGUgYWN0dWFsIGZyZXEgaW4gYm90aAogICAgc3luYyBhbmQgYXN5bmMgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhYzZhMWQxZmExY2Q4MGFhNTc4ODFmYTljMjE1MmI4NTNjZDBlZDQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDcgMTA6Mjg6NDYgMjAwOCAtMDUwMAoKICAgIDg1eHg6IFJlbW92ZSBzZXR0aW5nIG9mICpjYWNoZS1saW5lLXNpemUgaW4gZGV2aWNlIHRyZWVzCgogICAgZVBBUFIgc2F5cyBpZiB0aGUgKmNhY2hlLWJsb2NrLXNpemUgaXMgdGhlIHNhbWUgYXMgKmNhY2hlLWxpbmUtc2l6ZQogICAgdGhhbiB3ZSBkb24ndCBuZWVkIHRoZSAqY2FjaGUtbGluZS1zaXplIHByb3BlcnR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2QzY2IwZDkyNjlkMTU1Mjc2YjAwMjA3ZTM4MTZhOTM0N2ZkMWM5MgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBPY3QgNCAwNzo1NjowNiAyMDA4IC0wNDAwCgogICAgbGliZmR0OiBGaXggZXJyb3IgaW4gZG9jdW1lbnRhdGlvbiBmb3IgZmR0X2dldF9hbGlhc19uYW1lbGVuKCkKCiAgICBPb3BzLCBzY3Jld2VkIHVwIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBkb2N1bWVudGluZyBjb21tZW50IGZvciB0aGlzCiAgICBmdW5jdGlvbi4gIFRyaXZpYWwgY29ycmVjdGlvbiBpbiB0aGlzIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgOWE2Y2Y3M2E4OGRkYWIyZTFhYzM5MDg4ZjI4MDYxNzc5ODJjYzYyYwpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglXZWQgQXVnIDIwIDE2OjU1OjE0IDIwMDggKzEwMDAKCiAgICBsaWJmZHQ6IEFkZCBmdW5jdGlvbiB0byBleHBsaWNpdGx5IGV4cGFuZCBhbGlhc2VzCgogICAgS3VtYXIgaGFzIGFscmVhZHkgYWRkZWQgYWxpYXMgZXhwYW5zaW9uIHRvIGZkdF9wYXRoX29mZnNldCgpLgogICAgSG93ZXZlciwgaW4gc29tZSBjaXJjdW1zdGFuY2VzIGl0IG1heSBiZSBjb252ZW5pZW50IGZvciB0aGUgdXNlciBvZgogICAgbGliZmR0IHRvIGV4cGxpY2l0bHkgZ2V0IHRoZSBzdHJpbmcgZXhwYW5zaW9uIG9mIGFuIGFsaWFzLglUaGlzIHBhdGNoCiAgICBhZGRzIGEgZnVuY3Rpb24gdG8gZG8gdGhpcywgZmR0X2dldF9hbGlhcygpLCBhbmQgdXNlcyBpdCB0byBpbXBsZW1lbnQKICAgIGZkdF9wYXRoX29mZnNldCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDIyMTU5ODdlMTAwZDJhODQxYWU2ZDQ4YTdjYzliYjgzZmNmMjI3MzcKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBPY3QgMiAwMTo1NTozOCAyMDA4IC0wNDAwCgogICAgY2ZpX2ZsYXNoOiBkbyBub3QgcmVzZXQgZmxhc2ggd2hlbiBwcm9iZSBmYWlscwoKICAgIFRoZSBDRkkgZmxhc2ggZHJpdmVyIHN0YXJ0cyBhdCBmbGFzaF9pbml0KCkgd2hpY2ggY2FsbHMgZG93biBpbnRvCiAgICBmbGFzaF9nZXRfc2l6ZSgpLiAgVGhpcyBzdGFydHMgYnkgY2FsbGluZyBmbGFzaF9kZXRlY3RfY2ZpKCkuICBJZiBzYWlkCiAgICBmdW5jdGlvbiBmYWlscywgZmxhc2hfZ2V0X3NpemUoKSBmaW5pc2hlcyBieSBhdHRlbXB0aW5nIHRvIHJlc2V0IHRoZQogICAgZmxhc2guICBVbmZvcnR1bmF0ZWx5LCBpdCBkb2VzIHRoaXMgd2l0aCBhbiBpbmZvLT5wb3J0d2lkdGggc2V0IHRvIDB4MTAKICAgIHdoaWNoIGZpbHRlcnMgZG93biBpbnRvIGZsYXNoX21ha2VfY21kKCkgYW5kIHRoYXQgaGFwcGlseSBzbWFzaGVzIHRoZQogICAgc3RhY2sgYnkgc3RpY2tpbmcgaW5mby0+cG9ydHdpZHRoIGJ5dGVzIGludG8gYSBjZml3b3JkX3QgdmFyaWFibGUgdGhhdAogICAgbGl2ZXMgb24gdGhlIHN0YWNrLiAgT24gYSA2NGJpdCBzeXN0ZW0geW91IHByb2JhYmx5IHdvbid0IG5vdGljZSwgYnV0CiAgICBraWxsaW5nIHRoZSBsYXN0IDggYnl0ZXMgb24gYSAzMmJpdCBzeXN0ZW0gdXN1YWxseSBsZWFkcyB0byBhIGNvcnJ1cHQKICAgIHJldHVybiBhZGRyZXNzLiAgV2hpY2ggaXMgd2hhdCBoYXBwZW5zIG9uIGEgQmxhY2tmaW4gc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZTM4NTc3MjA4ZTQyNTY5NTZiYzMzYmI4YmNkMGE2YjZmYWI1NWMzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDI2IDE3OjAzOjI2IDIwMDggKzAyMDAKCiAgICBmZHQ6IE92ZXJ3cml0ZSAvY2hvc2VuIG5vZGUgaW4gYm9vdG0gaWYgaXQgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGR0YgoKICAgIFNldCBmb3JjZSBwYXJhbWV0ZXIgaW4gZmR0X2Nob3NlbigpIGNhbGwgaW4gZG9fYm9vdG1fbGludXgoKSBjYWxsLgogICAgV2l0aG91dCB0aGlzLCB0aGUgY2hvc2VuIG5vZGUgaXMgbm90IG92ZXJ3cml0dGVuIGlmIGl0IGFscmVhZHkKICAgIGV4aXN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzQxYTZkMDEwZDA5YjViYWZjYThlNGNkZmI2YjJmOGEyYzA3OTk0ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMjUgMTE6MDI6MTcgMjAwOCAtMDUwMAoKICAgIEZpeCBhbiBvdmVyZmxvdyBjYXNlIGluIGZkdF9vZmZzZXRfcHRyKCkgZGV0ZWN0ZWQgYnkgR0NDIDQuMy4KCiAgICBVc2luZyBHY2MgNC4zIGRldGVjdGVkIHRoaXMgcHJvYmxlbToKCgkuLi9kdGMvbGliZmR0L2ZkdC5jOiBJbiBmdW5jdGlvbiAnZmR0X25leHRfdGFnJzoKCS4uL2R0Yy9saWJmZHQvZmR0LmM6ODI6IGVycm9yOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3QKCW9jY3VyIHdoZW4gYXNzdW1pbmcgdGhhdCAoWCArIGMpIDwgWCBpcyBhbHdheXMgZmFsc2UKCiAgICBUbyBmaXggdGhlIHByb2JsZW0sIHRyZWF0IHRoZSBvZmZzZXQgYXMgYW4gdW5zaWduZWQgaW50LgoKICAgIFRoZSBwcm9ibGVtIHJlcG9ydCBhbmQgcHJvcG9zZWQgZml4IHdlcmUgcHJvdmlkZWQKICAgIGJ5IFN0ZXZlIFBhcGFjaGFyYWxhbWJvdXMgPHN0ZXZlcEBmcmVlc2NhbGUuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJiZGJjN2NiM2FiZWZkYTViZDk5OGVkYmNmMDUwOGZlNjI1NjMyN2QKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJRnJpIEF1ZyAyOSAxNDoxOToxMyAyMDA4ICsxMDAwCgogICAgbGliZmR0OiBGaXggYnVncyBpbiBmZHRfZ2V0X3BhdGgoKQoKICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZkdF9nZXRfcGF0aCgpIGhhcyBhIGNvdXBsZSBvZiBidWdzLAogICAgZml4ZWQgYnkgdGhpcyBwYXRjaC4KCiAgICBGaXJzdCwgY29udHJhcnkgdG8gaXRzIGRvY3VtZW50YXRpb24sIG9uIHN1Y2Nlc3MgaXQgcmV0dXJucyB0aGUgbGVuZ3RoCiAgICBvZiB0aGUgbm9kZSdzIHBhdGgsIHJhdGhlciB0aGFuIDAuCVRoZSB0ZXN0Y2FzZSBpcyBjb3JyZXNwb25kaW5nbHkKICAgIHdyb25nLCBhbmQgdGhlIHBhdGNoIGZpeGVzIHRoaXMgYXMgd2VsbC4KCiAgICBTZWNvbmQsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgaXQgd2lsbCByZXR1cm4gLUZEVF9FUlJfQkFET0ZGU0VUCiAgICBpbnN0ZWFkIG9mIC1GRFRfRVJSX05PU1BBQ0Ugd2hlbiBnaXZlbiBpbnN1ZmZpY2llbnQgYnVmZmVyIHNwYWNlLgogICAgU3BlY2lmaWNhbGx5IHRoaXMgaGFwcGVucyB3aGVuIHRoZXJlIGlzIGluc3VmZmljaWVudCBzcGFjZSBldmVuIHRvCiAgICBob2xkIHRoZSBwYXRoJ3Mgc2Vjb25kIGxhc3QgY29tcG9uZW50LiAgVGhpcyBiZWhhdmlvdXIgaXMgY29ycmVjdGVkLAogICAgYW5kIHRoZSB0ZXN0Y2FzZSB1cGRhdGVkIHRvIGNoZWNrIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDMzYWYzZTY2NTZlODQ2NjBkMzk3YjVkZDk1YWJhYjJkY2NjMzZmODMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDEgMTI6MzQ6NTggMjAwOCArMDIwMAoKICAgIFRRTTUyMDA6IGVuYWJsZSBzdXBwb3J0IGZvciBBVEFQSSBkZXZpY2VzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMTNmZjIzNThmZjhjMzg0ZjUyZWFmNDZmNWQ2MDI1OGFjZjk2ZWE2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIFNlcCAxNSAwNTo0ODoyNSAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJBUk06IHNldCBHRF9GTEdfUkVMT0MgZm9yIGJvYXJkcyBza2lwcGluZyByZWxvY2F0aW9uIHRvIFJBTSIKCiAgICB3ZSBuZWVkIHRoaXMgZHVlIHRvIHRoZSBhcm0gaW1wbGVtZW50YXRpb24gd2hpY2ggc3VwcG9zZWQgdGhhdCBVLUJvb3QKICAgIGlzIGluIFJBTSB3aGVuIHdlIGp1bXAgdG8gc3RhcnRfYXJtYm9vdAoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgZjk2YjQ0Y2VmODk3YmQzNzJiZWI4NmRkZTFiMzM2MzdjMTE5ZDg0ZC4KICAgIGluIG9yZGVyIHRvIGRvIGl0IGZvciBhbGwgYXJtIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZmQwYmVhMmU0YTc4ZWFiN2U2NjkzMTQwOTQwZjlmOWEwMDA5YmMyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAyNCAwODo0NjoyNSAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogZG9uJ3QgZGlzYWJsZSBhdXRvYm9vdAoKICAgIGJvb3RkZWxheSBzZXQgdG8gLTEgJ3Blcm1hbmVudGx5JyBkaXNhYmxlcyBhdXRvYm9vdGluZywgZXZlbiBpZgogICAgYm9vdGNtZCBpcyBzcGVjaWZpZWQuICBDaGFuZ2UgdG8gYSBwb3NpdGl2ZSB2YWx1ZSB0byBhbGxvdwogICAgYXV0b2Jvb3Rpbmcgd2hlbiBhIGJvb3RjbWQgaXMgc2V0LgoKICAgIFJlcG9ydGVkLWJ5OiBDb3JheSBUYXRlIDxDb3JheS5UYXRlQGZyZWVzY2FsZS5jb20+CiAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJmYjI5YzUyMGM0MmI3YmZlZjMzZWEzZmQxNTI3ZWJhNjQwOTkxNjQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBTZXAgMjQgMTA6NDI6MTUgMjAwOCArMDkwMAoKICAgIG1wYzgzeHg6IEZpeCB0eXBvIGluIGluY2x1ZGUvbXBjODN4eC5oCgogICAgRml4ZWQgdHlwbyBmcm9tIENPTklGR19NUEM4MzdYIHRvIENPTkZJR19NUEM4MzdYCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNjJjNDFjMDMxNzk3MjdhMWQxNDI2MmY3MDNjOWE4YmM0MDIzMWZhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAyMyAwOTozODo0OSAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogYWRkIGgvdyBmbGFzaCBwcm90ZWN0aW9uIHRvIGJvYXJkIGNvbmZpZ3MKCiAgICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBtYXkgbGVhdmUgZmxhc2ggaW4gYSBoL3cgbG9ja2VkIHN0YXRlIGFmdGVyIHdyaXRpbmcuCiAgICBUaGlzIGFsbG93cyB1LWJvb3QgdG8gY29udGludWUgdG8gd3JpdGUgZmxhc2ggYnkgZW5hYmxpbmcgaC93IHVubG9ja2luZwogICAgYnkgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQyNjE1NGM5YTY5MjU4NmI2NmViNmQxZjhlMWI2N2M3NWU0MGVhNzAKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IFNlcCAxMSAyMTozNTozNiAyMDA4ICswNDAwCgogICAgbXBjODN4eDogc3BkX3NkcmFtOiBmaXggZGRyIHNkcmFtIGJhc2UgYWRkcmVzcyBhc3NpZ25tZW50IGJ1ZwoKICAgIFRoZSBzcGRfZHJhbSBjb2RlIHNoaWZ0cyB0aGUgYmFzZSBhZGRyZXNzLCB0aGVuIG1hc2tzIDIwIGJpdHMsIGJ1dAogICAgZm9yZ2V0cyB0byBzaGlmdCB0aGUgYmFzZSBhZGRyZXNzIGJhY2suIEZpeCB0aGlzIGJ5IGp1c3QgbWFza2luZyB0aGUKICAgIGJhc2UgYWRkcmVzcyBjb3JyZWN0bHkuCgogICAgRm91bmQgdGhpcyBidWcgd2hpbGUgdHJ5aW5nIHRvIHJlbG9jYXRlIGEgRERSIG1lbW9yeSBhdCB0aGUgYmFzZSAhPSAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZmQ0MTY2YzQ2N2E0Njc3M2Y4MDIwOGJkYTFlYzNiNDc1Nzc0N2JjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gU2VwIDIyIDE2OjEwOjQzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENhbnlvbmxhbmRzOiBSZW1vdmUgdW5uZWNlc3NhcnkgRkRUIHdhcm5pbmcgdXBvbiBEVEIgZml4dXAKCiAgICBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24ganVtcGVyICJTQVRBIFNFTEVDVCIsIFUtQm9vdCBkaXNhYmxlZAogICAgZWl0aGVyIG9uZSBQQ0llIG5vZGUgb3IgdGhlIFNBVEEgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUgYmxvYi4gVGhpcwogICAgcGF0Y2ggcmVtb3ZlcyB0aGUgdW5uZWNlc3NhcnkgYW5kIGV2ZW4gY29uZnVzaW5nIHdhcm5pbmcsIHdoZW4gdGhlIG5vZGUKICAgIGlzIG5vdCBmb3VuZCBhdCBhbGwuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZlMjRhMWViMTQ5MGFhMDQzNzcwYmNmMDA2MWFjMWZhZDA4NjRmZDkKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJRnJpIFNlcCAxOSAxMzozMDowNiAyMDA4ICswMjAwCgogICAgQWRkIG1pc3NpbmcgZGV2aWNlIHR5cGVzIHRvIGRldl9wcmludCgpIGluIHBhcnQuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IDVmZGMyMTVmMGIzNTFiMGMzNmNjM2Y4YTBmYTU4NTBmMjQ0NTRiZWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gU2VwIDIyIDIyOjIzOjA2IDIwMDggKzAyMDAKCiAgICBGaXggRFBSQU0gbWVtb3J5IGxlYWsgd2hlbiBDRkdfQUxMT0NfRFBSQU0gaXMgZGVmaW5lZCwgd2hpY2gKICAgIGV2ZW50dWFsbHkgbGVhZHMgdG8gYSBtYWNoaW5lIGNoZWNrLiBUaGlzIGNoYW5nZSBhc3N1cmVzIHRoYXQgRFBSQU0KICAgIGlzIGFsbG9jYXRlZCBvbmx5IG9uY2UgaW4gdGhhdCBjYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhMDdmYWY3YjlhZDVhODY3NjNhNTc3Yzc5OTIyYzRmZjlhNzBlZjIzCkF1dGhvcjogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudHBAY3NlLXNlbWFwaG9yZS5jb20+CkRhdGU6CVdlZCBTZXAgMTcgMTc6NTc6MzQgMjAwOCArMDIwMAoKICAgIEZpeCBTcGFydGFuLTMgZGVmaW5pdGlvbnMuCgogICAgQSBmZXcgU3BhcnRhbi0zIGRlZmluaXRpb25zIGVycm9uZW91c2x5IHVzZSBTcGFydGFuLTNFIHNpemUKICAgIGNvbnN0YW50cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnRwQGNzZS1zZW1hcGhvcmUuY29tPgoKY29tbWl0IDI4MTEzZTFmMGRhNDE0NmI4MjNmZmNlMzc2ODBkMzFkNTY4NWE2MGIKQXV0aG9yOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50cEBjc2Utc2VtYXBob3JlLmNvbT4KRGF0ZToJV2VkIFNlcCAxNyAxNzo0MTo1OCAyMDA4ICswMjAwCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBTcGFydGFuLTNFIGRlZmluaXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudHBAY3NlLXNlbWFwaG9yZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVjNjVlY2Y3Y2Q5NGRmMjUwYjI5NTYyMWYzYjI0MTM1Y2JjZmU1NzkKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMTcgMTM6NDY6MTcgMjAwOCArMDIwMAoKICAgIHNvY3JhdGVzOiBjaGFuZ2UgZGVmYXVsdCBtdGVzdCBhZGRyZXNzIHJhbmdlCgogICAgUnVubmluZyBtdGVzdCBjb21tYW5kIG9uIHNvY3JhdGVzIHdpdGhvdXQgc3BlY2lmeWluZwogICAgYW4gYWRkcmVzcyByYW5nZSBjcmFzaGVzIHRoZSBib2FyZC4gVGhpcyBwYXRjaCBjaGFuZ2VzCiAgICBkZWZhdWx0IG10ZXN0IGFkZHJlc3MgcmFuZ2UgdG8gcHJldmVudCB0aGlzIGJlaGF2aW9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBkNjY2YjJkNTk2NzRiNWUwMDJjMDgyMWI3YWI4M2VjM2ZmOTBkNjcwCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgU2VwIDE3IDEyOjM0OjQ1IDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogZml4IGNyYXNoIGFmdGVyIHJlbG9jYXRpb24KCiAgICBDdXJyZW50bHkgVS1Cb290IGNyYXNoZXMgYWZ0ZXIgcmVsb2NhdGlvbiB0byBSQU0uCiAgICBDaGFuZ2luZyB0aGUgQ1BPIHZhbHVlIG9mIHRoZSBERFIgU0RSQU0gVElNSU5HX0NGR18yCiAgICByZWdpc3RlciB0byBSRUFEX0xBVCArIDEgKHRvIHRoZSB2YWx1ZSBpdCB3YXMgYmVmb3JlCiAgICBjb252ZXJzaW9uIG9mIHNvY3JhdGVzIHRvIG5ldyBERFIgY29kZSkgZml4ZXMgdGhlCiAgICBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA1NjI3ODhiMGEzMDNmMzUyOGI5MjBkODFmNTQ3ZjVjYTc3YmE1MjhlCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgU2VwIDE3IDExOjQ1OjUxIDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogZml4IFNQRCBFRVBST00gYWRkcmVzcwoKICAgIENvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3CiAgICBjaGFuZ2VkIFNQRCBFRVBST00gYWRkcmVzcyB0byAweDUxIGFuZCBERFIgU0RSQU0KICAgIGRldGVjdGlvbiBzdG9wcGVkIHdvcmtpbmcuIENoYW5nZSB0aGlzIGFkZHJlc3MKICAgIGJhY2sgdG8gMHg1MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgMDIzODI0NTQ5YTM3MGJkMTg1ZDcxMjlkOWE2Yzg2ZjliZTdiODZhOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAyMiAxMTowNjo1MCAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJwcGM0eHg6IEZpeCBERFIyIGF1dG8gY2FsaWJyYXRpb24gb24gS2lsYXVlYSA2MDBNSHogKDIwME1IeiBQTEIpIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgM2VlYzE2MGEzYTQwNWIyOWNlOWMwNjkyMGY2NDI3YjkwNDdkZDhhOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTU4YzQxZTI2Y2YzYzhhY2NkNjAzMTFiZTU3OWY0NTJlMzY4ZTk3ZQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVGh1IFNlcCAxOCAyMDoxMzowOCAyMDA4ICswOTAwCgogICAgdXNiOiBGaXggY29tcGlsZSB3YXJuaW5nIG9mIHI4YTY2NTk3LWhjZAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgYjVkMTBhMTM1MjVjMDdlYzYzNzRhZGY4NDBkN2M4NzU1M2I1ZjE4OQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVGh1IFNlcCAxOCAxOTozNDozNiAyMDA4ICswOTAwCgogICAgc2g6IEZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNGEwNjVhYmY5MjZmMTI4YmViMzZkOTM0NDlkZWZhMGQ2OTBlN2ZlZgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVGh1IFNlcCAxOCAxOTowNDoyNiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IHdhdGNoZG9nIGZvciBTSDRBIGNvcmUKCiAgICBBZGQgc3VwcG9ydCB3YXRjaGRvZyBmb3IgU0g0QSBjb3JlIChTSDc3NjMsIFNINzc4MCBhbmQgU0g3Nzg1KS4KICAgIEFuZCBmaXggc29tZSBjb21waWxlIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGEwM2MwOWM1ZmRiODQzMGZlMmFlNmEwM2Y4OGEwY2Y3YmNjMGFhNTcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBTZXAgMTcgMTE6NDU6MjYgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggdHlwbyBpbiBTSCBzZXJpYWwgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZiNDRhNDM5MjE1YmE3YzYzZjY2NmY4MDk5MjEzZWE0ZjA1ZjJiMDcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBTZXAgMTcgMTE6MDg6MzYgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBhbnkgcGFnZSBzaXplIGFuZCBlbXB0eV96ZXJvX3BhZ2UgdG8gU0ggTGludXggdUltYWdlCgogICAgT2xkIFUtQm9vdCBzdXBwb3J0ZWQgNEtCIHBhZ2Ugc2l6ZSBvbmx5LiBJZiB0aGlzIHZlcnNpb24sIExpbnV4CiAgICBrZXJuZWwgY2FuIG5vdCBnZXQgY29tbWFuZCBsaW5lIGZyb20gVS1Cb290LgogICAgU0ggTGludXgga2VybmVsIGNhbiBjaGFuZ2UgcGFnZSBzaXplIGFuZCBlbXB0eV96ZXJvX3BhZ2UuCiAgICBUaGlzIHBhdGNoIHN1cHBvcnQgdGhpcyBmdW5jdGlvbiBhbmQgZml4IHByb21sZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGNlOWY5OWRkYjU5NjI4ZjQxZGM1MzRlODkyMzY4YTdkNjZkZmM3NzQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBBdWcgMjggMTM6NDA6NTIgMjAwOCArMDkwMAoKICAgIHNoOiByc2s3MjAzOiBBZGQgc3VwcG9ydCBwa3RfZGF0YV9wdWxsIGFuZCBwa3RfZGF0YV9wdXNoIGZ1bmN0aW9uCgogICAgQWRkIGZ1bmN0aW9uIG9mIHNtYzkxMXgsIHBrdF9kYXRhX3B1bGwgYW5kIHBrdF9kYXRhX3B1c2guCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGRkODIwYjAzYTJmNDVlODZlNzk2MGUyNjcyOWEzYjU4ZTNkZGE0NGEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgU2VwIDE4IDEzOjU3OjMyIDIwMDggKzAyMDAKCiAgICBBRFM1MTIxOiBmaXggdHlwbyBpbiAicm9vdHBhdGgiIGRlZmF1bHQgc2V0dGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYzllODQzNmIxMGNjYTUzZmNhNDkwNGVjYmFkY2Q2MjMxYWQ3MmMzOApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgU2VwIDE2IDE0OjU1OjQ0IDIwMDggKzAyMDAKCiAgICBVU0IgbGF5ZXIgb2YgVS1Cb290IGNhdXNlcyBVU0IgcHJvdG9jb2wgZXJyb3JzIHdoaWxlIHVzaW5nIFVTQiBtZW1vcnkgc3RpY2tzCgogICAgVGhlcmUgYXJlIHNldmVyYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiBMaW51eCwgV2luZG93cyBhbmQgVS1ib290IGZvciBpbml0aWFsaXNpbmcgdGhlCiAgICBVU0IgZGV2aWNlcy4gV2hpbGUgYW5hbHlzaW5nIHRoZSBiZWhhdmlvdXIgb2YgVS1ib290IGl0IHR1cm5lZCBvdXQgdGhhdCBVLWJvb3QgZG9lcwogICAgdGhpbmdzIHJlYWxseSBkaWZmZXJlbnQsIGFuZCBzb21lIGFyZSB3cm9uZyAoY29tcGFyZWQgdG8gdGhlIFVTQiBzdGFuZGFyZCkuCgogICAgVGhpcyBwYXRjaCBmaXhlcyBzb21lIGVycm9yczoKICAgICogVGhlIE5FV19pbml0IHByb2NlZHVyZSB0aGF0IHdhcyBhbHJlYWR5IGluIHRoZSBjb2RlIGlzIGdvb2QsIHdoaWxlIHRoZSBvbGQgcHJvY2VkdXJlCiAgICAgIGlzIHdyb25nLiBTZWUgY29kZSBjb21tZW50cyBmb3IgbW9yZSBpbmZvLgogICAgKiBPbiBhIENvbnRyb2wgcmVxdWVzdCB0aGUgZGF0YSByZXR1cm5lZCBieSB0aGUgZGV2aWNlIGNhbiBiZSBtb3JlIHRoYW4gOCBieXRlcywgd2hpbGUKICAgICAgdGhlIGhvc3QgbGltaXRzIGl0IHRvIDggYnl0ZXMuIFRoaXMgY2F1c2VkIHRoZSBob3N0IHRvIGdlbmVyYXRlIGEgRGF0YU92ZXJydW4gZXJyb3IuCiAgICAgIFRoaXMgcmVzdWx0cyBpbiBhIGxvdCBvZiBVU0Igc3RpY2tzIG5vdCBiZWluZyByZWNvZ25pc2VkLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBlbmRlZAogICAgICBmcmVxdWVudGx5IHdpdGggYSBDVEw6VElNRU9VVCBFcnJvci4KICAgICogQWRkZWQgYSBmbGFnIENPTkZJR19MRUdBQ1lfVVNCX0lOSVRfU0VRIHRvIGFsbG93IHVzZXJzIHRvIHVzZSB0aGUgb2xkIGluaXQgcHJvY2VkdXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA2ZjU3OTRhNmY3OGIzMTMyMzEyNTY5NThmZDczNjczYzZhYWNjMTE2CkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBTZXAgMTYgMTQ6NTU6NDMgMjAwOCArMDIwMAoKICAgIFJlZmFjdG9yaW5nIHBhcnRzIG9mIHRoZSBjb21tb24gVVNCIE9IQ0kgY29kZQoKICAgIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHNvbWUgbGFyZ2Ugcm91dGluZXMgb2YgdGhlIFVTQiBPSENJIGNvZGUgYnkKICAgIG1ha2luZyBzb21lIHJvdXRpbmVzIHNtYWxsZXIgYW5kIG1vcmUgcmVhZGFibGUgd2hpY2ggaGVscHMKICAgIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29kZS4gKE1ha2VzIHRoZSBjb2RlIGxvb2tzCiAgICBzb21ld2hhdCBtb3JlIGxpa2UgdGhlIExpbnV4IGltcGxlbWVudGF0aW9uLikKCiAgICBBbHNvIG1hZGUgZW50aXJlIGZpbGUgY29tcGxpYW50IHRvIExpbnV4IENvZGluZyBSdWxlcyAoY2hlY2twYXRjaC5wbCBjb21wbGlhbnQpCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGJlMTlkMzI0ZWRjMWExZDdmMzkzZDI0ZTEwZDE2NGNkOTRjOTFhMDAKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIFNlcCAxNiAxNDo1NTo0MiAyMDA4ICswMjAwCgogICAgRml4IGZvciBVU0Igc3RpY2tzIG5vdCB3b3JraW5nIG9uIEFSTSB3aGlsZSB1c2luZyBHQ0MgNC54IGNvbXBpbGVycwoKICAgIFRoZSBHQ0MtY29tcGlsZXIgbWFrZXMgYW4gb3B0aW1pc2F0aW9uIGVycm9yIHdoaWxlIG9wdGltaXNpbmcgdGhlIHJvdXRpbmUKICAgIHVzYl9zZXRfbWF4cGFja2V0KCkuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGluIHRoZSBjb21waWxlciBpbiB0aGUgZmlyc3QgcGxhY2UsCiAgICBidXQgdGhlcmUgbG90cyBvZiBjb21waWxlcnMgb3V0IHRoZXJlIHRoYXQgbWFrZXMgdGhpcyBlcnJvciwgdGhhdCBpdCBpcwogICAgcHJvYmFibHkgd2lzZXIgdG8gd29ya2Fyb3VuZCBpdCBpbiBVLWJvb3QgaXRzZWxmLgoKICAgIFdoYXQgaGFwcGVucyBpcyB0aGF0IHRoZSByZWdpc3RlciByMyBpcyB1c2VkIGFzIGxvb3AtY291bnRlciAnaScsIGJ1dCBnZXRzCiAgICBvdmVyd3JpdHRlbiBsYXRlciBvbi4gRnJvbSB0aGVyZSBpdCBzdGFydHMgdXNpbmcgcmVnaXN0ZXIgcjMgZm9yIHNldmVyYWwgb3RoZXIKICAgIHRoaW5ncyBhbmQgdGhlIGFzc2VtYmxlciBjb2RlIGlzIGJlY29taW5nIGEgYmlnIG1lc3MuIFRoaXMgaXMgY2xlYXJseSBhIGNvbXBpbGVyIGJ1Zy4KCiAgICBUaGlzIGVycm9yIG9jY3VycyBvbiBhdCBsZWFzdCBzZXZlcmFsIHZlcnNpb25zIG9mIENvZGUgU291cmNlcnkgTGl0ZSBjb21waWxlcnMKICAgIGZvciBBUk0uIExpa2UgdGhlIEVkaXRpb24gMjAwOHExLCBhbmQgMjAwOHEzLCBJdCBoYXMgYWxzbyBiZWVuIHNlZW4gb24gb3RoZXIKICAgIGNvbXBpbGVycywgd2hpbGUgY29tcGlsaW5nIGZvciBhcm12NHQsIG9yIGFybXY1dGUgd2l0aCBPcywgTzEgYW5kIE8yLgoKICAgIFdlIHdvcmsgYXJvdW5kIGl0IGJ5IHNwbGl0dGluZyB1cCB0aGlzIHJvdXRpbmUgaW4gMiBwYXJ0cywgYW5kIG1ha2luZyBzdXJlIHRoYXQKICAgIHRoZSBzcGxpdCBvdXQgcGFydCBpcyBOT1QgaW5saW5lZCBhbnkgbG9uZ2VyLiBUaGlzIHdpbGwgbWFrZSBHQ0Mgc3BpdCBvdXQgYXNzZW1ibGVyCiAgICB0aGF0IGRvIG5vdCBzaG93IHRoaXMgcHJvYmxlbS4gQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0byBhZGFwdCB0aGUgTWFrZWZpbGUgdG8gc3RvcAogICAgb3B0aW1pc2F0aW9uIGZvciB0aGUgY29tcGxldGUgZmlsZS4gSSB0aGluayB0aGlzIHNvbHV0aW9uIGlzIG5pY2VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA4N2I0ZWY1NjBjZjJkYTRjY2M5ZTU5NzExYWQxZmY3ZmFmZTk2NjcwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxNyAxMDoxNzo1NSAyMDA4ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFORUdMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDNlZWMxNjBhM2E0MDViMjljZTljMDY5MjBmNjQyN2I5MDQ3ZGQ4YTgKQXV0aG9yOiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KRGF0ZToJVHVlIFNlcCAxNiAwNjo1OToxMyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBGaXggRERSMiBhdXRvIGNhbGlicmF0aW9uIG9uIEtpbGF1ZWEgNjAwTUh6ICgyMDBNSHogUExCKQoKICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgY2U0N2ViNDAyYzVlMjlhMDI1Mzk5ZGMyODIyNDY0MTRmYzQ5Mjk0MApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBTZXAgMTYgMTA6MDQ6NDcgMjAwOCAtMDUwMAoKICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIFNHTUlJL1RCSSBpbnRlcmZhY2VzIGZvciBUU0VDIGV0aGVybmV0CgogICAgRml4IFRCSSBQSFkgYWNjZXNzZXMgdG8gdXNlIHRoZSBwcm9wZXIgb2Zmc2V0IGluIENQVSByZWdpc3RlciBzcGFjZS4gVGhlCiAgICBwcmV2aW91cyBjb2RlIHdvdWxkIGluY29ycmVjdGx5IGFjY2VzcyB0aGUgVEJJIFBIWSBieSByZWFkaW5nL3dyaXRpbmcgdG8gQ1BVCiAgICByZWdpc3RlciBzcGFjZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhcyB3b3VsZCBiZSB1c2VkIHRvIGFjY2VzcyBleHRlcm5hbCBQSFlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdjODAzYmUyZWIzY2FlMjQ1ZGVkZGE0Mzg3NzZlMDhmYjEyMjI1MGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDE2IDE4OjAyOjE5IDIwMDggKzAyMDAKCiAgICBUUU04eHg6IEZpeCBDRkkgZmxhc2ggZHJpdmVyIHN1cHBvcnQgZm9yIGFsbCBUUU04eHggYmFzZWQgYm9hcmRzCgogICAgQWZ0ZXIgc3dpdGNoaW5nIHRvIHVzaW5nIHRoZSBDRkkgZmxhc2ggZHJpdmVyLCB0aGUgY29ycmVjdCByZW1hcHBpbmcKICAgIG9mIHRoZSBmbGFzaCBiYW5rcyB3YXMgZm9yZ290dGVuLgoKICAgIEFsc28sIHNvbWUgYm9hcmRzIHdlcmUgbm90IGFkYXB0ZWQsIGFuZCB0aGUgb2xkIGxlZ2FjeSBmbGFzaCBkcml2ZXIKICAgIHdhcyBub3QgcmVtb3ZlZCB5ZXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMGQyZjg3ZDZjNDUwMTI4Yjg4ZTczZWVhNzE1ZmEzNjU0ZjY1YjZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIFNlcCAxNCAwMDo1OTozNSAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MjAwOC4xMC1yYzIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYxMmU0NTQ5YjZmYjAxY2QyNjU0MzQ4YWY5NWEzYzdhNmFjMTYxZTcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgU2VwIDEzIDAyOjIzOjA1IDIwMDggKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGMzMjU2NWY1MzY2MDlkNzhmZWVmMzVjODhiYmMzOWQzYWM1M2E3MwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMDk6MTg6MzQgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBtYWlsaW5nIGxpc3QgZW1haWwgYW5kIGFyY2hpdmUgYWRkcmVzc2VzCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCBmYjY2MWVhNDQ0YWU2MWRlNjA1MjBmNjZhZTg0Y2RiNWRkNWEzMjQ2CkF1dGhvcjogdS1ib290QGJ1Z3MuZGVueC5kZSA8dS1ib290QGJ1Z3MuZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAxMSAxNTo0MDowMSAyMDA4ICswMjAwCgogICAgODV4eDogc29jcmF0ZXM6IGF1dG9wcm9iZSBMaW1lIGNoaXAKCiAgICBUaGlzIHBhdGNoIGlzIGFuIGF0dGVtcHQgdG8gaW1wbGVtZW50IGF1dG9wcm9iaW5nIGZvciB0aGUgTGltZQogICAgcHJlc2VuY2Ugb24gdGhlIGJ1cy4KICAgIENvbmZpZ3VyZSBHUENNIGZvciBMaW1lIENTMiBhbmQgdHJ5IHRvIGFjY2VzcyBjaGlwIElEIHJlZ2lzdGVycy4KICAgIFNlY29uZCByZWFkIGF0ZW1wdCBkZWxpdmVycyByZWdpc3RlciB2YWx1ZXMgaWYgdGhlIGNoaXAgaXMgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgZTk5YjYwN2E1ZWM1NmNlNjZlMGJjY2NiNzg0ODBkNWUxNmZiN2JjNQpBdXRob3I6IHUtYm9vdEBidWdzLmRlbnguZGUgPHUtYm9vdEBidWdzLmRlbnguZGU+CkRhdGU6CVRodSBTZXAgMTEgMTU6NDA6MDEgMjAwOCArMDIwMAoKICAgIDg1eHg6IHNvY3JhdGVzOiBBZGQgc3VwcG9ydCBmb3IgbmV3IGltYWdlIGZvcm1hdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAzYzA5NGI2NTJkNDEwN2IzNDY0MWYzMDBhOGU5ZmUxNmNhMTVlM2Q4CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgU2VwIDExIDE3OjI4OjE4IDIwMDggKzA5MDAKCiAgICBzaDogRml4IGNvbXBpbGUgZXJyb3IgZm9yIHIyZHBsdXMKCiAgICBuZXRkZXYuaCB3YXMgbm90IGluY2x1ZGUgYnkgcjJkcGx1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Cgpjb21taXQgNTY4NDRhMjJiNzZjNzE5ZTYwMDA0N2UyM2I4MDQ2NWE0NGQ3NmFiZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgU2VwIDExIDA4OjExOjIzIDIwMDggKzAyMDAKCiAgICBwb3dlcnBjOiBGaXggYm9vdG0gdG8gYm9vdCB1cCBhZ2FpbiB3aXRoIGEgUmFtZGlzawoKICAgIENvbW1pdCAyYTFhMmNiNiBkaWRudCByZW1vdmUgdGhlIGR1bW15IG1lbSByZXNlcnZhdGlvbiBpbiBmZHRfY2hvc2VuLAogICAgYW5kIHRoaXMgc3RvcHBlZCBMaW51eCBmcm9tIGJvb3Rpbmcgd2l0aCBhIFJhbWRpc2suIFRoaXMgcGF0Y2ggZml4ZXMKICAgIHRoaXMsIGJ5IGRlbGV0aW5nIHRoZSB1c2VsZXNzIGR1bW15IG1lbSByZXNlcnZhdGlvbi4KCiAgICBXaGVuIGJvb3Rpbmcgd2l0aCBhIFJhbWRpc2ssIGEgZml4IG9mZnNldCBGRFRfUkFNRElTS19PVkVSSEVBRCBpcyBub3cKICAgIGFkZGVkIHRvIG9mX3NpemUsIHNvIHdlIGRvbnQgbmVlZCBhbnltb3JlIGEgZHVtbXkgbWVtIHJlc2VydmF0aW9uLgoKICAgIEkgbWVhc3VyZWQgdGhlIHZhbHVlIG9mIEZEVF9SQU1ESVNLX09WRVJIRUFEIG9uIGEgTVBDODI3MCBiYXNlZAogICAgc3lzdGVtICg9MHg0NCBieXRlcykgYW5kIHJvdW5kZWQgaXQgdXAgdG8gMHg4MCkuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYzljMTcyN2I1YjM0ODNjZTQ5YzNjYjY2OGU4MzMyZmIwMDFiOGE3CkF1dGhvcjogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgpEYXRlOglNb24gU2VwIDggMDI6NDY6MTMgMjAwOCArMDIwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBMWk1BIHVuY29tcHJlc3Npb24gYWxnb3JpdGhtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDAwOGI2ZDk2ODE2MGFiZTJiZmQ5MzY0OTNmM2E1MTZhN2M4ZGEyMApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgSnVuIDI3IDIzOjA0OjIwIDIwMDggKzA0MDAKCiAgICBmc2xfZWxiY19uYW5kOiBlY2NsYXlvdXQgY2xlYW51cHMKCiAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgb29iYXZhaWwgYXNzaWdubWVudHMsIHRoZXkncmUgY2FsY3VsYXRlZCBieSB0aGUgbmFuZAogICAgY29yZSBjb2RlIGluIG5hbmRfc2Nhbl90YWlsLCBwbHVzIGN1cnJlbnQgb29iYXZhaWwgdmFsdWVzIGFyZSB3cm9uZyBmb3IKICAgIHRoZSBMUCBOQU5Ecy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8RGF2aWQuV29vZGhvdXNlQGludGVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhmNDJiZjFjMzkzZDUzYTcwYzI1NDVlOWYzMjlkMTFjNDZkNzQ3OTQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJRnJpIEp1biAyNyAyMzowNDoxMyAyMDA4ICswNDAwCgogICAgZnNsX2VsYmNfbmFuZDogaW1wbGVtZW50IHN1cHBvcnQgZm9yIGZsYXNoLWJhc2VkIEJCVAoKICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBmbGFzaC1iYXNlZCBCQlQgZm9yIGNoaXBzIHdvcmtpbmcKICAgIHRocm91Z2ggRUxCQyBOQU5EIGNvbnRyb2xsZXIsIHNvIHRoYXQgTkFORCBjb3JlIHdpbGwgbm90IGhhdmUgdG8gcmUtc2NhbgogICAgZm9yIGJhZCBibG9ja3Mgb24gZXZlcnkgYm9vdC4KCiAgICBCZWNhdXNlIEVMQkMgY29udHJvbGxlciBtYXkgcHJvdmlkZSBIVy1nZW5lcmF0ZWQgRUNDcyB3ZSBzaG91bGQgYWRqdXN0CiAgICBiYnQgcGF0dGVybiBhbmQgYmJ0IHZlcnNpb24gcG9zaXRpb25zIGluIHRoZSBPT0IgZnJlZSBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhvdXNlIDxEYXZpZC5Xb29kaG91c2VAaW50ZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTdhZTAyMzY0OGU3NjRmNzk0ZmZiOWM1MmRhMTA5ZDZjYWYwOWM0NwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgSnVuIDI3IDIzOjA0OjA0IDIwMDggKzA0MDAKCiAgICBmc2xfZWxiY19uYW5kOiBmaXggT09CIHdvcmthYmlsaXR5IGZvciBsYXJnZSBwYWdlIE5BTkQgY2hpcHMKCiAgICBGb3IgbGFyZ2UgcGFnZSBjaGlwcywgbmFuZF9iYnQgaXMgbG9va2luZyBpbnRvIE9PQiBhcmVhLCBhbmQgY2hlY2tpbmcKICAgIGZvciAiMHhmZiAweGZmIiBwYXR0ZXJuIGF0IE9PQiBvZmZzZXQgMC4gVGhhdCBpcywgdHdvIGJ5dGVzIHNob3VsZCBiZQogICAgcmVzZXJ2ZWQgZm9yIGJidCBtZWFucy4KCiAgICBCdXQgRUxCQyBkcml2ZXIgaXMgc3BlY2lmeWluZyBlY2NsYXlvdXQgc28gdGhhdCBvb2JmcmVlIGFyZWEgc3RhcnRzIGF0CiAgICBvZmZzZXQgMSwgc28gb25seSBvbmUgYnl0ZSBsZWZ0IGZvciB0aGUgYmJ0IHB1cnBvc2VzLgoKICAgIFRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggYW55IE9PQiB1c2VycywgbmFtZWx5IEpGRlMyOiBhZnRlciBmaXJzdCBtb3VudAogICAgSkZGUzIgd2lsbCBmaWxsIGFsbCBPT0JzIHdpdGggImVyYXNlZCBtYXJrZXIiLCBzbyBPT0JzIHdpbGwgY29udGFpbjoKCiAgICAgIE9PQiBEYXRhOiBmZiAxOSA4NSAyMCAwMyAwMCBmZiBmZiBmZiAwMCAwMCAwOCBmZiBmZiBmZiBmZgogICAgICBPT0IgRGF0YTogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYKICAgICAgT09CIERhdGE6IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmCiAgICAgIE9PQiBEYXRhOiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZgoKICAgIEFuZCBvbiB0aGUgbmV4dCBib290LCBOQU5EIGNvcmUgd2lsbCByZXNjYW4gZm9yIGJhZCBibG9ja3MsIHRoZW4gd2lsbAogICAgc2VlICIweGZmIDB4MTkiIHBhdHRlcm4sIGFuZCB3aWxsIG1hcmsgYWxsIGJsb2NrcyBhcyBiYWQgb25lcy4KCiAgICBUbyBmaXggdGhlIGlzc3VlIHdlIHNob3VsZCBpbXBsZW1lbnQgb3VyIG93biBiYWQgYmxvY2sgcGF0dGVybjoganVzdCBvbmUKICAgIGJ5dGUgYXQgT09CIHN0YXJ0LiBUaG91Z2gsIHRoaXMgd2lsbCB3b3JrIG9ubHkgZm9yIHg4IGNoaXBzLiBGb3IgeDE2CiAgICBjaGlwcyB0d28gYnl0ZXMgbXVzdCBiZSBjaGVja2VkLiBTaW5jZSBFTEJDIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHgxNgogICAgTkFORHMgKHlldCksIHdlJ3JlIHNhZmUgZm9yIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8RGF2aWQuV29vZGhvdXNlQGludGVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcyMzhhZGEzMTMwNTdhODU0MDk0ODViOGVlMjE1MTVkYzEwYzA3YTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDEyIDEzOjUyOjIxIDIwMDggKzAyMDAKCiAgICBNUEM1MTJ4OiByZWR1Y2UgdGltZW91dCB3YWl0aW5nIGZvciBFdGhlcm5ldCBhdXRvbmVnb3RpYXRpb24gdG8gMi41cwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjE4NDEwZTUwOGExMmJhMGExNzdkZmMyYTM4Njg1N2M4MDZmYTk2ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IFNlcCAxMSAxMzowNTo1NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBFbmFibGUgZGV2aWNlIHRyZWUgKEZEVCkgc3VwcG9ydCBpbiB6ZXVzIGJvYXJkIHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2JmNWVjZmE1MDcyMmE5ZmViNDVlYThmMDRkYTc1ZjVkNDA2ZjIwYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxMCAxNjo1Mzo0NyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggU0RSQU0gaW5pdGl0aWFsaXphdGlvbiBvZiBtdWx0aXBsZSA0MDUgYmFzZWQgYm9hcmQgcG9ydHMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBpbnRyb2RpY2VkIHdpdGggcGF0Y2gKICAgIGJiZWZmMzBjIFtwcGM0eHg6IFJlbW92ZSBzdXBlcmZsdW91cyBkcmFtX2luaXQoKSBjYWxsIG9yIHJlcGxhY2UgaXQgYnkKICAgIGluaXRkcmFtKCldLgoKICAgIFRoZSBib2FyZHMgYWZmZWN0ZWQgYXJlOgogICAgLSBQQ0k0MDUKICAgIC0gUFBDaGFtZWxlb25FVkIKICAgIC0gcXVhZDEwMGhkCiAgICAtIHRhaWh1CiAgICAtIHpldXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjE3MzdjNTlhMzI4NWY2ZmFkZjk2YTU4MzY4Nzk4OThjMDRlYzI4ZApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUaHUgU2VwIDExIDE5OjQxOjI2IDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IEFkZCAuZ2l0aWdub3JlIGZpbGUgdG8geGlsaW54LXBwYzQ0MCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyYmVjNDk4ZWQxMTY0YTU4Y2Q4NDM3YjU2MWJkYzQ1NTFkNjlmOWJmCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVRodSBTZXAgMTEgMTk6NDE6MjUgMjAwOCAtMDQwMAoKICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIG9mIHY1ZngzMHRldmFsX2ZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGJlZDlkZWViYmQ3ZWU2ZjBiYTc0NmI0NGQ0N2E5MjIxNTZmNzQwNApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgU2VwIDEwIDE3OjQ0OjMwIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IEZpeCBpbi10cmVlIGJ1aWxkIGZvciBwcGM0NDAtZ2VuZXJpYyBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNmM0YWI1MGY1Y2NmYjU1ZWEyZGQzMjRhYTI4YjJiMDYxMDJlNDE2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NyAyMDA4ICswMjAwCgogICAgQVJNOiBzeW5jaHJvbml6ZSBtYWNoLXR5cGVzLmggd2l0aCBsaW51eCAyLjYuMjctcmM2CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzZWU5ZjAzZjU4OGFkNjA1ZTNmZDEwNTMwMjM3ZjllM2UyZTdhYjRjCkF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgpEYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ3IDIwMDggKzAyMDAKCiAgICBhdDkxcm05MjAwOiBmaXggZXJyb3JzIHdpdGggQ09ORklHX0NNRF9JMkNfVFJFRQoKICAgIFRoaXMgcGF0Y2ggcHJldmVudHMgbGlua2VyIGVycm9yIG9uIEFUOTFSTTkyMDAgYm9hcmRzLCBpZgogICAgQ09ORklHX0NNRF9JMl9UUkVFIGlzIHNldC4KICAgIEl0IGltcGxlbWVudHMgaTJjX3NldF9idXNfc3BlZWQgYW5kIGkyY19nZXRfYnVzX3NwZWVkIGFzIGEgZHVtbXkgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgoKY29tbWl0IGI1YjAzNDQ5NTdkMzJlM2QwN2E4ZGQ3MmZjZTY0ZmI0OGU2ODBiYTQKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NyAyMDA4ICswMjAwCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvZHA4Mzg0OC5jCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvZHA4Mzg0OC5jCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgMDNkYjUzMzM1YzhlYmE2NTZhN2M0NGQxNTU1YjFhNDUxNDM4M2UzMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAoKICAgIG1ha2U6IFJlbW92ZSByZWR1bmRhbnQgX19BUk1fXyBhZGRpdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBvbiAqQlNECgogICAgX19BUk1fXyBpcyBnaXZlbiBieSBhcm1fY29uZmlnLm1rIGF1dG9tYXRpY2FsbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA4Y2M2MmE3ZDljNzdmOGVmNTE2NmZiNTczMjJjNGE2ZGRhYzMyMGI0CkF1dGhvcjogQ2xhdWRpbyBTY29yZGlubyA8Y2xhdWRpb0BldmlkZW5jZS5ldS5jb20+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAoKICAgIEZpeCBNQUNIX1RZUEUgZm9yIHRoZSBBVDkxUk05MjAwREsgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogQ2xhdWRpbyBTY29yZGlubyA8Y2xhdWRpb0BldmlkZW5jZS5ldS5jb20+Cgpjb21taXQgMjc0NzM3ZTVlYjI1YjJiY2QzYWYzYTk2ZGE5MjNlZmZkNTQzMjg0ZgpBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NiAyMDA4ICswMjAwCgogICAgaS5teCBjaGFuZ2UgZ2V0X3RpbWVyKGJhc2UpIHRvIHJldHVybiB0aW1lIHNpbmNlIGJhc2UKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgZ2V0X3RpbWVyKCkgZm9yIGkuTVggdG8gcmV0dXJuIHRoZSB0aW1lIHNpbmNlCiAgICAnYmFzZScgaW5zdGVhZCBvZiB0aGUgdGltZSBzaW5jZSB0aGUgY291bnRlciB3YXMgYXQgemVyby4KCiAgICBTeW1wdG9tIHNlZW4gaXMgZmxhc2ggdGltZW91dCBlcnJvcnMgd2hlbiBlcmFzaW5nIG9yIHByb2dyYW1taW5nIGEKICAgIHNlY3RvciB1c2luZyB0aGUgY29tbW9uIGNmaSBmbGFzaCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KCmNvbW1pdCA0OGZlZDQwNTc1YjNlOGVhZTk2MGViMDE0MTUwOWRkZDlhNzMwMTJhCkF1dGhvcjogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgpEYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ2IDIwMDggKzAyMDAKCiAgICBpLk1YIHVzZSB1LWJvb3QgYmF1ZCByYXRlIGFuZCBkb24ndCBhc3N1bWUgVUFSVCBtYXN0ZXIgY2xvY2sKCiAgICAxKSBDaGFuZ2UgdGhlIGkuTVggc2VyaWFsIGRyaXZlciB0byB1c2UgdGhlIGJhdWQgcmF0ZSBzZXQgaW4gdGhlCiAgICAgdS1ib290IGVudmlyb25tZW50CgogICAgMikgZG9uJ3QgYXNzdW1lIGEgMTZNSHogdmFsdWUgZm9yIFBFUkNMSzEgaW4gYmF1ZCByYXRlIGNhbGN1bGF0aW9ucwoKICAgIDMpIGRvbid0IHdyaXRlIGEgMSB0byB0aGUgUkRSIGJpdCBpbiB0aGUgVVNSMiByZWcuIChiaXQgaXMgbm90ICJ3cml0ZQogICAgIG9uZSB0byBjbGVhciIgbGlrZSBvdGhlciBzdGF0dXMgYml0cyBpbiB0aGUgcmVnLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Cgpjb21taXQgNmUxNTUxYTg3MGQzNjA4MDViOWQxNzJkYzU2ZDkzNTA2NGFiZTcxZApBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NiAyMDA4ICswMjAwCgogICAgYXJtOTIwdCBmaXggY29uc3RhbnQgZXJyb3IgaW4gc3RhcnQuUwoKICAgIENvZGUgaW4gY3B1L2FybTkyMHQvc3RhcnQuUyB3aWxsIGRpZSB3aXRoIGEgY29tcGlsYXRpb24gZXJyb3IgaWYKICAgIENPTkZJR19TVEFDS1NJWkUgKyBDRkdfTUFMTE9DX0xFTiB3b3JrcyBvdXQgdG8gYW4gaW52YWxpZCBjb25zdGFudCBmb3IKICAgIHRoZSBBUk0gc3ViIGluc3RydWN0aW9uLiAgQ2hhbmdlIHRoZSBjb2RlIHNvIHRoYXQgZWFjaCBpcyBzdWJ0cmFjdGVkCiAgICBpbmRlcGVuZGVudGx5IHRvIGF2b2lkIHRoZSBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Cgpjb21taXQgYjIzMjUzODM1Zjg3MWNkOWJkOGU5NTViOWE5NzFkMThhN2Q0ZmY1NgpBdXRob3I6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CkRhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDAgMjAwOCArMDIwMAoKICAgIEFSTSBPTUFQIDogQ29ycmVjdCBJbnZhbGlkIFRpbWVyIFJlZ2lzdGVyIEZpZWxkIERlY2xhcmF0aW9uIGluIG9tYXAxNTEwLmggJiBvbWFwNzMwLmgKCiAgICAtIENvcnJlY3QgSW52YWxpZCAjZGVmaW5lIG9mIE1QVVRJTV9QVFZfTUFTSyBmb3IKICAgICAgIG9tYXAxNTEwICYgb21hcDczMCByZWdpc3RlciBkZWZpbml0aW9uCgogICAgIE1QVVRJTV9QVFZfTUFTSyBpcyBkZWZpbmVkIGFzCiAgICAgI2RlZmluZSBNUFVUSU1fUFRWX01BU0sJCSgweDc8PFBUVl9CSVQpCgogICAgIHdoaWxlIGl0IHNob3VsZCBoYXZlIGJlZW4KICAgICAjZGVmaW5lIE1QVVRJTV9QVFZfTUFTSwkJKDB4Nzw8TVBVVElNX1BUVl9CSVQpCgogICAgLSBCZWxvdyBQYXRjaCBjb3JyZWN0cyB0aGUgc2FtZQoKICAgIFNpZ25lZC1vZmYtYnk6IEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCBjNDU1ZDA3Mzk2ZGRkYzk4NjRmZDhkYmI5NjVlZTEwZmU5NWNlOGNmCkF1dGhvcjogQWRyaWFuIEZpbGlwaSA8YWRyaWFuLmZpbGlwaUBldXJvdGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTggMTE6NTI6MDIgMjAwOCAtMDQwMAoKICAgIFNldCB1cCBTRC9NTUMgT0NSIGFzIGNvbW1lbnQgZGVzY3JpYmVzLiBpLmUuIDMuMi0zLjR2LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgoKY29tbWl0IGViMTYxMzVkZjIwNTM1YjBkMTk5NjlmNTBmYjViZDE3Zjk1ZTljMjUKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMjggMTI6MjU6MTEgMjAwOCArMDIwMAoKICAgIGkuTVgzMTogZG9jdW1lbnQgdGltZXIgcHJlY2lzaW9uIG9wdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAxYTYzMzdiMDEzNTFiODJhNDViMGRlZmE3NmYwODc0NDUxMWM1ODBiCkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglGcmkgQXVnIDI5IDEwOjM2OjE4IDIwMDggKzAyMDAKCiAgICBpLk1YMzE6IE1ha2UgdGhlIFNQSSBidXMgYW5kIGNoaXAgc2VsZWN0IGNvbmZpZ3VyYWJsZSBmb3IgTUMxMzc4MwoKICAgIFRoZSBpLk1YMzEgaGFzIHRocmVlIFNQSSBidXNlcyBhbmQgZWFjaCBidXMgaGFzIHNldmVyYWwgY2hpcCBzZWxlY3RzCiAgICBhbmQgdGhlIE1DMTM3ODMgY2hpcCBjYW4gYmUgY29ubmVjdGVkIHRvIGFueSBvZiB0aGVzZS4gVGhlIGN1cnJlbnQKICAgIFJUQyBkcml2ZXIgZm9yIE1DMTM3ODMgaXMgaGFyZGNvZGVkIGZvciBDU1BJMi9TUzIuCgogICAgVGhpcyBwYXRjaCBtYWtlcyBtYWtlIE1DMTM3ODMgU1BJIGJ1cyBhbmQgY2hpcCBzZWxlY3QgY29uZmlndXJhYmxlCiAgICB2aWEgQ09ORklHX01DMTM3ODNfU1BJX0JVUyBhbmQgQ09ORklHX01DMTM3ODNfU1BJX0NTLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCA4YzRlYmVjMjViMjFlMzU1Yjg0ODg2OThlYzE1OTRkYTk3MDFmZmY0CkF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgpEYXRlOglGcmkgQXVnIDI5IDEwOjM2OjE3IDIwMDggKzAyMDAKCiAgICBpLk1YMzE6IEFkZCByZXNldF90aW1lcigpIGFuZCBtb2RpZnkgZ2V0X3RpbWVyX21hc2tlZCgpLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcmVzZXRfdGltZXIoKSBmdW5jdGlvbiAobmVlZGVkIGJ5IG5hbmRfYmFzZS5jKSBhbmQKICAgIG1vZGlmaWVzIHRoZSBnZXRfdGltZXJfbWFza2VkKCkgdG8gd29yayBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIG9tYXAyNHh4CiAgICBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZGVlZWM0OTkxYTU1ZGUyNDM3ODcwMDJlZGUyNGQyMzMxZDIzNGZjOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDkgMjAwOCArMDIwMAoKICAgIGFwMzI1cnhhOiByZW1vdmUgZHVwbGljYXRlIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhM2EwOGMwY2VkZDMyOWVkZjUyNTZlMWQ2YjJiYWQwZmNhMDAyNzI1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowOSAyMDA4ICswMjAwCgogICAgYm9vdG0gYXJtL2F2cjMyL2JsYWNrZmluL21pY3JvYmxhemUvbmlvczIvc2g6IHJlbW92ZSBubyBtb3JlIG5lZWQgJ2Vycm9yJyBsYWJlbAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGU4ZDE1ODY2NGE5MTMzOTJjYjAxZmIxMWE5NDhkODNmNzJlMTA1ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDYgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WIG1hY3JvcyB0byBDT05GSUdfRU5WCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxZWRlNzg3MTBjM2JmOWFkNmY0YTUzYWFkZGMzYmNjODZmZWRkOWRmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNSAyMDA4ICswMjAwCgogICAgbnZlZGl0OiByZW5hbWUgZXJyb3IgY29tbWVudCB0byBDT05GSUdfRU5WX0lTX0lOXwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjY0Yjc3NWU3NTQ2ZWQxMzhkZjM2MGNlYjNhNzFlZTM1OGNiOWEwMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDUgMjAwOCArMDIwMAoKICAgIGNtZF9tZW06IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhhNDBmYjE0OGVmYTQ0MmQ2NTI2ZWFjNDZhMjAwMWU0YzY0ZDI4ZmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA1IDIwMDggKzAyMDAKCiAgICBtb3ZlIGNtZF9nZXRfZGF0YV9zaXplIHRvIGNvbW1hbmQuYwoKICAgIGFkZCBDTURfREFUQV9TSVpFIG1hY3JvIHRvIGVuYWJsZSBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTA3NjQxZDI0OTE5ODA1MzE5MzJiOWYyNWRhYjM3ZmU1ZTZjM2ExYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDQgMjAwOCArMDIwMAoKICAgIGVudl9mbGFzaDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWExYWNlYjA2ODllMmY3MzE0OTE4Mzg5NzA4ODRhNjczZWY3ZTdkMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDQgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX0ZMQVNIIGluIENPTkZJR19FTlZfSVNfSU5fRkxBU0gKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDdkOWI1YmFlNWJhNTU4Yzc0NjRkODlkMDMzYWNhMDRhY2FmMDExNzIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAzIDIwMDggKzAyMDAKCiAgICBjbGVhbnVwIHVzZSBvZiBDRkdfRU5WX0lTX0lOX0ZMQVNICgogICAgLSAjaWYgQ0ZHX0VOVl9JU19JTl9GTEFTSAogICAgLSAjaWYgKENGR19FTlZfSVNfSU5fRkxBU0ggPT0gMSkKICAgIC0gI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNIIDAKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDBjZjRmZDNjZjhkMGUwMDYwNWJlYzVmYzU2Zjg5YzY0MTUwMTVhNDYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAxIDIwMDggKzAyMDAKCiAgICByZW5hbWUgZW52aXJvbm1lbnQuYyBpbiBlbnZfZW1iZWRkZWQuYyB0byByZWZsZWN0IGlzIGZ1bmN0aW9uYWxpdHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMwODc4YWY2ZTMyZjBmZDhlMTNhNmNhMzE1YjlhZGQ2NDQ0MTExNWEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAxIDIwMDggKzAyMDAKCiAgICBlbnZfbm93aGVyZTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTNmNmQ3MjU0NGRhNDUxMGExNDZiYzRjOTNkNjA5YjAxMTZjZGUzNwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDAgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX05PV0hFUkUgaW4gQ09ORklHX0VOVl9JU19OT1dIRVJFCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyNTU2ZWY3ODExM2I1ZjA4OWRmY2FjNWRhOTBiZjMxZGQ1NjgzOTdiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMCAyMDA4ICswMjAwCgogICAgZW52X3NmOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYjUwOTlhODQxOWJmOWM4MjhkZjVlM2UyYzY4NzhkYzMwMGQ5OGUzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMCAyMDA4ICswMjAwCgogICAgcmVuYW1lIENGR19FTlZfSVNfSU5fU1BJX0ZMQVNIIGluIENPTkZJR19FTlZfSVNfSU5fU1BJX0ZMQVNICgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NWM1ZjQ5OTEwZWM4MjI1MzQ3YWExZDIxMTM1MmE4NGRlNjY0OWI0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMCAyMDA4ICswMjAwCgogICAgZW52X29uZW5hbmQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk2NTYxMzhmZjFhMzRkNGM0NzY4ZGI2YjQ5MGRlZmZjNDBlZTY3NGIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKCiAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9PTkVOQU5EIGluIENPTkZJR19FTlZfSVNfSU5fT05FTkFORAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTU3YTBlNjk1NzU2ODNlZmQ3MGFjZTE0Nzc0NmJiYjNkOGU3YzUwMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTkgMjAwOCArMDIwMAoKICAgIGVudl9udnJhbTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTMxNGNlZTY5MTc0NDRhYjg4YmQ0ZTc1OGRhN2EzMDk3NTEyMDE4NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTkgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX05WUkFNIGluIENPTkZJR19FTlZfSVNfSU5fTlZSQU0KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDA2ZjYxMzU0Mzk3OTExYTRjMTIxZGZhNTFiNmNjYmY3ZTMwMGQ0OGIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKCiAgICBlbnZfbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTFiZmVlMTkyMDk5MjA2YTQzOTdmMTVmM2I5MzUxNmUwMWY1OGFiMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTggMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX05BTkQgaW4gQ09ORklHX0VOVl9JU19JTl9OQU5ECgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkOGNjMDRkMGFjOWM3YzBkMTI0NTQ3MDhhYWY1NDg5Zjg1MzJiYmY5CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1OCAyMDA4ICswMjAwCgogICAgZW52X2RhdGFmbGFzaDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDU3Yzg0OWM0NWI5ZWUxOWRmOGZmM2FjZGVlZTY2YmU1MjgxOTk2MgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTggMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX0RBVEFGTEFTSCBpbiBDT05GSUdfRU5WX0lTX0lOX0RBVEFGTEFTSAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDEwMzRiYzhkYjYwZmE2YmQ0MTkzMjhiYWY2YTc1Y2IwNjQ1Y2VlOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTIgMjAwOCArMDIwMAoKICAgIGNtZF9lZXByb206IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJmNWE3NzEwZWM3MGU5MGU5OGY0NTFiNGJhMGViNjVmOWZmYzM0ZWIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgU2VwIDUgMDk6MTk6NTQgMjAwOCArMDIwMAoKICAgIGVudl9lZXByb206IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJiMWY4YjRmOGJiMGJmY2U1MmUwZmFhNDYzN2I5NzViNzQ1ODI0YjMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgU2VwIDUgMDk6MTk6MzAgMjAwOCArMDIwMAoKICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX0VFUFJPTSBpbiBDT05GSUdfRU5WX0lTX0lOX0VFUFJPTQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzI2MjhjNTAwODEwNWE3MzIyMTIwMDNkODNiNzVmMDVlNTI0M2JiMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMzAgMjM6NTQ6NTggMjAwOCArMDIwMAoKICAgIGNtZF9tYWM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBmaW5pc2ggcmVtYW5pbmcgQ0ZHX0lEX0VFUFJPTSBpbiBDT05GSUdfSURfRUVQUk9NCiAgICBzdGFydCBpbiBjb21taXQgYWQ4Zjg2ODdiNzhjM2U5MTdiMTczZjAzODkyNjY5NTM4M2M1NTU1NQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTU2NDhhY2FiMTUzZjBmNDI5YmZjNzE0OTAyYzVhYWE3ODc5ZjcxYgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMzAgMjM6NDc6NDEgMjAwOCArMDIwMAoKICAgIGNtZF9mZGM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJkMDJkOTFkNTMwZTgzMWYyZGFiMjI4MDg1OTYzZmMxZDViNzFjYjAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDMwIDIzOjQ3OjM4IDIwMDggKzAyMDAKCiAgICBjb21tb24vTWFrZWZpbGU6IGFkZCBjb3JlIGNvbW1hbmQgc2VjdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGQ5MmQ0YTY5OWZiMWEzOTM4MWQ5ODU3MWRjNTFmYjk3ZTViY2Y5ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMzAgMjM6Mjk6NTcgMjAwOCArMDIwMAoKICAgIGNtZF92ZmQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY2NDQ2NDFkMDcyYWVlMzA4N2RhMTI5ZDg0NDMxODcxOTZhNGQ4YTkKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAxMCAxMTo0ODo0OSAyMDA4IC0wNTAwCgogICAgZGVsdGEsIHp5bG9uaXRlOiBVcGRhdGUgbmFuZF9vb2JpbmZvIHRvIG5hbmRfZWNjbGF5b3V0LgoKICAgIFRoaXMgaXMgcGFydCBvZiB0aGUgc3dpdGNoIHRvIG5ld2VyIHVwc3RyZWFtIE1URCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDliMDVhYTc4OGJmZGQzMjY0ZmYxYmM5NDE4Y2IxOTU1MGE3MjM0ZTQKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJU2F0IEF1ZyAzMCAxNzowNjo1NSAyMDA4IC0wNDAwCgogICAgQVJNIERhVmluY2k6IEZpeCBicm9rZW4gSFcgRUNDIGZvciBsYXJnZSBwYWdlIE5BTkQuCgogICAgQmFzZWQgb24gb3JpZ2luYWwgcGF0Y2ggYnkgQmVybmFyZCBCbGFja2hhbSA8YmVybmFyZEBsYXJnZXN0cHJpbWUubmV0PgoKICAgIFUtYm9vdCdzIEhXIEVDQyBzdXBwb3J0IGZvciBsYXJnZSBwYWdlIE5BTkQgb24gRGF2aW5jaSBpcyBjb21wbGV0ZWx5CiAgICBicm9rZW4uICBTb21lIGtlcm5lbHMsIHN1Y2ggYXMgdGhlIDIuNi4xMCBvbmUgc3VwcG9ydGVkIGJ5CiAgICBNb250YVZpc3RhIGZvciBEYVZpbmNpLCByZWx5IHVwb24gdGhpcyBicm9rZW4gYmVoYXZpb3VyIGFzIHRoZXkKICAgIHNoYXJlIHRoZSBzYW1lIGNvZGUgZm9yIEVDQ3MuIEluIHRoZSBleGlzdGluZyBzY2hlbWUsIGVycm9yCiAgICBkZXRlY3Rpb24gKm1pZ2h0KiB3b3JrIG9uIGxhcmdlIHBhZ2UsIGJ1dCBlcnJvciBjb3JyZWN0aW9uCiAgICBkZWZpbml0ZWx5IGRvZXMgbm90LiAgU21hbGwgcGFnZSBFQ0MgY29ycmVjdGlvbiB3b3JrcywgYnV0IHRoZQogICAgZm9ybWF0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIG1haW5saW5lIGdpdCBrZXJuZWwuCgogICAgVGhpcyBwYXRjaCBhZGRzIEVDQyBjb2RlIHRoYXQgbWF0Y2hlcyB3aGF0IGlzIGN1cnJlbnRseSBpbiB0aGUKICAgIERhdmluY2kgZ2l0IHJlcG9zaXRvcnkgKHNpbmNlIE5BTkQgc3VwcG9ydCB3YXMgYWRkZWQgaW4gMi42LjI0KS4KICAgIFRoaXMgbWFrZXMgdGhlIEVDQyBhbmQgT09CIGxheW91dCB3cml0dGVuIGJ5IHUtYm9vdCBjb21wYXRpYmxlIHdpdGgKICAgIExpbnV4IGZvciBib3RoIHNtYWxsIHBhZ2UgYW5kIGxhcmdlIHBhZ2UgZGV2aWNlcyBhbmQgZml4ZXMgRUNDCiAgICBjb3JyZWN0aW9uIGZvciBsYXJnZSBwYWdlIGRldmljZXMuCgogICAgVGhlIG9sZCBiZWhhdmlvdXIgY2FuIGJlIHJlc3RvcmVkIGJ5IGRlZmluaW5nIHRoZSBtYWNybwogICAgQ0ZHX0RBVklOQ0lfQlJPS0VOX0VDQywgd2hpY2ggaXMgdW5kZWZpbmVkIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CiAgICBBY2tlZC1ieTogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwYjdjNTYzOTg5MWY0MTAzYTBlMzFlYzdhZTBiZWIzZTk3ZWQzODM2CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVdlZCBTZXAgMTAgMTE6MTU6MjggMjAwOCArMDIwMAoKICAgIG11YXMzMDAxOiB1cGRhdGUgQlI0IHNldHRpbmdzCgogICAgQWxzbyBzZXQgdXAgdGhlIHBvcnQgcGlucyBmb3IgdXNpbmcgSTJDLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDM1OTEyOTM1MDllMGMwYmNmMjQ0YjBmOTc0Nzc1YmZmMmUyNTY5N2UKQXV0aG9yOiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KRGF0ZToJV2VkIFNlcCAxMCAwOTo0Mzo0OSAyMDA4ICswMzAwCgogICAgYXV0b3NjcjogRml4IG9uZS1jaGFyYWN0ZXIgbGluZXMgYW5kIG5vbi1uZXdsaW5lIHRlcm1pbmF0ZWQgc2NyaXB0cwoKICAgIFdoZW4gbm90IHVzaW5nIGh1c2gsIHRoZSBhdXRvc2NyIGNvbW1hbmQgbm93IGV4ZWN1dGVzIGxpbmVzIHRoYXQgYXJlCiAgICBvbmx5IG9uZSBjaGFyYWN0ZXIgbG9uZy4gSXQgYWxzbyBydW5zIHRoZSBsYXN0IGxpbmUgb2Ygc2NyaXB0cyBldmVuIGlmCiAgICBpdCBkb2VzIG5vdCBlbmQgaW4gYSBuZXdsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldHJpIExlaHRpbmVuIDxwZXRyaS5sZWh0aW5lbkBpbm9pLmZpPgoKY29tbWl0IDllYmJiNTRmN2EyNTA1NTAxMGZhNjY2OGViYTQwYzcyYTRjNGY5ODUKQXV0aG9yOiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KRGF0ZToJVHVlIFNlcCA5IDE1OjEzOjI5IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFsbG93IERUVF9JMkNfREVWX0NPREUgY29uZmlndXJlZCBieSBDRkdfSTJDX0RUVF9BRERSCgogICAgT24gQU1DQyBBcmNoZXMgYm9hcmQgRFRUX0kyQ19ERVZfQ09ERSBpcyBkaWZmZXJlbnQgdGhlbiBjYW55b25sYW5kcwogICAgYW5kIGdsYWNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+Cgpjb21taXQgMjQ1ZjZlZjNlMTE4MjhjYjQ2MTg4ZTM5NmZiMWU2N2Y3YjA3Y2QwMwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMTA6MjE6MTEgMjAwOCArMDIwMAoKICAgIG11YXMzMDAxOiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgTE03NSBzZW5zb3IuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNGEwMmEyZGNhODJhZWFiOGY4MzlkYjlkZDM1ZmRhOWQ1NDEyZGFjYgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMTA6MjA6MTkgMjAwOCArMDIwMAoKICAgIG11YXMzMDAxOiBhY3RpdmF0ZSBXRFQgZm9yIHRoZSBtdWFzMzAwMSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhNTVkMDc0ZGFjMjRkYzk0MWYxYWZiNWI0ZTk0YjE1MDliZmRkYTRlCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAxMDoxOTozNiAyMDA4ICswMjAwCgogICAgbXVhczMwMDE6IGFkZGVkIDY0TUIgU0RSQU0gYXV0b2RldGVjdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1MjUxNDY5OTQzODk1ZGU0YmI5YTA0ZDUwNTMzNTJjYzIyYWNiN2Q1CkF1dGhvcjogQW5kcmV3IEtsb3NzbmVyIDxhbmRyZXdAY2VzYS5vcGJ1Lnhlcm94LmNvbT4KRGF0ZToJVGh1IEF1ZyAyMSAwNzoxMjoyNiAyMDA4IC0wNzAwCgogICAgRml4IHByaW50ZiBlcnJvcnMgdW5kZXIgLURERUJVRwoKICAgIEZpeCBwcmludGYgZm9ybWF0LXN0cmluZy9hcmcgbWlzbWF0Y2hlcyB1bmRlciAtRERFQlVHLgoKICAgIFRoZXNlIHdhcm5pbmdzIG9jY3VyIHdpdGggREVCVUcgZGVmaW5lZCBmb3IgYSBwbGF0Zm9ybSB1c2luZwogICAgY3B1L21wYzg1eHguICBVc2VycyBvZiBvdGhlciBhcmNoaXRlY3R1cmVzIGNhbiB1bmVhcnRoIHNpbWlsYXIKICAgIHByb2JsZW1zIGJ5IGFkZGluZyB0aGUgbGluZSAiQ0ZMQUdTICs9IC1EREVCVUc9MSIgaW4gY29uZmlnLm1rIHJpZ2h0CiAgICBhZnRlciAiQ0ZMQUdTICs9ICQoY2FsbCBjYy1vcHRpb24sLWZuby1zdGFjay1wcm90ZWN0b3IpIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgS2xvc3NuZXIgPGFuZHJld0BjZXNhLm9wYnUueGVyb3guY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhiOWU0Nzg3NjQxNzE5ZDcwOWJmYTJlYmViNzJlOGJkNDk1MmJlZTcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDkgMjM6NTU6MTggMjAwOCArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0csIHByZXBhcmUgMjAwOC0xMC1yYzEgcmVsZWFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTBmZjNkMzUwZDZiNzk2MGRlYjVhODgxZGZjNWFjZjNhNjNlZjY3NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBTZXAgOCAwODo1MToyOSAyMDA4IC0wNTAwCgogICAgODV4eDogRW5zdXJlIHRpbWViYXNlIGlzIHplcm8gb24gc2Vjb25kYXJ5IGNvcmVzCgogICAgVGhlIGU1MDB1bSBzYXlzIHRoZSB0aW1lYmFzZSBpcyB2b2xhdGlsZSBvdXQgb2YgcmVzZXQuICBUbyBlbnN1cmUKICAgIFRCIHN5bmMgd29ya3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUgaXRzIHplcm8uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1NGI0YWIzYzk2MWEyMDEyYTFjMmEwOWMyNTlhNjM0MzMyM2VjNTUxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCA5IDIyOjE4OjI0IDIwMDggKzAyMDAKCiAgICBib290bV9sb2FkX29zOiBmaXggbG9hZF9lbmQgZGVidWcgbWVzc2FnZQoKICAgIHByaW50IGxvYWRfZW5kIHZhbHVlIG5vdCBwb2ludGVyCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxZDlhZjBiZTc2NDk2MGU2Y2MxYzA5M2U5NzE3NmMzNTQyNzk2ODIwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIFNlcCA5IDIyOjE4OjIzIDIwMDggKzAyMDAKCiAgICBib290bTogZW5hYmxlIGZkdCBzdXBwb3J0IG9ubHkgb24gcHBjLCBtNjhrIGFuZCBzcGFyYwoKICAgIC4uLmFzIGRvbmUgaW4gaW1hZ2UuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzQ4YjUyNzRlNzZmODFkZjg1Y2ZjZmZhZmZlZGMzMjM2NzhkMDYyMwpBdXRob3I6IE1hcmt1cyBIZWlkZWxiZXJnIDxtYXJrdXMuaGVpZGVsYmVyZ0B3ZWIuZGU+CkRhdGU6CVR1ZSBTZXAgOSAxODo1MTowNSAyMDA4ICswMjAwCgogICAgY29tbW9uL2NtZF9tZW0uYzogcmVtb3ZlIG5lc3RlZCAjaWYgZGVmaW5lZChDT05GSUdfQ01EX01FTU9SWSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgoKY29tbWl0IDY1MDYzMmZlNGNhMDljZmQwZTVlNmE1OTNmMmVmYzAyZWY4N2E1OGMKQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgpEYXRlOglUdWUgU2VwIDkgMTc6MzE6NDYgMjAwOCArMDIwMAoKICAgIGdpdGlnbm9yZTogYWRkIHRhZ3MgZmlsZXMgYW5kIFZpbSBzd2FwIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgoKY29tbWl0IDFkOWI2N2IyM2ZjYTZhMjUxNTQzMzM3MzMyMDQzMzk4MDI1MTA3MjAKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBTZXAgOSAxNzo1Mjo0NyAyMDA4ICswOTAwCgogICAgYWRkIGJvYXJkX2V0aF9pbml0KCkgZm9yIHNoNzc4NWxjciBib2FyZAoKICAgIEZpeCB0aGUgcHJvYmxlbSB0aGF0IGNhbm5vdCB3b3JrIFJUTDgxNjkgb24gc2g3Nzg1bGNyIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KCmNvbW1pdCA3YjdhODY5YThiYTNiZDZkOWJmZmI3NDhjOTEyMzIxNDEzMzBmNTE0CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE2OjA4OjQxIDIwMDggLTA1MDAKCiAgICBtdGQ6IFNQSSBGbGFzaDogU3VwcG9ydCB0aGUgU1RNaWNybyBGbGFzaAoKICAgIEFkZCBNVEQgU1BJIEZsYXNoIHN1cHBvcnQgZm9yIE0yNVAxNiwgTTI1UDIwLCBNMjVQMzIsCiAgICBNMjVQNDAsIE0yNVA2NCwgTTI1UDgwLCBNMjVQMTI4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0YmMwN2MzNjgwNzY1NjBlZDdmYTRjOWY5ODdjNzFhODUyMTQ4OGE5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDE3OjU1OjMxIDIwMDggKzAyMDAKCiAgICB0cmFiOiBmaXggYnVpbGQgcHJvYmxlbSBhZnRlciBjaGFuZ2UgdG8gdXNlIGRvX2RpdigpCgogICAgV2UgbXVzdCBsaW5rIHdpdGggbGliZ2VuZXJpYyBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzYjIwZmQ4M2M3M2MyMmFjZmNiMGM2NjYzYmU3NDdiZDVjOGI3MDExCkF1dGhvcjogUnlhbiBDSEVOIDxyeWFuLmNoZW5Ac3QuY29tPgpEYXRlOglXZWQgQXVnIDIwIDEzOjAwOjE3IDIwMDggLTA0MDAKCiAgICBDb3JyZWN0IGRydl91c2Jfa2JkX2luaXQgZnVuY3Rpb24KCiAgICBUaGUgcGF0Y2ggaXMgdGhhdCBjaGVjayBpZiB1c2JfZ2V0X2Rldl9pbmRleCgpIGZ1bmN0aW9uIHJldHVybiB2YWxpZAogICAgcG9pbnRlci4gSWYgdmFsaWQsIGNvbnRpbnVlLiBPdGhlcndpc2UgcmV0dXJuIC0xLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJ5YW4gQ2hlbiA8cnlhbi5jaGVuQHN0LmNvbT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGViYTFmMmZjNzVmMTI4YTlhNmMxMzI4ZDc4Njk5NmE5M2ZkN2E3MDcKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIEF1ZyAyMCAxMToyMjowMiAyMDA4ICswMjAwCgogICAgTWFrZSB1c2Itc3RvcCgpIHNhZmUgdG8gY2FsbCBtdWx0aXBsZSB0aW1lcyBpbiBhIHJvdy4KCiAgICBBIHJlY2VudCBjb21taXQgKDkzNjg5N2Q0ZDEzNjU0NTJiYmJkZjg0MzBkYjVlNzc2OWVmMDhkMzgpCiAgICBlbmFibGVkIHRoZSB1c2Jfc3RvcCgpIGNvbW1hbmQgaW4gY29tbW9uL2NtZF9ib290bS5jIHdoaWNoIHdhcwogICAgbm90IGVuYWJsZWQgZm9yIHNvbWUgdGltZSwgYmVjYXVzZSBubyBib2FyZCBkaWQgYWN0dWFsbHkgc2V0IHRoZQogICAgQ0ZHX0NNRF9VU0IgZmxhZy4gU28sIG5vdyB0aGUgdXNiX3N0b3AoKSBpcyBleGVjdXRlZCBiZWZvcmUKICAgIGxvYWRpbmcgdGhlIGxpbnV4IGtlcm5lbC4KCiAgICBIb3dldmVyLCB0aGUgdXNiX29oY2kgZHJpdmVyIGhhbmdzIHVwIChhdCBsZWFzdCBvbiBBVDkxU0FNKSBpZiB0aGUKICAgIGRyaXZlciBpcyBzdG9wcGVkIHR3aWNlIChlLmcuIHRoZSBwZXJpcGhlcmFsIGNsb2NrIGlzIHN0b3BwZWQgb24gQVQ5MSkuCiAgICBJZiBzb21lIG90aGVyIHBpZWNlIG9mIGNvZGUgY2FsbHMgdXNiX3N0b3AoKSBiZWZvcmUgdGhlIGJvb3RtIGNvbW1hbmQsCiAgICB0aGlzIGNvbW1hbmQgd2lsbCBoYW5ndXAgdGhlIHN5c3RlbSBkdXJpbmcgYm9vdC4KICAgICh1c2Igc3RhcnQgYW5kIHN0b3AgaXMgdHlwaWNhbGx5IHVzZWQgd2hpbGUgYm9vdGluZyBmcm9tIHVzYiBtZW1vcnkgc3RpY2spCgogICAgQnV0LCBzdG9wcGluZyB0aGUgdXNiIHN0YWNrIHR3aWNlIGlzIHVzZWxlc3MgYW55d2F5LCBhbmQgYSBmbGFnIGFscmVhZHkKICAgIGV4aXN0ZWQgdGhhdCBrZXB0IHRyYWNrIG9uIHRoZSB1c2JfaW5pdCgpL3VzYl9zdG9wKCkgY2FsbHMuCiAgICBTbywgd2Ugbm93IGNoZWNrIGlmIHRoZSB1c2Igc3RhY2sgaXMgcmVhbGx5IHN0YXJ0ZWQgYmVmb3JlIHdlIHN0b3AgaXQuCgogICAgVGhpcyBwcm9ibGVtIGlzIG5vdyBmaXhlZCBpbiBib3RoIHRoZSB1cHBlciBhcyBsb3ctbGV2ZWwgbGF5ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCAyYzhjY2YyNzI4ZjVlNjdkOTkxY2VjZjc2YzQwNTdkYjc1YTg3YjY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDE2OjU1OjQ3IDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogZml4IGJ1ZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA0N2ZmZDZjMgoKY29tbWl0IDg4MGY2YTVkNzU5NmY0MmRiNWZmODgwM2I3OTdiNzhlYzViMTQ2ZTAKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJVHVlIFNlcCA5IDEwOjAwOjMzIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IHBwYzQ0MC1nZW5lcmljLUFMTDogRml4IG91dCBvZiB0cmVlIGJ1aWxkIHYyCgogICAgVGhpcyBwYXRjaCBzb2x2ZXMgdGhlIHByb2JsZW1zIGNvbXBpbGluZyBtbDUwNywgdjVmeDMwdGV2YWwgYW5kCiAgICBwcGM0NDAtZ2VuZXJpYyBvdXQgb2YgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KCmNvbW1pdCA0N2JlYmUzNGNhNGUzM2JhYjBlODIyZTRjZWViYmVjMjU5MGNjYmNiCkF1dGhvcjogTsOtY29sYXMgQ2FybmVpcm8gTGViZWRlbmNvIDxuaWNvbGFzLmxlYmVkZW5jb0B0YXNrc2lzdGVtYXMuY29tLmJyPgpEYXRlOglUaHUgU2VwIDQgMTU6MzU6NDYgMjAwOCAtMDMwMAoKICAgIEZpeCBkZXZfcHJpbnQgd2hlbiBjYWxsZWQgZnJvbSB1c2Jfc3Rvcl9pbmZvICh1c2Igc3RvcmFnZSBjb21tYW5kKQoKICAgIEZpeCBvdXRwdXQgb2YgdGhlIHVzYiBzdG9yYWdlIGNvbW1hbmQuIEl0IHdhcyBwcmludGluZyAiRGV2aWNlIDA6IG5vdAogICAgYXZhaWxhYmxlIiBiZWNhdXNlIElGX1RZUEVfVVNCIHdhcyBub3QgaW5jbHVkZWQgaW50byB0aGUgc3dpdGNoCiAgICBzdGF0ZW1lbnQuCgogICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBMZWJlZGVuY28gPG5pY29sYXMubGViZWRlbmNvQHRhc2tzaXN0ZW1hcy5jb20uYnI+Cgpjb21taXQgYTRmMjQzNDUyY2M4Y2UwYzJjOWI1MWEyNTIwZGI0YmRlNWY0NzJkZQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBTZXAgOSAxMjo1ODoxNiAyMDA4ICswMjAwCgogICAgRklUOiBtYWtlIGltaW5mbyBjaGVjayBoYXNoZXMgb2YgYWxsIGltYWdlcyBpbiBGSVQsIHJldHVybiAxIG9uIGZhaWxlZCBjaGVjawoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgOTE5ZjU1MGRjMTFhMTNhYmYwMWM2YmM3MTNjOTY4ZGU3OTBiOGQ3YwpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBTZXAgOSAxMjo1ODoxNSAyMDA4ICswMjAwCgogICAgRklUOiBhZGQgYWJpbGl0eSB0byBjaGVjayBoYXNoZXMgb2YgYWxsIGltYWdlcyBpbiBGSVQsIGltcHJvdmUgb3V0cHV0CgogICAgLSBhZGQgZnVuY3Rpb24gZml0X2FsbF9pbWFnZV9jaGVja19oYXNoZXMoKSB0aGF0IHZlcmlmaWVzIGlmIGFsbAogICAgICBoYXNoZXMgb2YgYWxsIGltYWdlcyBpbiB0aGUgRklUIGFyZSB2YWxpZAogICAgLSBpbXByb3ZlIG91dHB1dCBvZiBmaXRfaW1hZ2VfY2hlY2tfaGFzaGVzKCkgd2hlbiB0aGUgaGFzaCBjaGVjayBmYWlscwoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMWRlMWZhNDA4OTY3Y2VmNjgwNGJiMDQ2YjkwNDExNDUxOWJiMzZmMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBTZXAgOCAyMDo1NDozOSAyMDA4ICswMjAwCgogICAgcWVtdV9taXBzOiBVcGRhdGUgbGludXggYm9vdG0gdG8gc3VwcG9ydCBkeW5hbWljIGNtZGxpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY1ZWQ5ZTM5MDg4ZWNmYTVhNWYzZWY0N2IwOGU1YmRhNzg5MGQ3NjQKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglNb24gU2VwIDggMTQ6NTY6NDkgMjAwOCAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBib290aW5nIG9mIElOVEVHUklUWSBvcGVyYXRpbmcgc3lzdGVtIHVJbWFnZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgoKY29tbWl0IDcyZjFiNjVmMWI2OGJjNmVkMGQxODJlZGExZjNkNmNmNTFiNjQxNGEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gU2VwIDggMjE6MDE6MjkgMjAwOCArMDIwMAoKICAgIG1pcHMvYm9vdG06IEZpeCB0eXBvIGluIGNvbW1pdCBjNGY5NDE5YywgImluaXRyZF9zdGFydCIgcmVwbGFjZWQgYnkgImltYWdlcy0+cmRfc3RhcnQiCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5YmEyZTJjODE5MTM1M2Q3NWIyZDUzNWU2NzJhMTI1YmU3Yjg0YzAzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIFNlcCA4IDEzOjU3OjEyIDIwMDggLTA1MDAKCiAgICBSZW1vdmUgc3VwcG9ydCBmb3IgYm9vdGluZyBBUlRPUyBpbWFnZXMKCiAgICBQYW50ZWxpcyBBbnRvbmlvdSBzdGF0ZWQ6CglBRkFJSywgaXQgaXMgc3RpbGwgdXNlZCBidXQgdGhlIHByb2R1Y3RzIHVzaW5nIFBQQyBhcmUgbG9uZyBnb25lLgoJTnVrZSBpdCBwbHogKGZyb20gb3JiaXQpLgoKICAgIFNvIHJlbW92ZSBpdCBzaW5jZSBpdCBjbGVhbnMgdXAgYSB1c2FnZSBvZiBlbnZfZ2V0X2NoYXIgb3V0c2lkZSBvZgogICAgdGhlIGVudmlyb25tZW50IGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0N2ZmZDZjMmZjNzJiNDZkYWE5ZDVkNTllZWRiODk0ZmFiMmI3ZWUxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDE1OjQ1OjE4IDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogY29tcGlsZSBhbmQgbGluayBlYWNoIG1vZHVsZSBqdXN0IG9uY2UKCiAgICBTZXZlcmFsIHNvdXJjZSBmaWxlcyBuZWVkIHRvIGJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgd2hlbiBvbmUgb3IgbW9yZQogICAgY29uZmlnIG9wdGlvbnMgYXJlIHNlbGVjdGVkLiBUbyBhbGxvdyBmb3IgZWFzeSBzZWxlY3Rpb24gaW4gdGhlCiAgICBNYWtlZmlsZXMgeWV0IHRvIGF2b2lsZCBtdWx0aXBsZSBjb21waWxhdGlvbiAod2hpY2ggY29zdHMgYnVpbGQgdGltZSkKICAgIGFuZCBlc3BlY2lhbGx5IG11bHRpcGxlIGxpbmtpbmcgKHdoaWNoIGNhdXNlcyBlcnJvcnMpLCB3ZSB1c2UKICAgICJDT0JKUyA9ICQoc29ydCBDT0JKUy15KSIgd2hpY2ggZWxpbWluYXRlcyBkdXBsaWNhdGVzLgoKICAgIEJ5IGNvdXJ0ZXN5IG9mIERldGxldiBadW5kZWwgd2hvIHN1Z2dlc3RlZCB0aGlzIGFwcHJvYWNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDhkMDE5MmZlODY5OTQ4ZmVmMTRiNDYwYjVmMGM4NWJjYTkzMzY5MwpBdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgpEYXRlOglNb24gU2VwIDggMTQ6MzA6NTMgMjAwOCArMDIwMAoKICAgIE1vdmVkIGNvbmRpdGlvbmFsIGNvbXBpbGUgaW50byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgoKY29tbWl0IDIwYzkyMjZjYjhjYWIwOGExMTFlZTczZGIwNGU2MmQ5NDNlZTBjOTcKQXV0aG9yOiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KRGF0ZToJTW9uIFNlcCA4IDEwOjE3OjMxIDIwMDggKzAyMDAKCiAgICBNZXJnZWQgc2VyaWFsX3BsMDEwLmMgYW5kIHNlcmlhbF9wbDAxMS5jLgoKICAgIFRoZXkgb25seSBkaWZmZXIgaW4gdGhlIGluaXQgZnVuY3Rpb24uCiAgICBUaGlzIGFsc28gYWRkcyB0aGUgbWlzc2luZyB3YXRjaGRvZyBzdXBwb3J0IGZvciB0aGUgUEwwMTEuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+Cgpjb21taXQgMDgxN2Q2ODhmMzA3ZWUyYzA1OThlNzkxNzVjOTRhNDBjZTkwMzM3YgpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglTdW4gU2VwIDcgMTc6MTA6MjcgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSBnYXAgZmlsbCBpbiBzcmVjIG9iamVjdCB2MgoKICAgIFNSRUMgZmlsZXMgZG8gbm90IG5lZWQgZ2FwIGZpbGw6IFRoZSBsb2FkIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIHRoZQogICAgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGNhbid0IGJlIGF2b2lkZWQgaW4gYSAuYmluIG9iamVjdC4gSXQgaGFzCiAgICBubyBpbmZvcm1hdGlvbiBhYm91dCBtZW1vcnkgbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Cgpjb21taXQgMWRjMzA2OTMxY2E1Y2U4N2YxMzkxNmZhNzE2NWIwNTJkM2FhNzE0ZgpBdXRob3I6IE1hcmt1cyBIZWlkZWxiZXJnIDxtYXJrdXMuaGVpZGVsYmVyZ0B3ZWIuZGU+CkRhdGU6CVN1biBTZXAgNyAyMDoxODoyNyAyMDA4ICswMjAwCgogICAgUkVBRE1FOiBmaXggbWlzc2luZyBzdWJkaXJlY3RvcnkgaW4gdGhlIGRvY3VtZW50YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgoKY29tbWl0IDNlZjk2ZGVkMzhhOGQzM2I1OGI5ZmFiOWNkODc5ZDUxZGRhYzRjYmQKQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgpEYXRlOglTdW4gU2VwIDcgMDc6MDg6NDIgMjAwOCArMTAwMAoKICAgIFVwZGF0ZSBpMzg2IGNvZGUgKHNjNTIwX2NkcCkKCiAgICBBdHRlbXB0IHRvIGJyaW5nIGkzODYgLyBzYzUyMCBpbmxpbmUgd2l0aCBtYXN0ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgoKY29tbWl0IDU2MDg2OTIxMDRlZmE4ZDU2ZGY4MDNkYzc5ZWE0MWFjMzYwN2VlZTUKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBTZXAgNCAxMzowMTo0OSAyMDA4ICswMjAwCgogICAgZndfZW52OiBhZGQgTkFORCBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IGluIE5BTkQgd2l0aCBhdXRvbWF0aWMgTk9SIC8gTkFORCByZWNvZ25pdGlvbiwKICAgIGluY2x1ZGluZyB1bmFsaWduZWQgZW52aXJvbm1lbnQsIGJhZC1ibG9jayBza2lwcGluZywgcmVkdW5kYW50IGVudmlyb25tZW50CiAgICBjb3B5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBkZDc5NDMyM2EyYTFlZDZhOGE1ZGY1MTc4NWMzMWJjZGU2MGFkN2NhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgOSAwOTo1MDoyNCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgb2YgQ1BDSTQwNSB2YXJpYW50cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OWY2MzA1ODhlM2ZkYmQ2OThhMGEyNzk4ZTUyYTg5MjRlODk5NTYzCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMSAyMDA4ICswMjAwCgogICAgUmVtb3ZlZCBoYXJkY29kZWQgTXhNUiBsb29wIHZhbHVlIGZyb20gdXBtY29uZmlnKCkgZm9yIE1QQzg1eHguCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBlNjQ5ODdhODkyMzUzZjNkNDllYjI0MmQ5OTc4MjBlZjhmNTM4OTEyCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDE1IDE1OjQyOjEzIDIwMDggKzAyMDAKCiAgICA4NXh4OiBzb2NyYXRlczogRW5hYmxlIExpbWUgc3VwcG9ydC4KCiAgICBUaGlzIHBhdGNoIGFkZHMgTGltZSBHREMgc3VwcG9ydCB0b2dldGhlciB3aXRoIHN1cHBvcnQgZm9yIHRoZSBQV00KICAgIGJhY2tsaWdodCBjb250cm9sIHRocm91Z2ggdGhlIHc4Mzc4MmQgY2hpcC4gIFRoZSByZXNldCBwaW4gb2YgdGhlCiAgICBsYXR0ZXIgaXMgYXR0YWNoZWQgdG8gR1BJTywgc28gd2UgbmVlZCB0byByZXNldCBpdCBpbgogICAgZWFybHlfYm9hcmRfaW5pdF9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAzZTc5YjU4OGI1MTk5ZjM1MDE2ZjE3OGZjMGQ1ZDEyNjYzODIwOTdmCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTIgMjAwOCArMDIwMAoKICAgIDg1eHg6IFNvY3JhdGVzOiBNYWpvciBjb2RlIHVwZGF0ZS4KCiAgICAtIFVwZGF0ZSB0aGUgbG9jYWwgYnVzIHJhbmdlcyBpbiB0aGUgRkRUIGZvciBMaW51eCBmb3IgdGhlIHZhcmlvdXMKICAgICAgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIGxvY2FsIGJ1cyB2aWEgY2hpcC1zZWxlY3QuCgogICAgLSBTZXQgdGhlIExDUlJfREJZUCBiaXQgaW4gdGhlIExDUlIgZm9yIGxvY2FsIGJ1cyBmcmVxdWVuY2llcwogICAgICBsb3dlciB0aGFuIDY2IE1IeiBhbmQgdXNlcyBJL08gYWNjZXNzb3IgZnVuY3Rpb25zIGNvbnNlcXVlbnRseS4KCiAgICAtIFVQTSBkYXRhIHVwZGF0ZS4KCiAgICAtIFVwZGF0ZSBvZiBkZWZhdWx0IGVudmlyb25tZW50IGFuZCBjb25maWd1cmF0aW9uLglVc2UgSTJDIG11bHRpYnVzCiAgICAgIGFzIHdlIGRvIGhhdmUgdHdvIEkyQyBidXNlcy4gIEFsc28gZW5hYmxlIHNkcmFtIGFuZCBleHQyIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGU4ZDE4NTQxYzZjZWFiODIxZjc1ZmFhYjAzMTc0MGIzM2ZkYmZhNGIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDE4IDE2OjUyOjIzIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHN5c19lZXByb20uYwoKICAgIFRoZSBuZXcgc3lzX2VlcHJvbS5jIHN1cHBvcnRzIGJvdGggdGhlIG9sZCBDQ0lEIEVFUFJPTSBmb3JtYXQgYW5kIHRoZSBuZXcgTlhJRAogICAgZm9ybWF0LCBhbmQgc28gaXQgb2Jzb2xldGVzIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vY2RzX2VlcHJvbS5jLiAgRnJlZXNjYWxlCiAgICA4Nnh4IGJvYXJkcyBhbHJlYWR5IHVzZSBzeXNfZWVwcm9tLmMsIHNvIHRoaXMgcGF0Y2ggbWlncmF0ZXMgdGhlIHJlbWFpbmluZwogICAgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHVzZSBpdCBhcyB3ZWxsLiAgY2RzX2VlcHJvbS5jIGlzIGRlbGV0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYWIyYmYwMjAyYzg2MjI3ZTNkY2M4YTViNTg5NDYwODdlYmNjMWFmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIFNlcCA5IDEwOjA4OjAyIDIwMDggKzAyMDAKCiAgICBsaWJfcHBjL2ludGVycnVwdHMuYzogbWFrZSBib2FyZF9zaG93X2FjdGl2aXR5KCkgYSB3ZWFrIGZ1bmN0aW9uCgogICAgVGhpcyBhbGxvd3MgdG8gdXNlIHNob3dfYWN0aXZpdHkoKSB3aXRob3V0IGhhdmluZyB0bwogICAgZGVmaW5lIGFuIGVtcHR5IGJvYXJkX3Nob3dfYWN0aXZpdHkoKSBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZlODc2Nzg3Zjg3NDM4ODNjZTU4ZmVkNjE1MjVlYWEyZjM0ZGE0YzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDkgMTA6MDY6NDQgMjAwOCArMDIwMAoKICAgIHN0eHh0YzogcmVtb3ZlIGVtcHR5IENPTkZJR19TSE9XX0FDVElWSVRZIGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTY1ZGUxMDZiYTg5MDAzNzJjOGIxNmRjNjBkNWFjYWI3ZjkyNWUzOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgOSAxMDowMzo0NyAyMDA4ICswMjAwCgogICAgTkVUVEEyOiByZW1vdmUgZW1wdHkgQ09ORklHX1NIT1dfQUNUSVZJVFkgZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2Y2M2NGY5YjVmNjkyMzljOGIxOTY5NTcyYjVhM2E0YWFiN2RlNWI5CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMSAyMDA4ICswMjAwCgogICAgUmVtb3ZlZCBoYXJkY29kZWQgTXhNUiBsb29wIHZhbHVlIGZyb20gdXBtY29uZmlnKCkgZm9yIE1QQzg1eHguCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzNjI0MWNhMjlkNDgwNGExMDA2ZmIzZjI2MDY5ZWZmZGE1MjAyNTgxCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDE1IDE1OjQyOjEzIDIwMDggKzAyMDAKCiAgICA4NXh4OiBzb2NyYXRlczogRW5hYmxlIExpbWUgc3VwcG9ydC4KCiAgICBUaGlzIHBhdGNoIGFkZHMgTGltZSBHREMgc3VwcG9ydCB0b2dldGhlciB3aXRoIHN1cHBvcnQgZm9yIHRoZSBQV00KICAgIGJhY2tsaWdodCBjb250cm9sIHRocm91Z2ggdGhlIHc4Mzc4MmQgY2hpcC4gIFRoZSByZXNldCBwaW4gb2YgdGhlCiAgICBsYXR0ZXIgaXMgYXR0YWNoZWQgdG8gR1BJTywgc28gd2UgbmVlZCB0byByZXNldCBpdCBpbgogICAgZWFybHlfYm9hcmRfaW5pdF9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA3YTQ3NzUzZGRjYWViYmYyMTQyODA5ODQyZjcwYzVmNzIzYmQ5ZGRiCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTIgMjAwOCArMDIwMAoKICAgIDg1eHg6IFNvY3JhdGVzOiBNYWpvciBjb2RlIHVwZGF0ZS4KCiAgICAtIFVwZGF0ZSB0aGUgbG9jYWwgYnVzIHJhbmdlcyBpbiB0aGUgRkRUIGZvciBMaW51eCBmb3IgdGhlIHZhcmlvdXMKICAgICAgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIGxvY2FsIGJ1cyB2aWEgY2hpcC1zZWxlY3QuCgogICAgLSBTZXQgdGhlIExDUlJfREJZUCBiaXQgaW4gdGhlIExDUlIgZm9yIGxvY2FsIGJ1cyBmcmVxdWVuY2llcwogICAgICBsb3dlciB0aGFuIDY2IE1IeiBhbmQgdXNlcyBJL08gYWNjZXNzb3IgZnVuY3Rpb25zIGNvbnNlcXVlbnRseS4KCiAgICAtIFVQTSBkYXRhIHVwZGF0ZS4KCiAgICAtIFVwZGF0ZSBvZiBkZWZhdWx0IGVudmlyb25tZW50IGFuZCBjb25maWd1cmF0aW9uLglVc2UgSTJDIG11bHRpYnVzCiAgICAgIGFzIHdlIGRvIGhhdmUgdHdvIEkyQyBidXNlcy4gIEFsc28gZW5hYmxlIHNkcmFtIGFuZCBleHQyIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDRkMmFlNzBlOGMzMWMyMmU1NzEwZGY1ZmYyMzZiNTU2NWVhMmNmMmMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgU2VwIDkgMDE6MjI6MzkgMjAwOCArMDIwMAoKICAgIGRpc2stb24tY2hpcDogcmVtb3ZlIGR1cGxpY2F0ZSBkb2NfcHJvYmUgZGVjbGFyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDMyMjFiMDc0YTBhYjE5OWY2YWU0N2MxOWNjMjJmNDJkZGYzZWY4MTkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgU2VwIDkgMDA6NTk6NDAgMjAwOCArMDIwMAoKICAgIG9uZW5hbmRfdWJvb3Q6IGZpeCB3YXJuaW5nOiAnc3RydWN0IG10ZF9vb2Jfb3BzJyBkZWNsYXJlZCBpbnNpZGUgcGFyYW1ldGVyIGxpc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDEzYjRkYjBlMjEwNzE3NWE4NjIyZWJiNDg1MjlmYTNhZDhlMTJjNzUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgU2VwIDkgMDA6NTk6MzkgMjAwOCArMDIwMAoKICAgIHJzNWMzNzI6IGZpeCBydGNfc2V0IHByb3RvdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWJiOGIyZWYyNzIyYmJhZWEzY2M1ZDQ2MzIxY2UxZDk5ZjliNTZmNwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBBdWcgMTQgMTQ6MDg6MjggMjAwOCArMDIwMAoKICAgIEFSTTogZml4IHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHdhcm5pbmdzIGxpa2UgdGhpczoKCiAgICBzdGFydC5TOjA6IHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKCiAgICB3aGljaCBjb21lIGZyb20gc29tZSBBUk0gY3Jvc3MgY29tcGlsZXJzIGFuZCBhcmUgY2F1c2VkIGJ5IGhhcmQtY29kZWQKICAgICh3aXRoICItLXdpdGgtY3B1PWFybTkiIGNvbmZpZ3VyYXRpb24gb3B0aW9uKSBBUk0gdGFyZ2V0cyAod2hpY2gKICAgIHN1cHBvcnQgQVJNIFRodW1iIGluc3RydWN0aW9ucyksIHdoaWxlIHRoZSBBUk0gdGFyZ2V0IHNlbGVjdGVkIGZyb20KICAgIHRoZSBjb21tYW5kIGxpbmUgKHdpdGggIi1tYXJjaD1hcm12NCIpIGRvZXNuJ3Qgc3VwcG9ydCBUaHVtYgogICAgaW5zdHJ1Y3Rpb25zLgoKICAgIFRoaXMgd2FybmluZyBpcyBpc3N1ZWQgYnkgdGhlIGNvbXBpbGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHJlYWwgdXNlIG9mCiAgICB0aGUgVGh1bWIgaW5zdHJ1Y3Rpb25zIGluIGNvZGUuCgogICAgVG8gZml4IHRoaXMgcHJvYmxlbSwgd2UgdXNlIG9wdGlvbnMgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIHZlcnNpb24KICAgIGJlaW5nIHVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDI2NWMzNWZiY2IyNDhlNTgxNzkwMDc2MjFkNjFkMzJkMGIzYjgyYQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBBdWcgMTQgMTQ6MDg6MjggMjAwOCArMDIwMAoKICAgIEFSTTogVXNlIGRvX2RpdigpIGluc3RlYWQgb2YgZGl2aXNpb24gZm9yICJsb25nIGxvbmciLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDhmZWJkMTNjNjljYjY4NjUyNTc3ZDFhOWZjYmRlOTU0YmY3ODQxNTUKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDE4IDE2OjUyOjIzIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHN5c19lZXByb20uYwoKICAgIFRoZSBuZXcgc3lzX2VlcHJvbS5jIHN1cHBvcnRzIGJvdGggdGhlIG9sZCBDQ0lEIEVFUFJPTSBmb3JtYXQgYW5kIHRoZSBuZXcgTlhJRAogICAgZm9ybWF0LCBhbmQgc28gaXQgb2Jzb2xldGVzIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vY2RzX2VlcHJvbS5jLiAgRnJlZXNjYWxlCiAgICA4Nnh4IGJvYXJkcyBhbHJlYWR5IHVzZSBzeXNfZWVwcm9tLmMsIHNvIHRoaXMgcGF0Y2ggbWlncmF0ZXMgdGhlIHJlbWFpbmluZwogICAgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHVzZSBpdCBhcyB3ZWxsLiAgY2RzX2VlcHJvbS5jIGlzIGRlbGV0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMDU1MTcxZWQwNWI3YzQ4ODU3Mzc0NjNkNTJiOGQ2YzAxM2JjYjVkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDIzOjI2OjIyIDIwMDggKzAyMDAKCiAgICBsaWJfYXJtL2Jvb3RtLmM6IGZpeCBjb21waWxlIHdhcm5pbmdzCgogICAgYm9vdG0uYzoxMjg6IHdhcm5pbmc6IGxhYmVsICdlcnJvcicgZGVmaW5lZCBidXQgbm90IHVzZWQKICAgIGJvb3RtLmM6NjU6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV0JwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmUzYzg2N2QwYTYzYzU2M2E1MWU2NWI3NzY5NzNiMDA4ZjE2Y2VjNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAyMjo0Njo0MiAyMDA4ICswMjAwCgogICAgbWw1MDc6IGZpeCBvdXQgb2YgdHJlZSBidWlsZCBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5ODYzYTE1YTk4ZjIzYjc5ZjM0YTBlNGY5ZTQ2NWJjNmRmNWQ1MDRkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDIyOjEwOjI4IDIwMDggKzAyMDAKCiAgICBjb21tb24vY21kX2Jvb3RtLmM6IGZpeCBwcmludGYoKSBmb3JtYXQgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQzOTRmOWE4YzQyYmIxYjBhYmM0ZmMwNGJkNTgyZDRkYjVmOGI3MjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMjI6Mzc6NDUgMjAwOCArMDIwMAoKICAgIEJNVywgUENJUFBDMiwgUENJUFBDNiwgUkJDODI6IGZpeCBjb21waWxlIHdhcm5pbmdzCgogICAgbWlzc2luZyBkb2NfcHJvYmUoKSBwcm90b3R5cGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyYzVlM2NjNDk5NDg5N2QzNjRiMTQ4OTQyZmYyM2U0Nzc4MzE5OGY2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCA4IDIxOjI4OjE0IDIwMDggKzAyMDAKCiAgICBtazQ4dDU5OiBmaXggY29tcGlsZSBwcm9ibGVtIGludHJvZHVjZWQgYnkgY29tbWl0IGQxZTIzMTk0CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1ZmY4ODkzNDlkMmFjZTEzZjEwYzkzMzVlMDkzNjVmY2VjODI0N2NjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gU2VwIDggMTQ6MTE6MTIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTW92ZSBwcGM0eHggc3BlY2lmaWMgcHJvdG90eXBlcyB0byBwcGM0eHggaGVhZGVyCgogICAgVGhpcyBwYXRjaCBtb3ZlcyBzb21lIDR4eCBzcGVjaWZpYyBwcm90b3R5cGVzIG91dCBvZiBpbmNsdWRlIGNvbW1vbi5oCiAgICB0byBhIHBwYzR4eCBzcGVjaWZpYyBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGFjNTNlZTgzMTg2NzgxOTBiZjNjNjhkYTQ3N2E4NGE2NTdkODZmYjAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIFNlcCA1IDE1OjM0OjA0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBDUENJNDA1KEFCKSBjb25maWd1cmF0aW9uCgogICAgVGhpcyBwYXRjaCBhZGQgRkRUIHN1cHBvcnQgYW5kIGNvbW1hbmQgbGluZSBlZGl0aW5nIGNhcGFiaWxpdGllcwogICAgZm9yIENQQ0k0MDUgYW5kIENQQ0k0MDVBQiBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2IxZmJjYWRmNzNhODNiM2JlYjk0YWJjY2RhMWMzNWUyYzA3NWE5NApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgU2VwIDUgMTU6MzQ6MDMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IGxpbmtlciBzY3JpcHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NjdmOTE1OWM1Yzk0Y2QwY2IzMTM1YjViODI4MTRhZDEyODE2ZGRmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBTZXAgNSAxNTozNDowMiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQ1BDSTQwNSB2YXJpYW50cyBoYW5kbGluZwoKICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIEJPQVJEX1JFVklTSU9OIHZhcmlhYmxlIGluIGluY2x1ZGUvY29uZmlnLm1rCiAgICBieSBhIHVzaW5nIGEgdGVtcG9yYXJ5IGluY2x1ZGUgZmlsZSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5LgoKICAgIFRoZSBmb3JtZXIgd2F5IGRvZXMgbm90IHdvcmsgYW55bW9yZSBhbmQgdGhlIGxhdHRlciBpcyBhbHNvIHVzZWQgYnkKICAgIHNvbWUgb3RoZXIgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYwNzFmMDFmZDA5ZTliZjFjZjA5ZGUzN2E3NDE2YWFjY2U3MWJhZTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBTZXAgOCAxMDowMTo0OCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgQ09ORklHX0NTODk1Ml9QSFkgZGVmaW5lCgogICAgU2luY2UgdGhpcyBkZWZpbmUgaXMgb25seSB1c2VkIG9uIG9uZSBib2FyZCB0aGF0IHdhcyBuZXZlciByZWFsbHkgaW4KICAgIHByb2R1Y3Rpb24sIHJlbW92aW5nIHRoaXMgY29tcGlsZSB0aW1lIG9wdGlvbiBkb2Vzbid0IGh1cnQgYW5kIG1ha2VzCiAgICB0aGUgY29kZSBtb3JlIHJlYWRhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2Y2E4NjQ2YzE4NjBiYmE3NDMyNmJmOTE2YTVhMzM4OWE1YzBkM2I1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDUgMTQ6MTE6NDAgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIFBJUDQwNQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nIGZvciB0aGUgUElQNDA1IGJvYXJkLiBJdCBtb3ZlcyB0aGUKICAgICNpZm5kZWYgQ09ORklHX0NTODk1Ml9QSFkgZGVmaW5lIGEgbGl0dGxlIHNvIHRoYXQgdGhlIHdhcm5pbmcgZG9lc24ndAogICAgb2NjdXIgYW55bW9yZS4gSSBhbSBhIGxpdHRsZSB1bnN1cmUgaWYgdGhpcyAjaWZkZWYgaXMgYXQgdGhlIGNvcnJlY3QKICAgIHBsYWNlIG5vdyBvciBpZiBpdCBjb3VsZCBiZSByZW1vdmVkIGNvbXBsZXRlbHkuIFRoaXMgbmVlZHMgdG8gZ2V0CiAgICB0ZXN0ZWQgb24gdGhlIFBJUDQwNSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzI1YjUzYWM2MWY0ZGYzMDI2YjhmNjQ4OWVmMDA4MGZkMjdkMzgxNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA1IDE0OjA5OjA5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBjYW55b25sYW5kcyAmIGdsYWNpZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzAyZTUyZTBiMWQ0YzdmOTk0OTkxNzA5ZDBjYjZjM2VhNjEyY2RiNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBTZXAgNSAxNDo0MDoyOSAyMDA4IC0wNTAwCgogICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gbXBjOHh4eCBkZHIgY29kZQoKICAgIGN0cmxfcmVncy5jOiBJbiBmdW5jdGlvbiAnY29tcHV0ZV9mc2xfbWVtY3RsX2NvbmZpZ19yZWdzJzoKICAgIGN0cmxfcmVncy5jOjUyMzogd2FybmluZzogJ2Nhc2xhdCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCiAgICBjdHJsX3JlZ3MuYzo1MjM6IG5vdGU6ICdjYXNsYXQnIHdhcyBkZWNsYXJlZCBoZXJlCgogICAgQWRkIGEgd2FybmluZyBpbiBERFIxIGNhc2UgaWYgY2FzX2xhdGVuY3kgaXNuJ3QgYSB2YWx1ZSB3ZSBrbm93IGFib3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkMWUyMzE5NDE0ZWE1MjE4YmE4MDExNjNlNDUzMGVjZjJkZmNiZjM2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIFNlcCAxIDIzOjA2OjIzIDIwMDggKzAyMDAKCiAgICBydGM6IGFsbG93IHJ0Y19zZXQgdG8gcmV0dXJuIGFuIGVycm9yIGFuZCB1c2UgaXQgaW4gY21kX2RhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVlOTUzNmEyOGNiMTQ5YmNiNmM1ZGVlOWQwOGM2MmM5MWY0YzcyZDIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gU2VwIDEgMDE6MTY6MzMgMjAwOCArMDIwMAoKICAgIGFwMzI1cnhhL2ZhdnItMzItZXpraXQ6IFVzZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmI5NzFjNzNmMTgyMjQ4Y2UxMDM1MDNkNzRmYmMwMTAwYmI4YzhiNwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVN1biBBdWcgMzEgMDU6Mzc6MDQgMjAwOCArMDkwMAoKICAgIGNvbmZpZy5tazogTW92ZSBhcmNoLXNwZWNpZmljIGNvbmRpdGlvbiB0byAkKEFSQ0gpX2NvbmZpZy5tawoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZWE4NmI5ZTY0YjgxMTc1M2Q5ZWFiZTBmNTYwZWUxODlmYmU1ZDBjMQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMjkgMTk6MDg6MjkgMjAwOCAtMDUwMAoKICAgIFByZXZlbnQgY3Jhc2ggaWYgcmFuZG9tL2ludmFsaWQgcmFtZGlza3MgYXJlIHBhc3NlZCB0byBib290bQoKICAgIEFkZHMgcmV0dXJuaW5nIGFuIGVycm9yIGZyb20gdGhlIHJhbWRpc2sgZGV0ZWN0aW9uIGNvZGUgaWYKICAgIGl0cyBub3QgYSByZWFsIHJhbWRpc2sgKGludmFsaWQpLiAgVGhlcmUgaXMgbm8gcmVhc29uIHdlIGNhbid0CiAgICBqdXN0IHJldHVybiBiYWNrIHRvIHRoZSBjb25zb2xlIGlmIHdlIGRldGVjdCBhbiBpbnZhbGlkCiAgICByYW1kaXNrIG9yIENSQyBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhlMDI0OTRlOGY4NmM4ZjJkNzMyNGI1ZWI5ZTc1MjcxMTA0YTAxZWYKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjkgMjE6MDQ6NDUgMjAwOCArMDIwMAoKICAgIFByZXZlbnQgY3Jhc2ggaWYgcmFuZG9tIERUQiBhZGRyZXNzIGlzIHBhc3NlZCB0byBib290bQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBib290bV9zdGFydCgpIHJldHVybiB2YWx1ZSBjaGVjay4gSWYKICAgIGVycm9yIHN0YXR1cyBpcyByZXR1cm5lZCwgd2UgZG8gbm90IHByb2NlZWQgZnVydGhlciB0bwogICAgcHJldmVudCBib2FyZCByZXNldCBvciBjcmFzaCBhcyB3ZSBzdGlsbCBjYW4gcmVjb3ZlcgogICAgYXQgdGhpcyBwb2ludC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgY2MzNDc4MDFhZGQyNjg5YjFlZTU0ZDIxZjYyYmMxNGVjZjZlMWRkOApBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAxMjozMDozOSAyMDA4IC0wNTAwCgogICAgY2xlYW4gdXAgc29tZSAjaWYgIWRlZmluZWQoKSBpbiBkcml2ZXJzL3ZpZGVvL2NmYl9jb25zb2xlLmMKCiAgICByZWFycmFuZ2Ugc29tZSAjaWYgIWRlZmluZWQoKSAvICNlbHNlIC8gI2VuZGlmIHN0YXRlbWVudHMgdG8gcmVtb3ZlCiAgICB0aGUgbmVnYXRpdmUgbG9naWMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgoKY29tbWl0IGM4M2Y0YzJkNzdmMDcxNzRkY2Q2YmVmN2U4N2EwZjcwMTdiZTdjMzMKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJRnJpIEF1ZyAyOSAwOTowMjoyMCAyMDA4ICswOTAwCgogICAgYXBvbGxvbjogdXNlIHRoZSBsYXN0IG1lbW9yeSBhcmVhIGZvciB1LWJvb3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IGE2ZjJlNDU1Yjc3NGQwYzVkNTZlNDRlNTY2MWRmOWFkYjY5YjZlMDcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyOCAxMzo1MDo0MiAyMDA4ICswMjAwCgogICAgVFFNODI3MjogbW92ZSBOQU5EIHBhcnQgaW4gc2VwZXJhdGUgRmlsZQoKICAgIEkgZGlkbid0IHRyeSB0byB1c2UgZHJpdmVycy9tdGQvbmFuZC9mc2xfdXBtLmMgZm9yIHRoZSBOQU5EIGRyaXZlciwKICAgIGJlY2F1c2UgSSBoYXZlIG5vIGxvbmdlciBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDU4NGY5NzlmN2VlOTE0ZTMyZDQwODczOWNiZGQyYzQ0NTdlYzE4YjgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyOCAxMzo0ODozNiAyMDA4ICswMjAwCgogICAgVFFNODI3MjogRml4IGNvbXBpbGluZyBlcnJvciBmb3IgdGhlIFRRTTgyNzIgYm9hcmQuCgogICAgRml4IGNvbXBpbGUgcHJvYmxlbXMgY2F1c2VkIGJ5CiAgICBjb21taXQgIGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAxYTdmOGNjZWM5ODE2NDhjY2QzOGZjYTI1MzU0OTA1ODJlZWUwOGU2CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVdlZCBBdWcgMjcgMTQ6NDU6MjAgMjAwOCArMDkwMAoKICAgIEFkZCBKRkZTMiBjb21tYW5kIHN1cHBvcnQgb24gT25lTkFORAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgZjVjM2JhNzk3ODhiMGUzOWJhYWI3MDI2ZDM3NGZlMzc1ZGQxYTQzZgpBdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgpEYXRlOglNb24gQXVnIDI1IDE5OjIxOjMwIDIwMDggKzAxMDAKCiAgICBBbGxvdyBjb25zb2xlIGlucHV0IHRvIGJlIGRpc2FibGVkCgogICAgQWRkZWQgbmV3IENPTkZJR19ESVNBQkxFX0NPTlNPTEUgZGVmaW5lIGFuZCBHRF9GTEdfRElTQUJMRV9DT05TT0xFLgoKICAgIFdoZW4gQ09ORklHX0RJU0FCTEVfQ09OU09MRSBpcyBkZWZpbmVkLCBzZXR0aW5nCiAgICBHRF9GTEdfRElTQUJMRV9DT05TT0xFIGRpc2FibGVzIGFsbCBjb25zb2xlIGlucHV0IGFuZCBvdXRwdXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMmIyMmQ2MDhmMzcwNTY1Yzg3ZjU1OTI4YjUyNDIwNzAzMTQxOWMxMQpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgSnVsIDMwIDEyOjM5OjI5IDIwMDggKzAyMDAKCiAgICBsb2FkczogYWxsb3cgbmVnYXRpdmUgb2Zmc2V0cwoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgoKY29tbWl0IGU5MGZiNmFmYWIyYzBjMDc0ZGZiNjdiYWNiNGRlMTc5ZWIxODhhMjQKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBTZXAgNCAxMToxOTowNSAyMDA4ICswMjAwCgogICAgVVNCIEVIQ0k6IHJlc2V0IHJvb3QgaHViCgogICAgU29tZSBvZiBtdWx0aS1mdW5jdGlvbiBVU0IgY29udHJvbGxlcnMgKGUuZy4gSVNQMTU2MikgYWxsb3cgcm9vdCBodWIKICAgIHJlc2V0dGluZyBvbmx5IHZpYSBFSENJIHJlZ2lzdGVycy4gU28sIHRoaXMgcGF0Y2ggYWRkcyB0aGUKICAgIGNvcnJlc3BvbmRpbmcga2luZCBvZiByZXNldCB0byBPSENJJ3MgaGNfcmVzZXQoKSBpZiB0aGUgbmV3bHkKICAgIGludHJvZHVjZWQgQ09ORklHX1BDSV9FSENJX0RFVk5PIG9wdGlvbiBpcyBzZXQgKGUuZy4gZm9yIFNvY3JhdGVzCiAgICBib2FyZCkuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgogICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgNTg3NWQzNThmMDI1YzFiMDQyZDhhMGYwODM4NGI3NTZkZTcyNTZjOQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjowOSAyMDA4ICswMjAwCgogICAgUlggODAyNSBSVEM6IGFuYWx5emUgMTIvMjQtaG91ciBtb2RlIGZsYWcgaW4gcnRjX2dldCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzZTNjMDI2ZWQ3NDZhMjg0YzZmMGVmMTM5YjI2ZDg1OTkzOWRlN2U5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgU2VwIDUgMTA6NDc6NDYgMjAwOCArMDIwMAoKICAgIGRldmljZXM6IFVzZSBsaXN0X2FkZF90YWlsKCkgaW5zdGVhZCBvZiBsaXN0X2FkZCgpIHRvIHJlZ2lzdGVyIGEgZGV2aWNlCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gc3BvdHRlZCBvbiBHbGFjaWVyL0NhbnlvbmxhbmRzIChhbmQgbW9zdAogICAgbGlrZWx5IGxvdHMgb2Ygb3RoZXIgYm9hcmQgcG9ydHMpLCB0aGF0IG5vIHNlcmlhbCBvdXRwdXQgd2FzIHNlZW4KICAgIGFmdGVyIGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gaW4gY29uc29sZV9pbml0X3IoKS4gVGhpcyBpcyBiZWNhdXNlIHRoZQogICAgbGFzdCBhZGRlZCBjb25zb2xlIGRldmljZSB3YXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBhZGRlZC4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgcHJvYmxlbSBieSB1c2luZyBsaXN0X2FkZF90YWlsKCkgaW5zdGVhZCBvZgogICAgbGlzdF9hZGQoKSB0byByZWdpc3RlciBhIGRldmljZS4gVGhpcyB3YXkgdGhlIGZpcnN0IGFkZGVkIGNvbnNvbGUKICAgIGlzIHVzZWQgYWdhaW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc4ZDc4MjM2ODk2ZDYyYmI4Y2E3MzAyYWYzOGQ4ZjE0OTNlYjI2NTEKQXV0aG9yOiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KRGF0ZToJVGh1IFNlcCA0IDIzOjQ5OjM2IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciBHUENTLCBTR01JSSBhbmQgTTg4RTExMTIgUEhZCgogICAgVGhpcyBwYXRjaCBhZGRzIEdQQ1MsIFNHTUlJIGFuZCBNODhFMTExMiBQSFkgc3VwcG9ydAogICAgZm9yIHRoZSBBTUNDIFBQQzQ2MEdUL0VYIHByb2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjZiNmM0NTg0MGY5YjQ2NzFkMmQ5NzI0M2ExMmExZjNmZmI2NDc2NQpBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglXZWQgU2VwIDMgMTI6MjY6NTkgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogVXBkYXRlIEtpbGF1ZWEgdG8gdXNlIFBQQzR4eCBERFIgYXV0b2NhbGlicmF0aW9uIHJvdXRpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDc1ZDBiODFlODk2ZTg3MzVhZTI2MzcyY2QzODRmODdjYmQyNGU0MQpBdXRob3I6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgpEYXRlOglXZWQgU2VwIDMgMTI6MjY6MjggMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogSUJNIE1lbW9yeSBDb250cm9sbGVyIEREUiBhdXRvY2FsaWJyYXRpb24gcm91dGluZXMKCiAgICBBbHRlcm5hdGUgU0RSQU0gRERSIGF1dG9jYWxpYnJhdGlvbiByb3V0aW5lIHRoYXQgY2FuIGJlIGdlbmVyaWNhbGx5IHVzZWQKICAgIGZvciBhbnkgUFBDNHh4IGNoaXBzIHRoYXQgaGF2ZSB0aGUgSUJNIFNEUkFNIENvbnRyb2xsZXIgY29yZSBhbGxvd2luZyBmb3IKICAgIHN1cHBvcnQgb2YgbW9yZSBESU1NL21lbW9yeSBjaGlwIHZlbmRvcnMgYW5kIGdldHMgdGhlIEREUiBhdXRvY2FsaWJyYXRpb24KICAgIHZhbHVlcyB3aGljaCBnaXZlIHRoZSBiZXN0IHJlYWQgbGF0ZW5jeSBwZXJmb3JtYW5jZSAoU0RSQU0wX1JEQ0MuW1JEU1NdKS4KCiAgICBUd28gYWx0ZXJuYXRlIFNEUkFNIEREUiBhdXRvY2FsaWJyYXRpb24gYWxnb3JpdG0gYXJlIHByb3ZpZGVkIGluIHRoaXMgcGF0Y2gsCiAgICAiTWV0aG9kX0EiIGFuZCAiTWV0aG9kX0IiLglERFIgYXV0b2NhbGlicmF0aW9uIE1ldGhvZF9BIHNjYW5zIHRoZSBmdWxsIHJhbmdlCiAgICBvZiBwb3NzaWJsZSBQUEM0eHgJU0RSQU0gQ29udHJvbGxlciBERFIgYXV0b2NhbGlicmF0aW9uIHZhbHVlcyBhbmQgdGFrZXMgYQogICAgbG90IGxvbmdlciB0byBydW4gdGhhbiBNZXRob2RfQi4gIE1ldGhvZF9CIGV4ZWN1dGVzIGluIHRoZSBzYW1lIGFtb3VudCBvZiB0aW1lCiAgICBhcyB0aGUgY3VycmVudGx5IGV4aXN0aW5nIEREUiBhdXRvY2FsaWJyYXRpb24gcm91dGluZSwgaS5lLiAxIHNlY29uZCBvciBzby4KICAgIE5vcm1hbGx5IE1ldGhvZF9CIGlzIHVzZWQgYW5kIGl0IGlzIHNldCBhcyB0aGUgZGVmYXVsdCBtZXRob2QuCgogICAgVGhlIGN1cnJlbnQgVS1Cb290IFBQQzR4eCBERFIgYXV0b2NhbGlicmF0aW9uIGNvZGUgY2FsaWJyYXRlcyB0aGUgSUJNIFNEUkFNCiAgICBDb250cm9sbGVyIHJlZ2lzdGVycy5bYml0LWZpZWxkXToKICAgIDEpCVNEUkFNMF9SUURDLltSUUZEXQogICAgMikJU0RSQU0wX1JGREMuW1JGRkRdCgogICAgVGhpcyBhbHRlcm5hdGUgUFBDNHh4IEREUiBhdXRvY2FsaWJyYXRpb24gY29kZSBjYWxpYnJhdGVzIHRoZSBmb2xsb3dpbmcKICAgIElCTSBTRFJBTSBDb250cm9sbGVyIHJlZ2lzdGVycy5bYml0LWZpZWxkXToKCiAgICAxKQlTRFJBTTBfV1JEVFIuW1dEVFJdCiAgICAyKQlTRFJBTTBfQ0xLVFIuW0NLVFJdCiAgICAzKQlTRFJBTTBfUlFEQy5bUlFGRF0KICAgIDQpCVNEUkFNMF9SRkRDLltSRkZEXQoKICAgIGFuZCB3aWxsIGFsc28gdXNlIHRoZSBjYWxpYnJhdGVkIHNldHRpbmdzIG9mIHRoZSBhYm92ZSBmb3VyIHJlZ2lzdGVycyB0aGF0CiAgICBwcm9kdWNlIHRoZSBiZXN0ICJSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QiIHZhbHVlIGluIHRoZSBTRFJBTTBfUkRDQy5bUkRTU10KICAgIHJlZ2lzdGVyLltiaXQtZmllbGRdLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUwN2Y0YTgwMzNiNjI3MGI4MTAzMDQ5YWRiNjQ1NmY2NjBmZjRhODkKQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KRGF0ZToJTW9uIFNlcCAxIDEzOjA5OjM5IDIwMDggLTA0MDAKCiAgICBwcGM0NHg6IFVuaWZpY2F0aW9uIG9mIHZpcnRleDUgcHA0NDAgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBwcm92aWRlcyBhbiB1bmlmaWNhdGVkIHdheSBvZiBoYW5kbGluZyB4aWxpbnggdjUgcHBjNDQwIGJvYXJkcy4KCiAgICBJdCB1bmlmaWNhdGVzIDMgZGlmZmVyZW50IHRoaW5nczoKCiAgICAxKSBTb3VyY2UgY29kZQogICAgQSBuZXcgYm9hcmQgY2FsbGVkIHBwYzQ0MC1nZW5lcmljIGhhcyBiZWVuIGNyZWF0ZWQuIFRoaXMgYm9hcmQgaW5jbHVkZXMKICAgIGEgZ2VuZXJpYyB0bGIgaW5pdGlhbGl6YXRpb24gKE1hcHMgdGhlIHdob2xlIG1lbW9yeSBpbnRvIHZpcnR1YWwpIGFuZAogICAgZGVmaW5lcyBib2FyZF9wcmVfaW5pdCwgY2hlY2tib2FyZCwgaW5pdGRyYW0gYW5kIGdldF9zeXNfaW5mbyB3ZWFrbHksCiAgICBzbywgdGhleSBjYW4gYmUgcmVwbGFjZWQgYnkgc3BlY2lmaWMgZnVuY3Rpb25zLgoKICAgIElmIGEgbmV3IGJvYXJkIG5lZWRzIHRvIHJlZGVmaW5lIGFueSBvZiB0aGUgcHJldmlvdXMgZnVuY3Rpb25zCiAgICAoc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24pIGl0IGNhbiBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlCiAgICBzcGVjaWZpYyBpbml0aWFsaXphdGlvbnMgbmVlZGVkLiAoc2VlIHRoZSBleGFtcGxlIG1sNTA3IGJvYXJkKS4KCiAgICAyKSBDb25maWd1cmF0aW9uIGZpbGUKICAgIENvbW1vbiBjb25maWd1cmF0aW9ucyBhcmUgbG9jYXRlZCB1bmRlciBjb25maWdzL3hpbGlueC1wcGM0NDAuaCwgdGhpcwogICAgaGVhZGVyIGZpbGUgaW50ZXJwcmV0ZXMgdGhlIHhwYXJhbWV0ZXJzIGZpbGUgZ2VuZXJhdGVkIGJ5IEVESyBhbmQKICAgIGNvbmZpZ3VyYXRlcyB1LWJvb3QgaW4gY29ycmVzcG9uZGVuY2UuIEV4YW1wbGU6IGlmIHRoZXJlIGlzIGEgVGVtYWMsCiAgICBhbGxvd3MgQ01EX0NPTkZJR19ORVQKICAgIFNwZWNpZmljIGNvbmZpZ3VyYXRpb24gYXJlIGxvY2F0ZWQgdW5kZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlLgogICAgKHNlZSB0aGUgZXhhbXBsZSBtbDUwNyBib2FyZCkKCiAgICAzKSBNYWtlZmlsZQogICAgU29tZSB3b3JrIGhhcyBiZWVuIGRvbmUgaW4gb3JkZXIgdG8gbm90IGR1cGxpY2F0ZSB3b3JrIGluIHRoZSBNYWluCiAgICBNYWtlZmlsZS4gUGxlYXNlIHNlZSB0aGUgYXR0YWNoZWQgY29kZS4KCiAgICBJbiBvcmRlciB0byBzdXBwb3J0IG5ldyBib2FyZHMgdGhleSBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIG5leHQgd2F5OgoKICAgIGEpIFNpbXBsZSBHZW5lcmljIEJvYXJkICAoOTAlIG9mIHRoZSB0aW1lKQogICAgVXNpbmcgRURLIGdlbmVyYXRlcyBhIG5ldyB4cGFyYW1ldGVycy5oIGZpbGUsIHJlcGxhY2UKICAgIHBwYzQ0MC1nZW5lcmljL3hwYXJhbWV0ZXJzLmggIGFuZCBydW4gbWFrZSB4aWxpbngtcHBjNDQwLWdlbmVyaWNfY29uZmlnCiAgICAmJiBtYWtlCgogICAgYikgU2ltcGxlIEJvYXJkcyB3aXRoIHNwZWNpYWwgdS1ib290IHBhcmFtZXRlcnMgKDkgJSBvZiB0aGUgdGltZSkKICAgIENyZWF0ZSBhIG5ldyBmaWxlIHVuZGVyIGNvbmZpZ3MgZm9yIGl0ICh1c2UgbWw1MDcuaCBhcyBleGFtcGxlKSBhbmQKICAgIGNoYW5nZSB5b3VyIHBhcmFtYXRlcnMuIENyZWF0ZSBhIG5ldyBNYWtlZmlsZSBwYXJhZ3JhcGggYW5kIGNvbXBpbGUKCiAgICBjKSBDb21wbGV4IGJvYXJkcyAoMSUgb2YgdGhlIHRpbWUpCiAgICBDcmVhdGUgYSBuZXcgZm9sZGVyIGZvciB0aGUgYm9hcmQsIGxpa2UgdGhlIG1sNTA3CgogICAgRmluYWxseSwgaXQgYWRkcyBzdXBwb3J0IGZvciB0aGUgQXZuZXQgRlgzMFQgRXZhbHVhdGlvbiBib2FyZCwgZm9sbG93aW5nCiAgICB0aGUgbmV3IGdlbmVyaWMgc3RydWN0dXJlOgoKICAgIENoZWFwIGJvYXJkIGJ5IEF2bmV0IGZvciBldmFsdWF0aW5nIHRoZSBWaXJ0ZXg1IEZYIHRlY2hub2xvZ3kuCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgogICAgIC0gVWFydExpdGUKICAgICAtIDE2TUIgRmxhc2gKICAgICAtIDY0TUIgUkFNCgogICAgUHJpb3IgdXNpbmcgVS1ib290IGluIHRoaXMgYm9hcmQsIHJlYWQgY2FyZWZ1bGx5IHRoZSBFUlJBVEEgYnkgQXZuZXQKICAgIHRvIHNvbHZlIHNvbWUgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2NGFjMWViNWFmYWZjZWQ0OWIzMjc0MjVhZDE4MTRiMmRjNDIyZDZlCkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMiAxNToyMToxNiAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogZml4IG1wYzgzMTMgaW4tdHJlZSBidWlsZGluZyB3aXRoIE5BTkQKCiAgICBhbmQgYWRkIG1wYzgzMTMgTkFORCBidWlsZCB0byBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZlYjJhNDRlMjc5MTlmZGM2MDFlMGMwNTQwNGIyOThhNzYwMmMwZTMKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxNDowOToyNSAyMDA4IC0wNzAwCgogICAgbXBjODN4eDogY2xlYW4gdXAgY2FjaGUgb3BlcmF0aW9ucyBhbmQgdW5sb2NrX3JhbV9pbl9jYWNoZSgpIGZ1bmN0aW9ucwoKICAgIENsZWFucyB1cCBzb21lIGxhdGVudCBpc3N1ZXMgd2l0aCB0aGUgZGF0YSBjYWNoZSBjb250cm9sIHNvIHRoYXQKICAgIGRjYWNoZV9lbmFibGUoKSBhbmQgZGNhY2hlX2Rpc2FibGUoKSB3aWxsIHdvcmsgcmVsaWFibHkgKGFmdGVyCiAgICB1bmxvY2tfcmFtX2luX2NhY2hlKCkgaGFzIGJlZW4gY2FsbGVkKQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NjQ5NzA1NmFlM2IxZTgxZTczNmU5Y2YzYTE3MDQ3MmM1ZDk3MTlmCkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMjggMTQ6MDk6MTkgMjAwOCAtMDcwMAoKICAgIG1wYzgzeHg6IFN0b3JlIGFuZCBkaXNwbGF5IEFyYml0ZXIgRXZlbnQgUmVnaXN0ZXIgdmFsdWVzCgogICAgUmVjb3JkIHRoZSBBcmJpdGVyIEV2ZW50IFJlZ2lzdGVyIHZhbHVlcyBhbmQgb3B0aW9uYWxseSBkaXNwbGF5IHRoZW0uCgogICAgVGhlIEFyYml0ZXIgRXZlbnQgUmVnaXN0ZXIgY2FuIHJlY29yZCB0aGUgdHlwZSBhbmQgZWZmZWN0aXZlIGFkZHJlc3Mgb2YKICAgIGFuIGFyYml0ZXIgZXJyb3IsIGV2ZW4gdGhyb3VnaCBhbiBIUkVTRVQuIFRoaXMgcGF0Y2ggc3RvcmVzIHRoZSB2YWx1ZXMgaW4KICAgIHRoZSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUuCgogICAgRGlzcGxheSBvZiB0aGUgQXJiaXRlciBFdmVudCByZWdpc3RlcnMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIFJTUiB2YWx1ZQogICAgY2FuIGJlIGVuYWJsZWQgd2l0aCBkZWZpbmVzLiBUaGUgQXJiaXRlciB2YWx1ZXMgd2lsbCBvbmx5IGJlIGRpc3BsYXllZAogICAgaWYgYW4gYXJiaXRlciBldmVudCBoYXMgb2NjdXJlZCBzaW5jZSB0aGUgbGFzdCBQb3dlciBPbiBSZXNldCwgYW5kIGVpdGhlcgogICAgb2YgdGhlIGZvbGxvd2luZyBkZWZpbmVzIGV4aXN0OgogICAgICNkZWZpbmUgQ09ORklHX0RJU1BMQVlfQUVSX0JSSUVGIC0gZGlzcGxheSBvbmx5IHRoZSBhcmJpdGVyIGFkZHJlc3MgYW5kCgkJCQkJYW5kIHR5cGUgcmVnaXN0ZXIgdmFsdWVzCiAgICAgI2RlZmluZSBDT05GSUdfRElTUExBWV9BRVJfRlVMTCAgLSBkaXNwbGF5IGFuZCBpbnRlcnByZXQgdGhlIGFyYml0ZXIKCQkJCQlldmVudCByZWdpc3RlciB2YWx1ZXMKCiAgICBBZGRyZXNzIE9ubHkgdHJhbnNhY3Rpb25zIGFyZSBvbmUgb2YgdGhlIHRyYXBwZWQgZXZlbnRzIHRoYXQgY2FuIHJlZ2lzdGVyCiAgICBhcyBhbiBhcmJpdGVyIGV2ZW50LiBUaGV5IG9jY3VyIHdpdGggc29tZSBjYWNoZSBtYW5pcHVsYXRpb24gaW5zdHJ1Y3Rpb25zCiAgICBpZiB0aGUgSElEMF9BQkUgKEFkZHJlc3MgQnJvYWRjYXN0IEVuYWJsZSkgaXMgc2V0IGFuZCB0aGUgbWVtb3J5IHJlZ2lvbgogICAgaGFzIHRoZSBNRU1PUllfQ09IRVJFTkNFIFdJTUcgYml0IHNldC4gU2V0dGluZzoKICAgICAjZGVmaW5lIENPTkZJR19NQVNLX0FFUl9BTyAtIHByZXZlbnRzIHRoZSBhcmJpdGVyIGZyb20gcmVjb3JkaW5nIGFkZHJlc3MKCQkJCSAgb25seSBldmVudHMsIHNvIHRoYXQgaXQgY2FuIHN0aWxsIGNhcHR1cmUKCQkJCSAgb3RoZXIgcmVhbCBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWRlNTBjN2ZhMWIxNmVmOThiZTE3ZTljM2FlMjg2YWVjZjRmNTYwNQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE0OjA5OjExIDIwMDggLTA3MDAKCiAgICBtcGM4M3h4OiB1c2UgcjQgaW5zdGVhZCBvZiByMiBpbiBsb2NrX3JhbV9pbl9jYWNoZSBhbmQgdW5sb2NrX3JhbV9pbl9jYWNoZQoKICAgIFRoaXMgaXMgbmVlZGVkIGluIHVubG9ja19yYW1faW5fY2FjaGUoKSBiZWNhdXNlIGl0IGlzIGNhbGxlZCBmcm9tIEMgYW5kCiAgICB3aWxsIGNvcnJ1cHQgdGhlIHNtYWxsIGRhdGEgYXJlYSBhbmNob3IgdGhhdCBpcyBrZXB0IGluIFIyLgoKICAgIGxvY2tfcmFtX2luX2NhY2hlKCkgaXMgbW9kaWZpZWQgc2ltaWxhcmx5IGFzIGdvb2QgY29kaW5nIHByYWN0aWNlLCBidXQKICAgIGlzIG5vdCBjYWxsZWQgZnJvbSBDLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkOWZlODgxNzNjYjRmN2QyOTM3OTZmZmUxMGM3YTBkM2Q0MjZkOGY5CkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMjIgMjM6NTI6NTAgMjAwOCAtMDcwMAoKICAgIE1QQzgzWFg6IEZpeCBHUElPIGNvbmZpZ3VyYXRpb24gLSBzZXQgZ3BpbyBsZXZlbCBiZWZvcmUgZGlyZWN0aW9uCgogICAgU2V0IERBVCB2YWx1ZSBiZWZvcmUgRElSIHZhbHVlcyB0byBhdm9pZCBjcmVhdGluZyBnbGl0Y2hlcyBvbiB0aGUKICAgIEdQSU8gc2lnbmFscy4KCiAgICBTZXQgZ3BpbyBsZXZlbCByZWdpc3RlciBiZWZvcmUgZGlyZWN0aW9uIHJlZ2lzdGVyIHRvIGluaGliaXQKICAgIGdsaXRjaGVzIG9uIGhpZ2ggbGV2ZWwgb3V0cHV0IHBpbnMuCgogICAgRGlyIGFuZCBkYXRhIGdldHMgY2xlYXJlZCBhdCBwb3dlcnVwLCBzbyBoaWdoIGxldmVsIG91dHB1dCBsaW5lcyBzZWUKICAgIGEgc2hvcnQgbG93IHB1bHNlIGJldHdlZW4gc2V0dGluZyB0aGUgZGlyZWN0aW9uIGFuZCBsZXZlbCByZWdpc3RlcnMuCgogICAgSXNzdWUgd2FzIHNlZW4gb24gYSBuZXcgYm9hcmQgd2l0aCB0aGUgblJlc2V0IGxpbmUgb2YgdGhlIE5PUiBmbGFzaAogICAgY29ubmVjdGVkIHRvIGEgR1BJTy4gU2V0dGluZyB0aGUgZGlyZWN0aW9uIHJlZ2lzdGVyIHB1dHMgdGhlIE5PUiBmbGFzaAogICAgaW4gcmVzZXQgc28gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gdG8gc2V0IHRoZSBsZXZlbCBjYW5ub3QgZ2V0IGV4ZWN1dGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzAwN2M1OTc1ZWU5MDBhZDcwOTgzYjA2ODFkMzI1MWUyMjFmODMyMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBTZXAgMiAwMjo1ODozMiAyMDA4ICswMjAwCgogICAgZG9jL3FlbXVfbWlwczogYWRkIGRvYyBob3d0byBkZWJ1ZyB1LWJvb3Qgd2l0aCBnZGIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDdkZWIzYjNlY2QwZTgxZWYwOWJiNjhhYTBlYzIzNDZmNGFlMGE0MDUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIFNlcCAzIDE3OjE1OjQ1IDIwMDggKzAyMDAKCiAgICBwcHg0eHg6IEZpeCBicm9rZW4gREFTQV9TSU0gYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgaW5pdGRyYW0oKSB0byBEQVNBX1NJTSBib2FyZHMgdGhhdCBoYXMgYmVlbgogICAgcmVtb3ZlZCBhY2NpZGVudGFsbHkgYnkgYSBwcmV2aW91cyBjb21taXQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2U0MTBhYTMwZmJjYjFkMTlhMjZiYmYxZTg0YTljYTYxMDJkNTM0YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxIDA4OjM1OjM3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSByZWZlcmVuY2UgdG8gY29tbW9uL2xpc3RzLm8gZnJvbSBzb21lIGVzZCBsaW5rZXIgc2NyaXB0cwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGRpcmVjdCByZWZlcmVuY2VzIHRvIGNvbW1vbi9saXN0cy5vIGZyb20gc29tZQogICAgZXNkIGxpbmtlciBzY3JpcHRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBsaXN0cyBzb3VyY2Ugd2FzIG1vdmVkCiAgICBhbmQgaXMgbm90IGluIHRoZSAiY29tbW9uIiBkaXJlY3RvcnkgYW55bW9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTdiMDczNGQ2NWY4YTBiMDNkZjBhMzM1YTJhZGRjNzU5ZGE1NjEwNwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTY6MzM6MDUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIG9ic29sZXRlIG9yIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBzb21lIGVzZCBib2FyZHMKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgaW5pdGRyYW0oKSBhbmQgdGVzdGRyYW0oKSBmcm9tIG1vc3QgZXNkIDQwNSBwbGF0Zm9ybXMuCiAgICBTb21lIGJvYXJkcyBhbHNvIGhhdmUgYW4gZW1wdHkgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YKICAgIG1pc2NfaW5pdF9mKCkuIFRoaXMgaXMgYWxzbyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwOTJjZTIxOGM1MTRlNWNjYjE4NDUwYWM1YWY1MDFkOTZkNmUzZTkKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDE1OjA3OjU0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBWT000MDUgYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIC0gcmVtb3ZlIFBDSSBjb2RlCiAgICAtIGFkZCBjb21tYW5kIGxpbmUgZWRpdGluZwogICAgLSBtaW5vciBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODMwYzgwMGUyOGU5NmVjN2MzYzY5MzZhMGJkMWI5NDYxZjNlNzdkNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTU6MDc6NTMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIG9ic29sZXRlIGluaXRkcmFtKCkgZnVuY3Rpb24gZnJvbSBWT000MDUgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHJlbW92ZWQgdGhlIG9ic29sZXRlIGluaXRkcmFtKCkgZnVuY3Rpb24gZnJvbQogICAgVk9NNDA1IHBsYXRmb3JtIGZpbGUuCgogICAgU29tZSBtaW5vciBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNkNGRkN2E5NDFiMjMyN2I4YzJmYzUzNWI3ODJjYTMwN2ZmOGI2YzgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDE1OjA3OjUyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgVk9NNDA1IGxpbmtlciBzY3JpcHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmY2FmZmQ1OTdmNmY1MTkxYjEyY2E2NmMyYTQ3ODliYmRlZWE4NWMyCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KRGF0ZToJVHVlIFNlcCAyIDE1OjA3OjUxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBmZHQgc3VwcG9ydCBmb3IgVk9NNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWVjMzY3YWEyYzVkY2Y3OTU1OGFhMmIyMDliNDVkNzY4NjY1NGMxNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTE6MzY6MTQgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBXcmFwIGxvbmcgbGluZXMgZXRjLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE3ZTY1YzIxYWRmYjYzOTgwZTZhZmY4MGJmYmQyZGYwZWViMTIwNjAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIFNlcCAyIDExOjM1OjU2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBVU0Igb24gUExVNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgUENJLU9IQ0kgY29udHJvbGxlciBvbiBQTFU0MDUgYm9hcmQuCgogICAgQWxzbyB0aGUgZGVmYXVsdCBDUFUgZnJlcXVlbmN5IGlzIHVwZGF0ZWQgdG8gMjY2IE1IeiBhbmQKICAgIGNvbW1hbmQgbGluZSBlZGl0aW5nIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDBlNDNlM2I4N2Q1N2IyYWM3ODZlMjdmNmUyNWE3ZGY5OTQwZDkzYgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTE6MzU6MzUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBQTFU0MDUgcGxhdGZvcm0gZmlsZQoKICAgIFRoaXMgcGF0Y2gKICAgIC0gd3JhcHMgc29tZSBsb25nIGxpbmVzCiAgICAtIHJlbW92ZXMgdW51c2VkL29ic29sZXRlIGZ1bmN0aW9uczogbWlzY19pbml0X2YoKSBhbmQgaW5pdGRyYW0oKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDc0Y2RiMWQwNjE0YWI3ODEyOGUwNzM1YTUxZTc5ODhhN2I3ZWEzMwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTE6MzU6MDQgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBQTFU0MDUgbGlua2VyIHNjcmlwdAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2JjMTA1NGNlYzJmNmIyNTgyMmYzMDFlYTkyMmExNjIzM2JhYTRjNwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgU2VwIDIgMTE6MzQ6MzYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IGZvciBQTFU0MDUgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1YTNlNDgwYjc4M2JmYmMxMzk1ODYyOTNhNTRmYjg3NWQ3YzVjNWQ0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMiAxMTozNDowOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBJbmNyZWFzZSBVLUJvb3Qgc2l6ZSB0byAzODRrQiBmb3IgUExVNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYmUxYjBkMjc3N2UxNzkxOTFhNTdiMTM4YjY2MDU0N2ExN2U1NWFhZApBdXRob3I6IEpvY2hlbiBGcmllZHJpY2ggPGpvY2hlbkBzY3JhbS5kZT4KRGF0ZToJVHVlIFNlcCAyIDExOjI0OjU5IDIwMDggKzAyMDAKCiAgICBEb24ndCB0ZnRwIHRvIHVua25vd24gZmxhc2gKCiAgICBJZiBhIGJvYXJkIGhhcyBhIHZhcmlhYmxlIG51bWJlciBvZiBmbGFzaCBiYW5rcywgdGhlcmUgYXJlIGVtcHR5IGVudHJpZXMKICAgIGluIGZsYXNoX2luZm9bXSBhbmQgQ0ZHX0RJUkVDVF9GTEFTSF9URlRQIGlzIHNldCwgdGZ0cCBib290IGZhaWxzIHdpdGgKICAgICJPdXRzaWRlIGF2YWlsYWJsZSBGbGFzaCIuIFRoaXMgcGF0Y2ggc2tpcHMgZmxhc2ggYmFua3Mgd2l0aCB1bmtub3duCiAgICBmbGFzaCBpZHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9jaGVuIEZyaWVkcmljaCA8am9jaGVuQHNjcmFtLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzMzMxNDQ3MGFiMzJhM2Y1NDEyYmI2MWI1ZjNkNmMyMTZjODhiZjliCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEzOjQwOjQ0IDIwMDggKzA5MDAKCiAgICBuZXQ6IHNtYzkxMXg6IEFkZCBwa3RfZGF0YV9wdWxsIGFuZCBwa3RfZGF0YV9wdXNoIGZ1bmN0aW9uCgogICAgVGhlIFJTSzcyMDMgYm9hcmQgaGFzIHRoZSBTTVNDOTExOCB3aXJlZCB1cCAnaW5jb3JyZWN0bHknLgogICAgQnl0ZS1zd2FwcGluZyBpcyBuZWNlc3NhcnksIGFuZCBzbyBwb29yIHBlcmZvcm1hbmNlIGlzIGluZXZpdGFibGUuCiAgICBUaGlzIHByb2JsZW0gY2Fubm90IGV2YWRlIGJ5IHRoZSBzd2FwIGZ1bmN0aW9uIG9mIENISVAsIHRoaXMgY2FuCiAgICBldmFkZSBieSBzb2Z0d2FyZSBCeXRlLXN3YXBwaW5nLgogICAgQW5kIHRoaXMgaGFzIHByb2JsZW0gYnkgRklGTyBhY2Nlc3Mgb25seS4gcGt0X2RhdGFfcHVsbC9wa3RfZGF0YV9wdXNoCiAgICBmdW5jdGlvbnMgbmVjZXNzYXJ5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDEwZWZhMDI0YjhmZmQ5ZTZhYWNhNjNkYThiZGRmZGZmZGM2NzIyNzQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDIwOjM3OjAwIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBFRVBSTzEwMCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CglkYjY0MzYwCglkYjY0NDYwCglrYXRtYWkKCXRhaWh1Cgl0YWlzaGFuCgl5dWNjYQoJY3BjNDUKCWNwdTg3CgllWGFsaW9uCgllbHBwYwoJZGVicmlzCglrdm1lMDgwCgltcGM4MzE1ZXJkYgoJaW50ZWdyYXRvcmFwCglpeGRwNDI1CglveGMKCXBtODI2CglwbTgyOAoJcG04NTQKCXBtODU2CglwcG1jN3h4CglzYzMKCXNjNTIwX3NwdW5rCglzb3JjZXJ5Cgl0cW04MjcyCgl0cW04NXh4Cgl1dHg4MjQ1CgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCiAgICBBbHNvLCB3cmFwcGVkIGNvbnRlbnRzIG9mIHBjaV9ldGhfaW5pdCgpIGJ5IENPTkZJR19QQ0kuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Y2EwYjNmOTljNGZjZTdhNTk5ZGNhZjkyYWUwOTU0OTZkYzhjOGUwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxMDo0NTo0NCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgVFVMSVAgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJY3U4MjQKCWJhYjd4eAoJYWRjaW9wCglkYXNhX3NpbQoJbW91c3NlCgltcGM4NTQwZXZhbAoJbXVzZW5raQoJbXZibHVlCglwY2lwcGMyL3BjaXBwYzYKCXNiYzgyNDAKCXN0eHNzYQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWQzMzgxY2Y0MTY3MTIwZGI1YzdiODhlNDk3MDI0NWUxZDVjMGEzMgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6NDQ6MTkgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEUxMDAwIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCWFwMTAwMAoJbXZiY19wCglQTTg1NAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNGZjZTJhY2VhZjhhZmQzMWEyNTJiYzc4MmM5ZGJjNDk3YmY0MDQ4NwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6NDA6NTEgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHBsYjI4MDAgRXRoZXJuZXQgZHJpdmVyIHRvIGJvYXJkX2V0aF9pbml0CgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJcHVycGxlCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBjb250cm9sbGVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBlMWQ3NDgwYjVkZTFmZDQ4MzBiZjdjZjVlMjIzN2QzYjA4NDZkMDhkCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxMDozOToxMiAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDNXh4eF9GRUMgRXRoZXJuZXQgZHJpdmVyIHRvIENQVSBkaXJlY3RvcnkKCiAgICBNb2RpZmllZCBib2FyZF9ldGhfaW5pdCgpIGZ1bmN0aW9ucyBvZiBib2FyZHMgdGhhdCBoYXZlIHRoaXMgRkVDIGluIGFkZGl0aW9uCiAgICB0byBvdGhlciBFdGhlcm5ldCBjb250cm9sbGVycy4KCiAgICBBZmZlY3RlZCBib2FyZHM6CgliYzM0NTAKCWljZWN1YmUKCW12YmNfcAoJbzJkbnQKCXBtNTIwCgl0b3RhbDUyMDAKCXRxNTIwMAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgY29udHJvbGxlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTBhYWQwOGY5NDI3YWMwMDIxOGJkYjJjYjY0OTgzM2NlNmVjOWI4ZApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6MzY6MzggMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE1QQzUxMnhfRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5CgogICAgQWRkZWQgYSBjcHVfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBNUEM1MTJ4IENQVSBkaXJlY3RvcnkgYW5kCiAgICByZW1vdmVkIGNvZGUgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDgyMThiZDJhYTY4ODIwYjg3OGE4NDEzNDkzYWUxN2ZkOGQyMWY5NDQKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjE2OjU5IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBJbmNhSVAgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdAoKICAgIEFmZmVjdGVkIGJvYXJkczoKCUluY2FJUAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMTY0ODQ2ZWViMjVjYjJhNWVkZTdhYjkzNzFmZGNhN2Y0ODMxYTA1NQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6MTU6MjYgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIDNDT00gRXRoZXJuZXQgY29udHJvbGxlciAoQW1pZ2FPbmUpIHRvIGJvYXJkX2V0aF9pbml0KCkKCglBZmZlY3RlZCBib2FyZHM6CgkgICAgQW1pZ2FPbmVHM1NFCgoJUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2YWNhMTQ1ZTA2N2VmZTc1Mzk4ZTlmYWM5NzgyMmJkMzcwMGRlMGIyCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxMDoxMzozNCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgR1Q2NDI2eCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CglFVkI2NDI2MAoJUDNHNAoJWlVNQQoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZTMwOTA1MzRkNjIwNDVkY2I3M2Y1MzkyYmFjYzY0YTRlOGU0NDNkYwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6MDg6NDMgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFBDTkVUIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCVBONjIKCXNjNTIwX2NkcAoKICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYjkwMmI4ZGRhNWUxZmQ0ZDVmZTJmMjAyYzcxZWUzNTIxZDJjNDBlZApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTA6MDc6MTYgMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE5BVFNFTUkgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWZmZWN0ZWQgYm9hcmRzOgoJYTMwMDAKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE5NDAzNjMzZGQ3MDMzMzg5M2MyZGE3OTI2YTFkMGRjZDZkYWI3ZDgKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDEwOjAzOjIyIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBOUzgzODJYIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCWJjMzQ1MAoJY3BjaTUyMDAKCW1lY3A1MjAwCglwZjIwMDAKCWljZWN1YmUKCW8yZG50CglwbTUyMAoJc2FuZHBvaW50ODI0NQoJdG90YWw1MjAwCgl0cW01MjAwCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjY2RkMTJmODNlZjkzNzE5ZmJlODVmNjQyYWE0ZGM2NDhiOTQ5OGYwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwOTo1OTozMyAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgVFNJMTA4IEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCW1wYzc0NDhocGMyCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAwYjI1MmY1MGFlMjE4YWUxNWJmYjYzYWY0NDIyNzk3MjY4NmViYzU2CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAyMTo0MTowOCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUlRMODEzOSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKCiAgICBBZmZlY3RlZCBib2FyZHM6CgloaWRkZW5fZHJhZ29uCglNUEM4NTQ0RFMKCU1QQzg2MTBIUENOCglSMkRQTFVTCglUQjAyMjkKCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDAyZDY5ODkxZDk1ZWU3NmIwZTg2ZTE3MTVhNGRjMGI5NjRhNTdjYjcKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTdW4gQXVnIDMxIDA5OjQ5OjQyIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBSVEw4MTY5IEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIEFmZmVjdGVkIGJvYXJkczoKCWxpbmtzdGF0aW9uCglyNzc4MG1wCgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzYWUwNzFlNDQyNTYxNDRkNmMxZTNmZWJiNjVmNmM1NmJkNDMzNzY5CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEF1ZyAxMiAyMjoxMTo1MyAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgRXRoZXJuZXQgY29udHJvbGxlcnMgb24gQXRtZWwgQVQ5MSB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgUmVtb3ZlZCBhdDkxc2FtOV9ldGhfaW5pdGlhbGl6ZSgpIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4OTk3M2Y4YTgyYzI4YWQ4OTNjNGMzY2M1NjgzOWE4ZTEwZmU1ZjEzCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAyMjoyMjowNCAyMDA4IC0wNzAwCgogICAgSW50cm9kdWNlIG5ldGRldi5oIGhlYWRlciBmaWxlIGFuZCByZW1vdmUgZXh0ZXJucwoKICAgIFRoaXMgYWRkcmVzc2VzIGFsbCBkcml2ZXJzIHdob3NlIGluaXRpYWxpemVycyBoYXZlIGFscmVhZHkKICAgIGJlZW4gbW92ZWQgdG8gYm9hcmRfZXRoX2luaXQoKS9jcHVfZXRoX2luaXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDVhOGExNjNhYzM5NGQ5ZjRmN2ZmNTdmNDE1ZDgyYmQ2NzNiMDA2OGMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTY6MzM6MzAgMjAwOCAtMDUwMAoKICAgIEFkZCBwaXhpc19zZXRfc2dtaWkgY29tbWFuZAoKICAgIFRoZSA4NTQ0RFMgYW5kIDg1NzJEUyBwbGF0Zm9ybXMgc3VwcG9ydCBhbiBvcHRpb25hbCBTR01JSSByaXNlciBjYXJkIHRvCiAgICBleHBvc2UgZXRoZXJuZXQgb3ZlciBhbiBTR01JSSBpbnRlcmZhY2UuICBPbmNlIHRoZSBjYXJkIGlzIGluLCBpdCBpcyBhbHNvCiAgICBuZWNlc3NhcnkgdG8gY29uZmlndXJlIHRoZSBib2FyZCBzdWNoIHRoYXQgaXQgdXNlcyB0aGUgY2FyZCwgcmF0aGVyIHRoYW4KICAgIHRoZSBvbi1ib2FyZCBldGhlcm5ldCBwb3J0cy4gIFRoaXMgY2FuIGVpdGhlciBiZSBkb25lIGJ5IGZsaXBwaW5nIGRpcCBzd2l0Y2hlcwogICAgb24gdGhlIG1vdGhlcmJvYXJkLCBvciBieSBtb2RpZnlpbmcgcmVnaXN0ZXJzIGluIHRoZSBwaXhpcy4gIEVpdGhlciB3YXkKICAgIHJlcXVpcmVzIGEgcmVib290LgoKICAgIFRoaXMgYWRkcyBhIGNvbW1hbmQgdG8gYWxsb3cgdXNlcnMgdG8gY2hvb3NlIHdoaWNoIHBvcnRzIGFyZSByb3V0ZWQgdGhyb3VnaAogICAgdGhlIFNHTUlJIGNhcmQsIGFuZCB3aGljaCB0aHJvdWdoIHRoZSBvbmJvYXJkIHBvcnRzLiAgSXQgYWxzbyBhbGxvd3MgdXNlcnMKICAgIHRvIHJldmVydCB0byB0aGUgY3VycmVudCBzd2l0Y2ggc2V0dGluZ3MuCgogICAgVGhpcyBjb2RlIGRvZXMgbm90IHdvcmsgb24gdGhlIDg1NzIsIGFzIHRoZSBQSVhJUyBpcyBkaWZmZXJlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyMTZmMmE3MTU2YTVmZGU3YjQ3YWRjNDBhZDU1M2M4ODhhOWNiYWE3CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE2OjMzOjI5IDIwMDggLTA1MDAKCiAgICBBZGQgU0dNSUkgc3VwcG9ydCBmb3IgdGhlIDg1NDQgRFMKCiAgICBUaGUgODU0NCBEUyBoYXMgYW4gb3B0aW9uYWwgU0dNSUkgUmlzZXIgY2FyZCwgd2hpY2ggdXNlcyBkaWZmZXJlbnQgUEhZCiAgICBhZGRyZXNzZXMuCUNoZWNrIGlmIHdlIGFyZSBpbiBTR01JSSBtb2RlLCBhbmQgaW52b2tlIHRoZSBTR01JSSBSaXNlcgogICAgc2V0dXAgY29kZSBpZiBzby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDY1MmY3YzJlZWY3NmExMzQwOTI4YmQ2NjA4NDU0NDFlOTMyZDg2YTIKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjggMjAwOCAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBGcmVlc2NhbGUgU0dNSUkgUmlzZXIgQ2FyZAoKICAgIFRoZSA4NTQ0RFMgYW5kIDg1NzJEUyBzeXN0ZW1zIGhhdmUgYW4gb3B0aW9uYWwgU0dNSUkgcmlzZXIgY2FyZCB3aGljaAogICAgZXhwb3NlcyBuZXcgZXRoZXJuZXQgcG9ydHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byB0aGUgZVRTRUNzIHZpYSBhbgogICAgU0dNSUkgaW50ZXJmYWNlLiAgVGhlIFNHTUlJIFBIWXMgZm9yIHRoaXMgYm9hcmQgYXJlIG9mZnNldCBmcm9tIHRoZSBzdGFuZGFyZAogICAgUEhZIGFkZHJlc3Nlcywgc28gdGhpcyBjb2RlIG1vZGlmaWVzIHRoZSBwYXNzZWQgaW4gdHNlY19pbmZvIHN0cnVjdHVyZSB0bwogICAgdXNlIHRoZSBTR01JSSBQSFlzIG9uIHRoZSBjYXJkLCBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMmFiZTM2MWMwM2I0M2U2ZGNmNjhmNTRlOTZiNWMwNTE1NmM0OTI4NApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAxNjozMzoyNyAyMDA4IC0wNTAwCgogICAgQWRkIFNHTUlJIHN1cHBvcnQgdG8gdGhlIHRzZWMKCiAgICBBZGRzIHN1cHBvcnQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBUQkkgdG8gdGFsayBwcm9wZXJseSB3aXRoIHRoZSBTZXJEZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3NWI5ZDRhZTBkNjlmMjE0ZWFiNjQxY2FmMTJjZThhZjgzYTM5YTQyCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDMxIDE2OjMzOjI2IDIwMDggLTA1MDAKCiAgICBQYXNzIGluIHRzZWNfaW5mbyBzdHJ1Y3QgdGhyb3VnaCB0c2VjX2luaXRpYWxpemUKCiAgICBUaGUgdHNlYyBkcml2ZXIgY29udGFpbnMgYSBoYXJkLWNvZGVkIGFycmF5IG9mIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KICAgIGZvciB0aGUgdHNlYyBldGhlcm5ldCBjb250cm9sbGVycy4JV2UgY3JlYXRlIGEgZGVmYXVsdCBmdW5jdGlvbiB0aGF0IHdvcmtzCiAgICBmb3IgbW9zdCB0c2VjcywgYW5kIGFsbG93IHRoYXQgdG8gYmUgb3ZlcnJpZGRlbiBieSBib2FyZCBjb2RlLiAgSXQgY3JlYXRlcwogICAgYW4gYXJyYXkgb2YgdHNlY19pbmZvIHN0cnVjdHVyZXMsIHdoaWNoIGFyZSB0aGVuIHBhcnNlZCBieSB0aGUgY29ycmVzcG9uZGluZwogICAgZHJpdmVyIGluc3RhbmNlIHRvIGRldGVybWluZSBjb25maWd1cmF0aW9uLiAgQWxzbywgYWRkIHJlZ3MsIG1paXJlZ3MsIGFuZAogICAgZGV2bmFtZSBmaWVsZHMgdG8gdGhlIHRzZWNfaW5mbyBzdHJ1Y3R1cmUsIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0aGUga2x1ZGd5CiAgICAiaW5kZXgiIHBhcmFtZXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGRkM2QxZjU2YTAxZjQ2MGQ1NjA3NjYxMjZlZTdkZmVkMmVhOWJjMTAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjUgMjAwOCAtMDUwMAoKICAgIHRzZWM6IE1vdmUgdHNlYy5oIHRvIGluY2x1ZGUvCgogICAgVGhpcyBpcyB0byBwcmVwYXJlIHRoZSB3YXkgZm9yIGJvYXJkIGNvZGUgcGFzc2luZyBpbiB0aGUgdHNlY19pbmZvIHN0cnVjdHVyZQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDIzZGMzOTRhYTY5MDkzYjYzMjZhZDkxN2RiMDRkYzBkMWFmZjNmOApBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo1Mjo0NCAyMDA4ICswMjAwCgogICAgUEhZOiBBZGQgc3VwcG9ydCBmb3IgdGhlIE04OEUxMTIxUiBNYXJ2ZWxsIGNoaXAuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMTcxMWYzYmQxNmQxYzVlOWQxN2I0YzAxOThiNDI2ZDg2OTk5NzgxYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgMiAyMToxNzozNiAyMDA4ICswMjAwCgogICAgZndfZW52LmM6IGZpeCBidWlsZCBwcm9ibGVtcyB3aXRoIE1URF9WRVJTSU9OPW9sZAoKICAgIChhcyBuZWVkZWQgdG8gc3VwcG9ydCBvbGQgMi40IExpbnV4IGtlcm5lbCBiYXNlZCByZWxlYXNlcykKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDYyOGZmZDczYmNmZjBjOWYzYmM1YThlZWIyYzc0NTVmZTlkMjhhNTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gU2VwIDEgMTc6MTE6MjYgMjAwOCArMDIwMAoKICAgIGRldmljZTogbWFrZSBkZXZpY2VfcmVnaXN0ZXIoKSBjbG9uZSB0aGUgZGV2aWNlCgogICAgVGhpcyBpcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycywgYnV0IHRoaXMgZmFjdCB3YXMgaGlkZGVuIHdlbGwgd2l0aGluCiAgICB0aGUgb2xkIGxpc3QgaW1wbGVtZW50YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjNzVlNzcyYTJmMDYxYTUwOGJiYTI4ZGVkMWI1YmVhOTFmMDQ0MmIwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gQXVnIDMxIDIzOjI4OjE1IDIwMDggKzA5MDAKCiAgICBzaDogUmVtb3ZlIENDIGxpbmUgZnJvbSBib2FyZCdzIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDQ2OGVhZTA2NjBkZTZmZGZkOTk5OTk0NGM1MzZlY2M0Nzk3YmQ5NDQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjM6MjU6NTcgMjAwOCArMDkwMAoKICAgIHNoOiBSZXBsYWNlZCAiQC4vbWtjb25maWciIGZvciBAJChNS0NPTkZJRykKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgM2FlYjFmZjc0ODJhNzMyNTAzMTg2Yzc0MmQzYTVkZWQ0YjdhMGQzNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxNDo1MDo1MiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IHNoMiB0byBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZmM2Q4YmI1ZmFhMTJkYmYzMDMxMzgyMjg2Nzg0Yzk3OGRmMDM4ZWUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBBdWcgMjggMTQ6NTI6MjMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciByc2s3MjAzIGJvYXJkCgogICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCiAgICBUaGlzIHBhdGNoIGZpeCBjb21waWxlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAxYzk4MTcyZTAyNTAxODU1MmU5YmI0YzQzYjBhYWVlNzZmNzliMWFhCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE0OjUzOjMxIDIwMDggKzA5MDAKCiAgICBzaDogRml4IGNvbXBpbGUgZXJyb3Igc2g3Nzg1bGNyIGJvYXJkCgogICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCiAgICBUaGlzIHBhdGNoIGZpeCBjb21waWxlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2ZjBkYTQ5NzJlNDhmOTlkMzdiYzUyMjgxNDk0MGE2MDIyY2QzMDg0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgQXVnIDIyIDE3OjM5OjA5IDIwMDggKzA5MDAKCiAgICBzaDogUmVuZXNhcyBTb2x1dGlvbnMgQVAzMjVSWEEgYm9hcmQgc3VwcG9ydAoKICAgIEFQMzI1UlhBIGlzIFNINzcyMydzIHJlZmVyZW5jZSBib2FyZC4KICAgIFRoaXMgaGFzIFNDSUYsIE5PUiBGbGFzaCwgRXRoZXJuZXQsIFVTQiBob3N0LCBMQ0RDLCBTRCBIb3N0LCBDYW1lcmEgYW5kIG90aGVyLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydCBTQ0lGLCBOT1IgRmxhc2gsIGFuZCBFdGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYWIwOWY0MzNiNTBiYjgzYjVlNDQwYzMzNWJjMzgzOWVlMDY5ZTUzNApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEF1ZyAyMiAxNzo0ODo1MSAyMDA4ICswOTAwCgogICAgc2g6IGFkZCBzdXBwb3J0IFJlbmVzYXMgU0g3NzIzCgogICAgUmVuZXNhcyBTSDc3MjMgaGFzIDUgU0NJRiwgU0QsIENhbWVyYSwgTENEQyBhbmQgb3RoZXIuCiAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIENQVSByZWdpc3RlcidzIGhlYWRlciBmaWxlIGFuZCBTQ0lGIHNlcmlhbCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGM2NTVmYWQwNmJhM2ZiMDQyZGJjNjY3NzI0YTQwZTFhOWEwOTEyNDgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjM6MDI6MDQgMjAwOCArMDkwMAoKICAgIHNoOiBSZW5lc2FzIFJTSysgNzIwMyBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBhZGRzIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIFJURSBSU0srIFNINzIwMyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNmVkZTc1M2RkZjUyYTdiMGY5OTJkOWJjY2JlNWU0YTA5NjhjYTQ3NQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVGh1IEp1bCAzIDIzOjExOjAyIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTSDcyMDMgcHJvY2Vzc29yCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZhZDQzZDBkZDg2YjYxMjg5NWRkYzdmNDgwZWI2Y2RmZTc5M2FkZjkKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjI6NDg6MzMgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBTSDIvU0gyQSB3aGljaCBpcyBDUFUgb2YgUmVuZXNhcyBUZWNobm9sb2d5CgogICAgQWRkIHN1cHBvcnQgU0gyL1NIMkEgYmFzaWMgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDBkNTNhNDdkYzA3MzdiNmFhM2EzOWNhZWUyMTQxMGMxNjk0NDFhZTUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBBdWcgMzEgMjI6NDU6MDggMjAwOCArMDkwMAoKICAgIHNoOiBSZW5lc2FzIFIwUDc3ODVMQzAwMTFSTCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBib2FyZCBoYXMgU0g3Nzg1LCA1MTJNQiBERFIyLVNEUkFNLCBOT1IgRmxhc2gsCiAgICBHcmFwaGljLCBFdGhlcm5ldCwgVVNCLCBTRCwgUlRDLCBhbmQgSTJDIGNvbnRyb2xsZXIuCgogICAgVGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKICAgICAtIDEyOE1CIEREUjItU0RSQU0gKDI5LWJpdCBhZGRyZXNzIG1vZGUgb25seSkKICAgICAtIE5PUiBGbGFzaAogICAgIC0gVVNCIGhvc3QKICAgICAtIEV0aGVybmV0CgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGIwYjYyMTg5MjliYzdkZTlhNmJkYjhlNTY0ZmE4ZWMyZWZhNzFiNGUKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVRodSBKdWwgMTAgMTk6MzI6NTMgMjAwOCArMDkwMAoKICAgIHNoOiBhZGQgc3VwcG9ydCBmb3IgU0g3Nzg1CgogICAgUmVuZXNhcyBTSDc3ODUgaGFzIEREUjItU0RSQU0gY29udHJvbGxlciwgUENJLCBhbmQgb3RoZXIuCiAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIENQVSByZWdpc3RlcidzIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBkNmUwNDI1OGJlOGYyNDA4ODQ1NDY4ZDNjZjcyMmE0Y2YwNDMzNDQ1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwNDo0NTo0MiAyMDA4ICswMjAwCgogICAgZGF2aW5jaTogZml4IHJlbWFpbmluZyBkbTY0NHhfZXRoCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwOGFiNGUxNzgwZmE2M2M4OGRkNWE1YWI1MmY0ZmY0ZWQxZWUxODc4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwNDoyNDo1NiAyMDA4ICswMjAwCgogICAgZnM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMxZGU3YTZkYWY5YzY1NzQ4NGUxYzZkNDMzZjAxZmNjZDQ5YTdmNDgKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXVnIDMxIDA0OjI0OjU1IDIwMDggKzAyMDAKCiAgICBkZXZpY2VzOiBtZXJnZSB0byBsaXN0X2hlYWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVmMDI1NWZjNzVmMjg2NTVmOTY4MTQyMjA3OTI4N2Q2OGExNGRiYWEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gQXVnIDMxIDA0OjI0OjUxIDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbGludXgvbGlzdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzFjYjMxMjI3YmVlNzQxYjI3NGY2YzAyNzliMmFhYzFhYjhlMjhlMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDggMjAwOCArMDIwMAoKICAgIHNtZGs2NDAwOiBhZGQgZ2l0aWdub3JlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmOWY2OTJlMmIxNDZkNGUzMDZiNzc3ZTZkNWY2OWYxZDcyNWI5ZWI5CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0OCAyMDA4ICswMjAwCgogICAgc21kazY0MDA6IFVzZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2MwZTVhOGRiM2QxMzU4YjBjZTNjYzg1YWRhMGRlNjM0MWNhNGExNQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgc21kazY0MDA6IHJlbW92ZSByZWR1bmRhbnQgYm9vdGFyZ3MgZGVmaW5pdGlvbgoKICAgIERvdWJsZSBib290YXJncyBzZXR0aW5nIGxlYWRzIHRvIGEgZHVwbGljYXRlZCBlbnZpcm9ubWFudCBlbnRyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMTFlZGNmZTI2MGYyMGRjZWE3OTI4NGEzZTk1MjcwOTg5ZDQzMzg1NApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgUzNDNjQwMCBiYXNlZCBTTURLNjQwMCBib2FyZAoKICAgIFNNREs2NDAwIGNhbiBvbmx5IGJvb3QgVS1Cb290IGZyb20gTkFORC1mbGFzaC4gVGhpcyBwYXRjaCBhZGRzIGEgbmFuZF9zcGwKICAgIGRyaXZlciBmb3IgaXQgdG9vLiBUaGUgYm9hcmQgY2FuIGFsc28gYm9vdCBmcm9tIHRoZSBOT1IgZmxhc2gsIGJ1dCBkdWUgdG8KICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIGl0IGNhbiBvbmx5IGFkZHJlc3MgNjRLaUIgb24gaXQsIHdoaWNoIGlzIG5vdCBlbm91Z2gKICAgIGZvciBVLUJvb3QuIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZTAwNTZiMzQxMDY5Nzk2ZWFlYTExZWFlMGZjOGViOTNhM2RjZWFhYwpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCgogICAgTkFORDogYWRkIE5BTkQgZHJpdmVyIGZvciBTM0M2NFhYCgogICAgQmFzZWQgb24gdGhlIG9yaWdpbmFsIFMzQzY0WFggTkFORCBkcml2ZXIgYnkgU2Ftc3VuZyBmb3IgVS1Cb290IDEuMS42LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAzZmU3YjU4OWY5Yzc0NjNkZjM5MDU2Zjg4NzIwMDZhNjdmNTZhOTFjCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKCiAgICBTM0M2NFhYOiByZW1vdmUgYnJva2VuIEhXRkxPVyBzdXBwb3J0IGZyb20gdGhlIHNlcmlhbCBkcml2ZXIKCiAgICBBcyBub3RlZCBieSBIYXJhbGQgV2VsdGUsIEhXRkxPVyBzdXBwb3J0IGluIHRoZSBTM0M2NFhYIHNlcmlhbCBkcml2ZXIgaXMKICAgIGJyb2tlbiBhbmQgY3VycmVudGx5IHVudXNlZC4gUmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAyZmIyOGRjZjgyMDQ4MDQ1ZTFiZjUwMTRlOTM4ZTQ4NmZhNmMyMzgzCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKCiAgICBzZXJpYWw6IGFkZCBTM0M2NFhYIHNlcmlhbCBkcml2ZXIKCiAgICBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgUzNDNjRYWCBVQVJUIGRyaXZlciBieSBTYW1zdW5nIGZvciBVLUJvb3QgMS4xLjYuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDgyNjI4MTNjYTA0ZmM1N2Y1ZDg4NTZlMTgyODA4NWMxMzZlMGYxZWIKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDYgMjAwOCArMDIwMAoKICAgIFVTQjogQWRkIHN1cHBvcnQgZm9yIE9IQ0kgY29udHJvbGxlciBvbiBTM0M2NDAwCgogICAgTm90aWNlOiBVU0Igb24gUzNDNjQwMCBjdXJyZW50bHkgd29ya3MgX29ubHlfIHdpdGggc3dpdGNoZWQgb2ZmIE1NVS4gT25lIGNvdWxkCiAgICB0cnkgdG8gZW5hYmxlIHRoZSBNTVUsIGJ1dCBtYXAgYWRkcmVzc2VzIDEtdG8tMSwgYW5kIGRpc2FibGUgZGF0YSBjYWNoZSwgdGhlbgogICAgaXQgc2hvdWxkIHdvcmsgdG9vIGFuZCB3ZSBjb3VsZCBzdGlsbCBwcm9maXQgZnJvbSBpbnN0cnVjdGlvbiBjYWNoZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgOWIwNzc3M2Y4ODgzNjY1YjAwMjUwMGMxOTA1MDdlOWZkOTliNzE4MQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NiAyMDA4ICswMjAwCgogICAgQVJNOiBBZGQgYXJtMTE3NiBjb3JlIHdpdGggUzNDNjQwMCBTb0MKCiAgICBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgUzNDNjRYWCBwb3J0IGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgZmNhYWM1ODlhNjgxMTU4MTlkZGFkY2Y1YzE4ZGVkOWE1ZjllMmM3NQpBdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NiAyMDA4ICswMjAwCgogICAgQVJNIERhVmluY2k6IENoYW5naW5nIGZ1bmN0aW9uIG5hbWVzIGZvciBFTUFDIGRyaXZlcgoKICAgIERNNjQ0eCBpcyBqdXN0IG9uZSBvZiBhIHNlcmllcyBvZiBEYVZpbmNpIGNoaXBzIHRoYXQgdXNlIHRoZSBFTUFDIGRyaXZlci4KICAgIEJ5IHJlcGxhY2luZyBhbGwgdGhlIGZ1bmN0aW9uIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBkbTY0NHhfKiB0byBkYXZpbmNpXyoKICAgIHdlIG1ha2UgdGhlc2UgZnVuY3Rpb24gbW9yZSBwb3J0YWJsZS4gSSBoYXZlIHRlc3RlZCB0aGlzIGNoYW5nZSBvbiBteSBFVk0uCiAgICBETTY0NjcgaXMgYW5vdGhlciBEYVZpbmNpIFNPQyB3aGljaCB1c2VzIHRoZSBFTUFDIGRyaXZlciBhbmQgaSB3aWxsCiAgICBiZSBzZW5kaW5nIHBhdGNoZXMgdGhhdCBhZGQgRGFWaW5jaSBETTY0Njcgc3VwcG9ydCB0byB0aGUgbGlzdCBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KCmNvbW1pdCBmYmJiMWRlMzY5Y2E3ZDVhY2U2ZjdiMGNlOWQwYWVlMjRhNmY0NTdiCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJU2F0IEF1ZyAzMCAyMzoyMTozMCAyMDA4ICswMjAwCgogICAgSW50ZWdyYXRvcltBUC9DUF0gLSBSZW1vdmUgdW51c2VkIGZpbGUgbWVtc2V0dXAuUwoKICAgIC0gbWVtc2V0dXAucyBpcyBjaGFuZ2VkL21lcmdlZCB0byBsb3dsZXZlbF9pbml0LlMKICAgICAgbWVtc2V0dXAuUyBoYXMgYSBnbG9iYWwgbGFiZWwgbWVtc2V0dXAgdGhhdCBqdXN0IHJldHVybnMgYmFjayB0byBjYWxsZXIKICAgIC0gbWVtc2V0dXAgZ2xvYmFsIGxhYmVsIGlzIGNoYW5nZWQvbWVyZ2VkIHRvIGxvd2xldmVsX2luaXQKICAgICAgVGhpcyBsYWJlbCBpcyBub3QgY2FsbGVkIGZyb20gYW55d2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IDg5ZDUxZDAyMmE2M2JlMWE4NTFlZGE5ODNjOGNiY2UxYTA0NGY2NWYKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJV2VkIEF1ZyAyNyAyMTozNTo1MiAyMDA4ICswMjAwCgogICAgQVJNIERhVmluY2k6IFN0YW5kYXJkaXplIG5hbWVzIG9mIGRpcmVjdG9yaWVzL2ZpbGVzCgogICAgQVJNIERhVmluY2k6IFN0YW5kYXJkaXplIG5hbWVzIG9mIGRpcmVjdG9yaWVzL2ZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyNjRiYmRkMTFkMDFmMTRmNWVhNDYyOTU1NmFlNjNiMDBiMTM0MDJkCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTMgMjAwOCAtMDQwMAoKICAgIEFSTSBEYVZpbmNpOiBNb3ZlIGNvbW1vbiBmdW5jdGlvbnMgdG8gYm9hcmQvZGF2aW5jaS9jb21tb24KCiAgICBBUk0gRGFWaW5jaTogTW92ZSBjb21tb24gZnVuY3Rpb25zIHRvIGJvYXJkL2RhdmluY2kvY29tbW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IGMyYjRiMmU0ODE0ZjRhY2U5MDE1ZmRiNjQxMzI4OTQzMjc0MDBiZjAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjkgMTE6NTY6NDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eC9OQU5EOiBBZGQgc2VsZWN0X2NoaXAgZnVuY3Rpb24gdG8gNHh4IE5ERkMgZHJpdmVyCgogICAgVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgZm9yIHRoZSBuZXcgTkFORCBpbmZyYXN0cnVjdHVyZS4gV2Ugb25seSBuZWVkCiAgICBhIGR1bW15IGltcGxlbWVudGF0aW9uIHRob3VnaCBmb3IgdGhlIE5ERkMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNkNGE3NDZlMmZiNDU0NWYwN2Q4NzEwNDk4MDVmYjM0YWU5N2NjOTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjkgMTI6MDY6MjcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5jcmVhc2UgaW1hZ2Ugc2l6ZSBmb3IgTkFORCBib290IHRhcmdldAoKICAgIFRoaXMgaXMgbmVlZGVkIHNpbmNlIG5vdyB3aXRoIEhVU0ggZW5hYmxlZCAoYW1jYy1jb21tb24uaCkgdGhlIGltYWdlCiAgICByZWFkIGZyb20gTkFORCBleGNlZWRzIHRoZSBwcmV2aW91cyBsaW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmI1MDQ5ZDA1NmNkOGVmNzJkMWYyZjQ2MWNlYjJkMDMzZDkzZjc1OQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVRodSBBdWcgMjggMjM6NTg6MzAgMjAwOCAtMDcwMAoKICAgIE1vdmUgTVBDNTEyeF9GRUMgZHJpdmVyIHRvIGRyaXZlcnMvbmV0CgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4MGIwMGFmMDFiM2M5MTU0Nzc0ZGUyOTM2ZjA1YTA1MWU5MmY2YTAzCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAyMzo1ODoyOSAyMDA4IC0wNzAwCgogICAgTW92ZSBNUEM1eHh4X0ZFQyBkcml2ZXIgdG8gZHJpdmVycy9uZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNkZTdiZjBlNmIxYWQyNjA4MDE0MDk2YzgxOTJmMTMyMjliMmU5ZDcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgQXVnIDI5IDIxOjUzOjU3IDIwMDggKzAyMDAKCiAgICBjbWRfdGVybWluYWw6IHJlbW92ZSBubyBuZWVkIGlmZGVmCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NzgxMThiZGYxMjI4NzdhZTc2OTc3NmJlMDAyMjU1YmU0NDdiNGZhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NyAyMDA4ICswMjAwCgogICAgY29tbW9uL01ha2VmaWxlOiBvcmRlciBieSBmdW5jdGlvbmFsaXR5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiYTdiNWIyMzQ4YjY4NGNmOGVjNDI0YjJlMzhlMjY3ZGMxY2ZkMmZiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NiAyMDA4ICswMjAwCgogICAgbWlpcGh5dXRpbDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODE3ODljMzlkYjNmMGY2YjYyMWRmOGMwZWM2NjAxNGQ3MDFmMzY4ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMjE6NTM6MzcgMjAwOCArMDIwMAoKICAgIGF1dG9zY3JpcHQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJiZjUyZGY5YWE5NGZmYjExNWI4YjFlYmViMDBkMDEzNzRiYjBhMWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgQXVnIDI5IDAxOjE4OjExIDIwMDggKzAyMDAKCiAgICBjcmMxNjogbW92ZSB0byBsaWJfZ2VuZXJpYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTUxOTU3NzNlYWNlZmIyMmRkNDgzYTNjNTYwZWEzMGExNDI2M2NlMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMjkgMDE6MTg6MDEgMjAwOCArMDIwMAoKICAgIG1paXBoeWJiOiBtb3ZlIHRvIGRyaXZlcnMvbmV0L3BoeQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZTgzMTQwMzU5OTZhOTExOGFjNTk0OGRmMmZmOGEyZjIxNjFlZDY3YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBBdWcgMjggMTI6MzE6NTEgMjAwOCArMDIwMAoKICAgIHNvZnRfc3BpOiBtb3ZlIHRvIGRyaXZlcnMvc3BpCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZDc1ZTBhYTljYWNhNjRkNGExZDU1ZDk1Y2QxY2E1ZjMwZDlmYzU2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEF1ZyAyOCAxMjozMTo1MSAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IG1vdmUgdG8gZHJpdmVycy9pMmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcxN2EyMjIyMjlmZGI3NzcwM2U5MTc0ZDBlYjA4YTRiNDFmZWJmNDkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEyOjMxOjQ4IDIwMDggKzAyMDAKCiAgICBndW56aXA6IG1vdmUgdG8gbGliX2dlbmVyaWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDUyYWVmOGY5YmEyOGI3NDc5NzNiZjc2NzQxYzIzZGI2NThkNTc3M2MKQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KRGF0ZToJVHVlIEF1ZyAyNiAxOTo1NToyMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBOQU5EIGNvbmZpZ3VyYXRpb24KCiAgICBNYWRlIE5BTkQgYmFuayBjb25maWd1cmF0aW9uIHNldHRpbmcgYSBjb25maWcgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgT2NrZXIgPHdlb0ByZWNjb3dhcmUuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWJjNTQyYTU5M2FiYzllOTc0ZmJkMzQ3MDRhZjg1YzM3YzM2NmM2MApBdXRob3I6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgpEYXRlOglUaHUgQXVnIDI4IDE2OjAzOjI4IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IGZpeCBVSUMgZXh0ZXJuYWxfaW50ZXJydXB0IGhhbmcgb24gVUlDMAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBVSUMgZXh0ZXJuYWxfaW50ZXJydXB0IGhhbmcgaWYgY3JpdGljYWwgb3Igbm9uLWNyaXRpY2FsCiAgICBpbnRlcnJ1cHQgaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUgYXMgYSBub3JtYWwgaW50ZXJydXB0IGlzIHNldCBvbiBVSUMwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA0NzM3ZDVmZmQxNjI0OGNiODBhYjNkZDRmMzc2NTA1N2E4MDNmMTgKQXV0aG9yOiBQcm9keXV0ICBIYXphcmlrYSA8cGhhemFyaWthQGFtY2MuY29tPgpEYXRlOglXZWQgQXVnIDI3IDE2OjM5OjAwIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IE9wdGltaXphdGlvbnMvQ2xlYW51cHMgZm9yIElCTSBERFIyIE1lbW9yeSBDb250cm9sbGVyCgogICAgUmVtb3ZlZCBNYWdpYyBudW1iZXJzIGZyb20gSW5pdGlhbGl6YXRpb24gcHJlbG9hZCByZWdpc3RlcnMKICAgIFRlc3RlZCB3aXRoIEtpbGF1ZWEsIEdsYWNpZXIsIENhbnlvbmxhbmRzIGFuZCBLYXRtYWkgYm9hcmRzCiAgICBBYm91dCA1LTclIGltcHJvdmVtZW50IHNlZW4gZm9yIExNQmVuY2ggbWVtdGVzdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQcm9keXV0IEhhemFyaWthIDxwaGF6YXJpa2FAYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGE0OTA0MjJiZWQ2ODVjOTQ5MTI3NGVjOTk3ZjYyMDYxZDg4NjIwYgpBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDI4IDEzOjE3OjA3IDIwMDggLTA2MDAKCiAgICBBRFM1MTIxOiBGaXggTk9SIGFuZCBDUExEIEFMRSB0aW1pbmcgZm9yIHJldiAyIHNpbGljb24KCiAgICBNUEM1MTIxIHJldiAyIHNpbGljb24gaGFzIGEgbmV3IHJlZ2lzdGVyIGZvciBjb250cm9sbGluZyBob3cgbG9uZwogICAgQ1MgaXMgYXNzZXJ0ZWQgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFIGluIG11bHRpcGxleGVkIG1vZGUuCgogICAgVGhlIGRlZmF1bHQgaXMgdG8gYXNzZXJ0IENTIHRvZ2V0aGVyIHdpdGggQUxFLiAgVGhlIGFsdGVybmF0aXZlCiAgICBpcyB0byBhc3NlcnQgQ1MgKEFMRU4rMSkqTFBDX0NMSyBjbG9ja3MgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFLgoKICAgIFRoZSBkZWZhdWx0IGlzIHdyb25nIGZvciB0aGUgTk9SIGZsYXNoIGFuZCBDUExEIG9uIHRoZSBBRFM1MTIxLgoKICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIGFsdGVybmF0aXZlIGZvciBDUzAgKE5PUikgYW5kIENTMiAoQ1BMRCkKICAgIGl0IGRvZXMgc28gY29uZGl0aW9uYWxseSBiYXNlZCBvbiBzaWxpY29uIHJldiAyLjAgb3IgZ3JlYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aGEgSiBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkOWE1ZWZhNGIzMzJmNDQyYjU0YTc1NWQ0OTk2OTEyM2MzYTg3NDIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAwOjU2OjQ2IDIwMDggKzA2MDAKCiAgICBBZGQgSTJDIGZyZXF1ZW5jeSBkaXZpZGVycyBmb3IgQ29sZEZpcmUKCiAgICBUaGUgZXhpc3RpbmcgSTJDIGZyZXFlbmN5IGRpdmlkZXJzIGZvciBGRFIgZG9lcyBub3QgYXBwbHkKICAgIHRvIENvbGRGaXJlIHBsYXRmb3JtczsgdGh1cywgYSBzZXBlcmF0ZSB0YWJsZSBpcyBhZGRlZAogICAgYmFzZWQgb24gTUNGNXh4eCBSZWZlcmVuY2UgTWFudWFsCgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUYWJpIFRpbXVyIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVlYzU2N2E2N2UwMGQxZWQ4ZDk0MWU5MDk4YjdkNDIxZjQwOTFhYmYKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAzOjAxOjE5IDIwMDggKzA2MDAKCiAgICBDb2xkRmlyZTogSTJDIGZpeCBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNTNjZjZhOWM3NDIzY2JhNjY4Yjg2Nzk3ODY0ODY0NWY3MWMzMDkwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxOSAwMDozNzoxMyAyMDA4ICswNjAwCgogICAgQ29sZEZpcmU6IEFkZCBDT05GSUdfTUlJX0lOSVQgZm9yIE01MjcyQzMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3OGNlZDMwMjhkNDEzMGIyNGEzMTg5NDNhNzBjZjU1ODRhYjE2ZjQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDAwOjI2OjI1IDIwMDggKzA2MDAKCiAgICBDb2xkRmlyZTogTXVsdGlwbGUgZml4ZXMgZm9yIE1DRjU0NDV4IHBsYXRmb3JtcwoKICAgIEFkZCBGRUMgcGluIHNldCBhbmQgbWlpIHJlc2V0IGluIF9fbWlpX2luaXQoKS4gQ2hhbmdlCiAgICBsZWdhY3kgZmxhc2ggdmVuZG9yIGZyb20gMiB0byBBTUQgTEVHQUNZICgweEZGRjApLAogICAgY2hhbmdlIGNmaV9vZmZzZXQgdG8gMCwgYW5kIGNoYW5nZSBDRkdfRkxBU0hfQ0ZJIHRvCiAgICBDT05GSUdfRkxBU0hfQ0ZJX0xFR0FDWS4gQ29ycmVjdCBNNTQ0NTFFVkIgYW5kCiAgICBNNTQ0NTVFVkIgZW52IHNldHRpbmdzIGluIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1NGU3MjViM2E5NTM3YjdmMjczYmJkMGNiY2ExODBmMjNhN2E2ZTgKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE1IDE4OjI0OjI1IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQ2hhbmdlIHRoZSBTRFJBTSBCUkQyV1QgdGltaW5nIGZyb20gMyB0byA3CgogICAgVGhlIHVzZXIgbWFudWFscyByZWNvbW1lbmQgNy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdXJ0IE1haGFuIDxrbWFoYW5AZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc5ZTA3OTljZjZlODhkOThkNzdiMjE2YTU1MjM0YmY2NzRiNTlhNGUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE1IDE2OjUwOjA3IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogUmFpc2UgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCgogICAgTTUyNDlFVkIsIE01MjcxRVZCLCBNNTI3MkMzLCBNNTI3NUVWQiBhbmQgTTUyODJFVkIgcGxhdGZvcm1zCiAgICB1YXJ0IGJhdWRyYXRlIGluY3JlYXNlIGZyb20gMTkyMDAgdG8gMTE1MjAwIGJwcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWI2YmE4NDI2ODI1NTJjY2YwNzFkMDAzNGRhMGEyMDYzM2QxZDFhYwpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTI6MDc6MDMgMjAwOCArMDAwMAoKICAgIENvbGRGaXJlOiBGaXggYm9hcmQuYyB3YXJuaW5nIG1lc3NhZ2UKCiAgICBJbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBuYW5kX2luaXQoKSB3YXJuaW5nIG1lc3NhZ2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU3OThiMWM0NjUwZTlhODcxM2M5NWIyNWMxZTY2OWEyYmM4MGE5N2IKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXVnIDI3IDAxOjEwOjM0IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBSZW1vdmUgZHVwbGljYXRlIHNldHRpbmcgb2YgY3MwX2JuZHMgcmVnaXN0ZXIgb24gODZ4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI1OGMzN2IxNDczNTNiYzUyMmZmYzMzZGZiZDdkMGQ5Y2Q3YzMyZDcKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyMSAyMDo0NDo0OSAyMDA4ICswMjAwCgogICAgbXBjNTJ4eDogYWRkZWQgc3VwcG9ydCBmb3IgdGhlIE1QQzUyMDAgYmFzZWQgTVVDLk1DNTIgYm9hcmQgZnJvbSBNQU4uCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgOWNmZjQ0NDhhOWNiODgyZGVmZTZjOGJkZTczYjc3ZmMwYzYzNjc5OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMTkgMTQ6NDY6MzYgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHJlbW92ZSByZWR1ZGFudCBjb2RlIHdpdGggbGliX3BwYy9pbnRlcnJ1cHRzLmMKCiAgICBGb3Igc29tZSByZWFzb24gd2UgZHVwbGljYXRlZCB0aGUgbWFqb3JpdHkgb2YgY29kZSBpbiBsaWJfcHBjL2ludGVycnVwdHMuYwogICAgbm90IHNob3cgaG93IHRoYXQgaGFwcGVuZWQsIGJ1dCB0aGVyZSBpcyBubyBnb29kIHJlYXNvbiBmb3IgaXQuCgogICAgVXNlIHRoZSBpbnRlcnJ1cHRfaW5pdF9jcHUoKSBhbmQgdGltZXJfaW50ZXJydXB0X2NwdSgpIHNpbmNlIGl0cyB3aHkKICAgIHRoZXkgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5NDkwYTdmMWE5NDg0NjE3YmFkNzVjNjA4MDdjZTAyYzhhM2E2ZDU2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEp1bCAyNSAxMzozMTowNSAyMDA4IC0wNTAwCgogICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4NTM2RFMgcmVmZXJlbmNlIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERlamFuIE1pbmljIDxtaW5pY0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGVmNTBkNmMwNmVjZTc0ZmIxN2U4ZDc1MTBlNjJjYWQ5ZGY4YjgxMGQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDEyIDExOjE0OjE5IDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzg1MzYKCiAgICBUaGUgTVBDODUzNiBBZGRzIFNESEMgYW5kIFNBVEEgY29udHJvbGxlcnMgdG8gdGhlIFBRMyBmYW1pbHkuICBXZQogICAgYWxzbyBoYXZlIFNFUkRFUyBpbml0IGNvZGUgZm9yIHRoZSA4NTM2LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEZWphbiBNaW5pYyA8bWluaWNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEyOWJhNjE2YjM4MTNkZGU4NjFmMjVmM2Q4YTNjNDdjNWMzNmFkNWYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDEyIDExOjEzOjA4IDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzg1NzJEUyByZWZlcmVuY2UgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ1N2NhZWNkYmNhM2RmMjFhOTNhYmZmMTllYWIxMmRiYzYxYjc4OTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXVnIDI3IDAxOjA1OjM1IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBSZW1vdmUgb2xkIFNQRCBzdXBwb3J0IGZyb20gY3B1L21wYzg1eHgKCiAgICBBbGwgODV4eCBib2FyZHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byB0aGUgbmV3IGNvZGUgc28gd2UgY2FuCiAgICByZW1vdmUgdGhlIG9sZCBTUEQgRERSIHNldHVwIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZTc5MjdkYjEzODk3NjQ2OWU3MjU3ZTI5YzEzMzgwNTBhNTBmY2Q5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyAyNyAwMTowNDowNyAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBTVFhTU0EgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzM2MGQ5Yjk3MGZiYjljMTM3NDRjMzU1ODc5NjcxMTY1YmJiOWI5ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBBdWcgMjcgMDE6MDM6NDIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgU1RYR1AzIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhlNTUzMTNiN2FlMTIzNTJhMzQzZjliOTk2MmU2NjJkYmQ4OTcxODcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDIzOjUyOjU4IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg1NjAgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTY1OGJlYzJlOGY1NWQ1NmNhMWJlNzAwOTBjZTVhMzQ4YmU0OTgwZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTI6MzIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0MEVWQUwgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNmJmYThmNzIzY2ZkODJjNTVlM2VmNTYyMGFkZTM5NjkxNjQ3MGE3MApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTI6MDcgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgUE04NTYgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDUzYmQzZTE3YmQ0ZjQ2MDI1N2MxOTI1NTU2OWVhNmRjZmFhZTgxNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6NTE6NDkgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgUE04NTQgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMzNiOTA3OWJhMjA5MjZmMTQyMzhmZmY4NjNiNjhhOThlOTM4OTQ4ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMjM6MTU6MjggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgc2JjODU0OCB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhOTQ3ZTRjN2ViMTVjZWExZDlmYjYzMzk1NWM1MTZhYWI1YWQzNWRkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAyMzoxNDoxNCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBhdHVtODU0OCB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAyMjo1Njo1NiAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBzb2NyYXRlcyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxMTY3YTJmZDU2MTM4YjcxNmUwMTM3MGM0MjY3ZjNiNzBiZjlmZmEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAwODowMjozMCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NTQ0RFMgdG8gbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZTZmNWIzNWI0MWRkYmQ2MzdiYjljYTRhZDk4NWIxZTBiMDdkYWUwZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTM6NTE6MDUgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU2OE1EUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZTMxZDJjMWUyYmM5NTRkYzMyZTMzYmIyMDc2MTM5Zjg1Yjk1ZjhlNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTM6NTE6MDYgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0OENEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWExMWQ4NWNmMzE4Yjk2MWUwMjlmZTUwZDY4Y2E0N2QwMDRiY2U5MwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXIgMTcgMTU6NDg6MTggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0MUNEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmI0MGVkYjEwZDgxZGE3YmJhNzI0ZWRiY2NkN2Y1Mzc3NzExMjU3OQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTE6MTI6NDIgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU1NUFEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGI2MjUxMTRlOGJjNWE2YjQzNjE4MTE2N2E2ZTdmY2QzMzAzZGQyYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMTE6MTI6NDQgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU2MEFEUyB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOTYxN2M4ZDQ5YTIxNzAzZWFmMTNhNDAzM2FiMWE1NmVlY2MwMzNjYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBKdW4gNiAxMzoxMjoxOCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NTQwQURTIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDJhNmMyZDdhYjJhNjY2NjBmNDBhNmNkM2RlMmViMjllZTI5ZDk2OTMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDIxOjM0OjU1IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgODV4eCBzcGVjaWZpYyByZWdpc3RlciBzZXR0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2ZmIxYjczNDY4NDljY2QwYzIwMzA2MTQzZTMzNGY1Yjc2MTQzMDcwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDExOjA3OjQ2IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgZTUwMCBUTEIgaGVscGVyIGZvciBERFIgY29kZQoKICAgIFByb3ZpZGUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBib2FyZCBjb2RlIGNhbiBjYWxsIHRvIG1hcCBUTEJzIHdoZW4KICAgIHNldHRpbmcgdXAgRERSLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDI2YjczOWFmZTVhNjc2MGJkMzQ1NzQzMTg4NzU5Y2Q5ZDBmM2I0NwpBdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KRGF0ZToJVHVlIEF1ZyAyNiAxNzowMzozOCAyMDA4IC0wNTAwCgogICAgZG05MDAwIHJlbW92ZSBkZWFkIGV4dGVybmFsIHBoeSBzdXBwb3J0LCBncGlvIGZpeAoKICAgIGRtOTAwMCBoYXMgY29kZSB0byBkZXRlY3QgYW5kIGluaXRpYWxpemUgZXh0ZXJuYWwgcGh5IHBhcnRzLCBidXQgbGF0ZXIKICAgIG9uIGluIHRoZSBjb2RlIHRoZSBwYXJ0IGlzIGZvcmNlZCB0byB1c2UgdGhlIGludGVybmFsIHBoeQogICAgdW5jb25kaXRpb25hbGx5LiAgUmVtb3ZlIHRoZSB1bnVzZWQvdW50ZXN0ZWQgY29kZS4KCiAgICBjaGFuZ2UgdGhlIEdQSU8gaW5pdGlhbGl6YXRpb24gc28gdGhhdCBvbmx5IHRoZSBHUElPIHVzZWQgYXMgYW4KICAgIGludGVybmFsIHBoeSByZXNldCAoaGFyZHdpcmVkIGluIHRoZSBjaGlwKSBpcyBzZXQgYXMgYW4gb3V0cHV0LiAgVGhlCiAgICByZW1haW5pbmcgR1BJTyBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgYm9hcmQgc3BlY2lmaWMgY29kZSB0byBwcmV2ZW50CiAgICBwb3NzaWJsZSBkcml2ZSBjb25mbGljdHMuICBTZXQgYXMgaW5wdXRzIGZvciBzYWZldHkuCgogICAgcmVwbGFjZSBhIGZldyBtYWdpYyBudW1iZXJzIHdpdGggZGVmaW5lcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYTE1NzNkYjBjMDdjOGJhOTllOWMzNzNiYjA3ZWNkNmY1OWRhNjcyYwpBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CVR1ZSBBdWcgMjYgMTE6MTc6NDggMjAwOCAtMDUwMAoKICAgIFN0YW5kYXJkaXplIGJvb3RwLCB0ZnRwYm9vdCwgcmFycGJvb3QsIGRoY3AsIGFuZCBuZnMgY29tbWFuZCBkZXNjcmlwdGlvbnMKCiAgICBjbWRfbmV0LmMgY29tbWFuZCBkZXNjcmlwdGlvbnMgd2VyZSB1cGRhdGVkIHRvIGRlc2NyaWJlIHRoZSBvcHRpb25hbAogICAgaG9zdElQYWRkciBhcmd1bWVudC4gIFRoZSBkaGNwIGNvbW1hbmQgaGVscCBtZXNzYWdlIHdhcyBhbHNvIHVwZGF0ZWQKICAgIHRvIG1vcmUgY2xvc2VseSByZWZsZWN0IHRoZSBvdGhlciBjb21tYW5kcyBpbiBjbWRfbmV0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1MWRmZTEzODJlYmFmNjkxNDg1YmFkZmEwZWE1ZTc1YjA3MTA1MzFiCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVdlZCBBdWcgMjAgMTE6MzA6MjggMjAwOCArMDIwMAoKICAgIEZpeCBib2d1cyBlcnJvciBtZXNzYWdlIGluIHRoZSBESENQIGhhbmRsZXIKCiAgICBUaGUgREhDUCBoYW5kbGVyIGhhcyAxIHN0YXRlIHRoYXQgaXMgbm90IGxpc3RlZCBpbiB0aGlzIGNhc2UsIGNhdXNpbmcgYQogICAgZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlcmUgaXMgYWN0dWFsbHkgbm8gZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNjEzNjU1MDFhMGUyY2FlOWMxZGYyODE4YjdiNWIzZjUyYzQ1MGQxOApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglXZWQgQXVnIDIwIDExOjMwOjI3IDIwMDggKzAyMDAKCiAgICBGaXggY29tcGlsZSBlcnJvciB3aGVuIENPTkZJR19CT09UUF9SQU5ET01fREVMQVkgaXMgc2V0LgoKICAgIFRoZSBvcHRpb24gQ09ORklHX0JPT1RQX1JBTkRPTV9ERUxBWSBkb2VzIG5vdCBjb21waWxlLCBiZWNhdXNlIG9mIGEKICAgIG1pc3NpbmcgZXh0ZXJuIGluc2lkZSB0aGUgbmV0L2Jvb3RwLmggaGVhZGVyCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDE4MDNmN2Y5MWZmMzVjYTQwMjI1OTA2NWRmNzU1NzEwN2RjZjI4YTIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDIxOjI2OjMyIDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIEZFQyBCdWZmZXIgZGVzY3JpcHRvcnMgaW4gU1JBTQoKICAgIEFkZCBGRUMgQnVmZmVyIGRlc2NyaXB0b3JzIGFuZCBkYXRhIGJ1ZmZlciBpbiBTUkFNIGZvcgogICAgZmFzdGVyIGV4ZWN1dGlvbiBhbmQgYWNjZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDQyOWJlMjdjZTE5NTIxMGQ0YjlkZWNmOWU4NjdiOWNhNjE1NWE4N2QKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDIxIDIzOjU1OjExIDIwMDggKzAwMDAKCiAgICBGaXggQ29sZEZpcmUgRkVDIHdhcm5pbmcgbWVzc2FnZXMKCiAgICBUeXBlcyBtaXNtYXRjaCBhbmQgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgaWNhY2hlX2ludmFsaWQoKQogICAgd2FybmluZyBtZXNzYWdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDZhMDAyMTcxMDk4ZTk2OGJkNWIzNjIzNDdkMjgzMTIyNGZhYjYwNDgKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglTYXQgSnVsIDEyIDAwOjE3OjUwIDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBTS0dFIEV0aGVybmV0IGRyaXZlciB0byBib2FyZCBjb2RlLgoKICAgIFRoZSBvbmx5IGJvYXJkIHVzaW5nIHRoaXMgZHJpdmVyIGlzIHRoZSBTTDgyNDUgYm9hcmQuCiAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIGZvciB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Mzc5ZjQyYmM3NDVlYjllNGNhNTUxYTMwZmQyZDBhNjNmNzQwZDc1CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEp1bCAxMiAwMDowODo0NSAyMDA4IC0wNzAwCgogICAgTW92ZWQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUgZm9yIFNLOTggRXRoZXJuZXQgZHJpdmVyCgogICAgQnJ1dGUtZm9yY2UgcmVtb3ZhbCBvZiAjaWZkZWZzLiAgRGlkbid0IHRvdWNoIHRoZSBjb2RlLgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2NWQzZDk5YzI4ZGMzNjNkMTVlYWVlNzgyMjVmZjY0M2RmNDk5Yjk3CkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAyMzo0MjoxOSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgVUxJNTI2WCBFdGhlcm5ldCBkcml2ZXIgdG8gYm9hcmQgY29kZS4KCiAgICBUaGUgb25seSBib2FyZCB1c2luZyB0aGlzIGRyaXZlciBpcyB0aGUgRnJlZXNjYWxlIE1QQzg2MTBIUENEIGJvYXJkLgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTE0OTQ3MzEzYTcxMGY1ZGNmMDZiZWFmN2YyYWEyNGYxZWJjY2U0ZgpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMjM6MTU6MjggMjAwOCAtMDcwMAoKICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEJsYWNrZmluIEVNQUMgRXRoZXJuZXQgY29udHJvbGxlciB0byBib2FyZF9ldGhfaW5pdCgpCgogICAgQWRkZWQgYm9hcmRfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBiZjUzNy1zdGFtcCBib2FyZC4KICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBCbGFja2luIEVNQUMgZHJpdmVyIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmYzM2M2NlMzU0MDhmMzQ4Y2FjY2VkNjg1MDVmMzc0N2E1M2UzZDdjCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDAxOjA0OjE5IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBHUkVUSCBFdGhlcm5ldCBkcml2ZXIgdG8gQ1BVIGRpcmVjdG9yeQoKICAgIEFkZGVkIGEgY3B1X2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gbGVvbjIvbGVvbjMgQ1BVIGRpcmVjdG9yaWVzIGFuZAogICAgcmVtb3ZlZCBjb2RlIGZyb20gbmV0L2V0aC5jCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4Njg4MmI4MDc3MTMwOWJjZWIxMWM2YWNjZmQ3ZjZmOTBhZGU4YmZjCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVHVlIEF1ZyAyNiAyMjoxNjoyNSAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTUNGRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5CgogICAgQWRkZWQgYSBjcHVfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBjb2xkZmlyZSBDUFUgZGlyZWN0b3JpZXMgYW5kCiAgICByZW1vdmVkIGNvZGUgZnJvbSBuZXQvZXRoLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGIzMWRhODhiOWMxNjBkODBkNDJhNTljYmJiMzFlMjRmMjcxODRkNWMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglUdWUgQXVnIDI2IDIyOjEyOjM2IDIwMDggLTA3MDAKCiAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBGU0xfTUNETUFGRUMgRXRoZXJuZXQgZHJpdmVyIHRvIENQVSBkaXJlY3RvcnkKCiAgICBBZGRlZCBhIGNwdV9ldGhfaW5pdCgpIGZ1bmN0aW9uIHRvIGNwdS9tY2Y1NDd4Xzh4IGRpcmVjdG9yeSBhbmQKICAgIHJlbW92ZWQgY29kZSBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYjU3MTBkOTk3NGY2ZjBmM2RkYjRlNjdkNmNjY2MyNjJhYjM3MDQ5ZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzggMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IFJlbW92ZSBvbGQgU1BEIHN1cHBvcnQgZnJvbSBjcHUvbXBjODZ4eAoKICAgIEFsbCA4Nnh4IGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkIHRvIHRoZSBuZXcgY29kZSBzbyB3ZSBjYW4KICAgIHJlbW92ZSB0aGUgb2xkIFNQRCBERFIgc2V0dXAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDliZDRlNTkxMWI3NTA4Mzc1MTU0NjZiYzc0NDkwODc2OThiODhlMGUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjM3IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg2NDFEIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5YWExYTczNDgzZTFhYzJiZDU2ZDU1MjNhYmZjMzk3MGVlODJjNzcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjM2IDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg2MTBIUENEIHRvIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA2YThlNTY5MjkzM2U4ZTZkNmU1YmE3ZTU5NGY0OWRkNmQ0YzNhMjYzCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozNSAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogQ29udmVydCBNUEM4NjQxSFBDTiB0byBuZXcgRERSIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDZmZjRmMTEwMGVhNjRhMDFkMjFjYzAwOGNlODVhYzE1ZWIxODIxZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzQgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IEFkZCA4Nnh4IHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIzM2ZkZDUwMmE2YzIyN2Y0NzYyMTJiMzA5NzY1M2FkNDhkN2UyNTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDI2IDE1OjAxOjMyIDIwMDggLTA1MDAKCiAgICBGU0wgRERSOiBBZGQgRERSMiBESU1NIHBhcmFtdGVyIHN1cHBvcnQKCiAgICBDb21wdXRlIERJTU0gcGFyYW1ldGVycyBiYXNlZCB1cG9uIHRoZSBTUEQgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDVjMDVhMjM2M2E2YWMxMWUwZTQwNTkyNjAzNDU0NmZmYWQ3MWZhZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzAgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IEFkZCBERFIxIERJTU0gcGFyYW10ZXIgc3VwcG9ydAoKICAgIENvbXB1dGUgRElNTSBwYXJhbWV0ZXJzIGJhc2VkIHVwb24gdGhlIFNQRCBpbmZvcm1hdGlvbiBpbiBzcGQuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNThlNWU5YWZmMTQ3ZThjN2UyYmMxNDA2YmY5Mzg0ZjY1ZjAyMGZmYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjkgMjAwOCAtMDUwMAoKICAgIEZTTCBERFI6IFJld3JpdGUgdGhlIEZTTCBtcGM4eHh4IEREUiBjb250cm9sbGVyIHNldHVwIGNvZGUuCgogICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIHJld3JpdGUgaXQgdG8gYmUgYWJsZSB0byBzaGFyZSB0aGUgc2FtZQogICAgaW5pdGlhbGl6YXRpb24gY29kZSBvbiBhbGwgRlNMIFBvd2VyUEMgcHJvZHVjdHMgdGhhdCBoYXZlIEREUgogICAgY29udHJvbGxlcnMuICAoODN4eCwgODV4eCwgODZ4eCkuCgogICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gdGhlIGZvbGxvd2luZyBzdGVwczoKCUdFVF9TUEQKCUNPTVBVVEVfRElNTV9QQVJNUwoJQ09NUFVURV9DT01NT05fUEFSTVMKCUdBVEhFUl9PUFRTCglBU1NJR05fQUREUkVTU0VTCglDT01QVVRFX1JFR1MKCVBST0dSQU1fUkVHUwoKICAgIFRoaXMgYWxsb3dzIHVzIHRvIHNoYXJlIG1vcmUgY29kZSBhbiBlYXNpbHkgYWxsb3cgZm9yIGJvYXJkIHNwZWNpZmljIGNvZGUKICAgIG92ZXJyaWRlcy4KCiAgICBBZGRpdGlvbmFsbHkgdGhpcyBjb2RlIGJhc2UgYWRkcyBzdXBwb3J0IGZvciA+NEcgb2YgRERSIGFuZCBwcm92aWRlcyBhCiAgICBmb3VuZGF0aW9uIGZvciBzdXBwb3J0aW5nIGludGVybGVhdmluZyBvbiBwcm9jZXNzb3JzIHdpdGggbW9yZSB0aGFuIG9uZQogICAgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNzg0ZTMyYjRiY2UwMDEzOTgzNTA2YjExYWY0Yjg1YjhjYTNkMzZlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMToyOCAyMDA4IC0wNTAwCgogICAgRlNMIEREUjogUHJvdmlkZSBhIGdlbmVyaWMgc2V0X2Rkcl9sYXdzKCkKCiAgICBQcm92aWRlIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBzZXR1cCB0aGUgbGFzdCBhdmFpbGFibGUKICAgIExBV3MgKHVwdG8gMikgZm9yIEREUi4gIFVzZWZ1bCBmb3IgU1BEL2R5YW5taWMgRERSIHNldHRpbmcgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDBmMmNiZTNmNWVkZGJkZjM4NDgyNjVmMzVlNGY3MTQ0MzQ5MjljZmYKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjcgMjAwOCAtMDUwMAoKICAgIEFkZCBwcm9wZXIgU1BEIGRlZmluaXRpb25zIGZvciBERFIxLzIvMwoKICAgIEFsc28gYWRkcyBoZWxwZXIgZnVuY3Rpb25zIGZvciBERFIxLzIgdG8gdmVyaWZ5IHRoZSBjaGVja3N1bS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI4NWRiNzQ3MTZjNzI0YWU4YTBmZjE3Nzg3OGZkMDlhNzQ0MjhjN2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXVnIDI3IDAxOjAyOjQ4IDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhZGYyMmI2NmQ4YmYwNWJkNDZlMDk4Y2Y3MWU2ZGNhMjliMzBhYTdiCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTkgMTA6MDg6NDkgMjAwOCArMDIwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBtdWFzMzAwMSBib2FyZCAoTVBDODI3MCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzMjIwOThiZmYzMjQxMGQyYTAwMDMxNjQ5YjQ3YzRlYzkwYTY2ZDlhCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJVHVlIEF1ZyAxOSAwODozMToxOCAyMDA4ICswNTMwCgogICAgY29tbW9uL2NtZF9sb2FkLmMgY2xlYW51cCAtIHJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCgogICAgLSBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBvc19kYXRhX2NvdW50LgogICAgLSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHouCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IDMwNjYyMGI3NjJhNGY5ZmE2Njc4NTY4YWQyZTg3NzJkZWMxNDUyMDgKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBBdWcgMTggMTM6MzU6MjcgMjAwOCArMDIwMAoKICAgIHJlbW92ZSBNVlMxIGJvYXJkCgogICAgTVZTMSBib2FyZCBoYXMgcmVhY2hlZCBlbmQtb2YtbGlmZSBhbmQgY2FuIGJlIHJlbW92ZWQgY29tcGxldGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgNDBkN2U5OWQzNzRiYTBhMGEyOWNkMWE4YmE0MGQzYjdjMmMxNzVjNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDUgMjAwOCAtMDUwMAoKICAgIGJvb3RtOiByZWZhY3RvciBkb19yZXNldCBhbmQgb3MgYm9vdCBmdW5jdGlvbiBhcmdzCgogICAgVGhlcmUgaXMgbm8gbmVlZCBmb3IgZWFjaCBPUyBzcGVjaWZpYyBmdW5jdGlvbiB0byBjYWxsIGRvX3Jlc2V0KCkgd2UKICAgIGNhbiBqdXN0IGRvIGl0IG9uY2UgaW4gYm9vdG0uIFRoaXMgbWVhbnMgaXRzIGZlYXNpYmxlIG9uIGFuIGVycm9yIGZvcgogICAgdGhlIE9TIGJvb3QgZnVuY3Rpb24gdG8gcmV0dXJuLgoKICAgIEFsc28sIHJlbW92ZSBwYXNzaW5nIGluIGNtZF90YmxfdCBhcyBpdHMgbm90IG5lZWRlZCBieSB0aGUgT1MgYm9vdAogICAgZnVuY3Rpb25zLglmbGFnIGlzbid0IGN1cnJlbnRseSB1c2VkIGJ1dCBtaWdodCBiZSBpbiB0aGUgZnV0dXJlIHNvCiAgICB3ZSBsZWZ0IGl0IGFsb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDBhZmFjMjJhOWM2MDJlNTVjNTAxYzgwMGYxYzA2NDMyNDcxMWI1NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDQgMjAwOCAtMDUwMAoKICAgIGZkdDogQWRkZWQgcmVzaXplIGNvbW1hbmQKCiAgICBSZXNpemUgdGhlIGZkdCB0byBzaXplICsgcGFkZGluZyB0byA0ayBib3VuZGFyeQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmExYTJjYjZlMmI4N2VlNTUwZTZmMjdiNjQ3ZDIzMzMxZGZkNWUxYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDMgMjAwOCAtMDUwMAoKICAgIGZkdDogcmVmYWN0b3IgaW5pdHJkIHJlbGF0ZWQgY29kZQoKICAgIENyZWF0ZWQgYSBuZXcgZmR0X2luaXRyZCgpIHRvIGRlYWwgd2l0aCBzZXR0aW5nIHRoZSBpbml0cmQgcHJvcGVydGllcwogICAgaW4gdGhlIGRldmljZSB0cmVlIGFuZCBmaXhpbmcgdXAgdGhlIG1lbSByZXNlcnZlLiAgV2UgY2FuIHVzZSB0aGlzCiAgICBib3RoIGluIHRoZSBjaG9vc2VuIG5vZGUgaGFuZGxpbmcgYW5kIGxldHMgdXMgcmVtb3ZlIHNvbWUgZHVwbGljYXRlZAogICAgY29kZSB3aGVuIHdlIGZpeHVwIHRoZSBpbml0cmQgaW5mbyBpbiBib290bSBvbiBQUEMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzMDgyZDIzNDhjOGUxMzM0MmY1ZmRkMTBlOWIzZjc0MDgwNjJkYmY5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MiAyMDA4IC0wNTAwCgogICAgZmR0OiByZWZhY3RvciBmZHQgcmVzaXplIGNvZGUKCiAgICBNb3ZlIHRoZSBmZHQgcmVzaXppbmcgY29kZSBvdXQgb2YgcHBjIHNwZWNpZmljIGJvb3QgY29kZSBhbmQgaW50bwogICAgY29tbW9uIGZkdCBzdXBwb3J0IGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzOTZmNjM1YjhmZjNjY2JjMzhkNzVkNWVkYTk4NDQ0YzY0NjY4MTBhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MSAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIGltYWdlIGRldGVjdGlvbiBhbmQgb3MgbG9hZCBzdGVwcwoKICAgIENyZWF0ZWQgYSBib290bV9zdGFydCgpIHRoYXQgaGFuZGxlcyB0aGUgcGFyc2luZyBhbmQgZGV0ZWN0aW9uIG9mIGFsbAogICAgdGhlIGltYWdlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYm9vdG0gY29tbWFuZCAoT1MsIHJhbWRpc2ssIGZkdCkuCiAgICBBcyBwYXJ0IG9mIHRoaXMgd2Ugbm93IHRyYWN0IGFsbCB0aGUgcmVsZXZhbnQgaW1hZ2Ugb2Zmc2V0cyBpbiB0aGUKICAgIGJvb3RtX2hlYWRlcnNfdCBzdHJ1Y3QuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBoYXZlIGFsbCB0aGUgbmVlZGVkCiAgICBzdGF0ZSBmb3IgZnV0dXJlIHN1Yi1jb21tYW5kcyBhbmQgbGV0cyB1cyByZWR1Y2UgYSBiaXQgb2YgYXJjaAogICAgc3BlY2lmaWMgY29kZSBvbiBTUEFSQy4KCiAgICBDcmVhdGVkIGEgYm9vdG1fbG9hZF9vcygpIHRoYXQgZGVhbHMgd2l0aCBkZWNvbXByZXNzaW9uIGFuZCBsb2FkaW5nCiAgICB0aGUgT1MgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlOTA2Y2ZhZTA4ZThjYzI0NDdmNTliMWJjNGMyMmFiOWMzYzI4NmQyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0MCAyMDA4IC0wNTAwCgogICAgYm9vdG06IG1vdmUgbG1iIGludG8gdGhlIGJvb3RtX2hlYWRlcnNfdCBzdHJ1Y3R1cmUKCiAgICBUbyBhbGxvdyBmb3IgcGVyc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIGZ1dHVyZSBib290bSBzdWJjb21tYW5kcyB3ZQogICAgbmVlZCB0aGUgbG1iIHRvIGV4aXN0IGluIGEgZ2xvYmFsIHN0YXRlLgogICAgTW92aW5nIGl0IGludG8gdGhlIGJvb3RtX2hlYWRlcnNfdCBhbGxvd3MgdXMgdG8gZG8gdGhhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU0ZjljODY2OTEzMDliMmY5MTlmNTY3ZjkyNTViOGJjYWQyYzc2NTEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgQXVnIDE1IDA4OjI0OjM5IDIwMDggLTA1MDAKCiAgICBib290bTogU2V0IHdvcmtpbmcgZmR0IGFkZHJlc3MgYXMgcGFydCBvZiB0aGUgYm9vdG0gZmxvdwoKICAgIFNldCB0aGUgZmR0IHdvcmtpbmcgYWRkcmVzcyBzbyAiZmR0IEZPTyIgY29tbWFuZHMgY2FuIGJlIHVzZWQgYXMgcGFydAogICAgb2YgdGhlIGJvb3RtIGZsb3cuCUFsc28gc2V0IGFuIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiZmR0YWRkciIKICAgIHdpdGggdGhlIHZhbHVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDZhMDk5MThmMzkwMzQ1MDMxM2UyMDQ3YTljYzI1OGJmNTg3MmY0NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzggMjAwOCAtMDUwMAoKICAgIGJvb3RtOiByZWZhY3RvciBmZHQgbG9jYXRpbmcgYW5kIHJlbG9jYXRpb24gY29kZQoKICAgIE1vdmUgdGhlIGNvZGUgdGhhdCBoYW5kbGVzIGZpbmRpbmcgYSBkZXZpY2UgdHJlZSBibG9iIGFuZCByZWxvY2F0aW5nCiAgICBpdCAoaWYgbmVlZGVkKSBpbnRvIGNvbW1vbiBjb2RlIHNvIGFsbCBhcmNoJ3MgaGF2ZSBhY2Nlc3MgdG8gaXQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjNGY5NDE5YzZiNTQ5NThlMGVkZGJjYmM5ZTVhNGE3YjdlYzk5ODY1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNyAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIHJhbWRpc2sgbG9jYXRpbmcgY29kZQoKICAgIE1vdmUgZGV0ZXJtaW5nIGlmIHdlIGhhdmUgYSByYW1kaXNrIGFuZCB3aGVyZSBpdHMgbG9jYXRlZCBpbnRvIHRoZQogICAgY29tbW9uIGNvZGUuIEtlZXAgdHJhY2sgb2YgdGhlIHJhbWRpc2sgc3RhcnQgYW5kIGVuZCBpbiB0aGUKICAgIGJvb3RtX2hlYWRlcnNfdCBpbWFnZSBzdHJ1Y3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjMTYwYTk1NDQ3NDNlODBlODg4OWVkYjIyNzU1MzhlNzc2NGNlMzM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNiAyMDA4IC0wNTAwCgogICAgYm9vdG06IHJlZmFjdG9yIGVudHJ5IHBvaW50IGNvZGUKCiAgICBNb3ZlIGVudHJ5IHBvaW50IGNvZGUgb3V0IG9mIGVhY2ggYXJjaCBhbmQgaW50byBjb21tb24gY29kZS4KICAgIEtlZXAgdGhlIGVudHJ5IHBvaW50IGluIHRoZSBib290bV9oZWFkZXJzX3QgaW1hZ2VzIHN0cnVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIwMjIwZDIyYjlmNDE0NDYyODg1ODhjZDJlNDU3ZTAwNzdhMThiZWQKQXV0aG9yOiBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAxMTo0NDo1NyAyMDA4IC0wNzAwCgogICAgbXBjNzQ0OGhwYzI6IEZpeCBQQ0kgSS9PIHNwYWNlIG1hcHBpbmcuCgogICAgUENJIEkvTyBzcGFjZSBpcyBjdXJyZW50bHkgbWFwcGVkIDE6MSBhdCAweEZBMDAwMDAwLiBMaW51eCByZXF1aXJlcwogICAgUENJIEkvTyBzcGFjZSB0byBzdGFydCBhdCAwIG9uIHRoZSBQQ0kgYnVzLiBUaGlzIHBhdGNoIG1hcHMgUENJIEkvTwogICAgc3BhY2Ugc3VjaCB0aGF0IDB4RkEwMDAwMDAgaW4gdGhlIHByb2Nlc3NvcidzIGFkZHJlc3Mgc3BhY2UgbWFwcyB0byAwCiAgICBvbiB0aGUgUENJIEkvTyBidXMuCgogICAgU2lnbmVkLW9mZi1ieSBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjRlMDc1MjBiYmI1NDY3YWQ3MmViOTJhNWM5MTc3ZDI3OTdiOWUzMApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAxMyAxODoxMDoyNiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBTcGVjaWZ5IG1haW50YWluZXJzIGZvciBpLk1YMzEtYmFzZWQgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MWU0NmUyOGZkYTRiYmRmNTE0OWFjN2Y2N2Q2MmZjYzhkZjRkYTYzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAyNiAxNTowMToyOCAyMDA4ICswMjAwCgogICAgQURTNTEyMTogYWRqdXN0IGltYWdlIGFkZHJlc3NlcyBpbiBSQU0gYW5kIGZsYXNoCgogICAgVXNlIHRoZSBzYW1lIG1hcHBpbmcgaW4gZmxhc2ggYXMgdXNlZCBieSBMaW51eAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTlmMTAxNDEyYzE2ZWRlZTlmZDU1ZGI0MDM5ZTFkNjhhODMzYjI4YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMjYgMTM6MTQ6MzQgMjAwOCArMDIwMAoKICAgIGNtZF9tZW0uYzogRml4IGhlbHAgbWVzc2FnZSBhbGlnbm1lbnQKCiAgICBCdWcgd2FzIGludHJvY2VkIGJ5ICJCaWcgd2hpdGUtc3BhY2UgY2xlYW51cCIgKDUzNjc3ZWYxKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWE5ZWViNzhiODI1YmZhZGUzMWQ3NjA2YTJmZTNiOWVjYTllMzViZQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEF1ZyAyMCAxMToxMTo1MiAyMDA4ICswMjAwCgogICAgY2hhbmdlIG12QkwtTTcgZGVmYXVsdCBlbnYgYW5kIG1vdmUgdG8gdmVuZG9yIHN1YmRpcgoKICAgIGZpeCBtdkJMLU03IGNvbmZpZyBhbmQgbW92ZSB0byBtYXRyaXhfdmlzaW9uIHN1YmRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDAyZDI3Y2FmMjZlN2ViOTEzZDQ3NGQzYTkxZjY3ZDU2YzhjMzFkNQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDIyIDIzOjUyOjQwIDIwMDggLTA3MDAKCiAgICBNUEM4M1hYOiBBZGQgbWlzY2VsbGFuZW91cyByZWdpc3RlcnMgYW5kICNkZWZpbmVzIHRvIHN1cHBvcnQgTVBDODN4eCBmYW1pbHkgZGV2aWNlcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBlbGVtZW50cyB0byB0aGUgODN4eCBzeXNjb25mIHN0cnVjdHVyZSBhbmQgI2RlZmluZSB2YWx1ZXMgdGhhdCBhcmUgdXNlZAogICAgYnkgbXBjODN4eCBmYW1pbHkgZGV2aWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDQ3YWQ1NzY4YWJkYTY2OWFjMGU3ZjQ2ZmNkYjYyZmJlODI4ZDYzNwpBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglGcmkgQXVnIDIyIDExOjAwOjE1IDIwMDggLTA3MDAKCiAgICBNUEM4MzQ5RU1EUzogQWRkIFBDSSBBZ2VudCAoUENJU0xBVkUpIHN1cHBvcnQKCiAgICBBZGQgdGhlIGFiaWxpdHkgZm9yIHRoZSBNUEM4MzQ5RU1EUyB0byBydW4gaW4gUENJIEFnZW50IG1vZGUsIGFjdGluZyBhcyBhCiAgICBQQ0kgY2FyZCByYXRoZXIgdGhhbiBhIGhvc3QgY29tcHV0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRmZjlhZWE5ZDZiNTYwMjY4M2E5MjA5NTFlZjg5Njk5NjQzOGFmNjIKQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KRGF0ZToJRnJpIEF1ZyAyMiAxMTowMDoxNCAyMDA4IC0wNzAwCgogICAgbXBjODN4eDogYWRkIFBDSVNMQVZFIHN1cHBvcnQgdG8gODNYWF9HRU5FUklDX1BDSSBzZXR1cCBjb2RlCgogICAgVGhpcyBhZGRzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHVubG9jayB0aGUgUENJIGNvbmZpZ3VyYXRpb24gYml0LCBzbyB0aGF0CiAgICBhbnkgZXh0cmEgUENJIHNldHVwIChzdWNoIGFzIG91dGJvdW5kIHdpbmRvd3MsIGV0Yy4pIGNhbiBiZSBkb25lIGFmdGVyCiAgICB1c2luZyB0aGUgODNYWF9HRU5FUklDX1BDSSBjb2RlIHRvIHNldCB1cCB0aGUgUENJIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTYyMzM4ZTFmY2RlMjMxY2E0ZDU2MmU1ZWJkNzg1OTQ1NjczMTY5MQpBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgpEYXRlOglGcmkgQXVnIDIyIDExOjAwOjEzIDIwMDggLTA3MDAKCiAgICBNUEM4MzQ5RU1EUzogdXNlIDgzWFhfR0VORVJJQ19QQ0kgc2V0dXAgY29kZQoKICAgIENoYW5nZSB0aGUgTVBDODM0OUVNRFMgYm9hcmQgdG8gdXNlIHRoZSBnZW5lcmljIFBDSSBpbml0aWFsaXphdGlvbiBjb2RlCiAgICBmb3IgdGhlIG1wYzgzeHggY3B1LgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNGU1NWE0OTQxZThiYTQ2YmMwNjAyMGIyNzQ3OTI4YWRmOGZkZWU3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyNSAxNDo1MzowOSAyMDA4IC0wNTAwCgogICAgZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNDlkMTBjZjAyN2QwNTllZTE1YzI2MjAxMGEwNWNkYWVjMDk2MWUxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAyNSAyMzo0NTo0MSAyMDA4ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZHRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGQ1NmU4ZGVhNjcwNzU3YzgwMWE2YTY1NTMxZjAyYThmOTgxY2UxZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyMCAyMDoyOTozOCAyMDA4ICswMjAwCgogICAgUlRDOiBGaXggTWFrZWZpbGUgcHJvYmxlbSB3aXRoIENPQkpTLSQoQ09ORklHX1JUQ19EUzEzMDcgfHwgQ09ORklHX1JUQ19EUzEzMzgpCgogICAgVGhpcyAifHwiIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLiBOb3cgdXNpbmcgdGhlIGlkZWEgc3VnZ2VzdCBieSBTY290dCBXb29kCiAgICB0byBjb21iaW5lIGJvdGggY29uZmlnIG9wdGlvbnMgaW50byBvbmUgbGluZS4gVGhpcyBldmVuIGFsbG93cyBkZWZpbmluZwogICAgYm90aCBvcHRpb25zIGFuZCBub3QgZ2VuZXJhdGluZyB0aGUgdGFyZ2V0IG9iamVjdCB0d2ljZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDc5ZWRiOTEzZGJhZTE0N2I1MGE0ODhjZjAyZTAzZjQ3M2ZjNWYyOApBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJRnJpIEp1bCA0IDE2OjUwOjA1IDIwMDggKzAyMDAKCiAgICBNWDMxOiBmaXggYml0IG1hc2tzIGluIGZ1bmN0aW9uIG14MzFfZGVjb2RlX3BsbCgpCgogICAgQml0cyBNUENUTFtNRk5dIGFuZCBNUENUTFtNRkRdIHdlcmUgbm90IGZ1bGx5IGNvdmVyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgoKY29tbWl0IGU4ZjEyMDdiYmYyZGY2ZmI2OTNlZTFhYTMzMjliMjAxNGM5MmU1ZTYKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglNb24gQXVnIDI1IDExOjExOjM0IDIwMDggKzAyMDAKCiAgICBDb3JyZWN0IEFSTSBWZXJzYXRpbGUgVGltZXIgSW5pdGlhbGl6YXRpb24KCiAgICAgLSBBY2NvcmRpbmcgdG8gQVJNIER1YWwtVGltZXIgTW9kdWxlIChTUDgwNCkgVFJNIChBUk0gRERJMDI3MSksCiAgICAgICAtLSBUaW1lciBWYWx1ZSBSZWdpc3RlciBAIFRJTUVSIEJhc2UgKyA0IGlzIFJlYWQtb25seS4KICAgICAgIC0tIFByZXNjYWxlIFZhbHVlIChCaXRzIDMtMiBvZiBUSU1FUiBDb250cm9sIHJlZ2lzdGVyKQoJY2FuIG9ubHkgYmUgb25lIG9mIDAwLDAxLDEwLiAxMSBpcyB1bmRlZmluZWQuCiAgICAgICAtLSBDRkdfSFogZm9yIFZlcnNhdGlsZSBib2FyZCBpcyBzZXQgdG8KCSNkZWZpbmUgQ0ZHX0haCQkoMTAwMDAwMCAvIDI1NikKCVNvIFByZXNjYWxlIGJpdHMgaXMgc2V0IHRvIGluZGljYXRlCgktIDggU3RhZ2VzIG9mIFByZXNjYWxlLCBDbG9jayBkaXZpZGVkIGJ5IDI1NgogICAgIC0gVGhlIFRpbWVyIENvbnRyb2wgUmVnaXN0ZXIgaGFzIG9uZSBVbmRlZmluZWQvU2hvdWxkbid0IFVzZSBCaXQKICAgICAgIFNvIHdlIHNob3VsZCBkbyByZWFkL21vZGlmeS93cml0ZSBPcGVyYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgNTM1Y2ZhNGYzZGU4NmNmNDhkNmMwYWYxZGFmMzNhZWJkY2EwODlmOQpBdXRob3I6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CkRhdGU6CU1vbiBBdWcgMjUgMTE6MzA6MjkgMjAwOCArMDIwMAoKICAgIEFkZCBBUk0gQU1CQSBQTDAzMSBSVEMgU3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgZTM5NDExNjc0NjY5Y2M4ODBlMWVjNGE4Y2E0Nzk0ZmIxNWMzM2E0NQpBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgQXVnIDE5IDE2OjIxOjAzIDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogUmVtb3ZlZCByZWR1bmRhbnQgTkFORCBpbml0aWFsaXphdGlvbiBjb2RlLgoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmVkIHJlZHVuZGFudCBOQU5EIGluaXRpYWxpemF0aW9uIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgYjNmYjY2M2IyMGQ5OTVjYTQxMzI3ZGI4NzdkZGIxNjgyNzliM2Y2MgpBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgQXVnIDE5IDE2OjIxOjAwIDIwMDggLTA0MDAKCiAgICBBUk0gRGFWaW5jaTogRml4IGNvbXBpbGF0aW9uIGVycm9yIHdpdGggbmV3IE1URCBjb2RlLgoKICAgIEFSTSBEYVZpbmNpOiBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBuZXcgTVREIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgMTA5YzMwZmI4ZWRlYTFhMTVkMzdhNmNlNzg3Y2Q1ZmFmMzNkOGU0MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBBdWcgMjIgMTQ6Mzc6MDUgMjAwOCAtMDQwMAoKICAgIEFkZCBub3RlIG9uIGRlcmVmZXJlbmNpbmcgL2FsaWFzZXMgcG9pbnRlcnMKCiAgICBSZXBsYWNlIHRoZSAibXVzdCBxdW90ZSBzcGVjaWFsIGNoYXJhY3RlcnMiIG5vdGUgd2l0aCBhIGhpbnQgb24KICAgIGhvdyB0byBkZXJlZmVyZW5jZSAvYWxpYXNlcyBwb2ludGVycyBieSBvbWl0dGluZyB0aGUgbGVhZGluZyAiLyIuCiAgICBUaGlzIGZlYXR1cmUgd2FzIGludHJvZHVjZWQgYnkgS3VtYXIgR2FsYSBhcyBhIGxpYmZkdCBlbmhhbmNlbWVudAogICAgaW4gY29tbWl0IGVkMDM1NzA4MjM1MzMyYzNjMTE3ZWUzYmIxYTQyNjA2M2YwM2NmY2IuCgogICAgRXhhbXBsZToKCiAgICA9PiBmZHQgcHJpbnQgL2FsaWFzZXMKICAgIGFsaWFzZXMgewoJICAgIGV0aGVybmV0MCA9ICIvcWVAZTAxMDAwMDAvdWNjQDIwMDAiOwoJICAgIGV0aGVybmV0MSA9ICIvcWVAZTAxMDAwMDAvdWNjQDMwMDAiOwoJICAgIHNlcmlhbDAgPSAiL3NvYzgzNjBAZTAwMDAwMDAvc2VyaWFsQDQ1MDAiOwoJICAgIHNlcmlhbDEgPSAiL3NvYzgzNjBAZTAwMDAwMDAvc2VyaWFsQDQ2MDAiOwoJICAgIHBjaTAgPSAiL3BjaUBlMDAwODUwMCI7CiAgICB9OwogICAgPT4gZmR0IHByaW50IGV0aGVybmV0MAogICAgdWNjQDIwMDAgewoJICAgIGRldmljZV90eXBlID0gIm5ldHdvcmsiOwoJICAgIGNvbXBhdGlibGUgPSAidWNjX2dldGgiOwoJICAgIGNlbGwtaW5kZXggPSA8MHgxPjsKCSAgICByZWcgPSA8MHgyMDAwIDB4MjAwPjsKCSAgICBpbnRlcnJ1cHRzID0gPDB4MjA+OwoJICAgIGludGVycnVwdC1wYXJlbnQgPSA8MHgyPjsKCSAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCAwMCAwMCAwMCAwMCAwMF07CgkgICAgcngtY2xvY2stbmFtZSA9ICJub25lIjsKCSAgICB0eC1jbG9jay1uYW1lID0gImNsazkiOwoJICAgIHBoeS1oYW5kbGUgPSA8MHgzPjsKCSAgICBwaHktY29ubmVjdGlvbi10eXBlID0gInJnbWlpLWlkIjsKCSAgICBwaW8taGFuZGxlID0gPDB4ND47CiAgICB9OwoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgZmVlY2EzZjU3OGI3ZjUzYzAzMmJhMjAzNjk4NzUxYzk4MmY4YmY1YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBBdWcgMTQgMDg6Mjg6MTkgMjAwOCAtMDUwMAoKICAgIGxpYmZkdDogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGFsaWFzZXMgaW4gZmR0X3BhdGhfb2Zmc2V0KCkKCiAgICBJZiB0aGUgcGF0aCBkb2Vzbid0IHN0YXJ0IHdpdGggJy8nIGNoZWNrIHRvIHNlZSBpZiBpdCBtYXRjaGVzIHNvbWUgYWxpYXMKICAgIHVuZGVyICIvYWxpYXNlcyIgYW5kIHN1YnN0aXR1dGUgdGhlIG1hdGNoaW5nIGFsaWFzIHZhbHVlIGluIHRoZSBwYXRoCiAgICBhbmQgcmV0cnkgdGhlIGxvb2t1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMDIxOTM5OWE0ZTNhOGVkYjQyOGUxOTI0ZTFhMDNkNThjY2NmOGQ4ZQpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglXZWQgQXVnIDYgMTQ6NTA6NDkgMjAwOCArMTAwMAoKICAgIGxpYmZkdDogSW1wbGVtZW50IGZkdF9nZXRfcHJvcGVydHlfbmFtZWxlbigpIGFuZCBmZHRfZ2V0cHJvcF9uYW1lbGVuKCkKCiAgICBBcyB3ZWxsIGFzIGZkdF9zdWJub2RlX29mZnNldCgpLCBsaWJmZHQgaW5jbHVkZXMgYW4KICAgIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgc3Vibm9kZSBuYW1lIHRvCiAgICBsb29rIHVwIG5vdCBhcyBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYnV0IGFzIGEgc3RyaW5nIHdpdGggYW4KICAgIGV4cGxpY2l0IGxlbmd0aC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHRoZSBjYWxsZXIgaGFzIHRoZSBuYW1lIGFzCiAgICBwYXJ0IG9mIGEgbG9uZ2VyIHN0cmluZywgc3VjaCBhcyBhIGZ1bGwgcGF0aC4KCiAgICBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGNvcnJlc3BvbmRpbmcgJ25hbWVsZW4nIHZlcnNpb25zIGZvcgogICAgZmR0X2dldF9wcm9wZXJ0eSgpIGFuZCBmZHRfZ2V0cHJvcCgpLiAgVGhlcmUgYXJlIGxlc3Mgb2J2aW91cyB1c2UKICAgIGNhc2VzIGZvciB0aGVzZSB2YXJpYW50cyBvbiBwcm9wZXJ0eSBuYW1lcywgYnV0IHRoZXJlIGFyZQogICAgY2lyY3Vtc3RhbmNlcyB3aGVyZSB0aGV5IGNhbiBiZSB1c2VmdWwgZS5nLiBsb29raW5nIHVwIHByb3BlcnR5IG5hbWVzCiAgICB3aGljaCBuZWVkIHRvIGJlIHBhcnNlZCBmcm9tIGEgbG9uZ2VyIHN0cmluZyBidWZmZXIgc3VjaCBhcyB1c2VyIGlucHV0CiAgICBvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgbG9va2luZyB1cCBhbiBhbGlhcyBpbiBhIHBhdGggd2l0aAogICAgSUVFRTEyNzUgc3R5bGUgYWxpYXNlcy4KCiAgICBTbywgc2luY2UgaXQncyB2ZXJ5IGVhc3kgdG8gaW1wbGVtZW50IHN1Y2ggdmFyaWFudHMsIHRoaXMgcGF0Y2ggZG9lcwogICAgc28uICBUaGUgb3JpZ2luYWwgTlVMLXRlcm1pbmF0ZWQgdmFyaWFudHMgYXJlLCBvZiBjb3Vyc2UsIGltcGxlbWVudGVkCiAgICBpbiB0ZXJtcyBvZiB0aGUgbmFtZWxlbiB2ZXJzaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmMTcxNzQ2ZjcwMWVhNThiZjZhNTNlODM1YjUzZDJhYWViZWUwZDgxCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVR1ZSBKdWwgMjkgMTQ6NTE6MjIgMjAwOCArMTAwMAoKICAgIGxpYmZkdDogRm9yZ290IG9uZSBmdW5jdGlvbiB3aGVuIGNsZWFuaW5nIHRoZSBuYW1lc3BhY2UKCiAgICBJbiBjb21taXQgYjZkODBhMjBmYzI5M2YzYjk5NWMzY2UxYTY3NDRhNTU3NDE5MjEyNSwgd2UgcmVuYW1lZCBhbGwKICAgIGxpYmZkdCBmdW5jdGlvbnMgdG8gYmUgcHJlZml4ZWQgd2l0aCBmZHRfIG9yIF9mZHRfIHRvIG1pbmltaXNlIHRoZQogICAgY2hhbmNlIG9mIGNvbGxpc2lvbnMgd2l0aCB0aGluZ3MgZnJvbSB3aGF0ZXZlciBwYWNrYWdlIGxpYmZkdCBpcwogICAgZW1iZWRkZWQgaW4sIHB1bGxlZCBpbnRvIHRoZSBsaWJmZHQgYnVpbGQgdmlhIHRoYXQgZW52aXJvbm1lbnQncwogICAgbGliZmR0X2Vudi5oLgoKICAgIEV4Y2VwdC4uLiBJIG1pc3NlZCBvbmUuICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHNhbWUgdHJlYXRtZW50IHRvCiAgICBfc3RyaW5nbGlzdF9jb250YWlucygpLiAgV2hpbGUgd2UncmUgYXQgaXQsIGFsc28gbWFrZSBpdCBzdGF0aWMgc2luY2UKICAgIGl0J3Mgb25seSB1c2VkIGluIHRoZSBzYW1lIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgNDYzOTBkYTE1NDExMzUxZmMzYjQ5OGJkOGMxNjE1Zjc4ZmU4MGRmMApBdXRob3I6IFdvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPgpEYXRlOglXZWQgSnVsIDkgMTE6MjI6NDQgMjAwOCArMDIwMAoKICAgIGxpYmZkdDogSW1wcm92ZSBkb2N1bWVudGF0aW9uIGluIGxpYmZkdC5oCgogICAgRml4IGEgZmV3IHR5cG9zIGFuZCBtaXN0YWtlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmcmFtIFNhbmcgPHcuc2FuZ0BwZW5ndXRyb25peC5kZT4KICAgIEFja2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmYzc3NThlZTRmNTc4Mjg3OGYyZTk2ODc2YjdiYzU2Y2ZlZTBhYzY2CkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVdlZCBKdWwgOSAxNDoxMDoyNCAyMDA4ICsxMDAwCgogICAgbGliZmR0OiBJbmNyZWFzZSBuYW1lc3BhY2UtcG9sbHV0aW9uIHBhcmFub2lhCgogICAgbGliZmR0IGlzIHN1cHBvc2VkIHRvIGVhc3kgdG8gZW1iZWQgaW4gcHJvamVjdHMgYWxsIGFuZCBzdW5kcnkuCiAgICBPZnRlbiwgaXQgd29uJ3QgYmUgcHJhY3RpY2FsIHRvIHNlcGFyYXRlIHRoZSBlbWJlZGRlZCBsaWJmZHQncwogICAgbmFtZXNwYWNlIGZyb20gdGhhdCBvZiB0aGUgc3Vycm91bmRpbmcgcHJvamVjdC4gIFdoaWNoIG1lYW5zIHRoZXJlIGNhbgogICAgYmUgbmFtZXNwYWNlIGNvbmZsaWN0cyBiZXR3ZWVuIGV2ZW4gbGliZmR0J3MgaW50ZXJuYWwvc3RhdGljIGZ1bmN0aW9ucwogICAgYW5kIGZ1bmN0aW9ucyBvciBtYWNyb3MgY29taW5nIGZyb20gdGhlIHN1cnJvdW5kaW5nIHByb2plY3QncyBoZWFkZXJzCiAgICB2aWEgbGliZmR0X2Vudi5oLgoKICAgIFRoaXMgcGF0Y2gsIHRoZXJlZm9yZSwgcmVuYW1lcyBhIGJ1bmNoIG9mIGxpYmZkdCBpbnRlcm5hbCBmdW5jdGlvbnMKICAgIGFuZCBtYWNyb3MgYW5kIG1ha2VzIGEgZmV3IG90aGVyIGNoYW5jZXMgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mCiAgICBuYW1lc3BhY2UgY29sbGlzaW9ucyB3aXRoIGVtYmVkZGluZyBwcm9qZWN0cy4gIFNwZWNpZmljYWxseToKCS0gSW50ZXJuYWwgZnVuY3Rpb25zIChldmVuIHN0YXRpYyBvbmVzKSBhcmUgbm93IG5hbWVkIF9mZHRfKigpCgoJLSBUaGUgdHlwZSBhbmQgKHN0YXRpYykgZ2xvYmFsIGZvciB0aGUgZXJyb3IgdGFibGUgaW4KCSAgICAgIGZkdF9zdHJlcnJvcigpIGdhaW4gYW4gZmR0XyBwcmVmaXgKCgktIFRoZSB1bnVzZWQgbWFjcm8gUEFMSUdOIGlzIHJlbW92ZWQKCgktIFRoZSBtZW1lcSBhbmQgc3RyZXEgbWFjcm9zIGFyZSByZW1vdmVkIGFuZCBvcGVuLWNvZGVkIGluIHRoZQoJICAgICAgdXNlcnMgKHRoZXkgd2VyZSBvbmx5IHVzZWQgb25jZSBlYWNoKQoKCS0gT3RoZXIgbWFjcm9zIGdhaW4gYW4gRkRUXyBwcmVmaXgKCgktIFRvIHNhdmUgc29tZSBvZiB0aGUgYnVsayBmcm9tIHRoZSBwcmV2aW91cyBjaGFuZ2UsIGFuCgkgICAgICBGRFRfVEFHQUxJR04oKSBtYWNybyBpcyBpbnRyb2R1Y2VkLCB3aGVyZSBGRFRfVEFHQUxJR04oeCkgPT0KCSAgICAgIEZEVF9BTElHTih4LCBGRFRfVEFHU0laRSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBjNjY4MzAyNjNhZjE5ODMxZjJiN2RiMzA3Zjc5ZDE5NDNmZWJmN2Y5CkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CU1vbiBKdWwgNyAxMDoxNDoxNSAyMDA4ICsxMDAwCgogICAgZHRjOiBFbmFibGUgYW5kIGZpeCAtV2Nhc3QtcXVhbCB3YXJuaW5ncwoKICAgIEVuYWJsaW5nIC1XY2FzdC1xdWFsIHdhcm5pbmdzIGluIGR0YyBzaG93cyB1cCBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUKICAgIHdlIGFyZSBpbmNvcnJlY3RseSBkaXNjYXJkaW5nIGEgY29uc3QgcXVhbGlmaWNhdGlvbi4gIFRoZXJlIGFyZSBhbHNvCiAgICBzb21lIHBsYWNlcyB3aGVyZSB3ZSBhcmUgaW50ZW50aW9uYWxseSBkaXNjYXJkaW5nIHRoZSAnY29uc3QnLCBhbmQgd2UKICAgIG5lZWQgYW4gdWdseSBjYXN0IHRocm91Z2ggdWludHB0cl90IHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLiAgSG93ZXZlciwKICAgIG1vc3Qgb2YgdGhlc2UgYXJlIHByZXR0eSB3ZWxsIGlzb2xhdGVkIHdpdGggdGhlICpfdygpIGZ1bmN0aW9ucy4gIFNvCiAgICBpbiB0aGUgaW50ZXJlc3RzIG9mIG1heGltdW0gc2FmZXR5IHdpdGggY29uc3QgcXVhbGlmaWNhdGlvbnMsIHRoaXMKICAgIHBhdGNoIGVuYWJsZXMgdGhlIHdhcm5pbmdzIGFuZCBmaXhlcyB0aGUgZXhpc3RpbmcgY29tcGxhaW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGVmNGU4Y2UxYmViNWI5M2FlZGRhNWE0YzFiOTBiZmQ5ODljNjc5MWUKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJTW9uIEp1bCA3IDEwOjEwOjQ4IDIwMDggKzEwMDAKCiAgICBkdGM6IEVuYWJsZSBhbmQgZml4IC1XcG9pbnRlci1hcml0aCB3YXJuaW5ncwoKICAgIFRoaXMgcGF0Y2ggdHVybnMgb24gdGhlIC1XcG9pbnRlci1hcml0aCBvcHRpb24gaW4gdGhlIGR0YyBNYWtlZmlsZSwKICAgIGFuZCBmaXhlcyB0aGUgcmVzdWx0aW5nIHdhcm5pbmdzIGR1ZSB0byB1c2luZyAodm9pZCAqKSBpbiBwb2ludGVyCiAgICBhcml0aG1ldGljLiAgV2hpbGUgY29udmVuaWVudCwgcG9pbnRlciBhcml0aG1ldGljIG9uIHZvaWQgKiBpcyBub3QKICAgIHBvcnRhYmxlLCBzbyBpdCdzIGJldHRlciB0aGF0IHdlIGF2b2lkIGl0LCBwYXJ0aWN1bGFybHkgaW4gbGliZmR0LgoKICAgIEFsc28gYWRkIG5lY2Vzc2FyeSBkZWZpbml0aW9uIG9mIHVpbnRwdHJfdCBuZWVkZWQgYnkgRGF2aWQgR2lic29uJ3MKICAgIGNoYW5nZXNldCAiZHRjOiBFbmFibGUgYW5kIGZpeCAtV3BvaW50ZXItYXJpdGggd2FybmluZ3MiICh0aGUgZGVmaW5pdGlvbgogICAgY29tZXMgZnJvbSBzdGRpbnQuaCwgd2hpY2ggdS1ib290IGRvZXNuJ3QgaGF2ZSkuIC0tIGd2YgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA1ZDRiM2QyYjMxZTU4ZmNiMmQ0YmQxMGFmNzYyZjVmZjQxYjIyOWZkCkF1dGhvcjogVGlydW1hbGEgUiBNYXJyaSA8dG1hcnJpQGFtY2MuY29tPgpEYXRlOglUaHUgQXVnIDIxIDIxOjU0OjUzIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFNQ0MgUFBDNDYwR1QvRVggUENJLUUgZGUtZW1waGFzaXMgYWRqdXN0bWVudCBmaXgKCiAgICBEdXJpbmcgcmVjZW50IFBDSS1FIHRlc3RzIGl0IGhhcyBiZWVuIGZvdW5kIHRoYXQgY3VycmVudAogICAgZHJpdmVybCBsZXZlbCBhbmQgZGUtZW1waGFzaXMgdmFsdWVzIGFyZSBub3Qgc2V0IGNvcnJlY3RseS4KICAgIEFmdGVyIHN3ZWVwaW5nIHRocm9naCBhbGwgZGUtZXBoYXNpcyB2YWx1ZXMsIGl0IHdhcyBmb3VuZCB0aGF0CiAgICAweDEzMCBpcyBhIHJpZ2h0IHZhbHVlLiBXaGVyZSAweDEzIGlzIGRyaXZlciBsZXZlbCBhbmQgMCBpcwogICAgZGUtZW1waGFzaXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGlydW1hbGEgUiBNYXJyaSA8dG1hcnJpQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDBiYjg2ZDgyM2I2YzE1MGM3ZWUxN2RlMGNmY2E5ZmZjY2MxNjQ2M2IKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIEF1ZyAyMCAyMDo0Njo1NiAyMDA4ICswMjAwCgogICAgTWFrZSB0aGUgWUFGRlMgZmlsZXN5c3RlbSB3b3JrCgogICAgUmVjZW50bHkgdGhlIFlBRkZTIGZpbGVzeXN0ZW0gc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byBVLWJvb3QuCiAgICBIb3dldmVyLCBqdXN0IGVuYWJsaW5nIENPTkZJR19ZQUZGUzIgaXMgbm90IGVub3VnaCB0byBnZXQgaXQgd29ya2luZy4KCiAgICB5bW91bnQgd2lsbCBnZW5lcmF0ZSBhbiBleGNlcHRpb24gKHdoZW4gZGVyZWZlcmVuY2luZyBtdGQtPnJlYWRvb2IoKSksIGJlY2F1c2UKICAgIHRoZSBnZW5lcmljRGV2aWNlIGlzIGEgbnVsbCBwb2ludGVyLiBGdXJ0aGVyLCBhIGxvdCBvZiBsb2dnaW5nIGlzIHByb2R1Y2VkCiAgICB3aGlsZSB1c2luZyBZQUZGUyBmcywgc28gbG9nZ2luZyBzaG91bGQgYWxzbyBiZSBkaXNhYmxlZC4KICAgIEJvdGggaXNzdWVzIGFyZSBzb2x2ZWQgYnkgdGhpcyBwYXRjaC4KCiAgICBXaXRoIHRoaXMgcGF0Y2ggYW5kIENPTkZJR19ZQUZGUzIgZW5hYmxlZCwgSSBnZXQgYSByZWFkYWJsZSBmaWxlc3lzdGVtCiAgICBpbiBVLWJvb3QsIGFzIHdlbGwgYXMgaW4gTGludXguCgogICAgVGVzdGVkIG9uIGEgQXRtZWwgQVQ5MVNBTTkyNjFFSyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIEFja2VkLWJ5OiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZmQ3ZjM4NjE0ZTIxZjc0NWI2ZDY4NDVmY2M2MTZlYmM1ZTRkMzZmCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBBdWcgMTkgMDg6NDI6NTMgMjAwOCArMDkwMAoKICAgIEZpeCBPbmVOQU5EIHJlYWRfb29iL3dyaXRlX29vYiBmdW5jdGlvbnMgY29tcGF0YWJpbGl0eQoKICAgIEFsc28gc3luYyB3aXRoIGtlcm5lbCBPbmVOQU5EIGNvZGVzCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhkNzY1NDU2YzFkMzNmMjAxMGQyNzE3ZWU1OGRlNzY0N2ZkYzYzNDYKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxOCAxNzoxMToyMCAyMDA4IC0wNTAwCgogICAgTkFORDogUmVtb3ZlIGRlbGF5IGZyb20gbmFuZF9ib290X2ZzbF9lbGJjLmMuCgogICAgSXQgd2FzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGxlZnQgaW4uCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU1NjQ4MzczNDEyNjc5MzUyMmZiN2E4Y2YzNmFmOTBkYTc4ZjA4NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyMSAxMTowNTowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDbGVhbnVwIG9mICJwcGM0eHg6IE9wdGltaXplIFBMQjQgQXJiaXRlci4uLiIgcGF0Y2gKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHNvbWUgbWlub3IgaXNzdWVzIGludHJvZHVjZWQgd2l0aCB0aGUgcGF0Y2g6CiAgICBwcGM0eHg6IE9wdGltaXplIFBMQjQgQXJiaXRlci4uLiBmcm9tIFByb2R5dXQgSGF6YXJpa2E6CgogICAgLSBSZXdvcmsgbWVtb3J5LXF1ZXVlIGFuZCBQTEIgYXJiaXRlciBvcHRpbWl6YXRpb24gY29kZSwgdGhhdCB0aGUKICAgICAgbG9jYWwgdmFyaWFibGUgaXMgbm90IG5lZWRlZCBhbnltb3JlLiBUaGlzIHJlbW92ZXMgb25lICNpZmRlZi4KICAgIC0gVXNlIGNvbnNpc3RhbnQgc3BhY2luZyBpbiBwcGM0eHguaCBoZWFkZXIgKFhYWCArIDB4MDEgaW5zdGVhZAogICAgICBvZiBYWFgrIDB4MDEpLiBUaGlzIHdhcyBub3QgaW50cm9kdWNlZCBieSBQcm9keXV0LCBqdXN0IGEKICAgICAgY29weS1wYXN0ZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNzk1ODliY2ZiMjRiYTExMDY4NDYwMjc2YTNjYzk1NDlhYjUzNDZmCkF1dGhvcjogUHJvZHl1dCAgSGF6YXJpa2EgPHBoYXphcmlrYUBhbWNjLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOTozODo1MSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBPcHRpbWl6ZSBQTEI0IEFyYml0ZXIgYW5kIE1lbW9yeSBRdWV1ZSBzZXR0aW5ncyBmb3IgUFBDNDQwU1AvU1BlLAoJUFBDNDA1RVggYW5kIFBQQzQ2MEVYL0dUL1NYCgogICAgLSBSZWFkIHBpcGVsaW5lIGRlcHRoIHNldCB0byA0IGZvciBQUEM0NDBTUC9TUEUsIFBQQzQwNUVYLCBQUEM0NjBFWC9HVC9TWAogICAgICBwcm9jZXNzb3JzCiAgICAtIE1vdmVkIFBMQjQgQXJiaXRlciByZWdpc3RlciBkZWZpbml0aW9ucyB0byBwcGM0eHguaCBzaW5jZSBpdCBpcyBzaGFyZWQKICAgICAgYWNyb3NzIHByb2Nlc3NvcnMgKDQwNSBhbmQgNDQwLzQ2MCkKICAgIC0gT3B0aW1pemUgTWVtb3J5IFF1ZXVlIHNldHRpbmdzIGZvciBQUEM0NDBTUC9TUEUgYW5kIFBQQzQ2MEVYL0dUL1NYCiAgICAgIHByb2Nlc3NvcnMKICAgIC0gQWRkIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyBmb3IgTWVtb3J5IFF1ZXVlIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCgogICAgU2lnbmVkLW9mZi1ieTogUHJvZHl1dCBIYXphcmlrYSA8cGhhemFyaWthQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGJhMzdhYTAzMjg3YzU0ODNjNjFjMGEzZTMyMGM4ODg4YmVlMDE0M2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXVnIDE5IDE1OjQxOjE4IDIwMDggLTA1MDAKCiAgICBmZHQ6IHJld29yayBmZHRfZml4dXBfZXRoZXJuZXQoKSB0byB1c2UgZW52IGluc3RlYWQgb2YgYmRfdAoKICAgIE1vdmUgdG8gdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAnZXRoYWRkcicsICdldGgxYWRkcicsIGV0Yy4uCiAgICBpbnN0ZWFkIG9mIGJkLT5iaV9lbmV0YWRkciwgYmlfZW5ldDFhZGRyLCBldGMuCgogICAgVGhpcyBtYWtlcyB0aGUgY29kZSBhIGJpdCBtb3JlIGZsZXhpYmxlIHRvIHRoZSBudW1iZXIgb2YgZXRoZXJuZXQKICAgIGludGVyZmFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0Y2FjZjdjNjQ2MDk4MzlmODA5ZTJmOWM0NTg3M2YxZDY1ODYxNzAzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE5IDE0OjU3OjU1IDIwMDggKzAyMDAKCiAgICBodXNoOiBGaXggcHJpbnRmIGRlYnVnIG1hY3JvIGluIGh1c2guYyBzbyB0aGF0IGl0IHVzYWJsZSBpbiBVLUJvb3QKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGRlYnVnX3ByaW50ZigpIG1hcmNvIGZvciBVLUJvb3QgaW4gaHVzaC5jIGFuZAogICAgbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgREVCVUdfU0hFTEwgdG8gYSBwbGFjZSB0aGF0IGlzIGFjdHVhbGx5IGNvbXBpbGVkCiAgICB1bmRlciBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhmMmI0NTdlZjI2YTQ0ZDllNWZkN2Q2YjE2YzM5NGU1YzNhNzFjYTIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxOSAwOTo1Nzo0MSAyMDA4ICswMjAwCgogICAgY2ZpOiByZW5hbWUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIgdG8gQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKCiAgICBDb21taXQJMDBiMTg4M2E0Y2FjNTlkOTdjZDI5N2IxYTNhMzk4ZGI4NTk4Mjg2NQogICAgbWlzc2VkIGEgZmV3IGJvYXJkczoKCWluY2x1ZGUvY29uZmlncy9NNTI1M0RFTU8uaAoJaW5jbHVkZS9jb25maWdzL21sNTA3LmgKCWluY2x1ZGUvY29uZmlncy9yZWR3b29kLmgKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMDc2OGI3YTg3Mjk2NDA4NWVlY2U4ZDVlOWZlYzkxNzVlOWRlYjE2MQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIEF1ZyAxOCAxMzo0MToyNyAyMDA4ICswMjAwCgogICAgQ29uc29saWRhdGUgc3RybWh6KCkgaW1wbGVtZW50YXRpb24KCiAgICBBUk0sIGkzODYsIG02OGsgYW5kIHBwYyBhbGwgaGF2ZSBpZGVudGljYWwgaW1wbGVtZW50YXRpb25zIG9mIHN0cm1oeigpLgogICAgT3RoZXIgYXJjaGl0ZWN0dXJlcyBkb24ndCBwcm92aWRlIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgc3RybWh6KCkgaW50byBsaWJfZ2VuZXJpYywgcmVkdWNpbmcgY29kZSBkdXBsaWNhdGlvbgogICAgYW5kIHByb3ZpZGluZyBhIG1vcmUgdW5pZmllZCBBUEkgYWNyb3NzIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGE5MjhkMGRmMjExZjFkODI5MzA4ZDMzNWQxOWJlM2NhNDI1NThkZmMKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBBdWcgMTggMTI6MDI6NTEgMjAwOCArMDIwMAoKICAgIGZpeCBtdmJjX3AgYm9hcmQgYnVpbGQgd2FybmluZ3MKCiAgICBmaXggYnVpbGQgd2FybmluZ3MgQCBtdkJDLVAgYm9hcmQgYnkgdXNpbmcgY29ycmVjdCB0eXBlcywgaS5lLiBjaGFuZ2UKICAgIG91dF9iZTMyIHRvIG91dF9iZTE2IGFuZCBvdXRfOCBhY2NvcmRpbmdseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Cgpjb21taXQgYTk1OGI2NjNkMjdmNjE2YmQxZGZiNzIwZDFiNDc2ZDFlY2FhYTU2OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMTYgMTg6NTQ6MjcgMjAwOCArMDIwMAoKICAgIE1ha2VmaWxlOiBmaXggcG9zaXggc3VwcG9ydCBvbiBmaW5kCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiZWY5MmUyMTVkOTQ1Y2M1NzQzOTljMWExYjAwYTNhNzZkMzVhYTAzCkF1dGhvcjogQXhlbCBCZWllcmxlaW4gPGJlbGF0cm9uaXhAd2ViLmRlPgpEYXRlOglTYXQgQXVnIDE2IDAwOjMwOjQ4IDIwMDggKzAyMDAKCiAgICBBZGRpbmcgYm9vdGxpbWl0L2Jvb3Rjb3VudCBmZWF0dXJlIGZvciBNUEM1WFhYIG9uIFRRTTUyMDAgQm9hcmRzCgogICAgVGVzdGVkIHdpdGggVFFNNTIwMFMgb24gU1RLNTJYWC4yMDAgQm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBeGVsIEJlaWVybGVpbiA8YmVsYXRyb25peEB3ZWIuZGU+Cgpjb21taXQgMDgwMDcwN2I2ZDUwNDFhODQwYTY1ZDU1NjAzMmMxNWM1ODRiNTVmOApBdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTQ6MzY6MzIgMjAwOCAtMDUwMAoKICAgIG1vZF9pMmNfbWVtKCkgYnVnZml4CgogICAgVGhlIGxhc3QgdXNlZCBjaGlwLCBhZGRyZXNzLCBhbmQgYWRkcmVzcyBsZW5ndGggd2VyZSBub3QgYmVpbmcKICAgIHN0b3JlZCBmb3IgdGhlIGltbSBhbmQgaW1uIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Cgpjb21taXQgNGFmYmVmOTY3Mjc1YjJmNjM2YWJhZTg2ZjkxYjgxYmVjZWU3YWQwMwpBdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6Mzc6MzEgMjAwOCAtMDQwMAoKICAgIEZpeCB0eXBvIGluIHNwZWxsaW5nIG9mIEFUQVBJLgoKICAgIENvcnJlY3QgYSBzbWFsbCBzcGVsbGluZyBtaXN0YWtlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Cgpjb21taXQgMzZjMmQzMDYyZWNjNmFiODVmOGUyMzcxODBlYjEzNDQ2NGM0ODQxOApBdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTU6MzQ6MTAgMjAwOCAtMDQwMAoKICAgIEFkZCBhIGhvb2sgdG8gYWxsb3cgYm9hcmQtc3BlY2lmaWMgUElPIG1vZGUgc2V0dGluZy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBob29rIHdoZXJlYnkgYSBib2FyZC1zcGVjaWZpYyByb3V0aW5lIGNhbiBiZSBjYWxsZWQgdG8KICAgIGNvbmZpZ3VyZSBoYXJkd2FyZSBmb3IgYSBQSU8gbW9kZS4JVGhlIHByb3RvdHlwZSBmb3IgdGhlIGJvYXJkLXNwZWNpZmljCiAgICByb3V0aW5lIGlzOgoKCWludCBpbmxpbmUgaWRlX3NldF9waW9tb2RlKGludCBwaW9fbW9kZSkKCiAgICBpZGVfc2V0X3Bpb21vZGUgc2hvdWxkIGJlIHByZXBhcmVkIHRvIGNvbmZpZ3VyZSBoYXJkd2FyZSBmb3IgYSBwaW9fbW9kZQogICAgYmV0d2VlbiAwIGFuZCA2LCBpbmNsdXNpdmUuICBJdCBzaG91bGQgcmV0dXJuIDAgb24gc3VjY2VzcyBvciAxIG9uIGZhaWx1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KCmNvbW1pdCA5NTcxYjg0Y2IxNDIzODc2ZjExNTMwODFiOWU2YTUxZDkwZmJjZGM0CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxNToyOToxMiAyMDA4IC0wNDAwCgogICAgUmVwbGFjZSBlbnVtcyBpbiBhdGEuaCB3aXRoIGFuIGluY2x1ZGUgb2YgbGliYXRhLmgKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgc29tZSBlbnVtcyBmcm9tIGF0YS5oIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggYW4KICAgIGluY2x1ZGUgb2YgbGliYXRhLmguICBUaGlzIHdheSwgd2UgZWxpbWluYXRlIGR1cGxpY2F0ZWQgY29kZSwgYW5kCiAgICBwcmV2ZW50IGVycm9ycyB3aGVyZWJ5IHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgY291bGQgYmUgb3V0IG9mIHN5bmMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KCmNvbW1pdCAwZGUwYWZiY2E4NjVlY2Y0ODJiNGQyYjYzNTIzNjc0NmRlZjg1MThmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEF1ZyAxNSAxODozMjo0MSAyMDA4ICswMjAwCgogICAgY29sZGZpcmU6IGZpeCBDRkkgZHJpdmVycyBhY3RpdmF0aW9uIHdpdGggbmV3IG1hY3JvCgogICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3ZGJjMzhhZDkxNWY0YWU2N2Y0Y2QxODE4YjdhYzhmZWQzNjhhYWE5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNSAyMDA4IC0wNTAwCgogICAgZmR0OiBmZHQgYWRkciB3L28gYW55IGFyZ3MgcmVwb3J0cyBiYWNrIHRoZSBjdXJyZW50IHdvcmtpbmcgYWRkcmVzcwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjk1M2Q5OWZkNTI4YTQ5NmI0MDBhNzA2YjUxMWVhZjhlM2VhNjZhZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzQgMjAwOCAtMDUwMAoKICAgIGZkdDogYWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IGluaXRyZCBzdGFydC9lbmQgdmlhIGNob3NlbiBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZmE0YmFmYWNhZWY2NzA1ODQ2M2IzZDdkMDA5OWNlZDU3NTY5ZGQyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozMyAyMDA4IC0wNTAwCgogICAgQWRkIGNvbW1hbmQgdG8gZW5hYmxlL2Rpc2FibGUgaW50ZXJydXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWU4ZTYzY2NlNjk1NTZhZWYxMGI1OGJjYmM1NmQzMjRmNTcwZWMzYQpBdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE5IDIyOjIxOjE2IDIwMDggLTA3MDAKCiAgICBDRkk6IEFkZCBDRklfQ01EU0VUX0lOVEVMX0VYVEVOREVEIHRvIGZpeCBmbGFzaF9yZWFsX3Byb3RlY3QoKQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIHZlbmRvciBjb2RlIGluIHRoZSBmbGFzaF9yZWFsX3Byb3RlY3QoKSBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZTAwYWNkZWQyZTZhOGQ2NjNlMTI2OTBhMGYwZjA4ZjViZWM1YTU4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxOSAxNjo1MzozOSAyMDA4ICswMDAwCgogICAgQ0ZJOiBGaXggQU1EIExlZ2FjeSBzZWN0b3IgcHJvdGVjdAoKICAgIE5ldyBpbXBsZW1lbnQgc2VjdG9yIGxvY2sgYW5kIHVubG9jayBvciBzb2Z0bG9jayBjb21tYW5kcwogICAgZG8gbm90IGV4aXN0IGluIEFNRCBsZWdhY3kgZmxhc2guIFRodXMsIGNhdXNpbmcgaXNzdWUKICAgIHdoZW4gZXJhc2luZyBBTUQgbGVnYWN5IGZsYXNoIChzdWNoIGFzIGx2MDQwKQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDkyNjcxNDA0MTQwZjA5ZDViMjFiM2QyY2U0ZTM2MmMwNjkyYzA2OQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOTo0MDoxNiAyMDA4ICswMjAwCgogICAgaGFtbWVyaGVhZC9taW1jMjAwOiBVc2UgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKCiAgICBDRkdfRkxBU0hfQ0ZJX0RSSVZFUiB3YXMgcmVjZW50bHkgcmVuYW1lZCBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMzNlYWMyYjNkOTQ2ZmM5OThhMDkyNDVkZmU1NGQwMTcwNzliOTA1NgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEF1ZyAyMCAwOToyODozNiAyMDA4ICswMjAwCgogICAgaGFtbWVyaGVhZDogQWRkIG1pc3NpbmcgcHJpbnRmIHBhcmFtZXRlciB0byBDT05GSUdfQVVUT0JPT1RfUFJPTVBUCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDI1ZGEwYjg0MTk1ZmRkYTg5YTk0M2IyZDI1NzU3ZGI1YWZlZWY1YjgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBBdWcgMjAgMDk6Mjc6MzcgMjAwOCArMDIwMAoKICAgIGZhdnItMzItZXpraXQ6IEZpeCBwcmludGYgZm9ybWF0IHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDQ2MmRhMjVlODliMGI1OGJmNGM2NjM0NmMxZmNiMzA4N2M2MWI0YjgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBBdWcgMTUgMTI6MDQ6MjUgMjAwOCArMDIwMAoKICAgIE1BSU5UQUlORVJTOiBTb3J0IGF2cjMyIHNlY3Rpb24gYWxwaGFiZXRpY2FsbHkKCiAgICBUaGUgcmVzdCBvZiB0aGUgTUFJTlRBSU5FUlMgZmlsZSBhcHBlYXJzIHRvIGJlIHNvcnRlZAogICAgYWxtb3N0LWFscGhhYmV0aWNhbGx5LCBidXQgZW50cmllcyBmb3IgdGhlIG5ld2x5IGFkZGVkIEFWUjMyIGJvYXJkcyB3ZXJlCiAgICBhZGRlZCBzb21ld2hhdCByYW5kb21seS4gVGhpcyBwYXRjaCBzb3J0cyB0aGUgbGlzdCBhbHBoYWJldGljYWxseSBhZ2Fpbi4KCiAgICBBbHNvIHVwZGF0ZSBteSBlLW1haWwgYWRkcmVzcy4gVGhlIG9sZCBvbmUgc3RpbGwgd29ya3MsIGJ1dCBpdCBtYXkgbm90CiAgICB3b3JrIGZvcmV2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDEzYjUwZmUzYmMwNjVjNDg5MTFmYTM3MzIzMTQyMTI4MDg1NWE5ZDYKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJV2VkIEp1bCAzMCAxMzowNzoyNyAyMDA4ICswMTAwCgogICAgYXZyMzI6IEFkZCBNSU1DMjAwIGJvYXJkCgogICAgVGhlIE1JTUMyMDAgYm9hcmQgaXMgYmFzZWQgb24gQXRtZWwncyBOR1cxMDAgZGV2IGtpdCwgYnV0IHdpdGggYW4gZXh0cmEKICAgIDhNQnl0ZSBGTEFTSCBhbmQgMTI4S0J5dGUgRlJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkYjcwYjg0MzI5MzE1YzUyZjZlYzc3ZjVhZTVjYTFhZmU5NzBhOWJiCkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgSnVsIDkgMjE6MDc6MzQgMjAwOCArMDkwMAoKICAgIHJ0bDgxNjk6IGFkZCBzdXBwb3J0IGZvciBSVEw4MTEwU0NMCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBSVEw4MTEwU0NMIHN0YXJ0ZWQgdHJhbnNmZXIKICAgIHdpdGggYW4gaW5jb3JyZWN0IG1lbW9yeSBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOTQzYjgyNWJmMTVlNmEyOGFjODMyOGUwZjY0ODk0NzhiY2VlZjFlYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjUgMTU6NDg6NTIgMjAwOCAtMDUwMAoKICAgIEZpeCBkbTkwMDAgcmVjZWl2ZSBzdGF0dXMgYW5kIGxlbiBsaXR0bGUgZW5kaWFuIGlzc3VlCgogICAgVGhlIHJlY2VpdmVkIHN0YXR1cyBhbmQgbGVuIHdhcyBpbiBsaXR0bGUgZW5kaWFuCiAgICBmb3JtYXQgYW5kIGNhdXNlZCB0aGUgZXRoZXJuZXQgdW5hYmxlIHRvIHByb2NlZWQKICAgIGZ1cnRoZXIuIEFkZCBfX2xlMTZfdG9fY3B1KCkgaW4gZG05MDAwX3J4X3N0YXR1c184LzE2LzMyYml0KCkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZmNkNjlhMWE1N2ZiMmFmNGQyNjIwMTQyMjA5NWE0YmU5ZjM2OTYzZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzIgMjAwOCAtMDUwMAoKICAgIENsZWFuIHVwIHVzYWdlIG9mIGljYWNoZV9kaXNhYmxlL2RjYWNoZV9kaXNhYmxlCgogICAgVGhlcmUgaXMgbm8gcG9pbnQgaW4gZGlzYWJsaW5nIHRoZSBpY2FjaGUgb24gN3h4Lzc0eHgvODZ4eCBwYXJ0cyBhbmQgbm90CiAgICBhbHNvIGZsdXNoaW5nIHRoZSBpY2FjaGUuICBBbGwgY2FsbGVycyBvZiBpbnZhbGlkYXRlX2wxX2luc3RydWN0aW9uX2NhY2hlKCkKICAgIGNhbGwgaWNhY2hlX2Rpc2FibGUoKSByaWdodCBhZnRlci4JTWFrZSBpdCBzbyBpY2FjaGVfZGlzYWJsZSgpIGNhbGxzCiAgICBpbnZhbGlkYXRlX2wxX2luc3RydWN0aW9uX2NhY2hlKCkgZm9yIHVzLgoKICAgIEFsc28sIGRjYWNoZV9kaXNhYmxlKCkgYWxyZWFkeSBjYWxscyBkY2FjaGVfZmx1c2goKSBzbyB0aGVyZSBpcyBubyBwb2ludAogICAgaW4gdGhlIGV4cGxpY2l0IGNhbGxzIG9mIGRjYWNoZV9mbHVzaCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTE1YjA3MTA0Y2E3YmJiNzA5M2M5MDA5YzlhZTFiNThiNDIwMmQxMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzEgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBsaW51eCBib290bSB0byBzdXBwb3J0IGVQQVBSIGNsaWVudCBpbnRlcmZhY2UKCiAgICBUaGUgZVBBUFIgc3BlYyBoYXMgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgZnJvbSB0aGUgY3VycmVudCBkZXZpY2UKICAgIHRyZWUgYmFzZWQgYm9vdCBpbnRlcmZhY2UgdG8gdGhlIHBvd2VycGMgbGludXgga2VybmVsLiBUaGUgcG93ZXJwYwogICAgbGludXgga2VybmVsIGN1cnJlbnRseSBpZ25vcmVzIHRoZSBkaWZmZXJlbmNlcyB0aGF0IGVQQVBSIHNwZWNpZmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGI3MzRlNTU1NmEyMzliM2JlNWY5NjkzYjJmNGI0YjczOTY4M2VjMTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDE4IDIzOjUwOjIwIDIwMDggKzAyMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXA6IGtlZXAgbGlzdHMgc29ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDAwMzlkNGVkMjc1ZTZjYTA5ZmI0MTc4OTUwMjRhZDAyYmUxMThjNApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgSnVsIDIzIDE5OjEwOjE0IDIwMDggKzAyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgQURUNzQ2MCBJMkMgbW9uaXRvciBjaGlwCgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Cgpjb21taXQgZWI1OWVhNDVhYjc3YzE0YjA5MGVhODU3ZDllYTlmOTAyZjQwZGIwYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNCAxOTo0NTo0NSAyMDA4ICswMjAwCgogICAgdmlkZW86IENsZWFuIGRyaXZlcnMvdmlkZW8vTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgODcxYzE4ZGQzMDE3NTIyNzBlMWY3NDMyOGM4NDZjMzEwNGJlMWUyZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNCAxOTo0NTozNyAyMDA4ICswMjAwCgogICAgcnRjOiBDbGVhbiBkcml2ZXJzL3J0Yy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBhNGE1NDliNGI1M2FkZjQwYTBkMzg4MmNjMzBhYzgxMmE4Zjg0N2M1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gSnVsIDE0IDE5OjQ1OjM1IDIwMDggKzAyMDAKCiAgICBpMmM6IENsZWFuIGRyaXZlcnMvaTJjLyBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwYTgyM2FhMmE4YThjMDY4NWU3MzkwMGYzODdkNjAyZDdlZGFmYzBlCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIEp1bCA5IDIyOjMwOjMwIDIwMDggKzA4MDAKCiAgICBBZGQgJ2xpY2Vuc2UnIGNvbW1hbmQgdG8gVS1Cb290IGNvbW1hbmQgbGluZQoKICAgIFRoZSAnbGljZW5zZScgY29tbWFuZCBpbmNsdWRlcyB0aGUgVS1Cb290IGxpY2Vuc2UgKEdQTHYyKSBpbnRvIHRoZQogICAgYWN0dWFsIGJvb3Rsb2FkZXIgYmluYXJ5LiBUaGUgbGljZW5zZSB0ZXh0IGNhbiBiZSBzaG93biBpbnRlcmFjdGl2ZWx5CiAgICBhdCB0aGUgVS1Cb290IGNvbW1hbmRsaW5lLgoKICAgIEZvciBwcm9kdWN0cyB3aGVyZSB0aGUgY29tbWFuZGxpbmUgY2FuIGFjdHVhbGx5IGJlIGFjY2Vzc2VkIGJ5IHRoZQogICAgZW5kIHVzZXIsIHRoaXMgaGVscHMgdG8gcHJldmVudCBpbmFkdmVydGVudCBHUEwgdmlvbGF0aW9ucywgc2luY2UgdGhlCiAgICBHUEx2MiBsaWNlbnNlIHRleHQgY2FuIG5vIGxvbmdlciBiZSAnZm9yZ290dGVuJyB0byBiZSBpbmNsdWRlZCBpbnRvCiAgICB0aGUgcHJvZHVjdC4KCiAgICBUaGUgJ2xpY2Vuc2UnIGNvbW1hbmQgY2FuIGJlIGVuYWJsZWQgYnkgQ09ORklHX0NNRF9MSUNFTlNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgZmUyY2U1NTAwZWJmNDNkNzlkMjI3MTkwYmQyMzcwMjMyZDViMTEzZApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+CkRhdGU6CVN1biBKdWwgNiAxNTo1NjozOCAyMDA4ICswODAwCgogICAgYWRkICd1bnppcCcgY29tbWFuZCB0byB1LWJvb3QgY29tbWFuZGxpbmUKCiAgICBbUEFUQ0hdIGFkZCBuZXcgJ3VuemlwJyBjb21tYW5kIHRvIHUtYm9vdCBjb21tYW5kbGluZQoKICAgIGNvbW1vbi9jbWRfbWVtLmM6IG5ldyBjb21tYW5kICJ1bnppcCBzcmNhZGRyIGRzdGFkZHIgW2RzdHNpemVdIiB0byB1bnppcCBmcm9tCiAgICBtZW1vcnkgdG8gbWVtb3J5LCBhbmQgb3B0aW9uIENPTkZJR19DTURfVU5aSVAgdG8gZW5hYmxlIGl0CgogICAgU2lnbmVkLW9mZi1ieTogV2VybmVyIEFsbWVzYmVyZ2VyIDx3ZXJuZXJAb3Blbm1va28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCAwN2VmYzllMzIxNjE5YzNkZWMyMTMzMTBjMzJlMDExYWE2ZjAyNzgzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE5OjM3OjE3IDIwMDggLTA1MDAKCiAgICBDaGFuZ2UgQ0ZHX0VOVl9TSVpFIHRvIENGR19FTlZfU0VDVF9TSVpFIGZvciBTUEkgc2VjdG9yIGVyYXNlCgogICAgVGhlIENGR19FTlZfU0laRSBpcyBub3Qgc3VpdGFibGUgdXNlZCBmb3IgU1BJIGZsYXNoIGVyYXNlCiAgICBzZWN0b3Igc2l6ZSBpZiBDRkdfRU5WX1NJWkUgaXMgbGVzcyB0aGFuIENGR19FTlZfU0VDVF9TSVpFLgogICAgQWRkIGNvbmRpdGlvbiBjaGVjayBpZiBDRkdfRU5WX1NJWkUgaXMgbGFyZ2VyIHRoYW4KICAgIENGR19FTlZfU0VDVF9TSVpFLCBjYWxjdWxhdGUgdGhlIHJpZ2h0IG51bWJlciBvZiBzZWN0b3JzIGZvcgogICAgZXJhc2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYjRlNjU0Y2FmYWJhYTFhYzE4MGQzN2IwMGM4ZjYwOTVkYWU5YzkKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDE1OjU0OjI1IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogTXVsdGlwbGUgZml4ZXMgZm9yIE01MjgyRVZCCgogICAgSW5jb3JyZWN0IENGR19IWiB2YWx1ZSwgY2hhbmdlIDEwMDAwMDAgdG8gMTAwMC4KICAgIFJlbmFtZSAjd2FyaW5nIHRvICN3YXJuaW5nLiBSQU1CQVIxIHVzZXMgdHdpY2UKICAgIGluIHN0YXJ0LlMsIHJlbmFtZSB0aGUgbGF0ZXIgdG8gRkxBU0hCQVIuIEluc2VydAogICAgbm9wIGZvciBEUkFNIHNldHVwLiBBbmQsIGVudl9vZmZzZXQgaW4gbGlua2VyIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxMGRiM2ExN2EyNzhkZDNhMjc2NjhiMzFjYjMyY2RkMTQ3NmU5NTEzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMSAxNToyNjo0MyAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IE1vdmUgbTUyODJldmIgZnJvbSBib2FyZCB0byBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2ZGYwOTFkMzkxZjc0YmJmMmRjMmY3OTMxZjlmM2M4ZjIzNTI5ZTQKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDE1OjI1OjA3IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogTW92ZSBtNTI3MmMzIGZyb20gYm9hcmQgdG8gYm9hcmQvZnJlZXNjYWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NTllOWJhZDYyOWE0ODBmNjA2YjI4NmQ1NzAzYWVmNzE1OWVkZjk4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMSAxNToyMzoxNiAyMDA4ICswMDAwCgogICAgQ29sZEZpcmU6IE1vdmUgbTUyNzFldmIgZnJvbSBib2FyZCB0byBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA1MzE2ZjhlY2U4MjA2MzM5YTIwOGVjMDUyZjAzOWNkMGY3Y2E5MjIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDExIDEzOjQxOjQ5IDIwMDggKzAwMDAKCiAgICBDb2xkRmlyZTogQWRkIE01NDQ1MUVWQiBwbGF0Zm9ybSBzdXBwb3J0IGZvciBNQ0Y1NDQ1eAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTIyY2Q3NTE1NTk3ZTlhMmMwN2Q2OGUyYTYyNDBiMGI3YjBmMDEzNgpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgNiAxOToxNDowOCAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBTZXJpYWwgRmxhc2ggc3VwcG9ydCBmb3IgTTU0NDU1RVZCCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Zjc1MTU1MTQ1NjgyOGIyZDBmZjQxN2YxMDk1OWZiMGM3MTEwYmQwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAyMyAyMDozODo1MyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEltcGxlbWVudCBTQkYgZmVhdHVyZSBmb3IgTTU0NDVFVkIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3MzIzYmJhMjI5MjAzYWFlMjYwNGFmZGUxMzFhYjQ3YmFkNGVhZGMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDE3OjUzOjM2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIFNTUEkgZmVhdHVyZSBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyZDAyMmQxYWMzZjU5YmZmYTljZWMyNDkzNDFlNzdhZWExNjhhYmMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDE3OjM3OjEwIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogVXNlIENGSSBGbGFzaCBkcml2ZXIgZm9yIE01NDQ1NUVWQgoKICAgIFJlbW92ZSBub24tY29tbW9uIGZsYXNoIGRyaXZlciBpbgogICAgYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi9mbGFzaC5jLiBUaGUgbm9uLWNmaSBmbGFzaCB3aWxsCiAgICB1c2UgQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kgdG8gY29uZmlndXJlIHRoZSBmbGFzaAogICAgYXR0cmlidXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmQzM2M2YWNmYTM1YjExNDRkNDZmZmJmZjdlMjllZTc5NjkyOTBkMApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMjMgMTc6MTE6NDcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBBZGQgTTUyNTNERU1PIHBsYXRmb3JtIHN1cHBvcnQgZm9yIE1DRjUyNTMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwYmE2MWZkODI1NjlhZjQwZTA0ZDRhMDg5MjU3YjgxODgxODg0ZjIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDYgMTQ6MTc6MDkgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBSYWlzZSBNNTI1M0VWQkUgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMzYxMzA3ZTczY2UxZjZmYzY4NzYwMTIzZjM3ZDQ4NzZmODUxZjNlCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE0OjExOjM2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IE01MjUzRVZCIGRyYW0gYnJpbmcgdXAgaXNzdWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiMDcwODA5M2UxNWI0MTIyOTYzMjhiZjgxMzI1Y2Y5YjY5ZmU1MTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE0IDE0OjQxOjA2IDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjhjZjE5YWFlNDhmMjk2OWVjNzA2Njk2MDRkMGQ3NzZmMDJjOGJjNApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE4OjI0OjA1IDIwMDggLTA1MDAKCiAgICBzb2NyYXRlczogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgQWxzbywgZml4IHNvbWUgbWlub3IgZm9ybWF0dGluZyBpc3N1ZXMsIGFuZCBzaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YKICAgICJzdGF0ZSIgZm9yIHdyaXRlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYTIyZDEwZjM5ZWFlZWRkMDM1ZTgyNjU2MTZlMzFmZjg4ZTMxNGQ1CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTg6MDM6NDAgMjAwOCAtMDUwMAoKICAgIHF1YWQxMDBoZDogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY0Y2I2NTJhOGE4NGM1YzM0ZDBhZmNiZDdmZmVmODg2YWExZDgzOApBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE3OjUzOjQ4IDIwMDggLTA1MDAKCiAgICBtNTM3M2V2YjogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWEyM2ExOTdjODcyMmI4MDVmNDA4OTU1NDRiYmRiMWE2NDhjMWM4MgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDEzIDE3OjA0OjMwIDIwMDggLTA1MDAKCiAgICBzM2MyNHgwOiBVcGRhdGUgTkFORCBkcml2ZXIgdG8gbmV3IEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTVmNzVmMjBkYjhhNzEwM2ZhZDljMzRkNmYxMTkzZTEwZDE4OTBmCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMTU6NTY6MDAgMjAwOCAtMDUwMAoKICAgIGF0OTE6IFVwZGF0ZSBib2FyZCBOQU5EIGRyaXZlcnMgdG8gY3VycmVudCBBUEkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDQzOGQ1MDg0OGU5NDI1Mjg2ZTVmYjA0OTNlMGFmZmI1YTBiMWUxYgpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglXZWQgQXVnIDEzIDA5OjExOjAyIDIwMDggKzA5MDAKCiAgICBGaXggT25lTkFORCBidWlsZCBicmVhawoKICAgIFNpbmNlIHBhZ2Ugc2l6ZSBmaWVsZCBpcyBjaGFuZ2VkIGZyb20gb29iYmxvY2sgdG8gd3JpdGVzaXplLiBCdXQgT25lTkFORCBpcyBub3QgdXBkYXRlZC4KICAgIC0gZml4IGJ1ZmZlcnJhbSBtYW5hZ2VtZW50IGF0IGVyYXNlIG9wZXJhdGlvbgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyB0aGUgTkFORC9PbmVOQU5EIHN0YXRlIGZpbGVkIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTQ4M2RmNjQwOGMyNWYxNjA2MDQzMmRlMzg2ODkwMWUzNTJlMjNiYwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDMgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvbXRkL25hbmRfbGVnYWN5OiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjYzRhMGNlZWFjNTQ2MjEwNjE3MmQwY2M5ZDlkNTQyMjMzYWEzYWIyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MyAyMDA4ICswMjAwCgogICAgZHJpdmVycy9tdGQvbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIHJlbmFtZSBDRkdfTkFORF9MRUdBQ1kgdG8gQ09ORklHX05BTkRfTEVHQUNZCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZmIwOWI4MTkyMGU1ZGZkZmM0NTc2ODgzMTg2NzMzZjBiZDYwNTljCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MiAyMDA4ICswMjAwCgogICAgZHJpdmVycy9tdGQvb25lbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMDBiMTg4M2E0Y2FjNTlkOTdjZDI5N2IxYTNhMzk4ZGI4NTk4Mjg2NQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDIgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvbXRkOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3YmE0NGE1NTIxY2RiN2ZhMWM3Mjg2NDAyNWNkZTFlMjFhNmY2OTIxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9xZTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWI2ODc4YzdiYzY4YTdiNWU1YjczMTY1NWJkYzEzMjIxYmJmYzQ5MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDAgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvcGNpOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NWQ2ZDJkMzlmZTNmZTg3ODAyZTM5OWFhMTc1MzkzNjhiNDk1ZDJlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCgogICAgZHJpdmVycy9taXNjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NWU0MWVhMDU0OGI4NmUzZDc4OTJkZWZhYzhlNGRjMWVhNzBhZWQxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCgogICAgZHJpdmVycy9pbnB1dDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODhmNTdlMDkzMTE0YTQ0YWE5YTg1OGQ1MmIwOTliY2M1MjAzNGE4YwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvZG1hOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxYTAyODA2YzRiMWI0YTA5YWQ0ZTk1ZDNhYWMzNzgzODg5ZTVmOGQ3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9ibG9jazogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWE2ZmZiZmFmNDM1M2JlYzM3OWVkMWZjZmM1NGI2ZjFhMzBhZjA5YQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAoKICAgIHNlcmlhbDogbW92ZSBDRkdfTlM5NzUwX1VBUlQgdG8gQ09ORklHX05TOTc1MF9VQVJUCgogICAgbW92ZSBhbHNvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YzU4YTAzMGY4NjgyOWZhNGYwZDQzMzdjZjRiNzk0YzQxYTE4MjNlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOCAyMDA4ICswMjAwCgogICAgc2VyaWFsOiBtb3ZlIENGR19TQ0lGX0NPTlNPTEUgdG8gQ09ORklHX1NDSUZfQ09OU09MRQoKICAgIG1vdmUgYWxzbyBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDZlOWVlOTJlODkwZjY3NTk0YWIxNTA2ODk1MTBkZjM2MTEzM2VhZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzggMjAwOCArMDIwMAoKICAgIGNvbW1vbjogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjVhY2I5ZmQ5YmJhMTE2MGRlM2VmMzQ5YzdkMzNmZTUxMGVkYTI4NgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MDkgMjAwOCArMDIwMAoKICAgIG14MzE6IG1vdmUgZnJlZXNjYWxlJ3MgbXgzMSBib2FyZHMgdG8gdmVuZG9yIGJvYXJkIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGVkMmY1Zjk1MGUyNTgxMjE0ZDIwYjAxMWE4ZjI3YTYzOTZkNjVkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdWwgNSAyMzoxMToxMSAyMDA4ICswMjAwCgogICAgYXQ5MTogbW92ZSBhcmNoLWF0OTFzYW05IHRvIGFyY2gtYXQ5MQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTk1Y2NmYzU5OTFkNDg3NjRiMjUxOTk0MWUzNTA3ZjY5Mzg1MWQ1ZApBdXRob3I6IEZhdGhpIEJPVURSQSA8ZmFib0BkZWJpYW4ub3JnPgpEYXRlOglXZWQgQXVnIDYgMTA6MDY6MjAgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IEZpbGwgaW4gTVREIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBPbmVOQU5ELgoKICAgIG9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oKToKICAgICAtIE5vdyByZXR1cm5zIGEgc3RyaW5nIHRvIGJlIHBsYWNlZCBpbiBtdGQtPm5hbWUsCiAgICAgICByYXRoZXIgdGhhbiBjYWxsaW5nIHByaW50Zi4KICAgICAtIFJlbW92ZSB2ZXJib3NlIHBhcmFtZXRlciBhcyBpdCBiZWNvbWVzIHVzZWxlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogRmF0aGkgQm91ZHJhIDxmYWJvQGRlYmlhbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTY0NjY0M2I2YmMyNTBjYjNhNDk2NmJmNzI4ODc2ZTBjMTBkMzI5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglXZWQgQXVnIDYgMjE6NDI6MDcgMjAwOCArMDIwMAoKICAgIG5hbmRfc3BsOiBTdXBwb3J0IHBhZ2UtYWxpZ25lZCByZWFkIGluIG5hbmRfbG9hZCwgdXNlIGNoaXBzZWxlY3QKCiAgICBTdXBwb3J0aW5nIHBhZ2UtYWxpZ25lZCByZWFkcyBkb2Vzbid0IGluY3VyZSBhbnkgc2luaWZpY2FudCBvdmVyaGVhZCwganVzdAogICAgYSBzbWFsbCBjaGFuZ2UgaW4gdGhlIGFsZ29yaXRobS4gQWxzbyByZXBsYWNlIGluXzggd2l0aCByZWFkYiwgc2luY2UgdGhlcmUKICAgIGlzIG5vIGluXzggb24gQVJNLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRmMzJkNzc2MGE1OGZlNzM5ODFiNmVkYzBiMDc1MTU2NWQyZGFhNGMKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyA1IDExOjE1OjU5IDIwMDggLTA1MDAKCiAgICBOQU5EIGJvb3Q6IFVwZGF0ZSBsYXJnZSBwYWdlIHN1cHBvcnQgZm9yIGN1cnJlbnQgQVBJLgoKICAgIEFsc28sIHJlbW92ZSB0aGUgY3RybCB2YXJpYWJsZSBpbiBmYXZvciBvZiBwYXNzaW5nIHRoZSBjb25zdGFudHMKICAgIGRpcmVjdGx5LCBhbmQgcmVtb3ZlIHJlZHVuZGFudCAodTgpIGNhc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU0YzA5NTA4NTQ1ZDFjNDU2MTdiYTQ1MzkxYzAzYzAzY2JjMzYwYjkKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAzMCAxNDoxMzoyOCAyMDA4IC0wNTAwCgogICAgTkFORCBib290OiBNUEM4MzEzRVJEQiBzdXBwb3J0CgogICAgTm90ZSB0aGF0IHdpdGggb2xkZXIgYm9hcmQgcmV2aXNpb25zLCBOQU5EIGJvb3QgbWF5IG9ubHkgd29yayBhZnRlciBhCiAgICBwb3dlci1vbiByZXNldCwgYW5kIG5vdCBhZnRlciBhIHdhcm0gcmVzZXQuICBJIGRvbid0IGhhdmUgYSBuZXdlciBib2FyZAogICAgdG8gdGVzdCBvbjsgaWYgeW91IGhhdmUgYSBib2FyZCB3aXRoIGEgMzNNSHogY3J5c3RhbCwgcGxlYXNlIGxldCBtZSBrbm93CiAgICBpZiBpdCB3b3JrcyBhZnRlciBhIHdhcm0gcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWNkYWI1YzMzZjFlYTZmNWUwOGYwNmYwOGJjNjRhZjIzZmY0MGQ3MQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDI2IDE0OjA2OjUyIDIwMDggLTA1MDAKCiAgICBtcGM4MzEzZXJkYjogRW5hYmxlIE5BTkQgaW4gY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMzZGI4YzY0OWM2YWIzZGEyZjE0MTFjNGM2ZDYxYWVjZWEwNTRhYTQKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTI6Mzg6MjYgMjAwOCArMDIwMAoKICAgIE5BTkQ6IERvIG5vdCB3cml0ZSBvciByZWFkIGEgd2hvbGUgYmxvY2sgaWYgaXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGVudmlyb25tZW50CgogICAgRW52aXJvbm1lbnQgY2FuIGJlIHNtYWxsZXIgdGhhbiBOQU5EIGJsb2NrIHNpemUsIGRvIG5vdCBuZWVkIHRvIHJlYWQgYSB3aG9sZQogICAgYmxvY2sgYW5kIG1pbmltdW0gZm9yIHdyaXRpbmcgaXMgb25lIHBhZ2UuIEFsc28gcmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYWZjYWJkMTVmMDBjMTQyMTU2MjM1YzUxOWZjYzU1YjEwOTkzMjQxCkF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgpEYXRlOglTdW4gSnVuIDIyIDE2OjMwOjA2IDIwMDggKzAyMDAKCiAgICBOQU5EOiBjaGlwLT5zdGF0ZSBkb2VzIG5vdCBhbHdheXMgZ2V0IHNldC4KCiAgICBGaXhlcyBhbiBpc3N1ZSB3aXRoIGNoaXAtPnN0YXRlIG5vdCBhbHdheXMgYmVpbmcgc2V0IGNhdXNpbmcgdHJvdWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTNmMGZkOTRlM2NhZTZmOGEwZDlmYmE1ZDM2N2UzMTFlZGM4ZWJkZQpBdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgpEYXRlOglNb24gSnVuIDMwIDE1OjM0OjQwIDIwMDggKzAyMDAKCiAgICBOQU5EOiBTY2FuIGJhZCBibG9ja3MgbGF6aWx5LgoKICAgIFJhdGhlciB0aGFuIHNjYW5uaW5nIG9uIGJvb3QsIHNjYW4gdXBvbiB0aGUgZmlyc3QgYXR0ZW1wdCB0byBjaGVjayB0aGUKICAgIGJhZG5lc3Mgb2YgYSBibG9jay4gIFRoaXMgc3BlZWRzIHVwIGJvb3Qgd2hlbiBub3QgdXNpbmcgTkFORCwgYW5kIHJlZHVjZXMKICAgIHRoZSBsaWtlbGlob29kIG9mIG5lZWRpbmcgdG8gcmVmbGFzaCB2aWEgSlRBRyBpZiBOQU5EIGJlY29tZXMKICAgIG5vbmZ1bmN0aW9uYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZmJmNjE3ZmYwNTVlNDIxNmY3OGQzNThiMDg2N2M1NDg5MTZkMTRiCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdW4gMTIgMTM6MjA6MTYgMjAwOCAtMDUwMAoKICAgIE5BTkQgcmVhZC93cml0ZSBmaXgKCiAgICBJbXBsZW1lbnQgYmxvY2stc2tpcHBpbmcgcmVhZC93cml0ZSwgYmFzZWQgb24gYSBwYXRjaCBmcm9tCiAgICBNb3J0ZW4gRWJiZWxsIEhlc3RlbnMgPG1vcnRlbi5oZXN0bmVzQHRhbmRiZXJnLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogTW9ydGVuIEViYmVsbCBIZXN0bmVzIDxtb3J0ZW4uaGVzdG5lc0B0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ODRlMDNjZGYxNDMxYmI1OTNhZWFhMWI3NGM0NDVkNjE2Zjk1NWQzCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdW4gMTIgMTM6MTM6MjMgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IEFsd2F5cyBza2lwIGJsb2NrcyBvbiByZWFkL3dyaXRlL2Jvb3QuCgogICAgVXNlIG9mIHRoZSBub24tc2tpcHBpbmcgdmVyc2lvbnMgd2FzIGFsbW9zdCBhbHdheXMgKGlmIG5vdCBhbHdheXMpCiAgICBhbiBlcnJvciwgYW5kIG5vIHZhbGlkIHVzZSBjYXNlIGhhcyBiZWVuIGlkZW50aWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFjM2RiYWRhMzQ5OTkyODc1OTM0NTc1Yzk3YjMyOGFiMmNiMzNjYQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgSnVuIDEyIDExOjEwOjIxIDIwMDggLTA1MDAKCiAgICBuYW5kOiBmc2xfdXBtOiBjb252ZXJ0IHRvIHVwZGF0ZWQgTVREIE5BTkQgaW5mcmFzdHJ1Y3R1cmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMwMDI1MzMwNmFjYzcyYjFiMmU5ZmFmMDk4N2Y4NjU1MTE1MWQ3Y2YKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxNTowMjo0NiAyMDA4IC0wNTAwCgogICAgZnNsX2VsYmNfbmFuZDogSGFyZC1jb2RlIHRoZSBGQkFSL0ZQQVIgc3BsaXQuCgogICAgVGhlIGhhcmR3YXJlIGhhcyBzZXBhcmF0ZSByZWdpc3RlcnMgZm9yIGJsb2NrIGFuZCBwYWdlLXdpdGhpbi1ibG9jaywKICAgIGJ1dCB0aGUgZGl2aXNpb24gYmV0d2VlbiB0aGUgdHdvIGhhcyBubyBhcHBhcmVudCByZWxhdGlvbiB0byB0aGUKICAgIGFjdHVhbCBlcmFzZSBibG9jayBzaXplIG9mIHRoZSBOQU5EIGNoaXAuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWM4MTRiMGE3MTZhYWU4ODRiZWM5NzdiOWEwMzJkZmE1OWNmYjc5YQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIyOjEwOjU0IDIwMDggKzAzMDAKCiAgICBmc2xfZWxiY19uYW5kOiB3b3JrYXJvdW5kIGZvciBoYW5ncyBkdXJpbmcgbmFuZCB3cml0ZQoKICAgIFVzaW5nIGN1cnJlbnQgZHJpdmVyIGVsYmMgc29tZXRpbWVzIGhhbmdzIGR1cmluZyBuYW5kIHdyaXRlLiBSZWFkaW5nIGJhY2sKICAgIGxhc3QgYnl0ZSBoZWxwcyB0aG91Z2ggKHRoYW5rcyB0byBTY290dCBXb29kIGZvciB0aGUgaWRlYSkuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5ZmQwMjBkNmI0YjM2YjlmYjY3Y2Q4MzRiYzFhZTdmZGJhMTVlZTllCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXIgMjEgMTY6MTI6NTEgMjAwOCAtMDUwMAoKICAgIEZyZWVzY2FsZSBlTEJDIEZDTSBOQU5EIGRyaXZlcgoKICAgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBGbGFzaCBDb250cm9sIE1hY2hpbmUgb2YgdGhlIGVuaGFuY2hlZCBMb2NhbCBCdXMKICAgIENvbnRyb2xsZXIgZm91bmQgb24gc29tZSBGcmVlc2NhbGUgY2hpcHMgKHN1Y2ggYXMgdGhlIG1wYzgzMTMgYW5kIHRoZQogICAgbXBjODM3OSkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDFlZjhjNzE2ZTkzZmRmNTBlZmU5YzFiYTczM2NhNjY3NWRhYWNhNgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDE4IDE1OjI5OjE0IDIwMDggLTA1MDAKCiAgICBEb24ndCBwYW5pYyBpZiBhIGNvbnRyb2xsZXIgZHJpdmVyIGRvZXMgZWNjIGl0cyBvd24gd2F5LgoKICAgIFNvbWUgaGFyZHdhcmUsIHN1Y2ggYXMgdGhlIGVuaGFuY2VkIGxvY2FsIGJ1cyBjb250cm9sbGVyIHVzZWQgb24gc29tZQogICAgbXBjODN4eCBjaGlwcywgZG9lcyBlY2MgdHJhbnNwYXJlbnRseSB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YSwgcmF0aGVyCiAgICB0aGFuIHByb3ZpZGluZyBhIGdlbmVyaWMgY2FsY3VsYXRlL2NvcnJlY3QgbWVjaGFuaXNtIHRoYXQgY2FuIGJlIGV4cG9ydGVkIHRvCiAgICB0aGUgbmFuZCBzdWJzeXN0ZW0uCgogICAgVGhlIHN1YnN5c3RlbSBzaG91bGQgbm90IEJVRygpIHdoZW4gY2FsY3VsYXRlLCBjb3JyZWN0LCBvciBod2N0bCBhcmUKICAgIG1pc3NpbmcsIGlmIHRoZSBtZXRob2RzIHRoYXQgY2FsbCB0aGVtIGhhdmUgYmVlbiBvdmVycmlkZGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1MmIzNGQ0MGE4YTY0NmUzZDExNjM4ZWE4Nzk3ZTk2Mzk4ZGJhMTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTAgMTg6NDc6MzMgMjAwOCArMDEwMAoKICAgIE5BTkQ6IE1ha2UgTkFORCBkcml2ZXIgbGVzcyB2ZXJib3NlIHBlciBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCB0dXJucyBvZmYgcHJpbnRpbmcgb2YgYmFkIGJsb2NrcyBwZXIgZGVmYXVsdCB1cG9uIGJvb3R1cC4KICAgIFRoaXMgY2FuIGFsd2F5cyBiZSBzaG93biB2aWEgdGhlICJuYW5kIGJhZCIgY29tbWFuZCBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmU1NmEyNzcyZTVjNTk1NzdkZjkwNjE2M2QwZDRiMjliMDU2MTQwZQpBdXRob3I6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgpEYXRlOglXZWQgSmFuIDkgMTU6MzY6MjAgMjAwOCArMDEwMAoKICAgIE5BTkQ6IERhdmluY2kgZHJpdmVyIHVwZGF0ZXMKCiAgICBIZXJlIGNvbWVzIGEgdHJpdmlhbCBwYXRjaCB0byBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbmFuZC5jLiBVbmZvcnR1bmF0ZWx5IEkKICAgIGRvbid0IGhhdmUgaGFyZHdhcmUgaGFuZHkgc28gSSBjYW4gbm90IHRlc3QgaXQgYXQgdGhlIG1vbWVudCBidXQgY2hhbmdlcyBhcmUKICAgIHJhdGhlciB0cml2aWFsIHNvIGl0IHNob3VsZCB3b3JrLiBJdCB3b3VsZCBiZSBuaWNlIGlmIHNvbWVib2R5IHdpdGggYQogICAgaGFyZHdhcmUgY2hlY2tlZCBpdCBhbnl3YXlzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IGRlYWM5MTNlZmZkOGQ4MDUzNWM5ZmY0Njg3YjZmY2RmZjU0MGM1NTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gNSAxNjo1MDozMiAyMDA4ICswMTAwCgogICAgTkFORDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgYW5kIHNtYWxsIGNvZGluZyBzdHlsZSBpc3N1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNTY4Zjc3YWNkZjg5NmZjM2RkNjQxM2NlNTMyMDViMTdiYTgwOWEzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMTY6NDk6MzcgMjAwOCArMDEwMAoKICAgIE5BTkQ6IFVwZGF0ZSBuYW5kX3NwbCBkcml2ZXIgdG8gbWF0Y2ggdXBkYXRlZCBuYW5kIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgTkFORCBib290aW5nIGRyaXZlciBuYW5kX3NwbC9uYW5kX2Jvb3QuYyB0byBtYXRjaAogICAgdGhlIG5ldyBpbmZyYXN0cnVjdHVyZSBmcm9tIHRoZSB1cGRhdGVkIE5BTkQgc3Vic3lzdGVtLiBUaGlzIE5BTkQKICAgIHN1YnN5c3RlbSB3YXMgcmVjZW50bHkgc3luY2VkIGFnYWluIHdpdGggdGhlIExpbnV4IDIuNi4yMiBNVEQvTkFORAogICAgc3Vic3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZGYyZWNlMGYwZmJiYTQ3ZDI3ZjAyZmZmOTZjNTMzNzMyYjk4YzE0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMTY6NDc6NTggMjAwOCArMDEwMAoKICAgIE5BTkQ6IFVwZGF0ZSA0eHggTkRGQyBkcml2ZXIgdG8gbWF0Y2ggdXBkYXRlZCBuYW5kIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgNHh4IE5BTkQgZHJpdmVyIG5kZmMuYyB0byBtYXRjaCB0aGUgbmV3CiAgICBpbmZyYXN0cnVjdHVyZSBmcm9tIHRoZSB1cGRhdGVkIE5BTkQgc3Vic3lzdGVtLiBUaGlzIE5BTkQKICAgIHN1YnN5c3RlbSB3YXMgcmVjZW50bHkgc3luY2VkIGFnYWluIHdpdGggdGhlIExpbnV4IDIuNi4yMiBNVEQvTkFORAogICAgc3Vic3lzdGVtLgoKICAgIFRlc3RlZCBzdWNjZXNzZnVsbHkgb24gQU1DQyBTZXF1b2lhIGFuZCBCYW1ib28uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEyMDcyMjY0NTI4ZWJhMzM3MzdiYzk2NzRlMTlmMGU5MjVmZmRhMjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gNSAxNjo0MzoyNSAyMDA4ICswMTAwCgogICAgTkFORDogQ2hhbmdlIG5hbmRfd2FpdF9yZWFkeSgpIHRvIG5vdCBjYWxsIG5hbmRfd2FpdCgpCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIG5hbmRfd2FpdF9yZWFkeSgpIHRvIG5vdCBqdXN0IGNhbGwgbmFuZF93YWl0KCksCiAgICBzaW5jZSB0aGlzIHdpbGwgc2VuZCBhIG5ldyBjb21tYW5kIHRvIHRoZSBOQU5EIGNoaXAuIFdlIGp1c3Qgd2FudCB0bwogICAgd2FpdCBmb3IgdGhlIGNoaXAgdG8gYmVjb21lIHJlYWR5IGhlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlhZDc1NGZlZjUwNTMxNDRkYWVkM2IwMDdhZGFmMWM5YmVjNjU0YzkKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJRnJpIERlYyAxNCAxNjozMzo0NSAyMDA3ICswMTAwCgogICAgbWFrZSBuYW5kIGR1bXAgYW5kIG5hbmQgZHVtcC5vb2Igd29yawoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQzZWEzNmZiOGZkY2JjNmUyNmYwY2FmZmU4MDhjNjM2MzNiMTg4MzgKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJTW9uIE5vdiAxOSAxNDo0NjowMCAyMDA3ICswMTAwCgogICAgbW92aW5nIGZpbGVzIGZyb20geWFmZnMyL2RpcmVjdC8gdG8geWFmZnMyLyBhbmQgZGVsZXRpbmcgYWxsIHN5bWxpbmtzCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgoKY29tbWl0IDk4ODI0Y2UzZjk1ZTZjNGQwOGQ0MzliNzc5YzBhY2IwMDQ4MDQ1YTYKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+CkRhdGU6CVR1ZSBKdW4gMTAgMTY6MTg6MTMgMjAwOCAtMDUwMAoKICAgIENsZWFuIG91dCB1bm5lZWRlZCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KCmNvbW1pdCBlYzI5YTMyYjVhNzFiMjAzZjdkOTA4N2YxZjRkNzg2ZTdmMTNkZDIzCkF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+CkRhdGU6CUZyaSBOb3YgMTYgMDg6NDQ6MjcgMjAwNyArMDEwMAoKICAgIENyZWF0ZSBzeW1saW5rcyBmcm9tIHlhZmZzMi9kaXJlY3QgdG8geWFmZnMyCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgoKY29tbWl0IDkwZWYxMTdiNjgzODdkNjY3NjMyOTFhZjAxMTc2Nzc2NDQxNjY2MTEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiAxNSAxMjoyMzo1NyAyMDA3ICswMTAwCgogICAgSW5jb3Jwb3JhdGUgeWFmZnMyIGludG8gVS1ib290CgogICAgVG8gdXNlIFlBRkZTMiBkZWZpbmUgQ09ORklHX1lBRkZTMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBlOGNjOGJkOTIyNTdkYTJlMWRmODhjYmM5ODVlMTY2ZTQ3MmNlNjEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiAxNSAxMToxMzowNSAyMDA3ICswMTAwCgogICAgWUFGRlMyIGltcG9ydAoKICAgIERpcmVjdCBpbXBvcnQgb2YgeWFmZnMgYXMgYSB0YXJiYWxsIGFzIG9mIDIwMDcxMTEzIGZyb20gdGhlaXIgcHVibGljCiAgICBDVlMtd2ViIGF0IGh0dHA6Ly93d3cuYWxlcGgxLmNvLnVrL2NnaS1iaW4vdmlld2N2cy5jZ2kveWFmZnMyLwoKICAgIFRoZSBjb2RlIGNhbiBhbHNvIGJlIGltcG9ydGVkIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aDoKICAgIGV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub255bW91c0BjdnMuYWxlcGgxLmNvLnVrOi9ob21lL2FsZXBoMS9jdnMgY3ZzIGxvZ29uCiAgICAoSGl0IHJldHVybiB3aGVuIGFza2VkIGZvciBhIHBhc3N3b3JkKQogICAgY3ZzIGNoZWNrb3V0IHlhZmZzMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0aWcgT2xzZW4gPHN0aWcub2xzZW5AdGFuZGJlcmcuY29tPgoKY29tbWl0IDMwNDNjMDQ1ZDVhOTg5N2ZhYmE3ZDVjNzIxOGMyZjRkMDZjZDAwMzgKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJV2VkIE5vdiAxNCAxNDoyODoxMSAyMDA3ICswMTAwCgogICAgV2hpdGVzcGFjZSBjbGVhbnVwIGFuZCBtYXJraW5nIGJyb2tlbiBjb2RlLgoKICAgIENoYW5nZXMgcmVxdWVzdGVkIGJ5IG1haW50YWluZXIgU3RlZmFuIFJvZXNlIGFmdGVyCiAgICBwb3N0aW5nIHBhdGNoIHRvIFUtYm9vdCBtYWlsaW5nIGxpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWUxZGFlNWMzZGI3ZjQwMjZmMzFiNmEyYTgxZWNkOWU5ZGVlNDc1ZgpBdXRob3I6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQGRhdGFyZXNwb25zLm5vPgpEYXRlOglGcmkgTm92IDkgMTM6MzI6MzAgMjAwNyArMDEwMAoKICAgIEZpeGluZyBjb2Rpbmcgc3R5bGUgaXNzdWVzCgogICAgIC0gRml4aW5nIGxlYWRpbmcgd2hpdGUgc3BhY2VzCiAgICAgLSBGaXhpbmcgaW5kZW50YXRpb24gd2hlcmUgNCBzcGFjZXMgYXJlIHVzZWQgaW5zdGVhZCBvZiB0YWIKICAgICAtIFJlbW92aW5nIEMrKyBjb21tZW50cyAoLy8pLCB3aGVyZXZlciBJIGludHJvZHVjZWQgdGhlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYmI2NTFiMjljYjY0ZDM3OGEwNjcyOTk3MGUxZTE1M2JiNjA1YjEKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJVGh1IE5vdiA4IDEwOjM5OjUzIDIwMDcgKzAxMDAKCiAgICBSZW1vdmUgd2hpdGUgc3BhY2UgYXQgZW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IKQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KRGF0ZToJV2VkIE9jdCAzMSAxMzo1MzowNiAyMDA3ICswMTAwCgogICAgVXBkYXRlIE1URCB0byB0aGF0IG9mIExpbnV4IDIuNi4yMi4xCgogICAgQSBsb3QgY2hhbmdlZCBpbiB0aGUgTGludXggTVREIGNvZGUsIHNpbmNlIGl0IHdhcyBsYXN0IHBvcnRlZCBmcm9tCiAgICBMaW51eCB0byBVLUJvb3QuIFRoaXMgcGF0Y2ggdGFrZXMgVS1Cb290IE5BTkQgc3VwcG9ydCB0byB0aGUgbGV2ZWwKICAgIG9mIExpbnV4IDIuNi4yMi4xIGFuZCB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciB2ZXJ5IGxhcmdlIE5BTkQgZGV2aWNlcwogICAgKDRLQiBwYWdlcykgYW5kIGVhc2UgdGhlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBVLUJvb3QgYW5kIExpbnV4CiAgICBmaWxlc3lzdGVtcy4KCiAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCBvbiB0d28gY3VzdG9tIGJvYXJkcyB3aXRoIFBQQyBhbmQgQVJNCiAgICBwcm9jZXNzb3JzIHJ1bm5pbmcgWUFGRlMgaW4gVS1Cb290IGFuZCBMaW51eCB1c2luZyBnY2MtNC4xLjIKICAgIGNyb3NzIGNvbXBpbGVycy4KCiAgICBNQUtFQUxMIHBwYy9hcm0gaGFzIHNvbWUgaXNzdWVzOgogICAgICogRE9DL09uZU5hbmQvbmFuZF9zcGwgaXMgbm90IGJ1aWxkaW5nIChJIGhhdmUgbm90IHRyaWVkIHBvcnRpbmcKICAgICAgIHRoZXNlIHBhcnRzLCBhbmQgc2luY2UgSSBkbyBub3QgaGF2ZSBhbnkgSFcgYW5kIEkgYW0gbm90IGZhbWlsaWFyCiAgICAgICB3aXRoIHRoaXMgY29kZS9IVyBJIHRoaW5rIGl0cyBiZXN0IGxlZnQgdG8gc29tZW9uZSBlbHNlLikKCiAgICBFeGNlcHQgZm9yIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGFib3ZlLCBJIGhhdmUgcG9ydGVkIGFsbCBkcml2ZXJzCiAgICBuZWNlc3NhcnkgdG8gcnVuIE1BS0VBTEwgcHBjL2FybSB3aXRob3V0IGVycm9ycyBhbmQgd2FybmluZ3MuIE1hbnkKICAgIGRyaXZlcnMgd2VyZSB0cml2aWFsIHRvIHBvcnQsIGJ1dCBzb21lIHdlcmUgbm90IHNvIHRyaXZpYWwuIFRoZQogICAgZm9sbG93aW5nIGRyaXZlcnMgbXVzdCBiZSBleGFtaW5lZCBjYXJlZnVsbHkgYW5kIG1heWJlIHJld3JpdHRlbiB0bwogICAgc29tZSBkZWdyZWU6CiAgICAgY3B1L3BwYzR4eC9uZGZjLmMKICAgICBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbmFuZC5jCiAgICAgYm9hcmQvZGVsdGEvbmFuZC5jCiAgICAgYm9hcmQvenlsb25pdGUvbmFuZC5jCgogICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RpZyBPbHNlbiA8c3RpZy5vbHNlbkB0YW5kYmVyZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDgyOTE5ZTZjOGE3M2IzNjNhMjZmMzRiNzM0OTIzODQ0ZTUyZDFjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxMiAxNjowODozOCAyMDA4ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0csIHByZXBhcmUgcmVsZWFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTdlOTAwYjhjMGYzOGQ5MjJkYTQ3MDczMjQ2MjE5ZGNlMmE4NDdmMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTIgMTQ6NTQ6MDQgMjAwOCArMDIwMAoKICAgIE1WQkNfUDogZml4IGNvbXBpbGUgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTJiMDQ3YWU0ODIxOWI1OWJlYmUzN2JhNzQzYWIxMDNmZDRmODMxNgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTIgMTI6MTA6MTEgMjAwOCArMDIwMAoKICAgIE1QQzgyNzJBRFM6IGZpeCBidWlsZCBlcnJvcjogJ2JkX3QnIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3BjaV9jbGsnCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjOWMxMDFjNjYwYjNkMTk5NTA0NWM2MWM3YzYwNDFmNTJiNmNmMzM1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxMiAwMDozNjo1MyAyMDA4ICswMjAwCgogICAgYWRzNTEyMTogZml4IGNvbXBpbGVyIHdhcm5pbmdzICh1bnVzZWQgdmFyaWFibGVzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTAyY2EwOTI0NjAzOTk2NGQ1OWJiY2I1MTliMWUxYjVhZWQwMTMwOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBdWcgMTEgMTE6Mjk6MjggMjAwOCAtMDUwMAoKICAgIDg1eHg6IFJlbmFtZSBDT05GSUdfTlJfQ1BVUyB0byBDT05GSUdfTlVNX0NQVVMKCiAgICBVc2UgQ09ORklHX05VTV9DUFVTIHRvIG1hdGNoIGV4aXN0aW5nIGRlZmluZSB1c2VkIGJ5IDg2eHguCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMyMTZjYTk2OTJmZjgwZDdjNjM4NzIzZWY0NDhmM2QzNjMwMWQ5ZTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gQXVnIDExIDA5OjIwOjUzIDIwMDggLTA1MDAKCiAgICBGaXggZmFsbG91dCBmcm9tIGF1dG9zdGFydCByZXZlcnQKCiAgICBUaGUgYXV0b3N0YXJ0IHJldmVydCBjYXVzZWQgYSBiaXQgb2YgZHVwbGljYXRlZCBjb2RlIGFzIHdlbGwgYXMKICAgIGNvZGUgdGhhdCB3YXMgdXNpbmcgaW1hZ2VzLT5hdXRvc3RhcnQgdGhhdCBuZWVkcyB0byBnZXQgcmVtb3ZlZCBzbwogICAgd2UgY2FuIGJ1aWxkIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2NmOGEyMzRiOGU4YzAyZTRkYTFmMjM1NjYwNDNiYzI4OGIwNTIyMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBdWcgMTEgMDk6MTY6MjUgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIHJlbGF0ZWQgdG8gcjhhNjY1OTctaGNkICYgdXNiCgogICAgV2hlbiBidWlsZGluZyB0aGUgODU0NERTIGJvYXJkIHdlIGdldCB0aGlzIGVycm9yOgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSByOGE2NjU5Ny1oY2QuYzoyMjoKICAgIHUtYm9vdC9pbmNsdWRlL3VzYi5oOjE5MDoyOiBlcnJvcjogI2Vycm9yIFVTQiBMb3dsZXZlbCBub3QgZGVmaW5lZAogICAgbWFrZVsxXTogKioqIFtyOGE2NjU5Ny1oY2Qub10gRXJyb3IgMQoKICAgIFRoZSBjbGVhbmVzdCBmaXggaXMgdG8gb25seSBidWlsZCByOGE2NjU5Ny1oY2QuYyBpZiBDT05GSUdfVVNCX1I4QTY2NTk3X0hDRAogICAgaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMmQwZGFhMDM2MTIzMzhhODEzZTNjOWQyMjY4MGU1NGVhYmZlYTM3OApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDQgMTQ6MDI6MjYgMjAwOCAtMDUwMAoKICAgIFBPV0VSUEMgODZ4eDogTW92ZSBCQVQgc2V0dXAgY29kZSB0byBDCgogICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3ZSB3aWxsIGJlIHBvc3NpYmx5IGJlIGxvY2F0aW5nCiAgICBkZXZpY2VzIGF0IHBoeXNpY2FsIGFkZHJlc3NlcyBhYm92ZSAzMmJpdHMsIGFuZCB0aGUgYXNtCiAgICBwcmVwcm9jZXNzaW5nIGRvZXMgbm90IGFwcGVhciB0byBkZWFsIHdpdGggVUxMIGNvbnN0YW50cwogICAgcHJvcGVybHkuIFdlIG5vdyBjYWxsIHdyaXRlX2JhdCBpbiBsaWJfcHBjL2JhdF9ydy5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWRlNjcxNDlkYjU3NmM5MWI5YzJhMGExODI2NTIzMzFlN2U0NDIxMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDQgMTQ6MDE6NTMgMjAwOCAtMDUwMAoKICAgIFBPV0VSUEM6IEFkZCBzeW5jaHJvbml6YXRpb24gdG8gd3JpdGVfYmF0IGluIGxpYl9wcGMvYmF0X3J3LmMKCiAgICBQZXJmb3JtIHN5bmMvaXN5bmMgYXMgcmVxdWlyZWQgYnkgdGhlIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIzZjkzNWMwNzNlNzU3OGM2MDY2ODA0ZmQyZjllZTExNmNhZTZmZmUKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyA0IDE0OjAxOjE2IDIwMDggLTA1MDAKCiAgICBQT1dFUlBDOiA4Nnh4IC0gYWRkIG1pc3NpbmcgQ09ORklHX0hJR0hfQkFUUyB0byBzYmM4NjQxZCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyNzZhMzU4NGQyNmE5NTMzNDA0ZjBlYzAwYzNiNjFjZjlhOTc5MzkKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMyAyMTo0NDoxMCAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggbXgzMV9ncGlvX211eCgpIGZ1bmN0aW9uIGFuZCBNVVhfLW1hY3Jvcy4KCiAgICBDb3JyZWN0IHRoZSBteDMxX2dwaW9fbXV4KCkgZnVuY3Rpb24gdG8gYWxsb3cgY2hhbmdpbmcgYWxsIGkuTVgzMSBJT01VWAogICAgY29udGFjdHMgaW5zdGVhZCBvZiBvbmx5IHRoZSBmaXJzdCAyNTYgb25lcyBhcyBpcyB0aGUgY2FzZSBwcmlvciB0bwogICAgdGhpcyBwYXRjaC4KCiAgICBBZGQgbWlzc2luZyBNVVhfKiBtYWNyb3MgYW5kIHVwZGF0ZSBib2FyZCBmaWxlcyB0byB1c2UgdGhlIG5ldyBtYWNyb3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IGI2YjE4M2M1YjJmZmZkNGM0NTZiN2UzZmNiMDY0Y2NlYjQ3ZmU3YWMKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMyAyMTo0MzozNyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggSU9NVVggcmVsYXRlZCB0eXBvcwoKICAgIENvcnJlY3QgdGhlIG5hbWVzIG9mIHNvbWUgSU9NVVggbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCA0ZDU3YjBmYjI5MjdkNGY1MGQ4MzQ4ODRiNGVjNGE3Y2EwMTcwOGIwCkF1dGhvcjogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+CkRhdGU6CU1vbiBBdWcgMTEgMjA6MjY6MTYgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVycyB0byBvbmVuYW5kX3ZlcmlmeV9wYWdlCgogICAgVGhlIGJsb2NrIGFuZCBwYWdlIHBhcmFtZXRlcnMgb2Ygb25lbmFuZF92ZXJpZnlfcGFnZSgpIGFyZSBub3QgdXNlZC4gVGhpcyBjYXVzZXMgYSBjb21waWxlciBlcnJvciB3aGVuIENPTkZJR19NVERfT05FTkFORF9WRVJJRllfV1JJVEUgaXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGU4NGQ1NjhmYTJhOWY0Y2U3ODg4MTQxZTcxNjc2MzY4ZWY2YjNmMjUKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxODowMDo0MCAyMDA4ICswMjAwCgogICAgdmlkZW86IGZpeCBidWcgaW4gY2ZiX2NvbnNvbGUgY29kZQoKICAgIEZJTExfMTVCSVRfNTU1UkdCIG1hY3JvIGV4dGVuc2lvbiBmb3IgcGl4ZWwgc3dhcHBpbmcKICAgIGJ5IGNvbW1pdCBiZWQ1Mzc1M2RkMWQ3ZTZiY2JlYTQzMzliZTBmYjc3NjAyMTRjYzM1CiAgICBpbnRyb2R1Y2VkIGEgYnVnIGluIGNmYl9jb25zb2xlOgoKICAgIEJpdG1hcHMgd2l0aCBvZGQtbnVtYmVyZWQgd2lkdGggd29uJ3QgYmUgcmVuZGVyZWQKICAgIGNvcnJlY3RseSBhbmQgZXZlbiBVLUJvb3QgY3Jhc2hlcyBhcmUgb2JzZXJ2ZWQgb24KICAgIHNvbWUgcGxhdGZvcm1zIHdoaWxlIHJlcGVhdGVkIHJlbmRlcmluZyBvZiBzdWNoCiAgICBiaXRtYXBzIHdpdGggImJtcCBkaXNwbGF5Ii4gQWxzbyBpZiBhIGJpdG1hcCBpcwogICAgcmVuZGVyZWQgdG8gYW4gb2RkLW51bWJlcmVkIHggc3RhcnRpbmcgcG9zaXRpb24sCiAgICB0aGUgc2FtZSBwcm9ibGVtIG9jY3Vycy4gVGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0CiAgICB0byBmaXggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGQ5MDE1ZjZhNTBkNzI1ODEyNTM0OWVmNWMyYWY4MzY0NThhMDAyOWEKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxODowMDozOSAyMDA4ICswMjAwCgogICAgdmlkZW86IGZpeCBidWcgaW4gbG9nb19wbG90CgogICAgSWYgbG9nb19wbG90KCkgc2hvdWxkIGV2ZXIgYmUgY2FsbGVkIHdpdGggeCBzdGFydGluZwogICAgcG9zaXRpb24gb3RoZXIgdGhhbiB6ZXJvIGFuZCBmb3IgcGl4ZWwgZGVwdGhzIGdyZWF0ZXIKICAgIHRoYW4gOGJwcCwgbG9nbyBjb2xvcnMgZGlzdG9ydGlvbiB3aWxsIGJlIG9ic2VydmVkLgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDQwNjgxOWFlOTRmNzlmNWI1OWUwMWQxNjMzODBjYTdkODM3MDkyNTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDExIDAwOjE3OjUyIDIwMDggKzAyMDAKCiAgICBNQUlOVEFJTkVSUzogc29ydCBlbnRyaWVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZmM0NDJkNzkxM2Q0ZDFjM2E5YmY0OTRmOTBjMDEyYzJmOGMzYmRjCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDcgMTg6MTk6MjggMjAwOCArMDgwMAoKICAgIEFkZCBtcGM3NDQ4aHBjMiBtYWludGFpbmVyIGluZm9ybWF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE5ZmUwYzNlN2NhNDhhZmE1MGQ2YTBkYjk5ZmE5MWU3MjgyZDczZDgKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUaHUgQXVnIDcgMTM6MTM6MjcgMjAwOCArMDUzMAoKICAgIGNvbW1vbi9jbWRfbG9hZC5jIC0gTWlub3IgY29kZSAmIENvZGluZyBTdHlsZSBjbGVhbnVwCgogICAgLSBvc19kYXRhX2hlYWRlciBWYXJpYWJsZSBpcyBhIGNhcnJ5IG92ZXIgZmVhdHVyZQogICAgICAgJiB1bnVzZWQuIFNvIHJlbW92ZWQgYWxsIGluc3RhbmNlIG9mIHRoaXMgdmFyaWFibGUKICAgICAtIE1pbm9yIENvZGUgU3R5bGUgVXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgogICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGQyOGYzNGJiZTU2ZDA5NzFiZDYwMzc4OWRjYzZmZTdhZGYxMWYxNApBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE5OjMyOjMzIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgdGhlIFUtQm9vdCB3aWtpIFVSTC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgYWE1ZmZhMTZkN2U0YzQ2MWI3Yjc3YmY4ZTc5ZDJlZjU2MzhjZjc1NApBdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVN1biBBdWcgMTAgMTc6NTY6MzYgMjAwOCArMDIwMAoKICAgIE9uZU5BTkQ6IFJlbW92ZSBiYXNlIGFkZHJlc3Mgb2Zmc2V0IHVzYWdlCgogICAgV2hpbGUgbG9jYWxseSBwcmVwYXJpbmcgc29tZSBVLUJvb3QgcGF0Y2hlcyBmb3IgQVJNIGJhc2VkIE9NQVAzIGJvYXJkcywgc29tZQogICAgdXNpbmcgT25lTkFORCBhbmQgc29tZSB1c2luZyBOQU5ELCB3ZSBmb3VuZCBzb21lIGRpZmZlcmVuY2VzIGluIE9uZU5BTkQgYW5kCiAgICBOQU5EIGNvbW1hbmQgYWRkcmVzcyBoYW5kbGluZy4KCiAgICBBcyB0aGlzIG1pZ2h0IGNvbmZ1c2UgdXNlcnMgKGl0IGFscmVhZHkgY29uZnVzZWQgdXMpLCB3ZSBsaWtlIHRvIGFsaWduIE9uZU5BTkQKICAgIGFuZCBOQU5EIGFkZHJlc3MgaGFuZGxpbmcuCgogICAgVGhlIGlzc3VlIGlzIHRoYXQgY21kX29uZW5hbmQuYyBzdWJ0cmFjdHMgdGhlIG9uZW5hbmQgYmFzZSBhZGRyZXNzIGZyb20gdGhlCiAgICBhZGRyZXNzZXMgeW91IHR5cGUgaW50byB0aGUgdS1ib290IGNvbW1hbmQgbGluZSBzbywgdW5saWtlIG5hbmQsIHlvdSBjYW4ndAogICAgdXNlIGFkZHJlc3NlcyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG9uZW5hbmQgcGFydCBlLmcuIHRoaXMgd29uJ3Qgd29yazoKCiAgICBvbmVuYW5kIHJlYWQgODIwMDAwMDAgMjgwMDAwIDQwMDAwMAoKICAgIHlvdSBoYXZlIHRvIHVzZToKCiAgICBvbmVuYW5kIHJlYWQgODIwMDAwMDAgMjAyODAwMDAgNDAwMDAwCgogICAgTG9va2luZyBhdCByZWNlbnQgZ2l0LCB0aGUgb25seSBib2FyZCBjdXJyZW50bHkgdXNpbmcgT25lTkFORCBpcyBBcG9sbG9uLCBhbmQKICAgIGZvciB0aGlzIHRoZSBPbmVOQU5EIGJhc2UgYWRkcmVzcyBpcyAwIChhcG9sbG9uLmgpCgogICAgI2RlZmluZQlDRkdfT05FTkFORF9CQVNFCTB4MDAwMDAwMDAKCiAgICBzbyBwYXRjaCBiZWxvdyB3b24ndCBicmVhayBhbnkgZXhpc3RpbmcgYm9hcmRzIGFuZCB3aWxsIGFsaWduIE9uZU5BTkQgYW5kIE5BTkQKICAgIGhhbmRsaW5nIG9uIGJvYXJkcyB3aGVyZSBPbmVOQU5EIGJhc2UgYWRkcmVzcyBpcyAhPSAwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFuaWthbmRhbiBQaWxsYWkgPG1hbmkucGlsbGFpQHRpLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGMxMTUyODA4M2VmNmU1NWU3NmRmNzQyMjI4YzI2ZTM5ZDE1MTgxM2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDcgMDk6Mjg6MjAgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHdvcmthcm91bmQgb2xkIGJpbnV0aWxzIGJ1ZwoKICAgIFRoZSByZWNlbnQgY2hhbmdlIHRvIG1vdmUgdGhlIC5ic3Mgb3V0c2lkZSBvZiB0aGUgaW1hZ2UgZ2l2ZXMgb2xkZXIKICAgIGJpbnV0aWxzIChsZCBmcm9tIGVsZGs0LjEvYmludXRpbHMtMi4xNikgc29tZSBoZWFkYWNoZToKCiAgICBwcGNfODV4eC1sZDogdS1ib290OiBOb3QgZW5vdWdoIHJvb20gZm9yIHByb2dyYW0gaGVhZGVycyAoYWxsb2NhdGVkIDMsIG5lZWQgNCkKICAgIHBwY184NXh4LWxkOiBmaW5hbCBsaW5rIGZhaWxlZDogQmFkIHZhbHVlCgogICAgV2Ugd29ya2Fyb3VuZCBpdCBieSBiZWluZyBleHBsaWNpdCBhYm91dCB0aGUgcHJvZ3JhbSBoZWFkZXJzIGFuZCBub3QKICAgIGFzc2lnbmluZyB0aGUgLmJzcyB0byBhIHByb2dyYW0gaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGJmMjAyZWM1ODZkNDQ2NmM5MDBlOTg3NzIwZmE2MzVjNTk0ZDY4OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTAgMDE6MjY6MjYgMjAwOCArMDIwMAoKICAgIFJldmVydCAiW25ldyB1SW1hZ2VdIEFkZCBhdXRvc3RhcnQgZmxhZyB0byBib290bV9oZWFkZXJzIHN0cnVjdHVyZSIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IGY1NjE0ZTc5MjY4NjNiZjAyMjVlYzg2MGQ5YjMxOTc0MWE5YzQwMDQuCgogICAgVGhlIGNvbW1pdCB3YXMgYmFzZWQgb24gYSBtaXN1bmRlcnN0YW5kaW5nIG9mIHRoZSAoZG9jdW1lbnRlZCkKICAgIG1lYW5pbmcgb2YgdGhlICdhdXRvc3RhcnQnIGVudmlyb25tZW50IHZhcmlhYmxlLiBJdCBtaWdodCBjYXVzZQogICAgYm9hcmRzIHRvIGhhbmcgaWYgJ2F1dG9zdGFydCcgd2FzIHVzZWQsIHdpdGggdGhlIHBvdGVudGlhbCB0byBicmljawogICAgdGhlbS4gR28gYmFjayB0byB0aGUgZG9jdW1lbnRlZCBiZWhhdmlvdXIuCgogICAgQ29uZmxpY3RzOgoKCWNvbW1vbi9jbWRfYm9vdG0uYwoJY29tbW9uL2ltYWdlLmMKCWluY2x1ZGUvaW1hZ2UuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjlmOGY1OGZmNDBjNjdmN2YyZTExYWZkMTcxNTE3MzA5NGU1MmFjMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBBdWcgOSAyMzoxNzozMiAyMDA4ICswMjAwCgogICAgVFFNOHh4e0wsTX06IHRyeSB0byBub3JtYWxpemUgY29uZmlnIGZpbGVzIGZvciBUUU04eHg/IGJhc2VkIGJvYXJkCgogICAgLSBlbmFibGUgQ0ZJIGRyaXZlciB3aGVyZSB0aGlzIHdhcyBmb3Jnb3R0ZW4KICAgIC0gZW5hYmxlIG10ZHBhcnRzIHN1cHBvcnQKICAgIC0gYWRqdXN0IGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQxMjY2YzliNWE1Zjg3M2RmM2VjODkxYmIwOTA3NjE2OTU4YjU2MDIKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUdWUgQXVnIDUgMTA6NTE6NTcgMjAwOCAtMDUwMAoKICAgIEZJVDogRml4IGhhbmRsaW5nIG9mIGltYWdlcyB3aXRob3V0IHJhbWRpc2tzCgogICAgYm9vdF9nZXRfcmFtZGlzaygpIHNob3VsZCBub3QgdHJlYXQgdGhlIGNhc2Ugd2hlbiBhIEZJVCBpbWFnZSBkb2VzCiAgICBub3QgY29udGFpbiBhIHJhbWRpc2sgYXMgYW4gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KICAgIEFja2VkLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgZjc3ZDkyYTNmNTZkODhlNjNjYzAyMjI2YTEyMDRiM2JkYmFjNjk2MQpBdXRob3I6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgpEYXRlOglTYXQgQXVnIDkgMDE6Mzk6MDkgMjAwOCArMDQwMAoKICAgIERhdGFGbGFzaDogQVQ0NURCMDIxIGZpeCBhbmQgQVQ0NURCMDgxIHN1cHBvcnQKCiAgICBGaXggZm9yIHBhZ2Ugc2l6ZSBvZiBBVDQ1REIwMjEuIEFsc28gYWRkaW5nIGJpZ2dlciBBVDQ1REIwODEKICAgIHdoaWNoIGNvbWVzIHdpdGggc29tZSBuZXdlciBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Cgpjb21taXQgYmE5MzI0NDUxYjY2MmRkMzkzYWZhNTNlNWNjMzZmYzVkM2QxMDk2NgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEF1ZyA4IDE2OjMwOjIzIDIwMDggKzA5MDAKCiAgICBzaDogVXBkYXRlIHNoNzc2M3JkcCBjb25maWcKCiAgICBBZGQgc2hfZXRoIHN1cHBvcnQgdG8gc2g3NzYzcmRwLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KCmNvbW1pdCAyMWY5NzFlYzI2NWY2MDQyZWMyMTYzNmQ1NWQwNmE2YmMwNzUxMDc3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCA3IDAxOjIyOjI5IDIwMDggKzAyMDAKCiAgICBUUU04MjNMOiByZS1lbmFibGUgbG9nbyBzdXBwb3J0OyB1cGRhdGUgTENEX0lORk8gdGV4dAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2I4ZDE3ZjBmMDgyMDczMzQ2YzBkZjAxN2M5ZGZkNmFjZGI0MGQ2ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgOCAxNjo0MTo1NiAyMDA4ICswMjAwCgogICAgVFFNOHh4TDogZml4IHN1cHBvcnQgZm9yIHNlY29uZCBmbGFzaCBiYW5rCgogICAgV2hlbiBzd2l0Y2hpbmcgdGhlIFRRTTh4eEwgbW9kdWxlcyB0byB1c2UgdGhlIENGSSBmbGFzaCBkcml2ZXIsCiAgICBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIGZsYXNoIGJhbmsgd2FzIGJyb2tlbiBiZWNhdXNlIHRoZSBDRkkgZHJpdmVyCiAgICBkaWQgbm90IHN1cHBvcnQgZHluYW1pY2FsbHkgc2l6ZWQgYmFua3MuIFRoaXMgZ2V0cyBmaXhlZCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyYTExMmIyMzRkODc5ZjYzOTA1MDNhNWY0ZTM4MjQ2YWNjZTlkMGIwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyA4IDE2OjM5OjU0IDIwMDggKzAyMDAKCiAgICBDRkk6IGFsbG93IGZvciBkeW5hbWljYWxseSBkZXRlcm1pbmVkIGZsYXNoIHNpemVzIGFuZCBhZGRyZXNzZXMKCiAgICBUaGUgQ0ZJIGRyaXZlciBhbGxvd2VkIG9ubHkgZm9yIHN0YXRpYyBpbml0aWFsaXplcnMgaW4gdGhlCiAgICBDRkdfRkxBU0hfQkFOS1NfTElTVCBkZWZpbml0aW9uLCBpLiBlLiBpdCBkaWQgbm90IGFsbG93IHRvIG1hcAogICAgc2V2ZXJhbCBmbGFzaCBiYW5rcyBjb250aWd1b3VzbHkgaWYgdGhlIGJhbmsgc2l6ZXMgd2VyZSBub3Qga25vd24gaW4KICAgIGFkdmFuY2UsIHdoaWNoIGtpbmQgb2YgdmlvbGF0ZXMgVS1Cb290J3MgZGVzaWduIHBoaWxvc29waHkuCgogICAgKHdpbGwgYmUgdXNlZCBmb3IgZXhhbXBsZSBieSB0aGUgVFFNOHh4TCBib2FyZHMpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOWQ3OGVlNDZkOWEzOTZkMGE4MWQwMGMyYjAwM2E5YmQzMmMyZTYxCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEF1ZyA3IDIzOjI2OjM1IDIwMDggLTA3MDAKCiAgICBRRSBVRUM6IEZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIE1vdmVkIHN0YXRpYyBmdW5jdGlvbnMgZWFybGllciBpbiBmaWxlIHNvIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBub3QgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDVkMjhmZTRhYWQ1ZjQ1MzU0MDA2NDdhNTYxN2MxMTAzOTUwNjQ2NwpBdXRob3I6IERhdmlkIFNhYWRhIDxEYXZpZC5TYWFkYUBlY2l0ZWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzMSAwMjozNzozOCAyMDA4IC0wNzAwCgogICAgUUUgVUVDOiBBZGQgTUlJIENvbW1hbmRzCgogICAgQWRkIE1JSSBjb21tYW5kcyB0byB0aGUgVUVDIGRyaXZlci4gTm90ZSB0aGF0IG9uY2UgYSBVRUMgZGV2aWNlIGlzIHNlbGVjdGVkLAogICAgYW55IGRldmljZSBvbiBpdHMgTURJTyBidXMgY2FuIGJlIGFkZHJlc3NlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGZkMGYyZjM3OTZmZjJhN2EzMmQzNWRlYjFiNzk5NmU0ODU4NDlkZjcKQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBKdWwgOSAyMTowNzozOCAyMDA4ICswOTAwCgogICAgdXNiOiBhZGQgc3VwcG9ydCBmb3IgUjhBNjY1OTcgdXNiIGNvbnRyb2xsZXIKCiAgICBhZGQgc3VwcG9ydCBmb3IgUmVuZXNhcyBSOEE2NjU5NyB1c2IgY29udHJvbGxlci4KICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgVVNCIEhvc3QgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDFkMTBkY2QwNDFhYWVhZTlmZDdjODIxMDA1NjkyODk4YTAzMDMzODIKQXV0aG9yOiBIdW50ZXIsIEpvbiA8am9uLWh1bnRlckB0aS5jb20+CkRhdGU6CVNhdCBKdWwgMjYgMTg6NTk6MTYgMjAwOCAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBPTUFQNTkxMiBhbmQgT01BUDE2eHggdG8gdXNiZGNvcmVfb21hcDE1MTAuYwoKICAgIEFkZCBzdXBwb3J0IHRvIGRyaXZlcnMvdXNiL3VzYmRjb3JlX29tYXAxNTEwLmMgZm9yIE9NQVA1OTEyIGFuZCBPTUFQMTZ4eCBkZXZpY2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBIdW50ZXIgPGpvbi1odW50ZXJAdGkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBlYWIxMDA3MzM0YjkzYTYyMDlmMWVjMzM2MTVlMjZlZjUzMTFlZGU3CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJV2VkIEF1ZyA2IDE1OjQyOjUyIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IFNlcXVvaWEgaGFzIHR3byBVQVJUcyBpbiAiNC1waW4iIG1vZGUuIENvbmZpZ3VyZSB0aGUgR1BJT3MgYXMgcGVyIHNjaGVtYXRpYy4KCiAgICBUaGUgU2VxdW9pYSBib2FyZCBoYXMgdHdvIFVBUlRzIGluICI0LXBpbiIgbW9kZS4gVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgR1BJTwogICAgY29uZmlndXJhdGlvbiB0byBtYXRjaCB0aGUgc2NoZW1hdGljLCBhbmQgYWxzbyBzZXRzIHRoZSBTRFIwX1BGQzEgcmVnaXN0ZXIgdG8KICAgIHNlbGVjdCB0aGUgY29ycmVzcG9uZGluZyBtb2RlIGZvciB0aGUgVUFSVHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZWI1NzE3YTg1YjZjYmEzZjY3YzExZmE4OWJkZGUzOGRjZDA4MWI1CkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGFucy1jaHJpc3RpYW4uZWd0dmVkdEBhdG1lbC5jb20+CkRhdGU6CVdlZCBBdWcgNiAxNDo0MjoxMyAyMDA4ICswMjAwCgogICAgYXZyMzI6IGFkZCBzdXBwb3J0IGZvciBFYXJ0aExDRCBGYXZyLTMyIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBGYXZyLTMyIGJvYXJkIG1hZGUgYnkgRWFydGhMQ0QuCgogICAgVGhpcyBraXQsIHdoaWNoIGlzIGFsc28gY2FsbGVkIGV6TENELTEwMSB3aGVuIHJ1bm5pbmcgd2l0aCBFYXJ0aExDRCBmaXJtd2FyZSwKICAgIGhhcyBhIDEwLjQiIHRvdWNoIHNjcmVlbiBMQ0QgcGFuZWwsIDE2IE1CIDMyLWJpdCBTRFJBTSwgOCBNQiBwYXJhbGxlbCBmbGFzaCwKICAgIEV0aGVybmV0LCBhdWRpbyBvdXQsIFVTQiBkZXZpY2UsIFNELWNhcmQgc2xvdCwgVVNBUlQgYW5kIHZhcmlvdXMgb3RoZXIKICAgIGNvbm5lY3RvcnMgZm9yIGNlbm5lY3Rpbmcgc3R1ZmYgdG8gU1BJLCBJMkMsIEdQSU8sIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoYW5zLWNocmlzdGlhbi5lZ3R2ZWR0QGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBiYzkwMTllMTk3NThhMTlhMzg4ZmIyMGVmMThkYzc3MWNkMzlmZGRhCkF1dGhvcjogUmFmYWVsIENhbXBvcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxMDoyMjoyMCAyMDA4ICswMjAwCgogICAgY2ZpLWZsYXNoOiBBZGRlZCBzdXBwb3J0IHRvIGZsYXNoX3JlYWxfcHJvdGVjdCBmb3IgQXRtZWwgZmxhc2ggZGV2aWNlcwoKICAgIFNvbWUgb2YgdGhlIGZsYXNoIG1lbW9yaWVzIHByb2R1Y2VkIGJ5IEFUTUVMIHN0YXJ0IGluIHJlYWQtb25seSBtb2RlLgogICAgV2UgbmVlZCB0byB1bnByb3RlY3QgaXQuIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBBVDQ5QlY2NDE2IHRvIHdvcmsgd2l0aAogICAgY2ZpX2ZsYXNoIG1lbW9yaWVzLiBUZXN0ZWQgaW4gdGhlIGF0OTFybTkyMDBlayBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhZWwgQ2FtcG9zIExhcyBIZXJhcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3OTQ5ODM5ZTU4MzZiZjhiMTA3NGJiNjE0MmM0NmQzMGFjM2FhMzUwCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXVnIDUgMTU6MzY6MzkgMjAwOCArMDIwMAoKICAgIGNmaS1mbGFzaDogQWRkIGRlZmluaXRpb24gZm9yIHRoZSBBTTI5TFY4MDBCQiBBTUQgTk9SLWZsYXNoCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzMTg2NzMwNDVmZTE4OGM2ZTI0YzU4MmIxZTZlZmMwMGFlMWM2MmMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgNiAxNDowNjowMyAyMDA4ICswMjAwCgogICAgRml4IG1lcmdlIHByb2JsZW1zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYyMzAyZDQ0MzBlN2YzZjQ4MzA4ZDZhNTg1MzIwZmU5NmFmOGFmYmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgNiAxNDowNTozOCAyMDA4ICswMjAwCgogICAgRml4IG1lcmdlIHByb2JsZW1zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY2ODk0ODRjY2Q0MzE4OTMyMmFhYTVhMWM2Y2QwMmNkZDUxMWFkN2QKQXV0aG9yOiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+CkRhdGU6CVR1ZSBKdWwgMTUgMTI6MTM6MzggMjAwOCArMDIwMAoKICAgIG1wYzUxMjE6IE1vdmUgaW9waW4gZmVhdHVyZXMgZnJvbSBib2FyZCBzcGVjaWZpYyB0byBjb21tb24gZmlsZXMuCgogICAgQW5kIGluIHRoZSBwcm9jZXNzIGVsaW1pbmF0ZSBzb21lIGR1cGxpY2F0ZSByZWdpc3RlciBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KCmNvbW1pdCBlZjExZGY2YjY2ZWNmNTc5N2U5NGJhMzIyMjU0YjhmYjdhNGUyZTEyCkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgNSAxNzozODo1NyAyMDA4IC0wNjAwCgogICAgbXBjNTEyMTogc3F1YXNoIHNvbWUgZmR0IGZpeHVwIGVycm9ycwoKICAgIE9uIEFEUzUxMjEgd2hlbiBib290aW5nIGxpbnV4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGFyZSBzZWVuOgoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMDpidXMtZnJlcXVlbmN5LCBlcnI9RkRUX0VSUl9OT1RGT1VORAoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMC9ldGhlcm5ldEAyODAwOmxvY2FsLW1hYy1hZGRyZXNzLCBlcnI9RkRUX0VSUl9OT1RGT1VORAoJVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMC9ldGhlcm5ldEAyODAwOmFkZHJlc3MsIGVycj1GRFRfRVJSX05PVEZPVU5ECgogICAgVGhpcyBpcyBjYXVzZWQgYnkgZnRfY3B1X3NldHVwIHRyeWluZyB0byBkZWFsIHdpdGgKICAgIGJvdGggb2xkIGFuZCBuZXcgc29jIG5vZGUgbmFtaW5nLiAgVGhpcyBwYXRjaAogICAgZml4ZXMgdGhpcyBieSBiZWluZyBzbWFydGVyIGFib3V0IHdoYXQgdG8KICAgIGZpeHVwLgoKICAgIEFsc28gZG8gc29jIG5vZGUgZml4dXBzIGJ5IGNvbXBhdGlibGUgaW5zdGVhZCBvZiBieSBwYXRoLgogICAgQSBuZXcgYm9hcmQgY29uZmlnIGNhbGxlZCBPRl9TT0NfQ09NUEFUIGRlZmluZWQKICAgIHRvIGJlICJmc2wsbXBjNTEyMS1pbW1yIiByZXBsYWNlcyB0aGUgb2xkCiAgICBPRl9TT0Mgbm9kZSBwYXRoIHRoYXQgd2FzIGRlZmluZWQgdG8gYmUgInNvY0A4MDAwMDAwMCIuCgogICAgT2xkIGRldmljZSB0cmVlcyBzdGlsbCB3b3JrLCBidXQgdGhlIGNvbXBhdGlibGl0eQogICAgaXMgY29uZGl0aW9uYWwgb24gQ09ORklHX09GX1NVUFBPUlRfT0xEX0RFVklDRV9UUkVFUwogICAgd2hpY2ggaXMgb24gYnkgZGVmYXVsdCBpbiBpbmNsdWRlL2NvbmZpZ3MvYWRzNTEyMS5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxMDkxZjU4ZjBjNThlY2QyNmM1YjA1ZGUyYWUyMGNhNmNkYjUyMWMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzAgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvc2VyaWFsOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlIGZvciBDT05GSUdfKiBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRjZDdlNjUyOGY2MWVjNjY5NzU1YzM3NTRiYjRmOTc3OTg3NGZhYjMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzIgMjAwOCArMDIwMAoKICAgIG5pb3MyL3N5c2lkOiBmaXggcHJpbnRmIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY2ZGE2ZmEwZTM1ZTdlZTU2NjI4Yzg1OTgxNzA5YWZlNzE4MGZjOGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXVnIDIgMjM6NDg6MzMgMjAwOCArMDIwMAoKICAgIEZpeCByZW1haW5pbmcgYnVpbGQgaXNzdWVzIHdpdGggTVBDOHh4IEZBRFMgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODFkM2YxZmRkZGFmZDFlYjUzYmJjYTg3MzlmNDg4ZDQxN2ViM2RkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMiAyMzo0ODozMSAyMDA4ICswMjAwCgogICAgbmlvczI6IGZpeCBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3Qgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWZhNjIwMDBkYjZkMGI0NmVjZGVhZGJlYjUwZmFmNTE5N2RiNDllZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBBdWcgMiAyMzo0ODozNCAyMDA4ICswMjAwCgogICAgbXZiY19wOiBGaXggcHJvYmxlbSB3aXRoICcjaWYgKENPTkZJR19DTURfS0dEQiknCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNDY0ZWZmNzdlN2ZkYWVkNjA5ZWNmMjYzYTI0MjNjOWRjZjk2YjFmCkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CkRhdGU6CUZyaSBBdWcgMSAwOTo0ODoyOSAyMDA4ICswMTAwCgogICAgRml4IGJpdG1hcCBkaXNwbGF5IGZvciBhdG1lbCBsY2QgY29udHJvbGxlcgoKICAgIFRoZSBjdXJyZW50IGxjZF9kaXNwbGF5X2JpdG1hcCgpIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgcHJvcGVybHkKICAgIGZvciB0aGUgQXRtZWwgTENEIGNvbnRyb2xsZXIuCgogICAgMiBmaXhlcyBuZWVkIHRvIGJlIGRvbmU6LQoKICAgIChhKSB3aGVuIHNldHRpbmcgdGhlIGNvbG91ciBtYXAsIHVzZSB0aGUgbGNkX3NldGNvbHJlZygpIGZ1bmN0aW9uCglhcyBwcm92aWRlZCBieSB0aGUgQXRtZWwgZHJpdmVyCiAgICAoYikgdGhlIGRhdGEgaXMgbmV2ZXIgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgbGNkIGZyYW1lYnVmZmVyICEhCgogICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Cgpjb21taXQgMmE0MzNjNjZiMWUyNzcwMzQ5ZmU0OTExYmUyM2MzNzVmMDUzZWJkOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBBdWcgMSAwODo0MDozNCAyMDA4ICswMjAwCgogICAgcWVtdV9taXBzOiB1cGRhdGUgUkVBRE1FIHRvIGZvbGxvdyBxZW11IHVwZGF0ZSBhYm91dCBkZWZhdWx0IG1hY2hpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGFjMTY5ZDY0NWY1ZjBlMGI5YTIzMjU2MzA5OTIwOWU5MmEzNTVkOGUKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE5OjUzOjIxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGNvbXBpbGF0aW9uIGlzc3VlIGNhdXNlZCBieSBhIG1pc3NpbmcgZnVuY3Rpb24KCiAgICBJbXBsZW1lbnQgdXNlYzJ0aWNrcygpIHdoaWNoIGlzIHVzZWQgYnkgZnNsX2kyYy5jIGluCiAgICBsaWJfbTY4ay90aW1lLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAxYWU4NWI1OGI1MWQyZmIxZmFjNWI5MzA5NWY2MDQyY2Y0OGFlN2IKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE5OjUzOjA2IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgZm9yIFRBU1JFRwoKICAgIFRBU1JFRyBpcyBDb2xkRmlyZSBwbGF0Zm9ybSwgdGhlIGluY2x1ZGUgcHBjNHh4LmggaW4KICAgIGJvYXJkL2VzZC9jb21tb24vZmxhc2guYyBjYXVzZXMgY29uZmxpY3QuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNWQzYmQzY2MzNWM1MDhhNjgyM2RhYzc3ZTBmZDEyNjgwOGU0ZmM3CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxOTo1MjozNiAyMDA4IC0wNTAwCgogICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBNQ0Y1Mjc1CgogICAgUmVuYW1lIE9CSiB0byBDT0JKIGluIGJvYXJkL3BsYXRmb3JtL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YzQwNTQ4ZjAxMjE4MzYwYTFmMTM5NTE5OGM1MGZmNDVmMzAzNWI1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCAzMSAxOTo1MjoyOCAyMDA4IC0wNTAwCgogICAgRml4IGNvbXBpbGUgZXJyb3IgY2F1c2VkIGJ5IGluY29ycmVjdCBmdW5jdGlvbiByZXR1cm4gdHlwZQoKICAgIFJlbmFtZSBpbnQgbWlpX2luaXQodm9pZCkgdG8gdm9pZCBtaWlfaW5pdCh2b2lkKSBmb3IgaWRtcgogICAgQ29sZEZpcmUgcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE1OGM3ODA2N2M5Mjg5NzZjMDgyYzc1OGQzOTg3ZTg5ZWFkNWIxOTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDEgMTI6MDY6MjIgMjAwOCArMDIwMAoKICAgIEZpeCBidWlsZCBpc3N1ZXMgd2l0aCBNUEM4eHggRkFEUyBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YjUwY2QxMmEzYjNjNjQ0MTUzYzRjZjM5M2Y0YTRjMTIyODllNWFhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxNzo1NDowMyAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjQtcmMyOiB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhNDgzMTE1NTdkYjZlN2U5NDczYTYxNjNiNDRiYjFlNmM2ZWQ2NGM0CkF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+CkRhdGU6CVRodSBKdWwgMzEgMTY6MDk6MDAgMjAwOCArMDEwMAoKICAgIEFkZCBnemlwcGVkIGxvZ28gc3VwcG9ydAoKICAgIFRoZSBSRUFETUUgZmlsZSBzdGF0ZXMgdGhhdCBDT05GSUdfVklERU9fQk1QX0daSVAgYmVoYXZlcyBhcyBmb2xsb3dzOgoKICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0LCBhZGRpdGlvbmFsbHkgdG8gc3RhbmRhcmQgQk1QCiAgICAgIGltYWdlcywgZ3ppcHBlZCBCTVAgaW1hZ2VzIGNhbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZQogICAgICBzcGxhc2hzY3JlZW4gc3VwcG9ydCBvciB0aGUgYm1wIGNvbW1hbmQuCgogICAgSG93ZXZlciwgdGhlIHNwbGFzaHNjcmVlbiBmdW5jdGlvbiAqb25seSogc3VwcG9ydHMgc3RhbmRhcmQgQk1QIGltYWdlcy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGRvY3VtZW50ZWQgZ3ppcCBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgoKY29tbWl0IGE1YmNiMDFmYmRlNmIxZjFjOTg2M2NkODZlNWM0YzM2OWYwMTIxYWMKQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KRGF0ZToJVGh1IEp1bCAzMSAxNTo1Njo0OCAyMDA4ICswMTAwCgogICAgRml4IEF0bWVsIExDRCBjb250cm9sbGVyIGVuZGlhbmVzcyBmb3IgQVZSMzIgcHJvY2Vzc29ycwoKICAgIFRoZSBBdG1lbCBsY2QgY29udHJvbGxlciBpcyB1c2VkIG9uIEF0bWVsJ3MgQVQ5MSAobGl0dGxlIGVuZGlhbikgYW5kCiAgICBBVlIzMiAoYmlnIGVuZGlhbikgcGxhdGZvcm1zLgoKICAgIEFzIHN1Y2gsIHRoZSBjb250cm9sbGVyIGNhbiBoYW5kbGUgYm90aCBiaWcgYW5kIGxpdHRsZSBlbmRpYW4gbWVtb3J5LgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRyaXZlciBmb3IgdGhlIEFWUjMyIHBsYXRmb3JtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgoKY29tbWl0IGNkYjhiZDJmZDNiY2JlNjVkOGU0MzM0YTU1ZjVhNjY3ODQ1NDI2YTEKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgSnVsIDMxIDE1OjU2OjAxIDIwMDggKzAyMDAKCiAgICBhcG9sbG9uOiBmaXggYnVpbGQgb3V0IG9mIHRyZWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJlNzUyYmUzOWQzZTM5OGQ0YWI4OWZmYTY2MzRjMzk3ZGYyOTgyOTcKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTI6MzU6MDQgMjAwOCArMDIwMAoKICAgIFVuY29tcHJlc3NlZCBpbWFnZXMgbG9hZGVkIHRvIHRoZWlyIHN0YXJ0IGFkZHJlc3Mgc2hhbGwgc2V0IGxvYWRfZW5kIHRvbwoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGMzNzIwN2Q3ZjUxZTE5YzE3Zjg1OTk2NmYzMTRlMjdjYzEyMzE4MDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDE2IDE2OjM4OjU5IDIwMDggKzAyMDAKCiAgICBGaXggcHJpbnRmKCkgZm9ybWF0IHByb2JsZW1zIHdpdGggY29uZmlndXJhYmxlIHByb21wdHMKCiAgICBVLUJvb3QgYWxsb3dzIGZvciBjb25maWd1cmFibGUgcHJvbXB0IHN0cmluZ3MgdXNpbmcgdGhlCiAgICBDT05GSUdfQVVUT0JPT1RfUFJPTVBUIHJlc3AuIENPTkZJR19NRU5VUFJPTVBUIGRlZmluaXRpb25zLiBTbyBmYXIsCiAgICB0aGUgYXNzdW1wdGlvbiB3YXMgdGhhdCBhbnkgc3VjaCB1c2VyIGRlZmluZWQgcHJvYmx0cyB3b3VsZCBjb250YWluCiAgICBleGFjdGx5IG9uZSAiJWQiIGZvcm1hdCBzcGVjaWZpZXIuIEJ1dCBzb21lIGJvYXJkcyBkaWQgbm90LgoKICAgIFRvIGFsbG93IGZvciBmbGV4aWJsZSBib290IHByb21wdHMgd2l0aG91dCBhZGRpbmcgdG9vIGNvbXBsZXggY29kZSB3ZQogICAgbm93IGFsbG93IHRvIHNwZWNpZnkgdGhlIHdob2xlIGxpc3Qgb2YgcHJpbnRmKCkgYXJndW1lbnRzIGluIHRoZSB1c2VyCiAgICBkZWZpbml0aW9uLiBUaGlzIGlzIHBvd2VyZnVsLCBidXQgcmVxdWlyZXMgYSByZXNwb25zaWJsZSB1c2VyIHdobwogICAgcmVhbGx5IHVuZGVyc3RhbmRzIHdoYXQgaGUgaXMgZG9pbmcsIGFzIGhlIG5lZWRzIHRvIGtub3cgZm9yIGV4YW5wbGUKICAgIHdoaWNoIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSByZXNwZWN0aXZlIGNvbnRleHQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDc1NDEyMDYzN2I2YTdmNGZmNzc0ZmIxOTlmYzU1MGJjZmVhMWRhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxNzowMjoxNCAyMDA4ICswMjAwCgogICAgVFFNODV4eDogZml4IHR5cG8gaW50cm9kdWNlIGJ5IGNvbW1pdCBmZmJiNWNiOQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMGI0OTUxZDRjZGRjYTljYzgwMDc0NTg5MWM5NWIyOTFlNDdjYmJkNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMzEgMTU6Mjc6MDEgMjAwOCArMDIwMAoKICAgIG12YmNfcCBib2FyZDogZml4IG1vc3QgYnVpbGQgd2FybmluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNGVjNmRiMDc0MDUxZDJmNmZjNzZhNjY0MTFjNjA2MjFiMjJiYzAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAzMSAxMzo1NzoyMCAyMDA4ICswMjAwCgogICAgRTEwMDA6IGNsZWFuIHVwIENPTkZJR19FMTAwMF9GQUxMQkFDS19NQUMgaGFuZGxpbmcKCiAgICBBdm9pZCAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFyZ2UgZm9yICdsb25nJyB0eXBlIiB3YXJuaW5ncy4KICAgIEFuZCBzaW1wbGlmeSB0aGUgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDkxOTZiNDQzMzRjMzMwY2MxM2RlMjQ2NGM1OTE4MWU0ZGI3MWY1NDkKQXV0aG9yOiBNYXR2ZWpjaGlrb3YgSWx5YSA8bWF0dmVqY2hpa292QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCAzMCAyMzoyMToxOSAyMDA4ICswNDAwCgogICAgODI2MDogTWFraW5nIHRoZSB1c2Ugb2YgZ2QtPnBjaV9jbGsgZGVwZW5kYW50IG9uIHRoZSBDT05GSUdfUENJCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgNjM2MWFkNGI1OTZmNWE5NDBhMDFjOTFhZTAyOTdkOThmNzkwY2JlMApBdXRob3I6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDMwIDIzOjIwOjMyIDIwMDggKzA0MDAKCiAgICBQUEM6IEFkZCBwY2lfY2xrIGluIHRoZSBnbG9iYWxfZGF0YSBmb3IgQ1BNMiBwcm9jZXNzb3JzCgogICAgVGhpcyBwYXRjaCBhZGRzIHBjaV9jbGsgZmllbGQgdG8gdGhlIGdsb2JhbF9kYXRhIHN0cnVjdHVyZSBmb3IgdGhlCiAgICBwcm9jZXNzb3JzIHdoaWNoIGhhdmUgQ1BNMiBtb2R1bGUgaW4gY2FzZSB0aGUgQ09ORklHX1BDSSBpcyBkZWZpbmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgoKY29tbWl0IGYwZmY4ODVjYTY0NjU1YmVlNjU0MGViOGEyNWVlZDkwYjExNTI2ODYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVsIDMwIDE0OjEzOjMwIDIwMDggLTA1MDAKCiAgICBtcGM4NXh4OiBVcGRhdGUgbGlua2VyIHNjcmlwdHMgZm9yIEZyZWVzY2FsZSBib2FyZHMKCiAgICAqIE1vdmUgdG8gdXNpbmcgYWJzb2x1dGUgYWRkcmVzc2luZyBhbHdheXMuICBNYWtlcyB0aGUgc2NyaXB0cyBhIGJpdCBtb3JlCiAgICAgIHBvcnRhYmxlIGFuZCBjb21tb24KICAgICogTW92ZWQgLmJzcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBpbWFnZS4gIFRoZXNlIGFsbG93cyB1cyB0byBoYXZlIG1vcmUKICAgICAgcm9vbSBpbiB0aGUgcmVzdWx0aW5nIGJpbmFyeSBpbWFnZSBmb3IgY29kZSBhbmQgZGF0YS4KICAgICogUmVtb3ZlZCAudGV4dCBvYmplY3QgZmlsZXMgdGhhdCBhcmVuJ3QgcmVhbGx5IG5lZWRlZAogICAgKiBNYWtlIHN1cmUgX2VuZCBpcyA0LWJ5dGUgYWxpZ25lZCBhcyB0aGUgLmJzcyBpbml0IGNvZGUgZXhwZWN0cyB0aGlzLgogICAgICAoSXRzIHBvc3NpYmxlIHRoYXQgdGhlIGVuZCBvZiAuYnNzIGlzbid0IDQtYnl0ZSBhbGlnbmVkKQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTdjMjE5YWQ1ZDM0ZGQ5ZDQ5OTkxNzc3YTYyZTM4OTk1OTVmMmVjNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKdWwgMzAgMDg6MDE6MTUgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlIHdhcm5pbmdzIGluIGRsbWFsbG9jCgogICAgVGhlIG9yaWdpb25hbCBjb2RlIHdhcyB1c2luZyBvbiBvZGQgcmVmZXJlbmNlIHRvIGdldCB0byB0aGUgZmlyc3QKICAgIHJlYWwgZWxlbWVudCBpbiBhdl9bXS4gIFRoZSBmaXJzdCB0d28gZWxlbWVudHMgb2YgdGhlIGFycmF5IGFyZQogICAgbm90IHVzZWQgZm9yIGFjdHVhbCBiaW5zLCBidXQgZm9yIGhvdXNlIGtlZXBpbmcuICBJZiB3ZSBhcmUgbW9yZQogICAgZXhwbGljaXQgYWJvdXQgaG93IHVzZSB0aGUgZmlyc3QgZmV3IGVsZW1lbnRzIHdlIGNhbiBnZXQgcmlkIG9mIHRoZQogICAgd2FybmluZ3M6CgogICAgZGxtYWxsb2MuYzogSW4gZnVuY3Rpb24gJ21hbGxvY19leHRlbmRfdG9wJzoKICAgIGRsbWFsbG9jLmM6MTk3MTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCiAgICBkbG1hbGxvYy5jOjE5OTk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwogICAgZGxtYWxsb2MuYzoyMDI5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIC4uLgoKICAgIFRoZSBsb2dpYyBvZiBob3cgdGhpcyBjb2RlIGNhbWUgdG8gYmUgaXM6CgliaW5fYXQoMCkgPSAoY2hhciopJihhdl9bMl0pIC0gMipTSVpFX1NaCgogICAgU0laRV9TWiBpcyB0aGUgc2l6ZSBvZiBwb2ludGVyLCBhbmQgYXZfIGlzIGFycnkgb2YgcG9pbnRlcnMgc286CgliaW5fYXQoMCkgPSAmKGF2X1swXSkKCiAgICBHb2luZyBmcm9tIHRoZXJlIHRvIGJpbl9hdCgwKS0+ZmQgb3IgYmluX2F0KDApLT5zaXplIHNob3VsZCBiZSBzdHJhaWdodCBmb3J3YXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2Y5YWUxYTVkNDNjNDlhOGVjZjQ5NzQ3MGMzZDFkODAyNTVlNDRiOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAzMCAxMDoyMTowMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggVzdPTE1HIGNvbXBpbGUgcHJvYmxlbXMgYnkgYWRkaW5nIG1pc3NpbmcgTE03NSBkZWZpbmVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViYjg2YzRlY2QzN2E3NzAxMzU4Mjg0ZTQ5N2NhNGM2NDgzYzdjYzUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMzAgMDk6NTk6NTEgMjAwOCArMDIwMAoKICAgIGNtZF9ib290bS5jOiBGaXggcHJvYmxlbSB3aXRoICcjaWYgKENPTkZJR19DTURfVVNCKScKCiAgICBBIHJlY2VudCBwYXRjaCB1c2VkICcjaWYgKENPTkZJR19DTURfVVNCKScgaW5zdGVhZCBvZgogICAgJyNpZiBkZWZpbmVkKENPTkZJR19DTURfVVNCKScuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtIGFuZCBtYWtlcwogICAgY29tbW9uL2Jvb3RtLmMgY29tcGlsZSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCAyY2I5MDgwNDI3ZmU2NDFkY2I3MWRhNDZjZDA2MzRkZDQwNmYzN2VkCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKdWwgMjIgMDg6MDE6NDMgMjAwOCArMDkwMAoKICAgIFJlbW92ZSB1bnVzZWQgSTJDIGF0IGFwb2xsb24gYm9hcmQKCiAgICBUaGVyZSBhcmUgbm8gSTJDIGRldmljZXMgb24gdGhpcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDNjOTU5NjBlNTI2YjNiMDI2ZGEyMDIwMWRiNjQ1MjZmNDZmYWYxNGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMxIDEwOjEyOjA5IDIwMDggKzAyMDAKCiAgICBhdDkxcm05MjAwZGssIGNzYjYzNzogZml4IE5BTkQgcmVsYXRlZCBidWlsZCBwcm9ibGVtcwoKICAgIFRyaWVkIGZpeGluZyBOQU5EIHN1cHBvcnQgZm9yIHRoZSBhdDkxcm05MjAwZGsgYm9hcmQ7IHVudGVzdGVkLgogICAgRGlzYWJsZWQgTkFORCBzdXBwb3J0IGluIHRoZSBjc2I2MzcgYm9hcmQgY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MjQ2ZjVlY2ZkMzUzYWUyOTdhMDJmZmQ1MzI4NDAyYWNmMTZjOWRkCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVdlZCBKdWwgMzAgMTI6Mzk6MjggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTUw1MDc6IEVudmlyb25tZW50IGluIGZsYXNoIGFuZCBNVEQgU3VwcG9ydAoKICAgIC0gUmVsb2NhdGUgdGhlIGxvY2F0aW9uIG9mIFUtQm9vdCBpbiB0aGUgZmxhc2gKICAgIC0gU2F2ZSB0aGUgZW52aXJvbm1lbnQgaW4gb25lIHNlY3RvciBvZiB0aGUgZmxhc2ggbWVtb3J5CiAgICAtIE1URCBTdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYThhMTZhZjRkNTlkMTRjYzFjMTE4N2MxMGFhYWQ4MGQ2YjgzOTRiNQpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUdWUgSnVsIDI5IDE3OjE2OjEwIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE1MNTA3OiBVc2Ugb2YgZ2V0X3JhbV9zaXplIGluIGJvYXJkIG1sNTA3CgogICAgLSBDaGFuZ2Ugc3VnZ2VzdGVkIGJ5IFdECgogICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDFhMDA0MzEzYzVlYzJkMTI4YjYxMWRmNGMyMDhiMWIwZDNjM2ZiNApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglNb24gSnVsIDIxIDIwOjMwOjA3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IE1MNTA3OiBVLUJvb3QgaW4gZmxhc2ggYW5kIFN5c3RlbSBBQ0UKCiAgICBUaGlzIHBhdGNoIGFsbG93cyBib290aW5nIGZyb20gRkxBU0ggdGhlIE1MNTA3IGJvYXJkIGJ5IFhpbGlueC4KICAgIFByZXZpb3VzbHksIFUtQm9vdCBuZWVkZWQgdG8gYmUgbG9hZGVkIGZyb20gSlRBRyBvciBhIFN5dGVtIEFDRSBDRgoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVjMzc0YzllZTE2ZmVlMmJmNjg1MzNjYzQwMTBiM2MwZGYyMWY3ODMKQXV0aG9yOiBKdWxpZW4gTWF5IDxtYWlsaW5nbGlzdEBtaXJvbWljby5jaD4KRGF0ZToJTW9uIEp1biAyMyAxMzo1Nzo1MiAyMDA4ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBoYW1tZXJoZWFkIChBVlIzMikgYm9hcmQKCiAgICBUaGUgSGFtbWVyaGVhZCBwbGF0Zm9ybSBpcyBidWlsdCBhcm91bmQgYSBBVlIzMiAzMi1iaXQgbWljcm9jb250cm9sbGVyCiAgICBmcm9tIEF0bWVsLiAgSXQgb2ZmZXJzIHZlcnNhdGlsZSBwZXJpcGhlcmFscywgc3VjaCBhcyBldGhlcm5ldCwgdXNiCiAgICBkZXZpY2UsIHVzYiBob3N0IGV0Yy4KCiAgICBUaGUgYm9hcmQgYWxzbyBpbmNvb3BlcmF0ZXMgYSBwb3dlciBzdXBwbHkgYW5kIGlzIGEgUG93ZXIgb3ZlciBFdGhlcm5ldAogICAgKFBvRSkgUG93ZXJlZCBEZXZpY2UgKFBEKS4KCiAgICBBZGRpdG9uYWxseSwgYSBDeWNsb25lIElJSSBGUEdBIGZyb20gQWx0ZXJhIGlzIGludGVncmF0ZWQgb24gdGhlIGJvYXJkLgogICAgVGhlIEZQR0EgaXMgbWFwcGVkIGludG8gdGhlIDMyLWJpdCBBVlIgbWVtb3J5IGJ1cy4gVGhlIEZQR0Egb2ZmZXJzIHR3bwogICAgRERSMiBTRFJBTSBpbnRlcmZhY2VzLCB3aGljaCB3aWxsIGNvdmVyIGV2ZW4gdGhlIG1vc3QgZXhjZXB0aW9uYWwgbmVlZAogICAgb2YgbWVtb3J5IGJhbmR3aWR0aC4gVG9nZXRoZXIgd2l0aCB0aGUgb25ib2FyZCB2aWRlbyBkZWNvZGVyIHRoZSBib2FyZAogICAgaXMgcmVhZHkgZm9yIHZpZGVvIHByb2Nlc3NpbmcuCgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOiBodHRwOi8vL3d3dy5taXJvbWljby5jb20vaGFtbWVyaGVhZAoKICAgIFNpZ25lZC1vZmYtYnk6IEp1bGllbiBNYXkgPG1haWxpbmdsaXN0QG1pcm9taWNvLmNoPgogICAgW2hhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb206IHZhcmlvdXMgc21hbGwgZml4ZXMgYW5kIGFkYXB0aW9uc10KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwOWQzMThhOGJiMTQ0NGVjOTJlMzFjYWZjZGJhODc3ZWI5NDA5ZTU4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEp1bCAyOSAxMjoyMzo0OSAyMDA4IC0wNTAwCgogICAgZnNsX2kyYzogVXNlIHRpbWViYXNlIHRpbWVyIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGdldF90aW1lcigpCgogICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZ2V0X3RpbWVyKCkgaXMgb25seSByZWFsbHkgdXNlZnVsIGFmdGVyIHdlCiAgICBoYXZlIHJlbG9jYXRlZCB1LWJvb3QgdG8gbWVtb3J5LiAgVGhlIGkyYyBjb2RlIGlzIHVzZWQgYmVmb3JlIHRoYXQgYXMgcGFydAogICAgb2YgdGhlIFNQRCBERFIgc2V0dXAuCgogICAgV2UgYWN0dWFsbHkgaGF2ZSBhIGJ1ZyB3aGVuIHVzaW5nIHRoZSBnZXRfdGltZXIoKSBjb2RlIGJlZm9yZSByZWxvY2F0aW9uCiAgICBiZWNhdXNlIHRoZSAuYnNzIGhhc24ndCBiZWVuIHNldHVwIGFuZCB0aHVzIHdlIGNvdWxkIGJlIHJlYWRpbmcvd3JpdGluZwogICAgYSByYW5kb20gbG9jYXRpb24gKHByb2JhYmx5IGluIGZsYXNoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRmYzcyYTBkNmNhODUwNzBhNWU5MGQ3NmNjNWE4NTM1MjZhYzA5YzQKQXV0aG9yOiBGcmFuayBTdmVuZHNiw7hlIDxmcmFuay5zdmVuZHNib2VAZ21haWwuY29tPgpEYXRlOglUdWUgSnVsIDI5IDE0OjQ5OjMxIDIwMDggKzAyMDAKCiAgICBBZGRlcjh4eDogRml4IENGR19NT05JVE9SX0xFTgoKICAgIER1ZSB0byBpbmNyZWFzZWQgc3BhY2UgdXNhZ2UsIFUtQm9vdCBjYW4gbm8gbG9uZ2VyIGJlIHN0b3JlZCBpbiB0aHJlZSBzZWN0b3JzLgogICAgVGhlIGN1cnJlbnQgVS1Cb290IHVzZSBqdXN0IG92ZXIgdGhyZWUgZmxhc2ggc2VjdG9ycyAoMTk3ayksIGFuZCBVLUJvb3Qgd2lsbAogICAgYmVjb21lIGNvcnJ1cHQgYWZ0ZXIgc2F2aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgNjRrCiAgICB0byBDRkdfTU9OSVRPUl9MRU4uCgogICAgU2lnbmVkLW9mZi1ieTogRnJhbmsgRS4gU3ZlbmRzYsO4ZSA8ZnJhbmsuc3ZlbmRzYm9lQGdtYWlsLmNvbT4KCmNvbW1pdCBhNGM1OWFkNGEyMTE0MDU1MGFkYTZmOTc2OTBkMjUyN2M0MTQ2Y2U1CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKdWwgMjkgMDg6NDc6NTcgMjAwOCArMDkwMAoKICAgIEFkZCBPbmVOQU5EIElQTCByZWxhdGVkIGZpbGVzIHRvIGdpdGlnbm9yZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgOGQ4NzU4OWU4ZTg3NGRmNzEyMGEzZDk2NjdmMDUxYmMzM2JhYzI1MApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBKdWwgMjggMjA6Mzg6MjUgMjAwOCArMDIwMAoKICAgIEFQSTogVGVhY2ggdGhlIHN0b3JhZ2UgbGF5ZXIgYWJvdXQgU0FUQSBhbmQgTU1DIG9wdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgNmI3M2I3NTRmNzgyZTFlY2NlNTA0OGJmMjBiMjJjZTU2YTA3YTViOApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBKdWwgMjggMjA6Mzc6NDggMjAwOCArMDIwMAoKICAgIEFQSTogRHVtcCBjb250ZW50cyBvZiBzZWN0b3IgMCBpbiB0aGUgZGVtbyBhcHBsaWNhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxM2NhNjMwNWYyZWJhNDljMTc1ZjYzNzBjMzUyODYxNDEwNTljNzg5CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEp1bCAyOCAyMDozNzoxMCAyMDA4ICswMjAwCgogICAgQVBJOiBDb3JyZWN0IHN0b3JhZ2UgZW51bWVyYXRpb24gcm91dGluZSwgb3RoZXIgbWlub3IgZml4ZXMgaW4gQVBJIHN0b3JhZ2UgYXJlYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAwNWM3ZmUwZjA0OWIxYzllYjlhMTk5MmYyN2U1ZTM1MGQ4NjVmNGE4CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEp1bCAyOCAyMDozNjoxOSAyMDA4ICswMjAwCgogICAgQVBJOiBGaXggY29tcGlsYXRpb24gd2FybmluZ3MgaW4gYXBpX2V4YW1wbGVzL2RlbW8uYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Cgpjb21taXQgYzE0ZWVmY2M0ODIxMmFmMmYzMzE0ODA5NjA1Njk4ZGQ4MzkzYTkwYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBKdWwgMjcgMTc6MDk6NDMgMjAwOCArMDIwMAoKICAgIEZpeCBtb3JlIHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTM2ODk3ZDRkMTM2NTQ1MmJiYmRmODQzMGRiNWU3NzY5ZWYwOGQzOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKdWwgMjUgMTU6MTg6MTYgMjAwOCArMDIwMAoKICAgIEZpeCByZW1haW5pbmcgQ0ZHX0NNRF8gZGVmaW5lLCBpZmRlZiBhbmQgY29tbWVudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDVkMWQwMGZiMzYwMDU0ODJlMTgwM2EwMGRkYzQ2ZWZhMTFkNzE5YWYKQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAyNSAwODo1Nzo0MCAyMDA4ICswMjAwCgogICAgQWRkIGluY2x1ZGUgZm9yIGNvbmZpZy5oIGluIGNvbW1hbmQuaC4KCiAgICBCZWNhdXNlIHRoZSBjbWRfdGJsX3Mgc3RydWN0dXJlIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgaXQKICAgIG11c3QgYmUgYXNzdXJlZCB0aGF0IGNvbmZpZy5oIGlzIGluY2x1ZGVkIGJlZm9yZSB0aGUgc3RydWN0dXJlIGlzCiAgICBldmFsdWF0ZWQgYnkgdGhlIGNvbXBpbGVyLiBJZiB0aGlzIGlzIG5vdCBjZXJ0YWluLCBpdCBjb3VsZCBoYXBwZW4KICAgIHRoYXQgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBzdHJ1Y3R1cmVzIG9mIGRpZmZlcmVudCBzaXplLCBkZXBlbmRpbmcKICAgIG9uIHRoZSBmYWN0IGlmIHRoZSBzb3VyY2UgZmlsZSBpbmNsdWRlcyA8Y29uZmlnLmg+IGJlZm9yZSBvciBhZnRlcgogICAgPGNvbW1hbmQuaD4uCgogICAgVGhlIGVmZmVjdCBpcyB0aGF0IHUtYm9vdCBjcmFzaGVzIHdoZW4gdHJpZXMgdG8gcmVsb2NhdGUgdGhlIGNvbW1hbmQKICAgIHRhYmxlIChmb3IgcHBjKSBvciB0cnkgdG8gYWNjZXNzIHRvIHRoZSBjb21tYW5kIHRhYmxlIGZvciBvdGhlcgogICAgYXJjaGl0ZWN0dXJlcy4KCiAgICBUaGUgcHJvYmxlbSBjYW4gaGFwcGVuIG9uIGJvYXJkLWRlcGVuZGluZyBjb21tYW5kcy4gQWxsIGdlbmVyYWwKICAgIGNvbW1hbmRzIHVuZGVyIC9jb21tb24gYXJlIHVuYWZmZWN0ZWQsIGJlY2F1c2UgdGhleSBpbmNsdWRlIGFscmVhZHkKICAgIGNvbmZpZy5oIGJlZm9yZSBjb21tYW5kLmguCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgMmRhY2I3MzRiYWM5ZGJhMWRiOWU3MDRkM2UwYjIwMGVmNTIxYzc5YQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEzOjE2OjA2IDIwMDggLTA1MDAKCiAgICBOQU5EOiAkKG9iaiktcXVhbGlmeSBlY2MuaCBpbiBraWxhdWVhIE5BTkQgYm9vdCBNYWtlZmlsZS4KCiAgICBUaGlzIGZpeGVzIGJ1aWxkaW5nIG91dC1vZi10cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2ZDU5YmQ5ZGE5ZTE1ZDE5Yjg2N2I0ODQ0OTQwODgzMGY0ZTJhZDUKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAyMyAwNzozMDo0NiAyMDA4ICswMjAwCgogICAgRml4IHdhcm5pbmdzIGlmIGNvbXBpbGluZyB3aXRoIElERSBzdXBwb3J0LgoKICAgIGNtZF9pZGUuYzo4Mjc6IFdhcm51bmc6IHdlYWsgZGVjbGFyYXRpb24gb2YgYGlkZV9vdXRiJyBhZnRlciBmaXJzdCB1c2UgcmVzdWx0cyBpbiB1bnNwZWNpZmllZCBiZWhhdmlvcgogICAgY21kX2lkZS5jOjgzOTogV2FybnVuZzogd2VhayBkZWNsYXJhdGlvbiBvZiBgaWRlX2luYicgYWZ0ZXIgZmlyc3QgdXNlIHJlc3VsdHMgaW4gdW5zcGVjaWZpZWQgYmVoYXZpb3IKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA3NjEwZGIxN2ZkNGQ1OWM1MWQ4MjU0ODg1MjZkODVlZGUyZjA2NzY3CkF1dGhvcjogQWRyaWFuIEZpbGlwaSA8YWRyaWFuLmZpbGlwaUBldXJvdGVjaC5jb20+CkRhdGU6CVR1ZSBKdWwgMjIgMTQ6Mjg6MTEgMjAwOCAtMDQwMAoKICAgIFJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlIGFkc3ZpeCBib2FyZC4KCiAgICBTdXBwb3J0IGZvciB0aGUgYWRzdml4IHdhcyBvcmlnaW5hbGx5IHByb3ZpZGVkIGJ5IEFwcGxpZWQgRGF0YQogICAgU3lzdGVtcyAoQURTKSwgaW5jLiwgbm93IEV1cm9UZWNoLCBJbmMuCiAgICBUaGUgYm9hcmQgbmV2ZXIgc2hpcHBlZCBhc2lkZSBmcm9tIHNvbWUgc2FtcGxlIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBZHJpYW4gRmlsaXBpIDxhZHJpYW4uZmlsaXBpQGV1cm90ZWNoLmNvbT4KCmNvbW1pdCBmOTZiNDRjZWY4OTdiZDM3MmJlYjg2ZGRlMWIzMzYzN2MxMTlkODRkCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdWwgMjIgMTY6MjI6MTEgMjAwOCArMDIwMAoKICAgIEFSTTogc2V0IEdEX0ZMR19SRUxPQyBmb3IgYm9hcmRzIHNraXBwaW5nIHJlbG9jYXRpb24gdG8gUkFNCgogICAgSWYgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QgaXMgc2V0IHRoZSBmbGFnIEdEX0ZMR19SRUxPQyBpcyB1c3VhbGx5CiAgICBuZXZlciBzZXQsIGJlY2F1c2UgcmVsb2NhdGlvbiB0byBSQU0gaXMgYWN0dWFsbHkgbmV2ZXIgZG9uZSBieSBVLWJvb3QKICAgIGl0c2VsZi4gSG93ZXZlciwgc2V2ZXJhbCBwaWVjZXMgb2YgY29kZSBjaGVjayBpZiB0aGlzIGZsYWcgaXMgc2V0IGF0CiAgICBzb21lIHRpbWUuCgogICAgU28sIHRvIG1ha2Ugc3VyZSB0aGlzIGZsYWcgaXMgc2V0IG9uIGJvYXJkcyBza2lwcGluZyByZWxvY2F0aW9uLCB0aGlzCiAgICBpcyBhZGRlZCB0byB0aGUgaW5pdGlhbGlzYXRpb24gb2YgVS1ib290IGF0IGEgbW9tZW50IHdoZXJlIGl0IGlzIHNhZmUKICAgIHRvIGRvIHNvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgoKY29tbWl0IGU0ZGFmZmY4NmYyODliNTY3NzE0M2EzZTQxZGE3YjQ1YzZkMjdmYzcKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDIxIDE0OjI2OjIzIDIwMDggLTA1MDAKCiAgICBmc2wtaTJjOiBmaXggd3JpdGVzIHRvIGRhdGEgc2VnbWVudCBiZWZvcmUgcmVsb2NhdGlvbgoKICAgIFByZXZlbnQgaTJjX2luaXQoKSBpbiBmc2xfaTJjLmMgZnJvbSB3cml0aW5nIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlCiAgICByZWxvY2F0aW9uLiAgQ29tbWl0IGQ4YzgyZGI0IGFkZGVkIHRoZSBhYmlsaXR5IGZvciBpMmNfaW5pdCgpIHRvIHByb2dyYW0gdGhlCiAgICBJMkMgYnVzIHNwZWVkIGFuZCBzYXZlIHRoZSB2YWx1ZSBpbiBpMmNfYnVzX3NwZWVkW10sIHdoaWNoIGlzIGEgZ2xvYmFsCiAgICB2YXJpYWJsZS4gIEl0IGlzIGFuIGVycm9yIHRvIHdyaXRlIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlIHJlbG9jYXRpb24sCiAgICB3aGljaCBpcyB3aGF0IGkyY19pbml0KCkgZG9lcyB3aGVuIGl0IHN0b3JlcyB0aGUgYnVzIHNwZWVkIGluIGkyY19idXNfc3BlZWRbXS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRiZDMyMzg3OTIwZTVhZDZmOWRkNThhN2I1MDEyYmJhYmUyYTZhMjEKQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KRGF0ZToJTW9uIEp1bCAyOCAxNjo1Njo1MSAyMDA4ICswMjAwCgogICAgbWlwczogRml4IGJhdWRyYXRlIGRpdmlzb3IgY29tcHV0YXRpb24gb24gYWxjaGVteSBjcHVzCgogICAgVXNlIENGR19NSVBTX1RJTUVSX0ZSRVEgd2hlbiBjb21wdXRpbmcgdGhlIGJhdWRyYXRlIGRpdmlzb3IKICAgIG9uIGFsY2hlbXkgY3B1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYzhjODQ1Y2ZkYzZkMDIxNzEzNWMxZDU5MjdlZWJkMmIxMzNhMzMxNApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVNhdCBKdWwgNSAwMDowODo0OCAyMDA4IC0wNzAwCgogICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgQVZSMzIgRXRoZXJuZXQgY29udHJvbGxlcnMgdG8gYm9hcmRfZXRoX2luaXQoKQoKICAgIFJlbmFtZWQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGZvciBhdG5ndzEwMCBhbmQgYXRzdGsxMDAwLgogICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbnMgZm9yIHRoZXNlIGJvYXJkcyBmcm9tIG5ldC9ldGguYwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTIyOWQyOTFmMzMzMDhhYjc3NjFkMzlmMjVmYTFhNTNjMGZjMDBhMgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEp1bCAyMyAxMDo1NTo0NiAyMDA4ICswMjAwCgogICAgc3BpIGZsYXNoOiBGaXggcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDI1MmE1ZTA3MzhiY2FmYWYyNWY3ZmJiNDBmMTlhNTlhYmMyY2IxM2UKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBKdWwgMjMgMTA6NTU6MzEgMjAwOCArMDIwMAoKICAgIGF0bWVsX21jaTogRml4IHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3ZjRiMDA5ZjQyMzJkNTcwODRjZTBlYzVhZWIzYjU3YmNjYjA4ZTRjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEwOjU1OjE1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBhNzljM2U4ZDljMzFkYjI1ZDVjYTNlYzhlMDhhOTdmMzIzNDEwZGQ0CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSnVsIDIzIDEwOjUyOjE5IDIwMDggKzAyMDAKCiAgICBhdnIzMjogYXNtL2lvLmggbmVlZHMgYXNtL3R5cGVzLmgKCiAgICBtYXBfcGh5c21lbSgpIHRha2VzIGEgcGh5c19hZGRyX3QgYXMgcGFyYW1ldGVyLiBUaGlzIHR5cGUgaXMgZGVmaW5lZCBpbgogICAgYXNtL3R5cGVzLmgsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDE5NTNkMTI4ZmQwN2YwN2QxYzM4MTBhMjhjMDg2M2VhNjRkYWUxYjYKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVRodSBKdWwgMTcgMTI6MjU6NDYgMjAwOCArMDIwMAoKICAgIG1pY3JvYmxhemU6IEZpeCBwcmludGYoKSBmb3JtYXQgaXNzdWVzCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGRlMmEwN2U1MzRmMThiMWNhNWY5ODY5YTRlZjA2MDRjYTgyOWNmZjAKQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUaHUgSnVsIDE3IDA3OjI3OjUxIDIwMDggKzA1MzAKCiAgICBSZW1vdmUgdW51c2VkIGNvZGUgZnJvbSBsaWJfYXJtL2Jvb3RtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Cgpjb21taXQgZmZiYjVjYjk0MmU5ODU2ZmEyNGU5NDY5NzdlMGE2MGM2NGRmMDRhYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDE2IDE4OjU2OjQ1IDIwMDggKzAyMDAKCiAgICB0cW04NXh4OiBEZW15c3RpZnkgJ0RLOiAhISEnIGNvbW1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBiMmY0NGJhNTcwZjNhMDExMTNiYmI3NDVkYWY0NmYzODU4ZDIyZjUzCkF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMTYgMTg6NTY6NDQgMjAwOCArMDIwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBBZGQgTFRFRFIgbG9jYWwgYnVzIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZjEzZjY0Y2Y0MmQ1YWJlYzNlMGY5MjAyMzNmNmE3YTYxZTdhZTQ5NApBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglXZWQgSnVsIDE2IDE2OjIyOjMyIDIwMDggKzAyMDAKCiAgICBzZXJpYWxfeHVhcnRsaXRlLmM6IGZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgogICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA4NjQ0NmQzYTVkOWQzY2E4MWU4NWQxY2NkM2FjY2FhYWU2ZjhlM2M5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDE4IDExOjAzOjM1IDIwMDggKzAyMDAKCiAgICBQT1NUOiBBZGQgZGlzYWJsZSBpbnRlcnJ1cHRzIGluIHNvbWUgb2YgdGhlIG1pc3NpbmcgQ1BVIFBPU1QgdGVzdHMKCiAgICBTb21lIENQVSBQT1NUIHRlc3RzIGRpZCBub3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0cyB3aGlsZSBydW5uaW5nLiBUaGlzCiAgICBzZWVtcyB0byBiZSBuZWNlc3NhcnkgdG8gcHJvdGVjdCB0aGlzIHNlbGYgbW9kaWZ5aW5nIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk3YTNiZjI2OGQwOTZlMGU5N2U1NDA0ODQ0OGMzNTExNGVkY2Y1NTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTggMTA6NDM6MjQgMjAwOCArMDIwMAoKICAgIGlkZTogVXNlIENGR182NEJJVF9MQkEgaW5zdGVhZCBvZiBDRkdfNjRCSVRfU1RSVE9VTAoKICAgIFRoaXMgaXMgbmVlZGVkIGZvciBib2FyZHMgdGhhdCBkZWZpbmUgQ0ZHXzY0QklUX1NUUlRPVUwgYnV0IGRvbid0IGRlZmluZQogICAgQ0ZHXzY0QklUX0xCQS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDA0M2FjNTUwMjQ5NjMyOTVmYzc5YjM5YWY4NWI2ZGMzYjI2MWUxNwpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CUZyaSBKdWwgMTggMTE6MjI6MjMgMjAwOCArMDIwMAoKICAgIFBPU1QgUFBDNHh4L3NwciBJVlBSIG9ubHkgaWYgUFBDNDQwCgogICAgVGhlIFNQUiBJVlBSIHJlZ2lzdGVyIGlzIG9ubHkgcHJlc2VudCAoYXMgZmFyIGFzIEkga25vdykgZm9yCiAgICBwcm9jZXNzb3JzIHdpdGggYSBQUEM0NDAgY29yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMDkyZmJkNjQ3NDhkZmEyZTk3OWIxMDI2MTFlY2U5YmM1ZWMxODU1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDE4IDEwOjQyOjI5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA2NGJpdCBwcmludGYgZm9ybWF0IG9uIDQ0MC80NjAgcGxhdGZvcm1zCgogICAgVGhpcyBwYXRjaCBkZWZpbmVzIENGR182NEJJVF9WU1BSSU5URiBhbmQgQ0ZHXzY0QklUX1NUUlRPVUwgZm9yIGFsbAogICAgNDQwLzQ2MCBwbGF0Zm9ybXMuIFRoaXMgbWF5IGJlIG5lZWRlZCBzaW5jZSB0aG9zZSBwbGF0Zm9ybXMgc3VwcG9ydAogICAgMzZiaXQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjZmZTE4M2IxZGQ5Yzc1MzQ2MDUxNDdhOGVjZmVkMWMwMjM0NWVlNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxOCAxNTo1NzoyMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggaW5jb3JyZWN0IE1PRFR4IHNldHVwIGZvciBzb21lIERJTU0gY29uZmlndXJhdGlvbnMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIGluY29ycmVjdCBNT0RUeCAoT24gRGllIFRlcm1pbmF0aW9uKQogICAgc2V0dXAgZm9yIGEgY29uZmlndXJhdGlvbiB3aXRoIG11bHRpcGxlIERJTU0ncyBhbmQgbXVsdGlwbGUgcmFua3MuCiAgICBXaXRob3V0IHRoaXMgY2hhbmdlIEthdG1haSB3YXMgdW5hYmxlIHRvIGJvb3QgTGludXggd2l0aCBERFIyIGZyZXF1ZW5jeQogICAgPj0gNTMzTUh6IGFuZCBtZW0+PTNHQi4gV2l0aCB0aGlzIHBhdGNoIEthdG1haSBzdWNjZXNzZnVsbHkgYm9vdHMgTGludXgKICAgIHdpdGggRERSMiBmcmVxdWVuY3kgPSA2NDBNSHogYW5kIG1lbT00R0IuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYwMjA0ZDA2ZWQ5ZjhjMmE2N2NjNzllYjY3ZmQyYjFkMjJiY2JjOGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTggMTI6MjQ6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAgb2YgWGlsaW54IFZpcnRleDUgbWw1MDcgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODY1MTFmYzk2YThhOWJiNTZlNWUxOWEzZDg0YzQwZjRkYmE4MGNjCkF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+CkRhdGU6CVRodSBKdWwgMTcgMTI6NDc6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTUw1MDcgQm9hcmQgU3VwcG9ydAoKICAgIFRoZSBYaWxpbnggTUw1MDcgQm9hcmQgaXMgYSBWaXJ0ZXggNSBwcm90b3R5cGluZyBib2FyZCB0aGF0IGluY2x1ZGVzLAoJYW1vbmcgb3RoZXJzOgoJLVZpcnRleCA1IEZYIEZQR0EgKFdpdGggYSBwcGM0NDB4NSBpbiBpdCkKCS0yNTZNQiBvZiBTRFJBTTIKCS0zMk1CIG9mIEZsYXNoCgktSTJDIEVlcHJvbQoJLVN5c3RlbSBBQ0UgY2hpcAoJLVNlcmlhbCBBVEEgY29ubmVjdG9ycwoJLVJTMjMyIExldmVsIENvbnZlcnNvcnMKCS1FdGhlcm5ldCBUcmFuc2NlaXZlcgoKICAgIFRoaXMgcGF0Y2ggZ2l2ZXMgc3VwcG9ydCB0byBhIHN0YW5kYXJkIGRlc2lnbiBwcm9kdWNlZCBieSBFREsgZm9yIHRoaXMKICAgIGJvYXJkOiBwcGM0NDAsIHVhcnRsaXRlLCB4aWxpbnhfaW50IGFuZCBmbGFzaAoKICAgIC0gSW5jbHVkZXMgQ2hhbmdlcyBwcm9wb3NzZWQgYnkgU3RlZmFuIFJvZXNlIGFuZCBNaWNoYWwgU2ltZWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDg2NWZkMDk4MDlhM2ExODY2OWYzNWY5NzA3ODE4MjBhZjQwZTRkZQpBdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgpEYXRlOglUaHUgSnVsIDE3IDExOjQ0OjEyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENQVSBQUEM0NDB4NSBvbiBWaXJ0ZXg1IEZYCgogICAgLVRoaXMgcGF0Y2hzIGdpdmVzIHN1cHBvcnQgZm9yIHRoZSBlbWJiZWRkZWQgcHBjNDQwCiAgICAgb24gdGhlIFZpcnRleDUgRlBHQXMKICAgIC1pbnRlcnJ1cHRzLmMgZGl2aWRlZCBpbiB1aWMuYyBhbmQgaW50ZXJydXB0cy5jCiAgICAteGlsaW54X2lycS5jIGZvciB4aWxpbnggaW50ZXJydXB0IGNvbnRyb2xsZXIKICAgIC1JbmNsdWRlIG1vZGlmaWNhdGlvbnMgcHJvcG9zc2VkIGJ5ICBTdGVmYW4gUm9lc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQwY2NiMjYwZjIxNTE2YmUzNjA3NDVkNWM1ZTNiZDA2NTc2OThkZgpBdXRob3I6IFNlYmFzdGlhbiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+CkRhdGU6CVdlZCBKdWwgMTYgMjA6MDQ6NDkgMjAwOCArMDIwMAoKICAgIGNmaV9mbGFzaDogZml4IGZsYXNoIG9uIEJFIG1hY2hpbmVzIHdpdGggQ0ZHX1dSSVRFX1NXQVBQRURfREFUQQoKICAgIFRoaXMgZ290IGJyb2tlbiBieSBjb21taXRzIDkzYzU2ZjIxMmMKICAgICBbY2ZpX2ZsYXNoOiBzdXBwb3J0IG9mIGxvbmcgY21kIGluIFUtYm9vdC5dCgogICAgVGhhdCBjb21tYW5kIG5lZWRzIHRvIGJlIGluIGxpdHRsZSBlbmRpYW4gZm9ybWF0IG9uIEJFIG1hY2hpbmVzCiAgICB3aXRoIENGR19XUklURV9TV0FQUEVEX0RBVEEuIFdpdGhvdXQgdGhpcyBwYXRjaCwgdGhlIGNvbW1hbmQgMHhmMAogICAgZ2V0cyBzYXZlZCBvbiBzdGFjayBhcyAweDAwIDAwIDAwIGYwIGFuZCAweDAwIGdldHMgd3JpdHRlbiBpbnRvCiAgICB0aGUgY21kYnVmIGluIGNhc2UgcG9ydHdpZHRoID0gY2hpcHdpZHRoID0gOGJpdC4KCiAgICBDYzogQWxleGV5IEtvcm9sZXYgPGFrb3JvbGV2QGluZnJhZGVhZC5vcmc+CiAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgogICAgU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KCmNvbW1pdCAxMTE4OGQ1NWJjMTZkZDkwNzQ1MWMwMDI4MmUwMGEwMzhmNzNkZDYyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDE3IDEwOjQwOjUxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBhbHBoYWJldGljYWwgb3JkZXIgaW4gNHh4IE1ha2VmaWxlIHBhcnQgKHJlZHdvb2QpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAyMWY2ZGY2ZTk2YWY1YjM4NzgxMGNmOTZkMjQ4NDhkYTFmYWE1NWMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVGh1IEp1bCAxMCAxNzoyMDo1MSAyMDA4ICswNDAwCgogICAgODN4eDogbXBjODMxNWVyZGI6IGZpeCBzaWxseSB0aGlua28gaW4gZmR0X3RzZWMxX2ZpeHVwCgogICAgVGhlIHRoaW5rbyB3YXMgcXVpdGUgc2lsbHkgaW5kZWVkLCBJIG1lc3NlZCB3aXRoICFwdHIuIE5vcm1hbGx5IHRoaXMKICAgIHdvdWxkIHRyaWdnZXIgc29tZSBmYXVsdCwgYnV0IGluIFUtQm9vdCBOVUxMIHBvaW50ZXIgaXMgZXF1YWwgdG8gcGh5cwogICAgMCwgc28gdGhlIGNvZGUgd2FzIHdvcmtpbmcgc3RpbGwsIGp1c3QgZGlkbid0IGFjdHVhbGx5IHRlc3QgbXBjODMxNWVyZGIKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlLiBIZWguCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI1ZjVmMGQ0OWEzYWU4OWJmNDM5NmYyNTU3Y2U5OGRlYmZlZjIxZGEKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDIxOjAwOjA0IDIwMDggKzA0MDAKCiAgICA4M3h4OiBtcGM4MzE1ZXJkYjogYWRkIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIFVMUEkvVVRNSSBVU0IgUEhZcwoKICAgIEZyZWVzY2FsZSBzaGlwcyBNUEM4MzE1RS1SREIgYm9hcmRzIGVpdGhlciB3aXRoIFRTRUMxIGFuZCBVU0IgVVRNSQogICAgc3VwcG9ydCwgb3Igd2l0aG91dCBUU0VDMSBidXQgd2l0aCBVU0IgVUxQSSBQSFkgc3VwcG9ydCBpbiBhZGRpdGlvbi4KICAgIFdpdGggdGhpcyBwYXRjaCB1c2VyIGNhbiBzcGVjaWZ5IGRlc2lyZWQgVVNCIFBIWS4KCiAgICBBbHNvLCBpdCBzZWVtcyB0aGF0IHdlIGNhbid0IGRpc3Rpbmd1aXNoIHRoZSB0d28gYm9hcmRzIGluIHNvZnR3YXJlLCBzbwogICAgdXNlciBoYXZlIHRvIHNldCBgbXBjODMxNWVyZGInIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGVpdGhlciAndHNlYzEnCiAgICAoVFNFQzEgZW5hYmxlZCkgb3IgYHVscGknIChib2FyZCB3aXRoIFVMUEkgUEhZLCBUU0VDMSBkaXNhYmxlZCksIHNvIHRoYXQKICAgIExpbnV4IHdpbGwgbm90IHByb2JlIGZvciBUU0VDMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDE1YjI3YjllMTY1ZmNmMjIwZTQyZjJjNGFmYmFlYWEyNzU4ZmNmNgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUdWUgSnVsIDggMjA6NTk6NDMgMjAwOCArMDQwMAoKICAgIGZkdF9zdXBwb3J0OiBmZHRfZml4dXBfZHJfdXNiOiBhZGQgc3VwcG9ydCBmb3IgcGh5X3R5cGUgZml4dXBzCgogICAgQ3VycmVudGx5IFUtQm9vdCBjYW4gb25seSBmaXh1cCB0aGUgdXNiIGRyX21vZGUsIGJ1dCBzb21lIGJvYXJkcyAobmFtZWx5CiAgICBNUEM4MzE1RS1SREIpIGNhbiB1c2UgdHdvIFBIWSB0eXBlczogVUxQSSAoc3RhbmQtYWxvbmUgT1RHIHBvcnQpIG9yIFVUTUkKICAgIChjb25uZWN0ZWQgdG8gdGhlIGZvdXItcG9ydHMgaHViLCB1c2IgaG9zdCBvbmx5KS4KCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgcGFzc2luZyBEdWFsLVJvbGUgVVNCIGNvbnRyb2xsZXIncwogICAgZGV2aWNlIHRyZWUgcHJvcGVydHkgcGh5X3R5cGUgdGhyb3VnaCB0aGUgdXNiX3BoeV90eXBlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTlmMDUxMjU1MDkyNDkwNzJhMGI4NjVjOGQzNTUyMGQ5N2NkNTAxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEp1bCAxNSAyMjoyMjo0NCAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjQtcmMxOiBDb2RlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0csIHNvcnQgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGJjYWI3NGJhYTZiMWIxYzk2OTAzOGFiNmY2NGExODYyMzkxODA0MDUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJVHVlIEp1bCAxNSAxMToyMzowMiAyMDA4IC0wNDAwCgogICAgUm91bmQgdGhlIHNlcmlhbCBwb3J0IGNsb2NrIGRpdmlzb3IgdmFsdWUgcmV0dXJuZWQgYnkgY2FsY19kaXZpc29yKCkKCiAgICBSb3VuZCB0aGUgc2VyaWFsIHBvcnQgY2xvY2sgZGl2aXNvciB2YWx1ZSByZXR1cm5lZCBieQogICAgY2FsY19kaXZpc29yKCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDAzMjhlZjBlZGZlOTUwZjBiN2I4YjM2OGRhZTQ4MjUzMTUwNmI3NGEKQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KRGF0ZToJVHVlIEp1bCAxNSAyMTo0NDo0NiAyMDA4ICswMjAwCgogICAgRml4IERIQ1AgcHJvdG9jb2wgc28gVS1Cb290IGRvZXMgbm90IHJlc3BvbmQgdG9vIGVhcmx5CiAgICBvbiB0aGUgbmV0d29yayB3aXRoIGl0J3Mgb2ZmZXJlZCBJUCBudW1iZXI7IGl0IHNob3VsZCBub3QgcmVwbHkgdW50aWwKICAgIGFmdGVyIGl0IGhhcyByZWNlaXZlZCBhIERIQ1AgQUNLIG1lc3NhZ2UuIEFsc28gZW5zdXJlcyB0aGF0IFUtQm9vdAogICAgZG9lcyBpdCdzIERIQ1BSRVFVRVNUIGFzIGJyb2FkY2FzdCAocGVyIFJGQyAyMTMxKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3Mjg4Zjk3MmZjYWVlMTRhOTc0MWNiMDhjODY4OGEyMzg3NGI0YTJlCkF1dGhvcjogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KRGF0ZToJVHVlIEp1bCAxNSAxMzozNToyMyAyMDA4ICswMjAwCgogICAgY2ZpX2ZsYXNoOiBtYWtlIHRoZSBjb21tYW5kIHUzMiBvbmx5CgogICAgVGhpcyBnb3QgY2hhbmdlZCBieSBjb21taXQgOTNjNTZmMjEyYwogICAgW2NmaV9mbGFzaDogc3VwcG9ydCBvZiBsb25nIGNtZCBpbiBVLWJvb3QuXQoKICAgIExvbmcgaXMgdGhlIHdyb25nIHR5cGUgYmVjYXVzZSBpdCB3aWxsIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiA2NGJpdAogICAgbWFjaGluZXMgaW4gYSB3YXkgdGhhdCBpcyBwcm9iYWJseSBub3QgZXhwZWN0ZWQuIHUzMiBzaG91bGQgYmUKICAgIGVub3VnaC4KCiAgICBDYzogQWxleGV5IEtvcm9sZXYgPGFrb3JvbGV2QGluZnJhZGVhZC5vcmc+CiAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgogICAgU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFNpZXdpb3IgPGJpZ2Vhc3lAbGludXRyb25peC5kZT4KCmNvbW1pdCAzMWNmZTU3NDkxYjE4M2FjYWU1NzVkNDg2NzI5ZTE1OGYwMTZjMjdiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEp1bCAxNCAyMzo0ODo0MSAyMDA4ICswMjAwCgogICAgdG9vbHMvZ2l0aWdub3JlOiB1cGRhdGUgdG8gYWxsIGdlbmVyYXRlZCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWUwZGUwZTIxNmI4ZmIyNzYzNGFmYjExYzYwYTJmYTI0YzIzMzQ5ZQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCA5IDE4OjMwOjQ0IDIwMDggKzAyMDAKCiAgICBtcGM1eHh4OiBBZGQgTVZCQ19QIGJvYXJkIHN1cHBvcnQKCiAgICBUaGUgTVZCQ19QIGlzIGEgTVBDNTIwMEIgYmFzZWQgY2FtZXJhIHN5c3RlbSB3aXRoIEludGVsIEdpZ2FiaXQgZXRoZXJuZXQKICAgIGNvbnRyb2xsZXIgKHVzaW5nIGUxMDAwKSBhbmQgY3VzdG9tIEFsdGVyYSBDeWNsb25lLUlJIEZQR0Egb24gUENJLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlMmQzMWZiMzQ1MDY1MzExNTQ1MjE0NDM2M2Q1YmRlNGU1ZTNlNjkzCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxOSAxNzo1NjoxMSAyMDA4IC0wNTAwCgogICAgVXBkYXRlIEZyZWVzY2FsZSBzeXNfZWVwcm9tLmMgdG8gaGFuZGxlIENDSUQgZm9ybWF0cwoKICAgIFVwZGF0ZSB0aGUgc3lzX2VlcHJvbS5jIGZpbGUgdG8gaGFuZGxlIGJvdGggTlhJRCBhbmQgQ0NJRCBFRVBST00gZm9ybWF0cy4gIFRoZQogICAgTlhJRCBmb3JtYXQgcmVwbGFjZXMgdGhlIG9sZGVyIENDSUQgZm9ybWF0LCBidXQgaXQncyBpbXBvcnRhbnQgdG8gc3VwcG9ydCBib3RoCiAgICBzaW5jZSBtb3N0IGJvYXJkcyBvdXQgdGhlcmUgc3RpbGwgdXNlIHRoZSBDQ0lEIGZvcm1hdC4gIFRoaXMgY2hhbmdlIGlzIGluCiAgICBwcmVwYXJhdGlvbiBmb3IgdXNpbmcgb25lIGZpbGUgdG8gaGFuZGxlIGJvdGggZm9ybWF0cy4gIFRoaXMgd2lsbCBhbHNvIHVuaWZ5CiAgICBFRVBST00gc3VwcG9ydCBmb3IgYWxsIEZyZWVzY2FsZSA4NXh4IGFuZCA4Nnh4IGJvYXJkcy4KCiAgICBBbHNvIHVwZGF0ZSB0aGUgODZ4eCBib2FyZCBoZWFkZXIgZmlsZXMgdG8gdXNlIHRoZSBzdGFuZGFyZCBDRkdfSTJDX0VFUFJPTV9BRERSCiAgICBpbnN0ZWFkIG9mIElEX0VFUFJPTV9BRERSLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDg1ZjQ2YTI1Y2NiMzNlZDliMjk1ZGUzYzJjZmUxY2UyNzBlY2U5YQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNzoyMjo0MyAyMDA4ICswOTAwCgogICAgcGNpOiBzaDogQWRkIHBjaV9za2lwX2RldiBhbmQgcGNpX3ByaW50X2RldiBmdW5jdGlvbgoKICAgIEFkZCBmdW5jdGlvbiBvZiBuZXcgUENJLCBwY2lfc2tpcF9kZXYgYW5kIHBjaV9wcmludF9kZXYuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDExMDcwMTRlODM1ZWM5ZDQ2YzAzMzNmNDIxMWQxMDRmNzc0NDJkYjAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgMTQgMjA6Mjk6MDcgMjAwOCAtMDUwMAoKICAgIENsZWFuIHVwIElOSVRfUkFNIG9wdGlvbnMKCiAgICBUaGUgTDJfSU5JVF9SQU0gb3B0aW9uIHdhcyB1bnVzZWQsIGFuZCByZWNlbnQgY2hhbmdlcyB0byB0aGUgVExCIGNvZGUKICAgIG1lYW50IHRoYXQgdGhlIElOSVRfUkFNIFRMQnMgd2VyZW4ndCBiZWluZyBjbGVhcmVkIG91dC4gIEluIG9yZGVyIHRvIHJlZHVjZQogICAgdGhlIGFtb3VudCBvZiBtYXBwZWQgc3BhY2UgYXR0YWNoZWQgdG8gbm90aGluZywgd2UgY2hhbmdlIHRoaW5ncyBzbyB0aGUgVExCcwogICAgZ2V0IGNsZWFyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1MjQ1NjE4MjBhOTMyN2U4OTEwNzg1NGIzYTcxODc4MDBjY2Y3MTkKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgMTQgMjA6MjY6NTcgMjAwOCAtMDUwMAoKICAgIFJlbW92ZSBmYWtlIGZsYXNoIGJhbmsgZnJvbSA4NTQ0IERTCgogICAgVGhlIGZha2UgZmxhc2ggYmFuayB3YXMgZ2VuZXJhdGluZyBlcnJvcnMgZm9yIGFueW9uZSB3aG8gZGlkbid0IGhhdmUgYQogICAgUHJvbUpFVCBob29rZWQgdXAgdG8gdGhlIGJvYXJkLiAgQXMgdGhhdCBjb25zdGl0dXRlcyB0aGUgdmFzdCBtYWpvcml0eSBvZgogICAgdXNlcnMsIHdlIHJlbW92ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjMwZDliZmNiNWY2ZDNhNDNmMjUxOTAxYTZiNDgwOTk0ZGNiNmVhMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBKdWwgMTQgMTQ6MDc6MDMgMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogQWRkIEFUSSBWaWRlbyBjYXJkIHN1cHBvcnQKCiAgICBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgYSBQQ0llIEFUSSBWaWRlbyBjYXJkIG9uIFBDSWUyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2Y5ZjQzNDdjZjMyNWM2M2EzOWZlMzA5MTBmM2ZiMjExYWUyY2MxNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBKdWwgMTQgMTQ6MDc6MDIgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCBzb21lIEwxL0wyIFNQUiByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIEFkZCBuZXcgTDEvTDIgU1BScyByZWxhdGVkIHRvIGU1MDBtYyBjYWNoZSBjb25maWcgYW5kIGNvbnRyb2wuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBlNTg1Mjc4N2YwYzNjNDQyYTI3NjI2MmYxM2Q5MWNhNDUwNjA1YWMwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1bCAxNCAxNDowNzowMSAyMDA4IC0wNTAwCgogICAgTVBDODU0NERTOiBSZXBvcnQgYm9hcmQgaWQsIGJvYXJkIHZlcnNpb24gYW5kIGZwZ2EgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDczZjE1YTA2MGY2N2EyNDYyNTUxYzMzNDIxNWJkMjBmYWM2YjgxZDEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVsIDE0IDE0OjA3OjAwIDIwMDggLTA1MDAKCiAgICA4NXh4OiBDbGVhbnVwIEwyIGNhY2hlIHNpemUgZGV0ZWN0aW9uCgogICAgVGhlIEwyIHNpemUgZGV0ZWN0aW9uIGNvZGUgd2FzIGEgYml0IGNvbmZ1c2luZyBhbmQgd2Uga2VwdCBoYXZpbmcgdG8gYWRkCiAgICBjb2RlIHRvIGl0IHRvIGhhbmRsZSBuZXcgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgc2Vuc2Ugb2YgZGV0ZWN0aW9uIHNvIHdlCiAgICBsb29rIGZvciB0aGUgb2xkZXIgcHJvY2Vzc29ycyB0aGF0IGFyZW4ndCBjaGFuZ2luZy4KCiAgICBBbHNvIGFkZGVkIHN1cHBvcnQgZm9yIDFNIGNhY2hlIHNpemUgb24gODU3Mi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGMzY2E3ZTVlMDBhMjQ0NTFmMjBkZjNiZGVkOWE2MWJhNTQxOTIxZGYKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNTozMzowOCAyMDA4IC0wNDAwCgogICAgc2JjODU2MDogZW5hYmxlIENPTkZJR19PRl9MSUJGRFQgYnkgZGVmYXVsdAoKICAgIE1ha2UgdGhlIGRlZmF1bHQgYnVpbGQgZm9yIHRoZSBzYmM4NTYwIGJvYXJkIGJlIHBvd2VycGMKICAgIGNhcGFibGUgd2l0aCBsaWJmZHQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCA2YjQ0YTQ0ZWMyYWFiMTgwZDcwOTVjMWM5MmU2NjljZWUxZDNlM2JkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDE0IDIwOjA0OjQwIDIwMDggLTA1MDAKCiAgICBGaXggaW5kZW50YXRpb24gZm9yIGRlZmF1bHQgYm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKCiAgICBUaGlzIHdhcyBwcm9wb3NlZCBieSBQYXVsIEdvcnRtYWtlciBpbiByZXNwb25zZSB0byBXb2xmZ2FuZydzIGNvbW1lbnRzIG9uCiAgICBzaW1pbGFyICNkZWZpbmVzIGluIHNiYzg1NjAuaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzdmZWY0OTkxMDRlMjhlMGE4M2IwMmI4NWNhMGQxZmJlODBkMjk0YQpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA3IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBhZGQgZGVmYXVsdCBmZHQgdmFsdWVzCgogICAgQWRkIGluIHRoZSBkZWZhdWx0IGZkdCBzZXR0aW5ncyBhbmQgdGhlIHR5cGljYWwgRVhUUkFfRU5WCiAgICBzZXR0aW5ncyBhcyBib3Jyb3dlZCBmcm9tIHRoZSBtcGM4NTYwYWRzLiAgRml4IGEgY291cGxlCiAgICBvZiBzdGFsZSByZWZlcmVuY2VzIHRvIHRoZSBtcGM4NTYwYWRzIGRhdGluZyBiYWNrIHRvIHRoZQogICAgb3JpZ2luYWwgY2xvbmUvZm9yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMDRlNzZlZGY5MmY3Zjg5Njk2OTg5ZTg3MDJiOTdlMDIwNDU1YWYzCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MzM6MDYgMjAwOCAtMDQwMAoKICAgIHNiYzg1NjA6IGFkZCBpbiBmdF9ib2FyZF9zZXR1cCgpCgogICAgQWRkIGluIGZvciB0aGUgc2JjODU2MCwgdGhlIGZ0X2JvYXJkX3NldHVwKCkgcm91dGluZSwgYmFzZWQgb24gd2hhdCBpcwogICAgaW4gdXNlIGZvciB0aGUgRnJlZXNjYWxlIE1QQzg1NjBBRFMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYzE1OGJjYWNhM2IzMWNiZTM4YzQxNDM4MTJlNjE3MGUzOGE1NzM5MwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA1IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBkZWZpbmUgZXRoMCBhbmQgZXRoMSBpbnN0ZWFkIG9mIGV0aDEgYW5kIGV0aDIKCiAgICBUaGUgZXhpc3RpbmcgY29uZmlnIGRvZXNuJ3QgZGVmaW5lIENPTkZJR19IQVNfRVRIMCwgYW5kIHNvIHRoZQogICAgZmR0IHN1cHBvcnQgZG9lc24ndCB1cGRhdGUgdGhlIHplcm9zIGluIHRoZSBkdGIgbG9jYWwtbWFjIHdpdGgKICAgIHJlYWwgZGF0YSBmcm9tIHRoZSB1LWJvb3QgZW52LiAgU2luY2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBpcwogICAgdGFpbG9yZWQgdG8ganVzdCB0d28gaW50ZXJmYWNlcywgZ2V0IHJpZCBvZiB0aGUgRVRIMiBkZWZpbml0aW9ucwogICAgYXQgdGhlIHNhbWUgdGltZS4KCiAgICBBbHNvIGRvbid0IGluY2x1ZGUgYW55IGVuZCB1c2VyIHNwZWNpZmljIGRhdGEgaW50byB0aGUgZW52aXJvbm1lbnQKICAgIGJ5IGRlZmF1bHQgLS0gdGhpbmdzIGxpa2UgTUFDIGFkZHJlc3MsIG5ldHdvcmsgcGFyYW1ldGVycyBldGMuIG5lZWQKICAgIHRvIGNvbWUgZnJvbSB0aGUgZW5kIHVzZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGVjNDM2ZDJmOTUwNzZkOWU0NmFlNTk0ZGI2ZTliMWQ4NzMyODQwZApBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjA0IDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBwcm9wZXJseSBzZXQgY3MwX2JuZHMgZm9yIDUxMk1CCgogICAgVGhlIHNiYzg1NjAgYm9hcmQgc2hpcHMgd2l0aCA1MTJNQiBvZiBtZW1vcnkgaW5zdGFsbGVkLAogICAgYnV0IHRoZSBjdXJyZW50IGNzMF9ibmRzIGlzIGhhcmQgY29kZWQgZm9yIDI1Nk1CLiAgU2V0IHRoZQogICAgdmFsdWUgYmFzZWQgb24gQ0ZHX1NEUkFNX1NJWkUuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgNmRlNWJmMjQwMDRjOGQ5YzliMDcwYmI4Zjc0MThkMWM0NWU1ZWIyNwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgSnVsIDExIDE1OjMzOjAzIDIwMDggLTA0MDAKCiAgICBzYmM4NTYwOiBwcm9wZXIgZGVmaW5pdGlvbnMgZm9yIFRTRUMuCgogICAgVGhlIGRlZmluaXRpb25zIGZvciB0aGUgVFNFQyBoYXZlIGJlY29tZSBvdXQgb2YgZGF0ZS4gIFRoZXJlIGlzIG5vCiAgICBsb25nZXIgYW55IHN1Y2ggb3B0aW9ucyBsaWtlICJDT05GSUdfTVBDODV4eF9UU0VDMSIgb3Igc2ltaWxhci4KICAgIFVwZGF0ZSB0byBtYXRjaCB0aG9zZSBvZiBvdGhlciBib2FyZHMsIGxpa2UgdGhlIE1QQzg1NjBBRFMuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MTA3NGFiYmUwYzc2NDI5NTc3YWZmNThhZWZmMGEyNGFkMjEwYjIzCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdWwgOSAxMzoyMzowNSAyMDA4IC0wNDAwCgogICAgOHh4eC1mZHQ6IHNldCBuczE2NTUwIGNsb2NrIGZyb20gQ0ZHX05TMTY1NTBfQ0xLLCBub3QgYmlfYnVzZnJlcQoKICAgIFNvbWUgYm9hcmRzIHRoYXQgaGF2ZSBleHRlcm5hbCAxNjU1MCBVQVJUcyBkb24ndCBoYXZlIGEgZGlyZWN0CiAgICB0aWUgYmV0d2VlbiBiaV9idXNmcmVxIGFuZCB0aGUgY2xvY2sgdXNlZCBmb3IgdGhlIFVBUlRzLiAgQm9hcmRzCiAgICB0aGF0IGRvIGhhdmUgc3VjaCBhIHRpZSBzaG91bGQgc2V0IENGR19OUzE2NTUwX0NMSyB0byBiZQogICAgZ2V0X2J1c19mcmVxKDApIC0tIHdoaWNoIG1vc3Qgb2YgdGhlbSBkbyBhbHJlYWR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjRlZjc2ZjMyMGZiYWRmMDc0MTA1MjI5ODI2NTE0ZGIxNDBmOTM5ZgpBdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CkRhdGU6CVdlZCBKdWwgMiAwNzowMzo1MyAyMDA4IC0wNzAwCgogICAgQ2hhbmdlIHRoZSB0ZW1wIG1hcCB0byBST00gdG8gYWxpZ24gYWRkcmVzc2VzIHRvIHBhZ2Ugc2l6ZS4KCiAgICBXaXRoIGEgcGFnZSBzaXplIG9mIEJPT0tFX1BBR0VTWl8xNk0sIGJvdGggdGhlIHJlYWwgYW5kIGVmZmVjdGl2ZQogICAgYWRkcmVzc2VzIG11c3QgYmUgbXVsdGlwbGVzIG9mIDE2TUIuICBUaGUgaGFyZHdhcmUgc2lsZW50bHkgdHJ1bmNhdGVzCiAgICB0aGVtIHNvIHRoZSBjb2RlIGhhcHBlbnMgdG8gd29yay4gIFRoaXMgcGF0Y2ggY2xhcmlmaWVzIHRoZSBzaXR1YXRpb24KICAgIGJ5IGVzdGFibGlzaGluZyBhZGRyZXNzZXMgdGhhdCB0aGUgaGFyZHdhcmUgZG9lc24ndCBuZWVkIHRvIHRydW5jYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDZiNDE4NmMxMDIwNGI2NjgzZWRiMDQ3YWM1ZjUwNmZiMGNlMDkzNwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTc6NDU6MjIgMjAwOCAtMDUwMAoKICAgIG1wYzg1eHg6IHVzZSBJU19FX1BST0NFU1NPUiBtYWNybwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmI3MGZmYjlkMWIyZTc5MTE2MWYzY2Y5MjkzN2FhNDViNGEwN2I3OApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTYgMTU6NTU6NTMgMjAwOCAtMDUwMAoKICAgIGZkdDogYWRkIGNyeXB0byBub2RlIGhhbmRsaW5nIGZvciBNUEM4ezMsIDV9eHhFIHByb2Nlc3NvcnMKCiAgICBEZWxldGUgdGhlIGNyeXB0byBub2RlIGlmIG5vdCBvbiBhbiBFLXByb2Nlc3Nvci4gIElmIG9uIDgzNjAgb3IgODM0eCBmYW1pbHksCiAgICBjaGVjayByZXYgYW5kIHVwLXJldiBjcnlwdG8gbm9kZSAodG8gU0VDIHJldi4gMi40IHByb3BlcnR5IHZhbHVlcykKICAgIGlmIG9uIGFuICdFQScgcHJvY2Vzc29yLCBlLmcuIE1QQzgzNDlFQS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg1ZTU4MDhlOGVhOWY3N2RhNTIxOWYyMzM5NDExMmYwYjQyNGZhNWUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAxNToxMDoxMSAyMDA4IC0wNDAwCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBleHRlcm4gcGh5X3QgZGVjbGFyYXRpb24gYnkgbW92aW5nIGNvZGUgdG8gcHJvcGVyIHBsYWNlCgogICAgQVJNIERhVmluY2k6IFJlbW92ZSBleHRlcm4gcGh5X3QgZGVjbGFyYXRpb24gYnkgbW92aW5nCiAgICBjb2RlIHRvIHByb3BlciBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KCmNvbW1pdCAzYTllN2JhMmFjMTQwMThjNWRkMWU3OGE3ZGQ3MzU1NzE1NjljOTcxCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTAgMjAwOCAtMDQwMAoKICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb25zIG9mIE1BQ0hfVFlQRSBhbmQgcHJvdG90eXBlIG9mIGkyY19pbml0KCkKCiAgICBBUk0gRGFWaW5jaTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiBNQUNIX1RZUEUKICAgIGFuZCBwcm90b3R5cGUgb2YgaTJjX2luaXQoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KCmNvbW1pdCAzNDg3NTNkNDE2Y2QyYzllN2VjNjUyMGE1NDRjOGYzM2NmMDJhNTYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1bCAxNCAxNDowMzowMiAyMDA4IC0wNTAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA0NWIxNmQyMmM2NDY3NGNjZDhjNDYzNzQ1NmE5ODc0NjM2MDkxNDFjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAxNCAyMjozODo0MiAyMDA4ICswMjAwCgogICAgRml4IGNvZGluZyBzdHlsZTsgbWFrZSBjb2RlIGJldHRlciBwYXJzYWJsZSBieSBleHRlcm5hbCB0b29scwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjg4MGNiZjIwN2IxYzEwOWQzYTY2MTQxN2E4ZmVkZGNiZDcyOWE5ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMjE6MTk6MDggMjAwOCArMDIwMAoKICAgIGNwdS9pMzg2L3NlcmlhbC5jOiBGaXggc3ludGF4IGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTJkNDVlNmY0ZDk5MTllMWFmZWFjNWUwOTU1N2IyMjUyODMyZmNjZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMjA6NDE6MzUgMjAwOCArMDIwMAoKICAgIGVscHBjIGJvYXJkOiBDb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDgyYjI0YThhNTA1ZmM4MTQ2NjQ4NGIzYzU1YjU3NGVlMGI0MjA1YmMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjQwOjIyIDIwMDggKzAyMDAKCiAgICBlbHBwYyBib2FyZDogZml4IHN5bnRheCBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBmZTM0MDU4NWE2YTQ4YmQzOTJkMzE1YjBkZDg0ZDA2OGIxYzM3OTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjM4OjI2IDIwMDggKzAyMDAKCiAgICBFQitNQ0YtRVYxMjMgYm9hcmQ6IGZpeCBjb2Rpbmcgc3R5bGUgKGFsaW5nbWVudCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY4NDE3ODVhMGJiMGYzODE3NTQ1NmE5MjNlZGQ2MzRmYjdkZDY5NDcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDIwOjM2OjQ0IDIwMDggKzAyMDAKCiAgICBFQitNQ0YtRVYxMjMgYm9hcmQ6IGZpeCBzeW50eCBlcnJvcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWI1Y2RhOWY4OGMzZWFmOWNmNTk5YWRjM2EzMzc1OTA2YzRlZDkwNApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA3IDE4OjAyOjA4IDIwMDggLTA1MDAKCiAgICBSZW1vdmUgTEJDX0NBQ0hFX0JBU0UgZnJvbSA4NTQ0IERTCgogICAgVGhlIDg1NDQgRFMgZG9lc24ndCBoYXZlIGFueSBjYWNoZWFibGUgTG9jYWwgQnVzIG1lbW9yaWVzIHNldCB1cC4gIEJ5IG1hcHBpbmcKICAgIHNwYWNlIGZvciBzb21lIGFueXdheSwgd2Ugd2VyZSBhbGxvd2luZyBzcGVjdWxhdGl2ZSBsb2FkcyBpbnRvIHVubWFwcGVkIHNwYWNlLAogICAgd2hpY2ggd291bGQgY2F1c2UgYW4gZXhjZXB0aW9uIChhbm5veWluZywgZXZlbiBpZiB1bHRpbWF0ZWx5IGhhcm1sZXNzKS4KICAgIFJlbW92aW5nIExCQ19DQUNIRV9CQVNFLCBhbmQgdXNpbmcgTEJDX05PTkNBQ0hFX0JBU0UgZm9yIHRoZSBMQkMgTEFXIHNvbHZlcyB0aGUKICAgIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQwZmY1MWJhNWQwMzA5ZGJlOWUyNWVhNTRmOGEwMjg1YTZkNWRiOTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDE1OjE5OjA3IDIwMDggKzAyMDAKCiAgICBDb2RlIGNsZWFudXA6IGZpeCBvbGQgc3R5bGUgYXNzaWdubWVudCBhbWJpZ3VpdGllcyBsaWtlICI9LSIgZXRjLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDc4NTQyMjNjNWM4NWI1ODQ5ZmJmNDIyY2M4YWMwZWZlZjQ2MWMzNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTQgMTU6MTA6NTMgMjAwOCArMDIwMAoKICAgIEFtaWdhT25lRzNTRTogcmVtb3ZlIGRlYWQgYW5kIGluY29tcGxldGUgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGI2NGYxOTBiN2EzNDIyNGRmMDliNTU5Y2ExMTFlYjFiNzMzZjAwYWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE0IDE1OjA2OjM1IDIwMDggKzAyMDAKCiAgICBGaXggcHJpbnRmKCkgZm9ybWF0IGlzc3VlcyB3aXRoIHNpemVvZl90IHR5cGVzIGJ5IHVzaW5nICV6dQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYzNTRiNzNlMTZhODZmOWU5MDg1NDcxYTgzMDYwNWY3NGY4NGVhNWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gSnVsIDE0IDE0OjExOjQ1IDIwMDggKzAyMDAKCiAgICB2c3ByaW50ZjogYWRkIHogYW5kIHQgb3B0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjVkYmU5OGFiYjY4NmQ4MjEwZTE3MzFmYmE4NWNlZDdkM2NlODc0YwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMTMgMjM6MDc6MzUgMjAwOCArMDIwMAoKICAgIEZpeCBzb21lIG1vcmUgcHJpbnRmKCkgZm9ybWF0IGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ1OTk2ZGQ1NTVlZGY1MjcyMWI3NjkxYTRjNTlkZTAxNjI1MWVkMzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDEzIDE5OjUxOjAwIDIwMDggKzAyMDAKCiAgICBGaXggc29tZSBtb3JlIHByaW50ZigpIGZvcm1hdCBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBmOWQ1ZjZkNmU4MTQ5MDc3OTQ5OTVjNmEyMmFmNzUyMDQwYzM1ZDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDEzIDE5OjQ4OjI2IDIwMDggKzAyMDAKCiAgICBBRFM1MTIxOiBGaXggKGRlbGV0ZSkgaW5jb3JyZWN0IGFkczUxMjFfZGl1X2luaXQoKSBwcm90b3R5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDMyMjcxNmExZDFlYjMzYTcxMDY3YmEwZWIxYzUzNDZmYjJkZDZiMzQKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVNhdCBKdWwgMTIgMTc6MzE6MzYgMjAwOCArMDIwMAoKICAgIEZpeCBidWcgaW4gTGltZSB2aWRlbyBkcml2ZXIKCiAgICBXZSBuZWVkIHRvIHdhaXQgd2hpbGUgZHJhd2luZyBlbmdpbmUgY2xlYXJzIGZyYW1lCiAgICBidWZmZXIgYmVmb3JlIGFueSBmdXJ0aGVyIHNvZnR3YXJlIGFjY2Vzc2VzIHRvIGZyYW1lCiAgICBidWZmZXIgd2lsbCBiZSBpbml0aWF0ZWQuIE90aGVyd2lzZSBzb2Z0d2FyZSBkcmF3bgogICAgcGFydHMgY291bGQgYmUgcGFydGlhbGx5IGRlc3Ryb3llZCBieSB0aGUgZHJhd2luZwogICAgZW5naW5lIG9yIGV2ZW4gR0RDIGNoaXAgZnJlZXplIGNvdWxkIG9jY3VyIChhcwogICAgb2JzZXJ2ZWQgb24gc29jcmF0ZXMgYm9hcmQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAwYTU2NzZiZWZiMGM1OTAyMTJhNTNmNzYyN2ZhNWQwZDhhODRiZjM0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IEp1bCAxMiAxNDozNjozNCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMThjOGEyOGFhZDQ5ODAzNzgwYmQ4ZDUyNDMyZGVkNTI4ZTM3ZTcwMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEp1bCAxMSAxNToxMTo1NyAyMDA4ICswMjAwCgogICAgaHdtb246IHJlbmFtZSBDT05GSUdfRFMxNzIyIHRvIENPTkZJR19EVFRfRFMxNzIyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZWNiYjQ1YmIwMjdlOTBjMTlkNjNiNDhlN2IwYzA1YWNjMWE4N2MwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDExIDExOjUwOjUzIDIwMDggKzAyMDAKCiAgICBod21vbjogQ2xlYW5pbmcgaHdtb24gZGV2aWNlcwoKICAgIENsZWFuIE1ha2VmaWxlCiAgICBNb3ZlIGRldmljZSBzcGVjaWZpYyB2YWx1ZXMgdG8gZHJpdmVyIGZvciBiZXR0ZXIgcmVhZGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzc4ZmNlNjk5YzdmZjQ2N2VjZDg0MWRhNmE3OWYwNjUxODBiZjU3OApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIEp1bCAxMSAxMDo0MzoxMyAyMDA4ICswMjAwCgogICAgRklTOiByZXBhcmUgaW5jb3JyZWN0IHJldHVybiB2YWx1ZSB3aXRoIHJhbWRpc2sgaGFuZGxpbmcKCiAgICBNaWNyb2JsYXplIGFuZCBQb3dlclBDIHVzZSBib290X2dldF9yYW1kaXNrIGZvciBsb2FkaW5nCiAgICByYW1kaXNrIHRvIG1lbW9yeSB3aXRoIGNoZWNraW5nIHJldHVybiB2YWx1ZS4KICAgIFJldHVybiAwIG1lYW5zIHN1Y2Nlc3MuIFJldHVybiAxIG1lYW5zIGZhaWxlZC4KICAgIEhlcmUgaXMgY29ycmVzcG9uZCBwYXJ0IG9mIGNvZGUgZnJvbSBib290bS5jIHdoaWNoIGNoZWNrCiAgICByZXR1cm4gY29kZS4KCiAgICByZXQgPSBib290X2dldF9yYW1kaXNrIChhcmdjLCBhcmd2LCBpbWFnZXMsIElIX0FSQ0hfUFBDLAoJCSZyZF9kYXRhX3N0YXJ0LCAmcmRfZGF0YV9lbmQpOwogICAgaWYgKHJldCkKCWdvdG8gZXJyb3I7CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDg0YTJjNjRhMjZkYzVlMjc1ZTFjZjRlNzZhNmUxOTRhMThmYjU0NzcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBKdWwgMTEgMTA6MTA6MzIgMjAwOCArMDIwMAoKICAgIG1pY3JvYmxhemU6IFJlbW92ZSB1c2VsZXNzIGFuY2llbnQgaGVhZGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA1M2VhOTgxYzMxMjRiMTNjMTM3YzJkMTBlOTc1YjdjNjY3MjI2NmUwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDExIDEwOjEwOjMxIDIwMDggKzAyMDAKCiAgICBtaWNyb2JsYXplOiBDbGVhbiB1YXJ0bGl0ZSBkcml2ZXIKCiAgICBSZWRlc2lnbiB1YXJ0bGl0ZSBkcml2ZXIgdG8gaW5fYmUzMiBhbmQgb3V0X2JlMzIgbWFjcm9zCiAgICBGaXggbWlzc2luZyBoZWFkZXIgaW4gaW8uaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZGJmM2RmYjM4NmEyZDVkMjM4MTgxNGUzOTk4NWFiMmUyMTg5NDU1MApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAwMjozOToxNCAyMDA4ICswMjAwCgogICAgRW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MgcmVxdWlyZWQgYnkgbGF0ZXN0IExpbnV4IGtlcm5lbC4KCmNvbW1pdCBlZjEzMGQzMDkzYmRmODhmMDFjZjNlMDAwZmU1ZGYyNDllYmYyYjFhCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTA6MjQ6MTUgMjAwOCAtMDQwMAoKICAgIEZpeCBpbnRlZ2VyIG92ZXJmbG93IHdhcm5pbmcgaW4gY2FsY19kaXZpc29yKCkKCiAgICB3aGljaCBoYXBwZW5lZCB3aGVuIHJvdW5kaW5nIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Cgpjb21taXQgNmI3NjAxODlkNzdmMDAxNjg0ZTMxNjBiMzU1YzE4NWNhMzgwNDk2MQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIEp1bCAxMSAwMTowOTo1OSAyMDA4ICswMjAwCgogICAgRml4IGJ1aWxkIHRpbWUgd2FybmluZ3MgaW4gZnVuY3Rpb24gbW1jX2RlY29kZV9jc2QoKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCBjMTU5NDdkNmNlMGQ1OTkyNWM5N2ZkZmFjNjkyNDc2YWY2ZTI2MmQwCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CVRodSBKdWwgMTAgMTA6NDY6MzMgMjAwOCAtMDQwMAoKICAgIEFSTTogRml4IGZvciBicm9rZW4gY29tcGlsYXRpb24gd2hlbiBkZWZpbmluZyBDT05GSUdfQ01EX0VMRgoKICAgIGNhdXNlZCBieSBtaXNzaW5nIGRjYWNoZSBzdGF0dXMvZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgoKY29tbWl0IDA2OGMxYjc3YzhmNDJhMWEzMTA4NGQyZjRiMWQ1Y2M4MDdjMWE5Y2UKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMTM6NTM6MzEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHJlZHVuZGFudCBmdF9ib2FyZF9zZXR1cCgpIGZ1bmN0aW9ucyBmcm9tIHNvbWUgNHh4IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzLgogICAgVGhpcyBjYW4gYmUgZG9uZSBzaW5jZSB3ZSBub3cgaGF2ZSBhIGRlZmF1bHQgd2VhayBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcwogICAgaW4gY3B1L3BwYzR4eC9mZHQuYy4gT25seSBib2FyZCBpbiBuZWVkIGZvciBhIGRpZmZlcmVudC9jdXN0b20KICAgIGltcGxlbWVudGF0aW9uIGxpa2UgY2FueW9ubGFuZHMgbmVlZCB0aGVpciBvd24gdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDM5YTA4OWY4YmM5NjBiYTlhZTZhMDhmZGE1NTgyYjU3ODYyMGNjMQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgMTMgMTQ6NTg6MTYgMjAwOCArMDIwMAoKICAgIEFkZCBsYXN0IGtub3duIG1haW50YWluZXIgZm9yIG9ycGhhbmVkIGJvYXJkczsgcmVmb3JtYXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1Yzc2MWQ1N2JiOTk0MGUwMTZkNTYxZmRhOGIyZWQ4NGM1NWRlNWI2CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgSnVsIDEwIDEzOjE2OjA0IDIwMDggKzAyMDAKCiAgICBSZW1vdmUga2hhcnJpc0BuZXh1cy10ZWNoLm5ldCBmcm9tIE1BSU5UQUlORVJTCgogICAgTWFpbCB0byBraGFycmlzQG5leHVzLXRlY2gubmV0IGJvdW5jZXMgYmVjYXVzZSB0aGUgdXNlciBkb2Vzbid0IGV4aXN0CiAgICBhbnltb3JlLiBZb3UgY2FuJ3QgYmUgYSBtYWludGFpbmVyIHdpdGhvdXQgYSB2YWxpZCBlLW1haWwgYWRkcmVzcywgc28KICAgIG1vdmUgYWxsIGJvYXJkcyB0aGF0IHVzZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBLeWxlIEhhcnJpcyB0byB0aGUKICAgICJvcnBoYW5lZCIgbGlzdC4KCiAgICBDdXJyZW50bHksIG9ubHkgUG93ZXJQQyBoYXMgYSBsaXN0IG9mIG9ycGhhbmVkIGJvYXJkcywgc28gdGhpcyBwYXRjaAogICAgY3JlYXRlcyBvbmUgZm9yIEFSTSBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAxN2JkMTcwNzE0NjNiMGNkZTM5MWFjNGEwODYzZDYwMDQ3NGI0ZWExCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDAxOjE1OjEwIDIwMDggKzAyMDAKCiAgICBhdDkxOiBGaXggdG8gZW5hYmxlIHVzaW5nIFRlcmlkaWFuIE1JSSBwaHkgKDc4UTIxeDMpIHdpdGggYXQ5MXNhbTkyNjAKCiAgICBPbiB0aGUgYXQ5MXNhbTkyNjBlcCBkZXZlbG9wbWVudCBib2FyZCB0aGVyZSBpcyBhbiBFRVBST00KICAgIGNvbm5lY3RlZCB0byB0aGUgVFdJIGludGVyZmFjZSAoUEEyMywgUEEyNCBQZXJpcGhlcmFsIEEKICAgIG11bHRpcGxleGluZyksIHNvIHdlIGNhbm5vdCB1c2UgdGhlc2UgcGlucyBhcyBFVFgyLCBFVFgzLgogICAgVGhpcyBwYXRjaCBjb25maWd1cmVzIFBBMTAsIFBBMTEgcGlucyBmb3IgRVRYMiwgRVRYMwogICAgaW5zdGVhZCBvZiBQQTIzLCBQQTI0IHBpbnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogTWFudWVsIFNhaG0gPE1hbnVlbC5TYWhtQGZlaWcuZGU+Cgpjb21taXQgZjg4OTI2NTc1M2RkZjQ0NjVkOWQ1ODA4MjdiYjkyODliZmFjNTVkNgpBdXRob3I6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KRGF0ZToJU2F0IEp1bCAxMiAxMzoxODozNCAyMDA4IC0wNjAwCgogICAgZml4IERJVSBmb3Igc21hbGwgc2NyZWVucwoKICAgIFRoZSBESVVfRElWIHJlZ2lzdGVyIGlzIDggYml0IG5vdCA1IGJpdC4gVGhpcyBwcmV2ZW50ZWQgbGFyZ2UgRElWIHZhbHVlcwogICAgc28gaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBzZXQgYSBzbG93IHBpeGVsIGNsb2NrIGFuZCB0aHVzIHByZXZlbnRlZAogICAgZGlzcGxheSBvbiBzbWFsbCBzY3JlZW5zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNjBiODU3Mzg3NWU2NTBlNGM2OWJlNjY3YmZjODhkM2VkNDc0YTdjCkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMTEgMTQ6NDQ6MDkgMjAwOCAtMDYwMAoKICAgIEFEUzUxMjEgY2xlYW51cCBjb21waWxlIHdhcm5pbmdzCgogICAgYm9hcmQvYWRzNTEyMS9pb3Bpbi5jCglSZXBsYWNlIGJpdCBmaWVsZHMgaW4gc3RydWN0IGlvcGluX3Qgd2l0aCBhIHNpbmdsZQoJZmllbGQgYW5kIGludGlhbGl6ZSBpdCB2aWEgcGxhaW4gb2xkIG1hY3Jvcy4KCVRoaXMgZml4ZXMgdGhlIHR5cGUgcHVuIHdhcm5pbmdzIGFuZCBtYWtlcyB0aGUgY29kZQoJbW9yZSByZWFkYWJsZS4KCiAgICBib2FyZC9hZHM1MTIxL2FkczUxMjEuYwoJQWRkIGluY2x1ZGUgaW9waW4uaCB0byBhZHM1MTIxLmMgZm9yIHRoZSBpb3Bpbl9pbml0aWFsaXplCglwcm90b3R5cGUuCgoJQWRkIGFuIGV4dGVybiB2b2lkIGFkczUxMjFfZGl1X2luaXQodm9pZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZGU2MzU4NzYyMmM0YjgzMGEyN2QxZGRmNzI2NTg0M2RlOWU5OTRmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAyMjo1NjoxMSAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTg0ZjFiNDA0YTkwZWVmOGI0MjVjMGU3YjMwMThkNTllZjk5ODJjOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTEgMjI6NTU6MzEgMjAwOCArMDIwMAoKICAgIEZpeGVkIHNvbWUgb3V0LW9mLXRyZWUgYnVpbGQgaXNzdWVzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0N2JmOWM3MWFlODM4MzA1YTNlYTMxNjFhZjhkMTRlNmYzZmMyYzgyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE2OjIwOjIzIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IEZCIENTIG5vdCBzZXR1cCBwcm9wZXJseSBmb3IgTWNmNTI4MgoKICAgIFJlbW92ZSBhbGwgQ0ZHX0NTbl9STyBpbiBjcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jLiBJZgogICAgQ0ZHX0NTbl9STyBpcyBkZWZpbmVkIGFzIDAsIHRoZSBjaGlwc2VsZWN0IHdpbGwgbm90CiAgICBiZSBhc3NpZ25lZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJjM2NjYjEzOWYwODM2ZjBhODM0Y2ZkMzcwYTEyMGEwMGFkN2U2M2EKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTU6NDc6MjcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGRlZmluZSBmb3IgbWNmNTIyN3ggYW5kIG1jZjU0NDV4IFJUQwoKICAgIFJlbmFtZSBDT05GSUdfTUNGVE1SIHRvIENPTkZJR19NQ0ZSVEMgdG8gaW5jbHVkZSByZWFsIHRpbWUKICAgIGNsb2NrIG1vZHVsZSBpbiBjcHUvPGNmIGFyY2g+L2NwdV9pbml0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY5NDk0NWI1MTdmMTBlMDE5MjcxMDE2NzljNjIzNjFlMDNkNGU4MzcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTU6MjU6MDEgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGJvYXJkIG5hbWUgaW4gTUFLRUFMTCBmb3IgTTUyNTNFVkJFCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZTBjNDM1N2QxNGEzNTYzYzZhMmExZTZkNWFkNmEyY2M0ZjM1Y2FiCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE1OjIxOjQ0IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsZSBlcnJvciBjYXVzZWQgYnkgbWlzc2luZyB0aW1lciBmdW5jdGlvbgoKICAgIEFkZCAjZGVmaW5lIENPTkZJR19NQ0ZUTVIgaW4gRUIrTUNGLUVWMTIzLmggY29uZmlndXJhdGlvbiBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMzdlYTAzMTE3NWI4MDdjNTRlNmJhZDliMjcwZTliZWRlNmMwMDc4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDE1OjE0OjI1IDIwMDggLTA1MDAKCiAgICBGaXggY29tcGlsZSBlcnJvciBjYXVzZWQgYnkgaW5jb3JyZWN0IGZ1bmN0aW9uIHJldHVybiB0eXBlCgogICAgUmVuYW1lIGludCBtaWlfaW5pdCh2b2lkKSB0byB2b2lkIG1paV9pbml0KHZvaWQpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjQ4NjBiMjU1MjM5ZGJhZWNjY2RkMDAyYzhkMTFmNGVmNTRkZDc1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxOToyNzoyMyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBwb3dlciB1cCBpc3N1ZSBmb3IgTUNGNTIzNQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQwOGU5NzM2MWZiYzllNzlmYTVlZjFhOGFjZjI5MjczYjkzNGIxMQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTk6MTk6MDcgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggY29tcGlsaW5nIGVycm9yIGZvciBNQ0Y1Mjc1CgogICAgVGhlIGNvbXBpbGluZyBlcnJvciB3YXMgY2F1c2VkIGJ5IG1pc3NpbmcgYSBjbG9zZWQgcGFyZW50aGVzZXMKICAgIGluIHNwZWVkLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk0NjAzYzJmZDRkYmUwNjU1ODc4NDE2YWEwZGE5ZjMwMmQ0YzMwZDMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDE4IDE5OjE0OjAxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IHRpbWVyIGlzc3VlIGZvciBNQ0Y1MjcyCgogICAgVGhlIHRpbWVyIHdhcyBhc3NpZ25lZCB0byB3cm9uZyB0aW1lciBtZW1vcnkgbWFwcGVkIHdoaWNoCiAgICBjYXVzZWQgdWRlbGF5KCkgYW5kIHRpbWVyKCkgbm90IHdvcmtpbmcgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzYjFlOGFjOWI0M2Y4OWNjOTI5MWE2YTg2ZTZiMzNlZjU1ODAxNTE1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxOToxMjoxMyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IENoYW5nZSBpbnZhbGlkIEpNUCB0byBCUkEgY2F1Z2h0IGJ5IG5ldyB2NGUgdG9vbGNoYWluCgogICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODM3MWRjMjA2NjEzNmJlMjFlMTBiN2I5MjkzZTQ2OTI5N2Q3NzI5OApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTk6MDU6MjMgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBBZGQgLWdvdD1zaW5nbGUgcGFyYW0gZm9yIG5ldyBsaW51eCB2NGUgdG9vbGNoYWlucwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1cnQgTWFoYW4gPGttYWhhbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2ZDUyNjE1Y2Q0N2JjNTIyZWUxM2JiN2VjN2U1OWQ2Y2U5NDI2YzcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDE4IDEzOjIxOjE5IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGNvZGUgZmxhc2ggY29uZmlndXJhdGlvbiBmb3IgTTU0N3gvTTU0OHggYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmUzNzA5MWFmYzA3ZmRjYzE1NTkwMDkzZmQwNjZiMGNiNzM5OWY4NQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMjQgMTI6MTI6MTYgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBGaXggd2FybmluZyBtZXNzYWdlcyBieSBwYXNzaW5nIGNvcnJlY3QgZGF0YSB0eXBlIGluIGJvYXJkLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxY2MzMjMyMmFjYjFiMzIyNWVlNDU2MDZjZWQ0OGUyYTE0ODI0ZGMKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDI5IDEyOjIxOjU0IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IFVBUlQgYmF1ZHJhdGUgZm9ybXVsYQoKICAgIFRoZSBmb3JtdWxhICJjb3VudGVyID0gKHUzMikgKGdkLT5idXNfY2xrIC8gZ2QtPmJhdWRyYXRlKSAvIDMyIgogICAgY2FuIGdlbmVyYXRlIHRoZSB3cm9uZyBkaXZpc29yIGR1ZSB0byBpbnRlZ2VyIGRpdmlzaW9uIHRydW5jYXRpb24uCiAgICBSb3VuZCB0aGUgY2FsY3VsYXRlZCBkaXZpc29yIHZhbHVlIGJ5IGFkZGluZyAxLzIgdGhlIGJhdWRyYXRlCiAgICBiZWZvcmUgZGl2aWRpbmcgYnkgdGhlIGJhdWRyYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBiNTc4ZmI0NzE0NDRjYmQ3ZGIxMjg1NzAxYmE1MTM0M2JhYWY3M2ZiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDExOjM4OjI2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBpbmNsdWRlIHNlcXVlbmNlIGluIDR4eF9wY2llLmMKCiAgICBUaGlzIHBhdGNoIG5vdyBtb3ZlcyBjb21tb24uaCB0byB0aGUgdG9wIG9mIHRoZSBpbmxjdWRlIGxpc3QuIFRoaXMKICAgIGlzIG5lZWRlZCBmb3IgYm9hcmRzIHdpdGggQ09ORklHX1BIWVNfNjRCSVQgc2V0IChlLmcuIGthdG1haSksIHNvIHRoYXQKICAgIHRoZSBwaHlzX3NpemVfdC9waHlzX2FkZHJfdCBhcmUgZGVmaW5lZCB0byB0aGUgY29ycmVjdCBzaXplIGluIHRoaXMKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjllMmM2ZDBkMTNkN2M4Y2YxNjEyYWMwOTBiZGM0YzU5YmE2ODU4ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAxMzoxMDo1NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsZSB3YXJuaW5nIGluIDQ0eF9zcGRfZGRyMi5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZiZDkxMzg0OThjMmU0ZjRmMDkxOTAxMDhiOTkxNTdkMWIyMTQwYjUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTEgMTE6NDA6MTMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIGtvcmF0IG1lcmdlIHByb2JsZW0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWQwNTU0NzM2YTBhMWRkNTk3MThhY2RhNjYwODcxY2U1NmI2OWUxOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAxMTozNDo1MiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBTb21lIFJld29vZCBjbGVhbnVwcyAoY29kaW5nIHN0eWxlLCBsZWFkaW5nIHdoaXRlIHNwYWNlcykKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2E4MjExM2VkNTkzNGQ0OThmMjUwODA0NDFhODI2MWZjOTQ1NGIxNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAxNjozNzowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgNDYwU1ggVUlDIGRlZmluZXMKCiAgICBPbmx5IHRoZSByZWFsbHkgbmVlZGVkIG9uZXMgYXJlIGFkZGVkIChjYXNjYWRpbmcgYW5kIEVNQUMvTUFMKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjYxNzNmYzZmNjA1MjFjMmE4MDcyZjY1MmY4NjM2MTdmYzExYmE5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAzMCAxNDoxMTowNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb250aW51ZSBjbGVhbnVwIG9mIHBwYzQ0MC5oCgogICAgVGhpcyBwYXRjaCBjb250aW51ZXMgdGhlIHBwYzQ0MC5oIGNsZWFudXAgYnkgcmVtb3Zpbmcgc29tZSBvZiB0aGUgdW51c2VkCiAgICBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkOTA1NmI3OTEzZWQ2YTIyOGQyZjMzNjcxZDkxNmVmZWRlZTU0MWRkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDMwIDE0OjA1OjA1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgS2F0bWFpICYgWXVjY2EgUENJZSByZWdpc3RlciB1c2FnZQoKICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoZSA0NDBTUGUgUENJZSByZWdpc3RlciB1c2FnZS4gTm93IG9ubHkgZGVmaW5lcwogICAgZnJvbSB0aGUgaW5jbHVkZS9hc20tcHBjLzR4eF9wY2llLmggYXJlIHVzZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVkZTg1MTQwM2IwMTQ4OWI0OTNmYTgzMTM3YWQ5OTBiOGNlNjBkMWMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gMjYgMTc6MzY6MzkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUmV3b3JrIDQ0MEdYIFVJQyBoYW5kbGluZwoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgNDQwR1ggaW50ZXJydXB0IGhhbmRsaW5nIHNvIHRoYXQgdGhlIGNvbW1vbiA0eHgKICAgIGNvZGUgY2FuIGJlIHVzZWQuIFRoZSA0NDBHWCBpcyBhbiBleGNlcHRpb24gdG8gYWxsIG90aGVyIDR4eCB2YXJpYW50cwogICAgYnkgaGF2aW5nIHRoZSBjYXNjYWRpbmcgaW50ZXJydXB0IHZlY3RvcnMgbm90IG9uIFVJQzAgYnV0IG9uIGEgc3BlY2lhbAogICAgVUlDIG5hbWVkIFVJQ0IwIChVSUMgQmFzZSAwKS4gV2l0aCB0aGlzIHBhdGNoIG5vdywgVS1Cb290IHJlZmVyZW5jZXMKICAgIHRoZSA0NDBHWCBVSUNCMCB3aGVuIFVJQzAgaXMgc2VsZWN0ZWQuIEFuZCB0aGUgY29tbW9uIDR4eCBpbnRlcnJ1cHQKICAgIGhhbmRsaW5nIGlzIHNpbXBsZXIgd2l0aG91dCBhbnkgNDQwR1ggc3BlY2lhbCBjYXNlcy4KCiAgICBBbHNvIHNvbWUgYWRkaXRpb25hbCBjbGVhbnVwIHRvIGNwdS9wcGM0eHgvaW50ZXJydXB0LmMgaXMgZG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDE2MzFmZTFhMDViMDYzY2NhZjYyZWE4OTJhODg4N2I4Mjk4NDdkMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1biAyNiAxMzo0MDo1NyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBQUEM0eHggVUlDIGRlZmluZXMKCiAgICBUaGlzIDJuZCBwYXRjaCBub3cgcmVtb3ZlcyBhbGwgVUlDIG1hc2sgYml0IGRlZmluaXRpb24uIFRoZXkgc2hvdWxkIGJlCiAgICBnZW5lcmF0ZWQgZnJvbSB0aGUgdmVjdG9ycyBieSB1c2luZyB0aGUgVUlDX01BU0soKSBtYWNybyBmcm9tIG5vdyBvbi4KICAgIFRoaXMgd2F5IG9ubHkgdGhlIHZlY3RvcnMgbmVlZCB0byBnZXQgZGVmaW5lZCBmb3IgbmV3IFBQQydzLgoKICAgIEFsc28gb25seSB0aGUgcmVhbGx5IHVzZWQgaW50ZXJydXB0IHZlY3RvcnMgYXJlIG5vdyBkZWZpbmVkLiBUaGlzIG1ha2VzCiAgICBkZWZpbml0aW9ucyBmb3IgbmV3IFBQQyB2ZXJzaW9ucyBlYXNpZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUuCgogICAgQW5vdGhlciBwYXJ0IG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCB0aGUgNHh4IGVtYWMgZHJpdmVyIGdvdCBhIGxpdHRsZQogICAgY2xlYW51cCwgc2luY2Ugbm93IHRoZSB1c2FnZSBvZiB0aGUgaW50ZXJydXB0cyBpcyBjbGVhcmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZmIyNWEzZGIzYjM4MzkwOTRhYTlhYjc0OGVmZDdhOTU5MjQ2OTBiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDI1IDEwOjU5OjIyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENvbnNvbGlkYXRlIFBQQzR4eCBVSUMgZGVmaW5lcwoKICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHN0ZXAgdG8gY29uc29saWRhdGUgdGhlIFVJQyByZWxhdGVkIGRlZmluZXMgaW4gdGhlCiAgICA0eHggaGVhZGVycy4gTW92ZSBoZWFkZXIgZnJvbSBhc20tcHBjL3BwYzR4eC1pbnR2ZWMuaCB0bwogICAgYXNtLXBwYy9wcGM0eHgtdWljLmggYXMgaXQgd2lsbCBob2xkIGFsbCBVSUMgcmVsYXRlZCBkZWZpbmVzIGluIHRoZSBuZXh0CiAgICBzdGVwcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgN2VlMjYxOWMyMGNjZWNkNTc5NjZkNzRkODQ0ZTYzMjllMTQxMjYxYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAyNCAxNzoxODo1MCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBQUEM0eHggRUJDIGRlZmluZXMKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIEVCQyByZWxhdGVkIGRlZmluZXMgZnJvbSB0aGUgUFBDNHh4IGhlYWRlcnMKICAgIHBwYzQwNS5oIGFuZCBwcGM0NDAuaCBhbmQgaW50cm9kdWNlcyBhIG5ldyBoZWFkZXIKCiAgICBpbmNsdWRlL2FzbS1wcGMvcHBjNHh4LWViYy5oCgogICAgd2l0aCBhbGwgdGhvc2UgZGVmaW5lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTMyMTgwMWJlZDVhNmQ4OTZkMjk4YzAwZmQyMDA0NmYwMzlkNWQ2NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAxMzo1Mjo0NCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgcmVkdW5kYW50IGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgZnRfYm9hcmRfc2V0dXAoKSBmdW5jdGlvbnMgZnJvbSBzb21lIDR4eCBib2FyZHMuCiAgICBUaGlzIGNhbiBiZSBkb25lIHNpbmNlIHdlIG5vdyBoYXZlIGEgZGVmYXVsdCB3ZWFrIGltcGxlbWVudGF0aW9uIGZvciB0aGlzCiAgICBpbiBjcHUvcHBjNHh4L2ZkdC5jLiBPbmx5IGJvYXJkIGluIG5lZWQgZm9yIGEgZGlmZmVyZW50L2N1c3RvbQogICAgaW1wbGVtZW50YXRpb24gbGlrZSBjYW55b25sYW5kcyBuZWVkIHRoZWlyIG93biB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODI1MGViMmVkYmQ5NjUxNGQwNDk2MDJkOWUxMzQxMTBhYzMxODVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDE1OjMyOjMyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBtZXJnZSBwcm9ibGVtcyBpbiA0NHhfc3BkX2RkcjIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNzQwYzFiZjQwZTNjNmQwM2FjMTZjMjk5NDNmZGQ5ZmMxZTg3MDM4CkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDA4OjM1OjAwIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBNSUkgbW9kZSBzdXBwb3J0IHRvIHRoZSBFTUFDIFJHTUlJIEJyaWRnZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwbGFjaW5nIHRoZSBSR01JSSBicmlkZ2Ugb24gdGhlCiAgICBQUEM0MDVFWChyKSBpbnRvIE1JSS9HTUlJIG1vZGUgYW5kIGFsbG93cyBhIGJvYXJkLXNwZWNpZmljCiAgICBjb25maWd1cmF0aW9uIHRvIHNwZWNpZnkgdGhlIGJyaWRnZSBtb2RlIGF0IGNvbXBpbGUtdGltZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJlMjA1MDg0MmU3MzFjODIzY2U4ZDQxZmIwYzE1NTc5ZWI3MGNlZDkKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglXZWQgSnVsIDkgMTY6NDY6MzUgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIE1uZW1vbmljcyBmb3IgQU1DQy9JQk0gRERSMiBTRFJBTSBDb250cm9sbGVyCgogICAgVGhpcyBwYXRjaCBjb21wbGV0ZXMgdGhlIHByZXByb2Nlc3NvciBtbmVvbWljcyBmb3IgdGhlIElCTSBERFIyIFNEUkFNCiAgICBjb250cm9sbGVyIHJlZ2lzdGVycyAoTU9EVCBhbmQgSU5JVFBMUikgdXNlZCBieSB0aGUKICAgIFBvd2VyUEM0MDVFWChyKS4gVGhlIE1NT0RFIGFuZCBNRU1PREUgcmVnaXN0ZXJzIGFyZSB1bmlmaWVkIHdpdGggdGhlaXIKICAgIHBlZXIgdmFsdWVzIHVzZWQgZm9yIHRoZSBJTklUUExSIE1SIGFuZCBFTVIgcmVnaXN0ZXJzLAogICAgcmVzcGVjdGl2ZWx5LiBGaW5hbGx5LCBhIHNwZWxsaW5nIHR5cG8gaXMgY29ycmVjdCAoTUFOVUVMIHRvIE1BTlVBTCkuCgogICAgV2l0aCB0aGVzZSBtbmVtb25pY3MgaW4gcGxhY2UsIHRoZSBDRkdfU0RSQU0wXyogbWFnaWMgbnVtYmVycyBmb3IKICAgIEtpbGF1ZWEgYXJlIHJlcGxhY2VkIGJ5IGVxdWl2YWxlbnQgbW5lbW9uaWNzIHRvIG1ha2UgaXQgZWFzaWVyIHRvCiAgICBjb21wYXJlIGFuZCBjb250cmFzdCBvdGhlciA0MDVFWChyKS1iYXNlZCBib2FyZHMgKGUuZy4gZHVyaW5nIGJvYXJkCiAgICBicmluZy11cCkuCgogICAgRmluYWxseSwgdW5pZmllZCB0aGUgU0RSQU0gY29udHJvbGxlciByZWdpc3RlciBkdW1wIHJvdXRpbmUgc3VjaCB0aGF0CiAgICBpdCBjYW4gYmUgdXNlZCBhY3Jvc3MgYWxsIHByb2Nlc3NvciB2YXJpYW50cyB0aGF0IHV0aWxpemUgdGhlIElCTSBERFIyCiAgICBTRFJBTSBjb250cm9sbGVyIGNvcmUuIEl0IHByb2R1Y2VzIG91dHB1dCBvZiB0aGUgZm9ybToKCglQUEM0eHggSUJNIEREUjIgUmVnaXN0ZXIgRHVtcDoKCQkuLi4KCQlTRFJBTV9NQjBDRls0MF0gPSAweDAwMDA2NzAxCgkJLi4uCgogICAgd2hpY2ggaXMgJzxtbmVtb25pYz5bPERDUiAjPl0gPSA8dmFsdWU+Jy4gVGhlIERDUiBudW1iZXIgaXMgaW5jbHVkZWQKICAgIHNpbmNlIGl0IGlzIG5vdCB1bmNvbW1vbiB0aGF0IHRoZSBEQ1IgdmFsdWVzIGluIGhlYWRlciBmaWxlcyBnZXQgbWl4ZWQKICAgIHVwIGFuZCBpdCBoZWxwcyB0byB2YWxpZGF0ZSwgYXQgYSBnbGFuY2UsIHRoZXkgbWF0Y2ggd2hhdCBpcyBwcmludGVkCiAgICBpbiB0aGUgdXNlciBtYW51YWwuCgogICAgVGVzdGVkIG9uOgogICAgICBBTUNDIEtpbGF1ZWEvSGFsZWFrYWxhOgogICAgICAtIE5GUyBMaW51eCBCb290OiBQQVNTRUQKICAgICAgLSBOQU5EIExpbnV4IEJvb3Q6IFBBU1NFRAoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYWQ3MzgyZDgyODk4MmU5YzFiYWZjNDMxM2VmMWI2NjZmNjE0NWY1OApBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVdlZCBKdWwgOSAxNjozMTo1OSAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgQU1DQy9JQk0gRERSMiBTRFJBTSBFQ0MgRmllbGQgTW5lbW9uaWNzCgogICAgQWRkIGFkZGl0aW9uYWwgRERSMiBTRFJBTSBtZW1vcnkgY29udHJvbGxlciBEQ1IgbW5lb21uaWNzLCBjb25kaXRpb24KICAgIHJldmlzaW9uIElEIERDUiBiYXNlZCBvbiA0MDVFWCwgYW5kIGFkZCBmaWVsZCBtbmVtb25pY3MgZm9yIGJ1cyBlcnJvcgogICAgc3RhdHVzIGFuZCBFQ0MgZXJyb3Igc3RhdHVzIHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwMzIwMTczMWJkOGU4NTQwNGQwZjUxYTViNGU4YWJkMTRjMGI2YzYKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglXZWQgSnVsIDkgMTY6MzE6MzYgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIFNEUjBfU1JTVCBNbmVtb25pY3MgZm9yIHRoZSA0MDVFWChyKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBiaXQgZmllbGQgbW5lbW9uaWNzIGZvciB0aGUgNDA1RVgocikgU0RSMF9TUlNUIHNvZnQgcmVzZXQgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1YjQ1N2QwMDczMGQ0YWEwYzY0NTBkMjFhOTEwNDcyM2U2MDZmYjk4CkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDExOjU1OjQ2IDIwMDggLTA3MDAKCiAgICBQUEM0eHg6IENvcnJlY3QgU0RSQU1fTUNTVEFUIGZvciBQUEM0MDVFWChyKQoKICAgIFdoaWxlIHRoZSBQb3dlclBDIDQwNUVYKHIpIHNoYXJlcyBpbiBjb21tb24gdGhlIEFNQ0MvSUJNIEREUjIgU0RSQU0KICAgIGNvbnRyb2xsZXIgY29yZSBhbHNvIHVzZWQgaW4gdGhlIDQ0MFNQLCA0NDBTUGUsIDQ2MEVYLCBhbmQgNDYwR1QsIGluCiAgICB0aGUgNDA1RVgociksIFNEUkFNX01DU1RBVCBoYXMgYSBkaWZmZXJlbnQgRENSIHZhbHVlLgoKICAgIEl0cyBwcmVzZW50IHZhbHVlIG9uIHRoZSA0MDVFWChyKSBjYXVzZXMgYSByZWFkIGJhY2sgb2YgMHhGRkZGRkZGRgogICAgd2hpY2ggY2F1c2VzIFNEUkFNIGluaXRpYWxpemF0aW9uIHRvIHBlcmlvZGljYWxseSBmYWlsIHNpbmNlIGl0IGNhbgogICAgcHJlbWF0dXJlbHkgaW5kaWNhdGUgU0RSQU0gcmVhZHkgc3RhdHVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGNlNWM4Njc1YmIyYzYxZjFkNzFmYjk3ZjBiYmU4MjI2NjNmYjkzZApBdXRob3I6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgpEYXRlOglUdWUgSnVsIDggMjI6NDg6NDIgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogSW5pdGlhbCBmcmFtZXdvcmsgb2YgdGhlIEFNQ0MgUFBDNDYwU1ggcmVkd29vZCByZWZlcmVuY2UgYm9hcmQuCgogICAgQWRkIEFNQ0MgUmVkd29vZCByZWZlcmVuY2UgYm9hcmQgdGhhdCB1c2VzIHRoZSBsYXRlc3QKICAgIFBQQyA0NjQgQ1BVIHByb2Nlc3NvciBjb21iaW5lZCB3aXRoIGEgcmljaCBtaXggb2YgcGVyaXBoZXJhbAogICAgY29udHJvbGxlcnMuIFRoZSBib2FyZCB3aWxsIHN1cHBvcnQgUENJZSwgbXV0aXBsZSBHaWcgZXRoZXJuZXQKICAgIHBvcnRzLCBhZHZhbmNlZCBoYXJkd2FyZSBSQUlEIGFzc2lzdGFuY2UgYW5kIElFRUUgMTU4OC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NmU1ZmMwZTZhMTg2MWQwZmVhNGVmYTNjZDM3NmRmOTVhNWIxYjg5CkF1dGhvcjogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+CkRhdGU6CVR1ZSBKdWwgOCAyMjo0ODowNyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBBZGQgaW5pdGlhbCA0NjBTWCByZWZlcmVuY2UgYm9hcmQgKHJlZHdvb2QpIGNvbmZpZyBmaWxlIGFuZCBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkMzA3OTM2ODVlZmNhZGExODM4OTFjNzhmYzg5MmU2YzliYTUwYzcKQXV0aG9yOiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDIyOjQ3OjMxIDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIDQ2MFNYIGRlZmluZXMgZm9yIHRoZSBjcHUvcHBjNHh4IGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YjU1YTI1MzY5MTlmNGRlMWJiMTA0NGU2ZWI4MjYyYzJmNTNiYzk2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCAxMSAwMToxNjowMCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgbW9yZSBwcmludCgpIGZvcm1hdCBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZGQ3MGQxOTIxYjg3Mjg3ZDlhOTlkMWJlOTliYzM1MjI2YzJiNDEyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEp1bCAxMCAyMDo1Nzo1NCAyMDA4ICswMjAwCgogICAgTUFLRUFMTDogcmVtb3ZlIGR1cGxpY2F0ZWQgYXQ5MSBmcm9tIEFSTTkgbGlzdCBhbmQgYWRkIExJU1RfYXQ5MSB0byBhcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGM2NDU3ZTNiOGJjNzlhOTczODFjZjdkZWZmYTA4ZjdjNWEyNGY4NmMKQXV0aG9yOiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KRGF0ZToJVGh1IEp1biA1IDExOjA2OjI5IDIwMDggKzA0MDAKCiAgICBEYXRhRmxhc2ggQVQ0NURCMDIxIHN1cHBvcnQKCiAgICBTb21lIGJvYXJkcyBiYXNlZCBvbiBBVDkxU0FNOTI2WC1FSyB1c2Ugc21hbGxlciBERiBjaGlwcyB0byBrZWVwCiAgICBib290c3RyYXAsIHUtYm9vdCBhbmQgaXRzIGVudmlyb25tZW50LCB1c2luZyBOQU5EIG9yIG90aGVyIGV4dGVybmFsCiAgICBzdG9yYWdlIGZvciBrZXJuZWwgYW5kIHJvb3Rmcy4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yCiAgICBzbWFsbCAxMDI0eDI2MyBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgoKY29tbWl0IDQxMDlkZjZmNzVmYzAwYWI3ZGE1NmQyODZiYTUwMTQ5YTBkMTZhNjkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDEwIDE0OjAwOjE1IDIwMDggLTA1MDAKCiAgICBzaWxlbmNlIG1pc2MgcHJpbnRmIGZvcm1hdHRpbmcgY29tcGlsZXIgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNkNzFjODFhOWJiMDNmODY2YTFlOThkYTk2MzYzZWYzZjQ2Yzc2YjMKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDE0OjQ3OjA5IDIwMDggKzAyMDAKCiAgICBVU0I6IHNodXRkb3duIFVTQiBiZWZvcmUgYm9vdGluZwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWxseSBzZXJpb3VzIGlzc3VlIHJlbGF0ZWQgdG8gVVNCIHdoaWNoIHdhcwogICAgZGlzY291dmVyZWQgYnkgTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+IGFuZCBmaXhlZCBmb3IKICAgIEFSTTkyMFQuIE1hcnRpbiB3cm90ZToKCiAgICAgIFR1cm4gb2ZmIFVTQiB0byBwcmV2ZW50IHRoZSBob3N0IGNvbnRyb2xsZXIgZnJvbSB3cml0aW5nIHRvIHRoZQogICAgICBTRFJBTSB3aGlsZSBMaW51eCBpcyBib290aW5nLiBUaGlzIGNvdWxkIGhhcHBlbiwgYmVjYXVzZSB0aGUgSENDQQogICAgICAoSG9zdCBDb250cm9sbGVyIENvbW11bmljYXRpb24gQXJlYSkgbGllcyB3aXRoaW4gdGhlIFNEUkFNIGFuZCB0aGUKICAgICAgaG9zdCBjb250cm9sbGVyIHdyaXRlcyBjb250aW5vdXNseSB0byB0aGlzIGFyZWEgKGFzIGJ1c21hc3RlciEpLCBmb3IKICAgICAgZXhhbXBsZSB0byBpbmNyZWFzZSB0aGUgSGNjYUZyYW1lTnVtYmVyIHZhcmlhYmxlLCB3aGljaCBoYXBwZW5zCiAgICAgIGV2ZXJ5IDEgbXMuCgogICAgVGhpcyBpcyBhIHNsaWdodGx5IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIHBhdGNoIGluIG9yZGVyIHRvIHNodXRkb3duCiAgICBVU0Igd2hlbiBib290aW5nIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZjMxYzQ5ZGIyYTVlMDc2ZjQxNWMwNzg1ZWIzN2Y2N2YyZmFhNWZjOApBdXRob3I6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KRGF0ZToJVGh1IE1heSAyOSAxNDoyMzoyNSAyMDA4IC0wNDAwCgogICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciBBRFM1MTIxIFJldiAzCgogICAgQURTNTEyMSBSZXYgMyBib2FyZCBpcyBub3cgdGhlIGRlZmF1bHQgY29uZmlnCgogICAgY29uZmlnIHRhcmdldHMgYXJlIG5vdwoKICAgIGFkczUxMjFfY29uZmlnCglSZXYgMyBib2FyZCB3aXRoCglQQ0kKCU00MVQ2MiBvbiBib2FyZCBSVEMKCTUxMk1CIERSQU0KCiAgICBhZHM1MTIxX3JldjJfY29uZmlnCglSZXYgMiBib2FyZCB3aXRoCglObyBQQ0kKCTI1Nk1CIERSQU0KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+CiAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE2YmVlN2IwZGMyOTRlZTAxY2EyNDM0YWExZGQzYmQ3MTdhNjk2MTUKQXV0aG9yOiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+CkRhdGU6CVRodSBNYXkgMjkgMTU6Mzc6MjEgMjAwOCAtMDQwMAoKICAgIENvbnNvbGlkYXRlIEFEUzUxMjEgSU8gUGluIGNvbmZpZ3VyYXRpb24KCiAgICBDb25zb2xpZGF0ZSBBRFM1MTIxIElPIFBpbiBjb25maWd1cmF0aW9uIHRvIG9uZSBmaWxlCiAgICBib2FyZC9hZHM1MTIxL2lvcGluLmMuCgogICAgUmVtb3ZlIHBpbiBjb25maWcgZnJvbSBjcHUvbXBjNTEyeC9mZWMuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDQ2OTJiMGJhODNiN2I0NTRiYmQ5MmJhZDFmNGJlZmU2ZTE2NTdiNwpBdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNocmlzdGlhbkBwMjQwMC53Z25ldHoueHg+CkRhdGU6CUZyaSBKdW4gMjcgMTk6NDY6NTEgMjAwOCArMDIwMAoKICAgIEZpeCAidXNiIHBhcnQiIGNvbW1hbmQKCiAgICBPbmx5IHByaW50IHBhcnRpdGlvbiBmb3Igc2VsZWN0ZWQgZGV2aWNlIGlmIHVzZXIgc3VwcGxpZWQgdGhlIDxkZXY+CiAgICBhcmcgd2l0aCB0aGUgInVzYiBwYXJ0IFtkZXZdIiBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgogICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgY2M4M2IyNzIxN2Y3MzgwMDQxZmVhMzg2ZGRiNmQ2ZDliMjYxNjE3ZApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+CkRhdGU6CU1vbiBKdWwgNyAwMDo1ODowNSAyMDA4ICswODAwCgogICAgZml4IFVTQiBkZXZpY2VzIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGJ1Z3MgaW4gdXNiZGNvcmUqLmMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIGRldmljZXMKICAgIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuCgogICAgVGhlIG9yaWdpbmFsIGNvZGUgbWFkZSBtaXN0YWtlcyBhYm91dCB0aGUgbWVhbmluZyBvZiBjb25maWd1cmF0aW9uIHZhbHVlIGFuZAogICAgY29uZmlndXJhdGlvbiBpbmRleCwgYW5kIHRoZSByZXN1bHRpbmcgb2ZmLWJ5LW9uZSBlcnJvcnMgcmVzdWx0ZWQgaW46CgogICAgKiBTRVRfQ09ORklHVVJBVElPTiBhbHdheXMgc2VsZWN0ZWQgdGhlIGZpcnN0IGNvbmZpZ3VyYXRpb24sIG5vIG1hdHRlciB3aGF0CiAgICAgIHdWYWx1ZSBpcyBiZWluZyBwYXNzZWQuCiAgICAqIEdFVF9ERVNDUklQVE9SL0NPTkZJR1VSQVRJT04gYWx3YXlzIHJldHVybmVkIHRoZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlyc3QKICAgICAgY29uZmlndXJhdGlvbiAoaW5kZXggMCkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDA2YzUzYmVhZTFhNzI2ZTcwNzk3MWM1NTU2MTNmMDliMjcwYTI0NjEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDEzOjE2OjA5IDIwMDggKzAyMDAKCiAgICBGaXggc29tZSBtb3JlIHByaW50KCkgZm9ybWF0IGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQ0YjVmM2ZhMDAxMjI4ZDc2ZTJjMzM4MGNlZGFkZjgwNGI4MDJjMmEKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjaHJpc3RpYW5AcDI0MDAud2duZXR6Lnh4PgpEYXRlOglGcmkgSnVuIDI3IDE5OjQ2OjUxIDIwMDggKzAyMDAKCiAgICBGaXggInVzYiBwYXJ0IiBjb21tYW5kCgogICAgT25seSBwcmludCBwYXJ0aXRpb24gZm9yIHNlbGVjdGVkIGRldmljZSBpZiB1c2VyIHN1cHBsaWVkIHRoZSA8ZGV2PgogICAgYXJnIHdpdGggdGhlICJ1c2IgcGFydCBbZGV2XSIgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGU3M2I1MjEyZTA0NjNhM2RiMGFmMGE1Yzk1Yzc1YmZiNzYyY2E5NzMKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAZ251bW9ua3Mub3JnPgpEYXRlOglNb24gSnVsIDcgMDA6NTg6MDUgMjAwOCArMDgwMAoKICAgIGZpeCBVU0IgZGV2aWNlcyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zCgogICAgVGhpcyBwYXRjaCBmaXhlcyBidWdzIGluIHVzYmRjb3JlKi5jIHJlbGF0ZWQgdG8gdGhlIHVzZSBvZiBkZXZpY2VzCiAgICB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLgoKICAgIFRoZSBvcmlnaW5hbCBjb2RlIG1hZGUgbWlzdGFrZXMgYWJvdXQgdGhlIG1lYW5pbmcgb2YgY29uZmlndXJhdGlvbiB2YWx1ZSBhbmQKICAgIGNvbmZpZ3VyYXRpb24gaW5kZXgsIGFuZCB0aGUgcmVzdWx0aW5nIG9mZi1ieS1vbmUgZXJyb3JzIHJlc3VsdGVkIGluOgoKICAgICogU0VUX0NPTkZJR1VSQVRJT04gYWx3YXlzIHNlbGVjdGVkIHRoZSBmaXJzdCBjb25maWd1cmF0aW9uLCBubyBtYXR0ZXIgd2hhdAogICAgICB3VmFsdWUgaXMgYmVpbmcgcGFzc2VkLgogICAgKiBHRVRfREVTQ1JJUFRPUi9DT05GSUdVUkFUSU9OIGFsd2F5cyByZXR1cm5lZCB0aGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpcnN0CiAgICAgIGNvbmZpZ3VyYXRpb24gKGluZGV4IDApLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CiAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBlODcwNjkwYmRjYTE1NDk0M2VjYWRkNTIxMmQyZDU5YzFiOWQzOTFiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEwIDEwOjEwOjU0IDIwMDggKzAyMDAKCiAgICBNVEQvTkFORDogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZyBpbiBuYW5kIGNvZGUKCiAgICBUaGlzIHBhdGNoIGZpeGVzIE5BTkQgcmVsYXRlZCBwcmludGYgZm9ybWF0IHdhcm5pbmcuIFRob3NlIHdhcm5pbmdzIGFyZQogICAgbm93IHZpc2libGUgc2luY2UgcGF0Y2ggZGM0YjBiMzhkNGFhZGYwODgyNmY2YzMxMjcwZjFlZWNkMjc5NjRmZAogICAgW0ZpeCBwcmludGYgZXJyb3JzLl0gYnkgQW5kcmV3IEtsb3NzbmVyIGhhcyBiZWVuIGFwcGxpZWQuIFRoYW5rcywgdGhpcyBpcwogICAgcmVhbGx5IGhlbHBmdWwuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEwOTQzYzlhZmEyNTY5NGJkOTk5OTQ2MWY0ZTllNTBjZTIyZmZmMmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMTA6MDA6NDUgMjAwOCArMDIwMAoKICAgIHJ0YzogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZyBpbiBtNDF0NjAuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkYzFkYTQyZjgxNGNkNzFlNjc1NmMyY2Y2MmFmMWFkYTFkMDU4MWZiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDggMTI6MDE6NDcgMjAwOCArMDIwMAoKICAgIHBjaTogTW92ZSBQQ0kgZGV2aWNlIGNvbmZpZ3VyYXRpb24gY2hlY2sgaW50byBhIHNlcGFyYXRlIHdlYWsgZnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBjaGVjaywgaWYgYSBkZXZpY2Ugc2hvdWxkIGJlIHNraXBwZWQgaW4gUENJIFBOUAogICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBmdW5jdGlvbiBwY2lfc2tpcF9kZXYoKS4gVGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkCiAgICBhcyB3ZWFrIHNvIHRoYXQgaXQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGEgcGxhdGZvcm0gc3BlY2lmaWMgb25lIGlmCiAgICBuZWVkZWQuIFRoZSBjaGVjayBpZiB0aGUgZGV2aWNlIHNob3VsZCBnZXQgcHJpbnRlZCBpbiB0aGUgUENJIHN1bW1hcnkgdXBvbgogICAgYm9vdHVwICh3aGVuIENPTkZJR19QQ0lfU0NBTl9TSE9XIGlzIGRlZmluZWQpIGlzIG1vdmVkIHRvIHRoZSBmdW5jdGlvbgogICAgcGNpX3ByaW50X2RldigpIHdoaWNoIGlzIGFsc28gZGVmaW5lZCBhcyB3ZWFrIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjAwMjE0NGUxZGMyMTM3NGIxZWY1MjgxZmU2YjVkMDE0YWY5NjY1MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMCAwOTo1ODowNiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJpbnRmIGZvcm1hdCB3YXJuaW5ncyBub3cgdmlzaWJsZSB3aXRoIHRoZSB1cGRhdGVkIGZvcm1hdCBjaGVjawoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgcHBjNHh4IHJlbGF0ZWQgcHJpbnRmIGZvcm1hdCB3YXJuaW5nLiBUaG9zZSB3YXJuaW5ncyBhcmUKICAgIG5vdyB2aXNpYmxlIHNpbmNlIHBhdGNoIGRjNGIwYjM4ZDRhYWRmMDg4MjZmNmMzMTI3MGYxZWVjZDI3OTY0ZmQKICAgIFtGaXggcHJpbnRmIGVycm9ycy5dIGJ5IEFuZHJldyBLbG9zc25lciBoYXMgYmVlbiBhcHBsaWVkLiBUaGFua3MsIHRoaXMgaXMKICAgIHJlYWxseSBoZWxwZnVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZDgxMmI4YjRhZDk2NjdjNzdhNWJmOTJiNGJhODE2OTlhYmM5ZmMzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDkgMTc6MzM6NTcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRW5hYmxlIHN1cHBvcnQgZm9yID4gMkdCIFNEUkFNIG9uIEFNQ0MgS2F0bWFpCgogICAgTmV3ZXIgUFBDJ3MgbGlrZSA0NDBTUGUsIDQ2MEVYL0dUIGNhbiBiZSBlcXVpcHBlZCB3aXRoIG1vcmUgdGhhbiAyR0Igb2YgU0RSQU0uCiAgICBUbyBzdXBwb3J0IHN1Y2ggY29uZmlndXJhdGlvbnMsIHdlICJvbmx5IiBtYXAgdGhlIGZpcnN0IDJHQiB2aWEgdGhlIFRMQidzLiBXZQogICAgbmVlZCBzb21lIGZyZWUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUgcmVtYWluaW5nIHBlcmlwaGVyYWxzIGxpa2UsIFNvQwogICAgZGV2aWNlcywgRkxBU0ggZXRjLgoKICAgIE5vdGUgdGhhdCBFQ0MgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gY29uZmlndXJhdGlvbnMgd2l0aCBtb3JlIHRoYW4gMkdCCiAgICBTRFJBTS4gVGhpcyBpcyBiZWNhdXNlIHdlIG9ubHkgbWFwIHRoZSBmaXJzdCAyR0Igb24gc3VjaCBzeXN0ZW1zLCBhbmQgdGhlcmVmb3JlCiAgICB0aGUgRUNDIHBhcml0eSBieXRlIG9mIHRoZSByZW1haW5pbmcgYXJlYSBjYW4ndCBiZSB3cml0dGVuLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZjFjMmVkOTFkZjI2OTAzYjk1Njk0OGYzN2Y4MmRlOWUxMTU4YTg5CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVNhdCBKdW4gMTQgMTc6MDI6NDkgMjAwOCAtMDQwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGltcGxlbWVudGF0aW9uIG9mIHRlc3RkcmFtKCkgZnJvbSBLb3JhdCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDdjZTRhMjhjY2ZjZmI4MDNhYTY4ZDNkNDUwNWE4ZGUwNTZhOGE1ZQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglTYXQgSnVuIDE0IDE2OjUzOjAyIDIwMDggLTA0MDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBhbmQgYWRkIEZEVCB0byBLb3JhdCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDE4OGYwNDkxODg2YjNiNDg2MTY0ZTgxOWMwYTgzZmRiOTdlZmQ3ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMTAgMDE6MTM6MzAgMjAwOCArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTE1ZjExODljMWQyOWQ4YmU3ZjRkZTMyNTcwMmQ5MGE4OTg4MjE5CkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVdlZCBKdWwgOSAxNzo1MDo0NSAyMDA4IC0wNDAwCgogICAgZTEwMDA6IGFkZCBzdXBwb3J0IGZvciA4MjU0NUdNIDY0Yml0IFBDSS1YIGNvcHBlciB2YXJpYW50CgogICAgVGhpcyBQQ0ktWCBlMTAwMCB2YXJpYW50IHdvcmtzIGJ5IGp1c3QgYWRkaW5nIGluIHRoZSBjb3JyZWN0CiAgICBQQ0kgSURzIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgMjFhZTZjYTAzMTVhZmRiYzY1ZGMzZTk1ZmZkNTc2M2U2NzczZDAzMApBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDEyOjM0OjExIDIwMDggKzAwMDAKCiAgICBTUEFSQzogQnVpbGQgZXJyb3IgZml4CgogICAgKGludHJvZHVjZWQgYnkgY29tbWl0IDM5MWZkOTNhYjIzZTE1YWIzZGQ1OGE1NGY1YjYwOTAyNDAwOWMzNzgpCgogICAgVGhpcyBwYXRjaCBtYWtlcyBTUEFSQyB0YXJnZXRzIGJ1aWxkIGFnYWluLiBJdCBpcyBjYXVzZWQgYnkKICAgIHBoeXNfYWRkcl90IGFuZCBwaHlzX3NpemVfdCBiZWluZyBkZWZpbmVkIGluIHRoZSB3cm9uZyBoZWFkZXIKICAgIGZpbGUuIGluY2x1ZGUvbG1iLmggbmVlZCB0aG9zZSB0eXBlZGVmcyB0byBidWlsZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgMTFjY2MzM2ZhMjFhY2NlMTA4ZjZiNGE2OTM2ZTMyNzFhZjkwNGM2NApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDA4OjE3OjE1IDIwMDggKzAyMDAKCiAgICBNYW55IHNwZWxsaW5nIGZpeGVzIGluIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgZGJhYjA2OTFkMjUzMzU2MGY3ZTkxYjkyYWU4NDQwNDZhOWFkMWRmMwpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJV2VkIEp1bCA5IDA4OjE3OjA2IDIwMDggKzAyMDAKCiAgICBNaW5vciBzcGVsbGluZyBmaXggaW4gY29tbWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgODkxMzRlYTFmNjcyMDhmZDMxNjBiZGJiMGI5ZWFhYjRlYWI5ODQ4NApBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglUdWUgSnVsIDggMTQ6NTQ6NTggMjAwOCAtMDQwMAoKICAgIFJvdW5kIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yIHZhbHVlIHJldHVybmVkIGJ5IGNhbGNfZGl2aXNvcigpCgogICAgUm91bmQgdGhlIHNlcmlhbCBwb3J0IGNsb2NrIGRpdmlzb3IgdmFsdWUgcmV0dXJuZWQgYnkKICAgIGNhbGNfZGl2aXNvcigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSb2JlcnRzIDxqb2huLnJvYmVydHNAcHdhdi5jb20+Cgpjb21taXQgOWQyZTM5NDdiMjk0NGU1YmI4NWI0MzM1NTMzZjhjOTNjNTg0NDVmZQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTc6NDc6NTIgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IGlmZGVmLXByb3RlY3QgbW9zdCBvZiBuYW5kLmggd2hlbiB1c2luZyBsZWdhY3kgTkFORC4KCiAgICBTb21lIG1hY3JvcyBzdWNoIGFzIE5BTkRfQ1RMX1NFVEFMRSBjb25mbGljdCBiZXR3ZWVuIGN1cnJlbnQgYW5kIGxlZ2FjeQogICAgTkFORCwgYmVpbmcgZGVmaW5lZCBieSB0aGUgc3Vic3lzdGVtIGluIHRoZSBmb3JtZXIgY2FzZSBhbmQgdGhlIGJvYXJkCiAgICBjb25maWcgZmlsZSBpbiB0aGUgbGF0dGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJiMWZhOWQzODNjYmJiN2QzNDdjMTU4M2JkNmNhNGUxODFiYThlOWUKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJVHVlIEp1bCA4IDExOjAyOjA1IDIwMDggLTA0MDAKCiAgICBBUk06IEZpeCBmb3Igd3JvbmcgcGF0Y2ggdmVyc2lvbiBhcHBsaWVkIGZvciBMeXJ0ZWNoIFNGRi1TRFIgYm9hcmQgKEFSTTkyNkVKUykKCiAgICBBUk06IEZpeCBmb3IgaW5jb3JyZWN0IHZlcnNpb24gb2YgcGF0Y2ggYXBwbGllZCB3aGVuCiAgICBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEx5cnRlY2ggU0ZGLVNEUiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBoaWxpcCBCYWxpc3RlciwgT3BlblNEUiA8cGhpbGlwQG9wZW5zZHIuY29tPgoKY29tbWl0IDQ3MDQyYjM2M2VlNTAyMmI4MTgwYzY1ZDNmNDU1OGU3OTcyYzc5Y2QKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJVHVlIEp1bCA4IDA5OjA4OjQwIDIwMDggKzA5MDAKCiAgICBSZW1vdmUgdXNlbGVzcyBwcmludCBtZXNzYWdlIGF0IGFwb2xsb24KCiAgICBSZW1vdmUgdXNlbGVzcyBwcmludCBtZXNzYWdlIGF0IGFwb2xsb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDk4ODc0ZmYzMjlkNGE1YjMyYzQ2N2I0M2Y2ZTk2NmUxYWE2ODQ3OWYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgNyAxNDoyNDozOSAyMDA4IC0wNTAwCgogICAgRml4IExNQiB0eXBlIGlzc3VlcwoKICAgIFRoZSBMTUIgY29kZSBub3cgdXNlcyBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3QuCUFsc28sIHRoZXJlIHdlcmUgYSBjb3VwbGUKICAgIG9mIGNhc3RpbmcgcHJvYmxlbXMgaW4gdGhlIGJvb3RtIGNvZGUgdGhhdCBjYWxsZWQgdGhlIExNQiBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhODY5M2E5MWI4ZWVmNzVhZGU4ZGU1MGExYjJjZTAzNWJjNWZiNTQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVsIDcgMDk6Mzk6MDYgMjAwOCAtMDUwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5ncwoKICAgIGdjYy00LjMueCBnZW5lcmF0ZXMgdGhlIGZvbGxvd2luZzoKCiAgICBib290bS5jOiBJbiBmdW5jdGlvbiAnZG9fYm9vdG1fbGludXgnOgogICAgYm9vdG0uYzoyMDg6IHdhcm5pbmc6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUKICAgIGJvb3RtLmM6MjE1OiB3YXJuaW5nOiBjYXN0IGZyb20gcG9pbnRlciB0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1YmIxMmRiZDdhZTAzMTg5YjZjMTNkODczN2I1YTFiMzdjM2RmNjk4CkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQGdudW1vbmtzLm9yZz4KRGF0ZToJTW9uIEp1bCA3IDE1OjQwOjM5IDIwMDggKzA4MDAKCiAgICBSZW1vdmUgY29kZSBkdXBsaWNhdGlvbiBmb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudAoKICAgIGNvbW1vbi9lbnZfY29tbW9uLmMgKGRlZmF1bHRfZW52KTogbmV3IGZ1bmN0aW9uIHRoYXQgcmVzZXRzIHRoZSBlbnZpcm9ubWVudCB0bwoJCSAgICB0aGUgZGVmYXVsdCB2YWx1ZQogICAgY29tbW9uL2Vudl9jb21tb24uYyAoZW52X3JlbG9jYXRlKTogdXNlIGRlZmF1bHRfZW52IGluc3RlYWQgb2Ygb3duIGNvcHkKICAgIGNvbW1vbi9lbnZfbmFuZC5jIChlbnZfcmVsb2NhdGVfc3BlYyk6IHVzZSBkZWZhdWx0X2VudiBpbnN0ZWFkIG9mIG93biBjb3B5CiAgICBpbmNsdWRlL2Vudmlyb25tZW50Lmg6IGFkZGVkIGRlZmF1bHRfZW52IHByb3RvdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdlcm5lciBBbG1lc2JlcmdlciA8d2VybmVyQG9wZW5tb2tvLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgOTljMmI0MzRkMzc4NjNkZjVkZGE1MjA3YTUzNzYwYzY1MDZmYzJiZQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJU3VuIEp1biAyMiAxNjoxMzo0NiAyMDA4ICswMjAwCgogICAgTkFORDogRml4IHdhcm5pbmcgZHVlIHRvIG1pc3NpbmcgZW52X3B0ciBjYXN0cyB0byB1X2NoYXIgKiBpbiBlbnZfbmFuZC5jLgoKICAgIFRoZSB3cml0ZWVudigpIGFuZCByZWFkZW52KCkgY2FsbHMgaW50cm9kdWNlZCBieSB0aGUgcmVjZW50bHkgYWRkZWQgYmFkIGJsb2NrCiAgICBtYW5hZ2VtZW50IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2VyZSBtaXNzaW5nIGNhc3RzIHRoZXJlZm9yZSBwcm9kdWNpbmcKICAgIGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KICAgIFdoaWxlIGF0IGl0IGZpeGluZyBzb21lIHR5cG8gaW4gYSBjb21tZW50IGFuZCBpbmRlbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMTY3YzUzODZlYTFjOThiNjM4YmU1ZDg3NjNlZjZkNTkzOGVmMWJkCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdW4gMjAgMTI6Mzg6NTcgMjAwOCAtMDUwMAoKICAgIE5BTkQ6IFJlbmFtZSBERUJVRyB0byBNVERERUJVRyB0byBhdm9pZCBuYW1lc3BhY2UgcG9sbHV0aW9uLgoKICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIG5vdyB0aGF0IG5vbi1OQU5ELXNwZWNpZmljIGNvZGUgaXMKICAgIGluY2x1ZGluZyA8bmFuZC5oPiwgYW5kIHRodXMgYWxsIGRlYnVnZ2luZyBjb2RlIGlzIGJlaW5nIGNvbXBpbGVkCiAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgd2FzIHJlcXVlc3RlZCwgYXMgcmVwb3J0ZWQgYnkgU2NvdHQgTWNOdXR0CiAgICA8c21jbnV0dEBwc3llbnQuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjM2JmMWFkN2JhYTFiMGRkOTg5ZGVkYzI2MGI3MDk4YjYwODlhZTA1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgSnVuIDEyIDE5OjI3OjU4IDIwMDggKzAyMDAKCiAgICBtbWM6IE1vdmUgYXRtZWxfbWNpIGRyaXZlciBpbnRvIGRyaXZlcnMvbW1jCgogICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdXNlIHRoZSBkcml2ZXIgb24gb3RoZXIgcGxhdGZvcm1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDJkNTRlYTQ0OTYzOWYzZDFhNjAwN2UzMzNhYjlmY2M2MDlhMThmMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxOToyNzo1NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBDT05GSUdfQVRNRUxfTUNJIHRvIHNlbGVjdCB0aGUgYXRtZWxfbWNpIGRyaXZlcgoKICAgIEFmdGVyIHdlIG1vdmUgdGhlIGF0bWVsX21jaSBkcml2ZXIgaW50byBkcml2ZXJzL21tYywgd2UgY2FuJ3Qgc2VsZWN0CiAgICBpdCB3aXRoIENPTkZJR19NTUMgYW55bW9yZS4gSW50cm9kdWNlIGEgbmV3IHN5bWJvbCBzcGVjaWZpY2FsbHkgZm9yCiAgICB0aGlzIGRyaXZlciBzbyB0aGF0IHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNWNlMTMwNTFhNDhjNjJiZGE5NzIzZGYzYjQ3NzhjNDkyZmI0N2YzNgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxOToyNzo1NiAyMDA4ICswMjAwCgogICAgQ3JlYXRlIGRyaXZlcnMvbW1jIHN1YmRpcmVjdG9yeQoKICAgIEluIG9yZGVyIHRvIGNvbnNvbGlkYXRlIG1vcmUgb2YgdGhlIHZhcmlvdXMgTU1DIGRyaXZlcnMgYXJvdW5kIHRoZQogICAgdHJlZSwgd2UgbXVzdCBmaXJzdCBoYXZlIGEgY29tbW9uIHBsYWNlIHRvIHB1dCB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjUwMjYxMWI1MWYwMjcxOGMyZDExMTdkNDk4MWRhYmNlYjVhZjZkZQpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPGpvYWtpbS50amVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglTdW4gSnVsIDYgMTI6MzA6MDkgMjAwOCArMDIwMAoKICAgIENoYW5nZSBlbnZfZ2V0X2NoYXIgZnJvbSBhIGdsb2JhbCBmdW5jdGlvbiBwdHIgdG8gYSBmdW5jdGlvbgoKICAgIFRoaXMgYXZvaWRzIGFuIGVhcmx5IGdsb2JhbCBkYXRhIHJlZmVyZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KCmNvbW1pdCAyNzI2OTQxN2FkZTQzMjE4OWIyMzRkOWZiYWM5OGI1NGUzN2I5NzhjCkF1dGhvcjogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+CkRhdGU6CVN1biBKdWwgNiAxMzo1Nzo1OCAyMDA4ICswNDAwCgogICAgU29tZSBjb3B5LW4tcGFzdGUgZml4ZXMgaW4gcHJpbnRmIHVzYWdlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgMGU2OTg5YjlmYWYxNTg4ZTg3MjM1MzU1MzllODhhMGRmM2M3MTM1NgpBdXRob3I6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgpEYXRlOglTdW4gSnVsIDYgMTM6NTc6MDAgMjAwOCArMDQwMAoKICAgIEZEVCBtZW1vcnkgYW5kIHBjaSBub2RlIGZpeGVzIGZvciBNUEM4MjYwQURTCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Cgpjb21taXQgZGM0YjBiMzhkNGFhZGYwODgyNmY2YzMxMjcwZjFlZWNkMjc5NjRmZApBdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CkRhdGU6CU1vbiBKdWwgNyAwNjo0MToxNCAyMDA4IC0wNzAwCgogICAgRml4IHByaW50ZiBlcnJvcnMuCgogICAgVGhlIGNvbXBpbGVyIHdpbGwgaGVscCBmaW5kIG1pc21hdGNoZXMgYmV0d2VlbiBwcmludGYgZm9ybWF0cyBhbmQKICAgIGFyZ3VtZW50cyBpZiB5b3UgbGV0IGl0LiAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlcyB0bwogICAgZGVjbGFyYXRpb25zIGluIGluY2x1ZGUvY29tbW9uLmgsIHRoZW4gYmVnaW5zIHRvIGNvcnJlY3QgdGhlIHJlc3VsdGluZwogICAgY29tcGlsZXIgd2FybmluZ3MuCVNvbWUgb2YgdGhlc2Ugd2VyZSBidWdzLCBlLmcuLCAiJGQiIGluc3RlYWQgb2YKICAgICIlZCIgYW5kIGluY29ycmVjdCBhcmd1bWVudHMuICBPdGhlcnMgd2VyZSBqdXN0IGFubm95aW5nLCBsaWtlCiAgICBpbnQtbG9uZyBtaXNtYXRjaGVzIG9uIGEgc3lzdGVtIHdoZXJlIGJvdGggYXJlIDMyIGJpdHMuICBJdCdzIHdvcnRoCiAgICBmaXhpbmcgdGhlIGFubm95aW5nIGVycm9ycyB0byBjYXRjaCB0aGUgcmVhbCBvbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+Cgpjb21taXQgNDE3ZmFmMjg1YjI1MjdhY2IyZGUyNGM1Y2QzZTI2MjFkMzg1NDA4YwpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDkgMTE6MDk6NDEgMjAwOCAtMDUwMAoKICAgIEFsbG93IHByaW50X3NpemUgdG8gcHJpbnQgaW4gR0IKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlN2MzNzQ1MjljODc1MjVjOWFhNDYzZTA1NTdjMjg3ODg3YWU0ZTllCkF1dGhvcjogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+CkRhdGU6CVN1biBKdW4gOCAyMzo1NjowMCAyMDA4IC0wNDAwCgogICAgbWlwczogV2hlbiBib290aW5nIExpbnV4IGltYWdlcywgYWRkICdldGhhZGRyJyBhbmQgJ2V0aDFhZGRyJyB0byB0aGUgZW52aXJvbm1lbnQKCiAgICBBZGQgJ2V0aGFkZHInIGFuZCAnZXRoMWFkZHInIHRvIHRoZSBMaW51eCBrZXJuZWwgZW52aXJvbm1lbnQgaWYKICAgIHRoZXkgYXJlIHNldCBpbiB0aGUgVS1Cb290IGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwMTkyZDdkNTZlOTMyMDgxOWRlYTI2MmY0OTc4OWFlMThmZGQyYzcyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDggMTI6NTc6MTQgMjAwOCArMDIwMAoKICAgIGplZGVjX2ZsYXNoOiBGaXggQU0yOURMODAwQkIgZGV2aWNlIElECgogICAgQXMgcG9pbnRlZCBvdXQgYnkgSmVycnkgSGlja3MsIHRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlIGRldmljZSBJRCBvZgogICAgdGhlIFNwYW5zaW9uIEFNMjlETDgwMEJCIE5PUiBkZXZpY2UuIFZlcmlmaWVkIGFnYWluc3QgbGF0ZXN0IFNwYW5zaW9uCiAgICBkYXRhc2hlZXQgKHJldiBDNCBmcm9tIERlemVtYmVyIDIwMDYpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ODljMWIzMGNhYWNiYTNmYmNhMGIxODEzZmFjYjNhYjcwYjZjZDYzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gSnVsIDcgMTE6MjI6MzcgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciBzaDc3NjNyZHAgYm9hcmQKCiAgICBEaXNhYmxlIFNIIGV0aGVyIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgOWUyM2ZlMDU2MGI4NGUzMjRkYzVmMGZmODgxM2RhYjJhYTM0ZjA3NApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVHVlIEp1bCA4IDEyOjAzOjI0IDIwMDggKzA5MDAKCiAgICBzaDogRml4IFNILWJvYXJkcyBjb21waWxlIGVycm9yCgogICAgQnkgQ2xlYW51cCBvdXQtb3ItdHJlZSBidWlsZGluZyBmb3Igc29tZSBib2FyZHMgKC5kZXBlbmQpCiAgICAoY29tbWl0OmM4YTNiMTA5ZjA3ZjAyMzQyZDA5N2IzMDkwODk2NWY3MjYxZDlmMTUpCiAgICBiZWNhdXNlIGZpbHNlIHdhcmUgY2hhbmdlZCwgc29tZSBTSC1ib2FyZHMgaGF2ZSBjb21waWxlIGVycm9yLgogICAgSSByZXZpc2VkIHRoaXMgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMzQ3M2FiNzM3MjgyYjA4YWQ2MTg0MWZjYmIxNGM0ZDI2NGE5M2E4ZQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgMTMgMTE6NTA6MzYgMjAwOCArMDgwMAoKICAgIEZlZWQgdGhlIHdhdGNoZG9nIGluIHUtYm9vdCBmb3IgODYxMCBib2FyZC4KCiAgICBUaGUgd2F0Y2hkb2cgb24gODYxMCBib2FyZCBpcyBlbmFibGVkIGJ5IHNldHRpbmcgc3dbNl0KICAgIHRvIG9uLiBPbmNlIGVuYWJsZWQsIHRoZSB3YXRjaGRvZyBjYW4gbm90IGJlIGRpc2FibGVkCiAgICBieSBzb2Z0d2FyZS4gU28gZmVlZCB0aGUgZG9nIGluIHUtYm9vdCBpcyBuZWNlc3NhcnkgZm9yCiAgICBub3JtYWwgb3BlcmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjM2NzY4NDFjYTJkNjAzYjEzNzY1ZjNmN2I3MmZmMWE2MWMyM2Y5MApBdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgpEYXRlOglXZWQgSnVuIDE4IDEyOjEwOjMzIDIwMDggLTA0MDAKCiAgICBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2x4dDk3Mi5jLgoKICAgIFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbHh0OTcyLmMuCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIGEgaWYvZWxzZSBibG9jayBpbgogICAgY3B1L2FybTkyNmVqcy9kYXZpbmNpL2x4dDk3Mi5jLgogICAgRml4ZWQgc3R5bGUgaXNzdWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmZWM2MTQzMWEwMDNmNTc3OGJhZmEyNjI0MDczYTU3MWFmOGJlYzlmCkF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CkRhdGU6CVdlZCBKdW4gMTggMTI6MTA6MzEgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS9seHQ5NzFhLmguCgogICAgUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBpbiBpbmNsdWRlL2x4dDk3MWEuaC4KCiAgICBSZW1vdmUgZHVwbGljYXRlIHJlZ2lzdGVycyBhbmQgYml0cyBkZWZpbml0aW9ucyBpbgogICAgaW5jbHVkZS9seHQ5NzFhLmggZm9yIHN0YW5kYXJkIE1JSSByZWdpc3RlcnMsIGFuZAogICAgdXNlIHZhbHVlcyBpbiBpbmNsdWRlL21paXBoeS5oIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDk3NTFlZTA5OTBmNDY3OTQxZGEwYjA5NWE0ZTk5NWY4NjM2NzJkN2EKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBKdW4gMTEgMjE6MDU6MDAgMjAwOCArMDkwMAoKICAgIG5ldDogc2g6IFJlbmVzYXMgU0g3NzYzIEV0aGVybmV0IGRldmljZSBzdXBwb3J0CgogICAgUmVuZXNhcyBTSDc3NjMgaGFzIDIgY2hhbm5lbCBFdGhlcm5ldCBkZXZpY2UuCiAgICBUaGlzIGlzIDEwLzEwMC8xMDAwIEJhc2Ugc3VwcG9ydC4KICAgIEJ1dCB0aGlzIHBhdGNoIGNoZWNrIDEwLzEwMCBCYXNlIG9ubHkuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4NzNkOTdhYWJjMGIxYzg4MjJlZDFkODdlOGM1YzhhZTBhN2U0YWU5CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI4OjA1IDIwMDggKzA5MDAKCiAgICBzaDogVXBkYXRlIFJlbmVzYXMgUjJEUGx1cyBib2FyZAoKICAgIE5ldyBOT1IgRmxhc2ggYm9hcmQgc3VwcG9ydCBhbmQgcmVtb3ZlIG9sZCB0eXBlIGZsYXNoIGJvYXJkIGNvbmZpZy4KICAgIEFuZCBSZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGVjMzlkNDc5ZDIwMDNmMTVlODZlMjNlYmM0ZTAyYTFjOWEzYTE4MWMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjg6MDEgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgUmVuZXNhcyBSNzc4ME1QIGJvYXJkCgogICAgTmV3IE5PUiBGbGFzaCBib2FyZCBzdXBwb3J0IGFuZCByZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGMwMDFjZDYwNGU5ZjEzMzc0M2VmZmJkZGIxYzIxNWI0OGU3NjFjNWEKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NTYgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgUmVuZXNhcyBNaWdvLVIgYm9hcmQKCiAgICBSZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGY5NTk5ZWNhN2NiNWViZTQwZTUzMDVjODAwNmRjZWQ2ZWNjNWNkOWUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NTIgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgSGl0YWNoaSBNUzc3MjJTRSBib2FyZAoKICAgIFJlbW92ZSBuZXR3b3JrIHNldHRpbmcgZnJvbSBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMjYyMDllNDhlODc5MTY3MGM5MzEwODAyOWE1YzMxYTMwMDE2YzZkZgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIEp1biAxNyAxNjoyNzo0OCAyMDA4ICswOTAwCgogICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgU0g3NzYzUkRQCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDVjZDViMmM5NmVmMDAyNTc2MjkzMTM0OWQzNTAyODdhZWMwM2FiNDcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NDQgMjAwOCArMDkwMAoKICAgIHNoOiBDbGVhbnVwIHNvdXJjZSBjb2RlIG9mIFIyRFBsdXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNGVjN2U5MTVjZmFhMzFiMzkyNzU1ZGQyYzgyMzFlNjQ3MzZkMmVhOApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJVHVlIEp1biAxNyAxNjoyNzo0MSAyMDA4ICswOTAwCgogICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgUjc3ODBNUAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwOTU1ZWYzNGMwNDU0YWUyZWU1OWE3ODY1N2EwZjAxZmIzZWYxNmQ2CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI3OjM4IDIwMDggKzA5MDAKCiAgICBzaDogQ2xlYW51cCBzb3VyY2UgY29kZSBvZiBNUzc3MjJTRQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAxZDdiMzFkOTdiMzRjY2I2ZjliMjBhMjQ2NTg2NDk5OGIwYmYyNjkxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE2OjI3OjM0IDIwMDggKzA5MDAKCiAgICBzaDogQ2xlYW51cCBzb3VyY2UgY29kZSBvZiBNUzc3MjBTRQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzYWI0ODI3Y2JlNDA5NDg4ZWJlYTFhMmVlNTA5NDc4M2YyNjcyMjE0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCA3IDAwOjQ1OjAzIDIwMDggKzAyMDAKCiAgICBTSDogZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MDQ3YmZhMWU3MzdkNzg3YmU0NjAzODdkZDZmNDU3MzdlZWNlYjEwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgpEYXRlOglUaHUgSnVsIDMgMjM6MTY6MDYgMjAwOCArMDkwMAoKICAgIG5ldDogc21jOTExeDogRml4IHR5cG8KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Cgpjb21taXQgNWVkNTQ2ZmRkMGNhNDZhMTY1NjYxYzIwMDlmYTc0M2Q5YzlmY2VjYQpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCAyIDE4OjU0OjA4IDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbXZCTC1NNyBib2FyZCBjb25maWcKCiAgICB1cGRhdGUgbXZCTC1NNyBjb25maWcgZmlsZSB0byB1c2UgVUJPT1RfVkVSU0lPTiBhbmQgZGVmaW5lCiAgICBDT05GSUdfSElHSF9CQVRTLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KCmNvbW1pdCA1Y2FjYzVkMGVjNTI2NzhhNWViODNlY2RhNWMzYmNiMjJlYjQ3ZjMwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gSnVuIDMwIDE3OjQ1OjAxIDIwMDggKzA5MDAKCiAgICBuZXQ6IGZpeCBjb21waWxlIHByb2JsZW0gaW4gc21jOTExeCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgOWZlYTY1YTZjNDY5YjFiNDc0YjI3NDQ2ZmViNTg3MzhiYWJhMmQzMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEp1biAyNCAwOTo1NDowOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW5hbWUgQ09ORklHX1hJTElOWF9NTDMwMCB0byBDT05GSUdfWElMSU5YXzQwNQoKICAgIFRoaXMgY2hhbmdlIGhlbHBzIHdpdGggYmV0dGVyIGhhbmRsaW5nIHdpdGggb3RoZXJzCiAgICBYaWxpbnggYmFzZWQgcGxhdGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYmI2Mjg5NTY5YWU0ZmM2ZTJkNjc2NTI4ZTQ2ZmZjYzcyZDc0M2QwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSnVuIDE3IDEzOjA3OjExIDIwMDggKzA5MDAKCiAgICBuZXQ6IG5lMjAwMDogTW92ZSBkZXZfYWRkciB2YXJpYWJsZSBmcm9tIGdyb2JhbCB0byBsb2NhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGRkN2U1ZmE1Zjg0NzE4OGY3OGY2MmYyYzUyZGU2Y2IzZGVmM2VjZGIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVR1ZSBKdW4gMTcgMTM6MDc6MTUgMjAwOCArMDkwMAoKICAgIG5ldDogbmUyMDAwOiBGaXggY29tcGlsZSBlcnJvciBvZiBORTIwMDAKCiAgICBJZiBlbmFibGUgREVCVUcsIGNhbiBub3QgY29tcGlsZSBuZTIwMDAgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZGQzNTQ3OWE1MGY2YzdjMzFlYTQ5MWMwN2M1MjAwYzZkZmQwNmEyNApBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CU1vbiBKdW4gMjMgMjI6NTc6MjcgMjAwOCAtMDcwMAoKICAgIEFkZCBtZWNoYW5pc21zIGZvciBDUFUgYW5kIGJvYXJkLXNwZWNpZmljIEV0aGVybmV0IGluaXRpYWxpemF0aW9uCgogICAgVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBjbGVhbmluZyB1cCBuZXQvZXRoLmMsIGJ5IG1vdmluZyBFdGhlcm5ldAogICAgaW5pdGlhbGl6YXRpb24gdG8gQ1BVIG9yIGJvYXJkLXNwZWNpZmljIGNvZGUuICBJbml0aWFsIGltcGxlbWVudGF0aW9uIGlzCiAgICBvbmx5IG9uIHRoZSBGcmVlc2NhbGUgVFNFQyBjb250cm9sbGVyLCBidXQgb3RoZXJzIHdpbGwgYmUgYWRkZWQgc29vbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDc3NTRmMmJlNWQxODM1ZDI2M2FhZDIxYjVhNjI5NTI2ZjNlNjgwYjAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSnVsIDYgMDE6MjE6NDYgMjAwOCArMDIwMAoKICAgIGluY2x1ZGUvc2hhMjU2Lmg6IGZpeCBmaWxlIHBlcm1pc3Npb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZDNiY2RmODM4ZTI5OTFkNTg1NzEzMDhmYTZlMDRjYTMzNWJjMDZlOApBdXRob3I6IFBhdHJpY2UgVmlsY2hleiA8cGF0cmljZS52aWxjaGV6QGF0bWVsLmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMToxNToyOSAyMDA4ICswMjAwCgogICAgW0FUOTFTQU05XSBGaXggTkFORCBGTEFTSCB0aW1pbmdzCgogICAgRml4IE5BTkQgRkxBU0ggdGltaW5ncyBmb3IgYXQ5MXNhbTl4IGV2YWx1YXRpb24ga2l0cy4KCiAgICBOZXcgdGltaW5ncyBhcmUgYmFzZWQgb24gYXBwbGljYXRpb24gbm90ZQogICAgIk5BTkQgRmxhc2ggU3VwcG9ydCBvbiBBVDkxU0FNOSBNaWNyb2NvbnRyb2xsZXJzIiBhdmFpbGFibGUgYXQKICAgIGh0dHA6Ly9hdG1lbC5jb20vZHluL3Jlc291cmNlcy9wcm9kX2RvY3VtZW50cy9kb2M2MjU1LnBkZgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdHJpY2UgVmlsY2hleiA8cGF0aWNlLnZpbGNoZXpAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDE5YmQ2ODg0ODQzMjJmZTYyZDFhNjZjODI5OWRhNmZmOWU5NjdmZjkKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDIyIDAwOjE1OjQwIDIwMDggKzAyMDAKCiAgICBGaXggYm9vdCBmcm9tIE5PUiBkdWUgdG8gaW5jb3JyZWN0IHJlc2V0IGRlbGF5LgoKICAgIEFUOTEgUlNUQyByZWdpc3RlcnMgYXJlIGJhdHRlcnktYmFja3VwZWQsIHNvIHRoZWlyIHZhbHVlcwogICAgYXJlIG5vdCByZXNldCBhY3Jvc3MgcG93ZXIgY3ljbGVzLiBPbmUgb2YgdGhvc2UgcmVnaXN0ZXJzLAogICAgdGhlIEFUOTFfUlNUQ19NUiByZWdpc3RlciwgaXMgYmVpbmcgbW9kaWZpZWQgYnkgVS1Cb290LCBpbgogICAgdGhlIGV0aGVybmV0IGluaXRpYWxpc2F0aW9uIHJvdXRpbmUsIHRvIGdlbmVyYXRlIGEgNTAwbXMKICAgIHVzZXIgcmVzZXQuCgogICAgVW5mb3J0dW5hdGVseSwgdGhpcyB2YWx1ZSBpcyBub3QgYmVpbmcgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywKICAgIGNhdXNpbmcgc3Vic2VxdWVudCByZXNldHMgdG8gYWxzbyBsYXN0IGZvciA1MDBtcy4KCiAgICBUaGlzIGxvbmcgcmVzZXQgc2VxdWVuY2UgY2F1c2VzIHByb2JsZW1zIChhdCBsZWFzdCkgaW4gdGhlCiAgICBib290IHNlcXVlbmNlIGZyb20gTk9SOiBieSB0aGUgdGltZSB0aGUgQ1BVIHRyaWVzIHRvIGxvYWQKICAgIGEgcHJvZ3JhbSBmcm9tIHRoZSBOT1IgZmxhc2gsIHRoZSBsYXR0ZXIgaXMgc3RpbGwgaW4gcmVzZXQKICAgIGFuZCBub3QgeWV0IGF2YWlsYWJsZS4KCiAgICBBZGRpdGlvbmFseSwgdGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgb3JpZ2luYWwgY29kZSB3aGljaAogICAgY2F1c2VkIHRoZSByZXNldCBkZWxheSB0byBsYXN0IGZvciAycyBpbnN0ZWFkIG9mIDUwMG1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY0OTJkZDYzNmZiYmFlNTI5ZTE3NTMzOTk1YmM2ZTU4MTNjMDA3ZjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDQgMjA6MTE6NDkgMjAwOCArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVlNmUzNTBmYzQ4OWFhMTk0MDJmMWU3OTAzN2RkOGMwYTRiYmQ3M2QKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDQgMjA6MDc6MzUgMjAwOCArMDIwMAoKICAgIENDTS9TQ00gYm9hcmRzOiBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFiNGMzYTQ5MGRmOWE5NjQ3MTE1NTZkMmEwNWIwYzc4N2RiNDVmZGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjM6MjI6MjcgMjAwOCArMDIwMAoKICAgIFNDTSBib2FyZDogZml4IGJ1aWxkIGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGE1NjY0NjZmMTdiYTBlMmQyYjZjMjUwZTc3ZGE2NzhmYjkzMjQ3MGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjM6MDY6MzYgMjAwOCArMDIwMAoKICAgIElBRDIxMCBib2FyZDogZml4IGBgIkFMSUdOIiByZWRlZmluZWQnJyB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWQ3NTYzMTQ3OTdjMTZmYTVkY2EyM2UxMTVhYWI4ODEwMTFmMTY0ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMzowMDoyNCAyMDA4ICswMjAwCgogICAgQ0NNIGJvYXJkOiBmaXggYnVpbGQgZXJyb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjE2ZWQ1MTcwMmNiOWZiNmZhMmUwMTliYmMwZmNkMTQ2NmI1N2MzYgpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJV2VkIEp1bCAyIDE4OjU0OjA4IDIwMDggKzAyMDAKCiAgICB1cGRhdGUgbXZCTC1NNyBib2FyZCBjb25maWcKCiAgICB1cGRhdGUgbXZCTC1NNyBjb25maWcgZmlsZSB0byB1c2UgVUJPT1RfVkVSU0lPTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNlZDIwOWM1MGU4MGMyNWYxM2MwODMwOTliMDUwNDQwNDhkMjFmNGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDMgMjI6Mzk6MjEgMjAwOCArMDIwMAoKICAgIHNhY3NuZyBib2FyZDogZml4IHdhcm5pbmdzICJzdWdnZXN0IGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgJ2Vsc2UnIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGZmMTcwYTgxODBhNzlkYTRjZGFhYjFiMzBkNThjZDdiNmJlNTY1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMjozNDowOCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogZml4ICJleHBlY3RlZCBzcGVjaWZpZXItcXVhbGlmaWVyLWxpc3QgYmVmb3JlICdwaHlzX3NpemVfdCciIGVycm9ycwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzMwZjI5ODQ4NTk4NGIwMTFiNmVlOGY0YWNiNTExY2I0NWE4NDNkZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKdWwgMyAyMjowNDoxNyAyMDA4ICswMjAwCgogICAgbG1iOiBmaXggImltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdsbWJfZnJlZSciIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDMyMmVmNWUyOGQyZGM2MjU3MWFmYzY5OWIwMGFkZDIyYThlMDA2ZTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDIgMjM6NTM6MjMgMjAwOCArMDIwMAoKICAgIENsZWFudXA6IHJlbW92ZSByZWR1bmRhbnQgZGVsZXRpbmcgb24gKn4gZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM4YTNiMTA5ZjA3ZjAyMzQyZDA5N2IzMDkwODk2NWY3MjYxZDlmMTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDIgMjM6NDk6MTggMjAwOCArMDIwMAoKICAgIENsZWFudXAgb3V0LW9yLXRyZWUgYnVpbGRpbmcgZm9yIHNvbWUgYm9hcmRzICguZGVwZW5kKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTMwY2M1YTM0MGU3ZjhmNWY4NWEwZTA4ZTdmNmM0MTA2Y2UxMTdjNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMiAyMzozODo1MCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIGZvciBzb21lIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDYxZmE2OGQyMDg2MTgxMTQ4Nzk0NGQyMjI5MWRiNWExMzQxMGUyMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMiAyMzowMDoxNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cDogcmVwbGFjZSBoYXJkLXdpcmVkICQoQVIpICdjcnYnIHNldHRpbmdzIGJ5ICQoQVJGTEFHUykKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU5ODFlYmQzMjAxN2UwNjJiMDhhYTY3NDdjZjU5MTI3NmYyZGI3NzkKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAyMCAyMjoyNjoyNCAyMDA4ICswMjAwCgogICAgZmR0OiBGaXggdHlwbyBpbiB2YXJpYWJsZSBuYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGE3YTU5ODJjZDBmMzQ4MmY4ODIyNWFmNGRhNzc5NWJjNGY2Y2I5YmMKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KRGF0ZToJVGh1IEp1biAxOSAxMToxMToxOSAyMDA4ICswMjAwCgogICAgQWRkIGxvZ29zIGZvciBSUnZpc2lvbiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGVlNGFlMzgzNDIxNDIyMzdjYTg1OTEzZjg4ZWU1NzBjMWViNWNhN2MKQXV0aG9yOiBFc2JlbiBIYWFiZW5kYWwgPEVzYmVuSGFhYmVuZGFsQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1biAxOCAxMTowMzo1NyAyMDA4ICswMjAwCgogICAgbXBjODI2MDogYWRkIGZkdF9maXh1cF9ldGhlcm5ldCBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHVwZGF0aW5nIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcyBpbiBmZHQgZm9yCiAgICBhbGwgTVBDODI2MCB0YXJnZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVzYmVuIEhhYWJlbmRhbCA8ZWhhQGRvcmVkZXZlbG9wbWVudC5kaz4KCmNvbW1pdCBmNmE2OTU1OWQ2NDQ5OGEwNGUxZTBiMDg3YTliOTIwZTU3NzVmODY2CkF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KRGF0ZToJVGh1IEp1biAxMiAxMzoyNDo0MiAyMDA4IC0wNDAwCgogICAgY21kX252ZWRpdC5jOiBjbGVhbiB1cCBzeW50YXggaGlnaGxpZ2h0aW5nCgogICAgTXkgdGV4dC1lZGl0b3IgKHZpbSkgaGFzIGEgYml0IG9mIHRyb3VibGUgc3ludGF4LWhpZ2hsaWdodGluZyB0aGUKICAgIGNtZF9udmVkaXQuYyBmaWxlLCBiZWNhdXNlIGl0IGFwcGFyZW50bHkgZG9lcyBub3QgcGFyc2UgQwogICAgaWZkZWYvZWxzZS9lbmRpZi4gVGhlIGZvbGxvd2luZyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mCiAgICB0aGUgY29kZSBhdCBhbGwsIGJ1dCBkb2VzIGFsbG93IHRoZSBlZGl0b3IgdG8gcHJvcGVybHkKICAgIHN5bnRheC1oaWdobGlnaHQgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgoKY29tbWl0IDc1Njc4YzgwN2E2MjcyZWNjNTU0MWViMzI4OThjOTM4ODdmMDg0MDAKQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgpEYXRlOglUaHUgSnVuIDEyIDEzOjIyOjEyIDIwMDggLTA0MDAKCiAgICBNYWtlIHNldGVudigpIHJldHVybiBzdGF0dXMKCiAgICBDdXJyZW50bHksIHRoZSBzZXRlbnYgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFuIGVycm9yIGNvZGUuCiAgICBUaGlzIHBhdGNoIGFsbG93cyB0byB0ZXN0IGZvciBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RldmUgRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgoKY29tbWl0IDQ5MjhlOTdjODUzMTI4M2NhOWIzNjhiN2MyOWE4YTEyZTcyNjU2MmEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVuIDExIDEwOjE0OjA2IDIwMDggLTA1MDAKCiAgICBQUEM6IEFkZGVkIGZscywgZmxzNjQsIF9faWxvZzJfdTY0LCBhbmQgZmZzNjQgdG8gYml0b3BzCgogICAgZmxzNjQsIF9faWxvZzJfdTY0LCBmZnM2NCBhcmUgdmFyaWFudHMgdGhhdCB3b3JrIG9uIGFuIHU2NCwKICAgIGFuZCBmbHMgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzMDAyYTc3Y2JkZjM4MzAxNWNhMzg0ZWZmNWZhMzE3MjJkOGU1NzEKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMjo1ODo0OCAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBDbGVhbnVwIGNvbW1lbnRzIGluIGxvd2xldmVsX2luaXQuUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZjhjYzMxMmJiZWU2OTI1N2Q3NDFkYzlmNDA2MmY0YTBmNWFkZjYwOQpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVN1biBKdW4gOCAyMzoyODozMyAyMDA4IC0wNzAwCgogICAgTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBNUEM4WFhYIFNQSSBkcml2ZXIgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ5MmVhMjFiYWZiNjc0ZWUyYmYyNzQ0Nzk3MGIwNDc4NDVlN2IwYTIKQXV0aG9yOiBKdWVyZ2VuIEtpbGIgPEouS2lsYkBnbXguZGU+CkRhdGU6CVN1biBKdW4gOCAxNzo1OTo1MyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBmaXhlZCBDVFJMLUMgZGV0ZWN0aW9uCgogICAgVGhlIFJlZ2lzdGVyIFVSWEQgY29udGFpbnMgc3RhdHVzIGluZm9ybWF0aW9uIGluIGJpdHMgWzE1Li44XS4KICAgIFdpdGggc3RhdHVzIGJpdCAxNSBzZXQsIENUUkwtQyB3YXMgcmVwb3J0ZWQgYXMgMHg4MDAzIGluc3RlYWQKICAgIG9mIDB4MDMuIFRoZXJlZm9yZSBDVFJMLUMgd2FzIG5vdCBkZXRlY3RlZC4KICAgIFRvIHNvbHZlIHRoaXMsIGJpdHMgWzE1Li44XSB3ZXJlIG1hc2tlZCBvdXQgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gS2lsYiA8Si5LaWxiQGdteC5kZT4KICAgIEFja2VkLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KCmNvbW1pdCBkZDFjNTUyM2Q2ZjQ0ZTg0MmU2OWYyZmNiNTA3ODhjNjA2MGVhYjg2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDEgMTc6MDM6MTkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IDQ2MEVYL0dUIFBDSWUgcG9ydCBpbml0aWFsaXphdGlvbgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgdGhlIDQ2MEVYL0dUIFBDSWUgVVRMU0VUMSByZWdpc3RlciB3YXMKICAgIGNvbmZpZ3VyZWQgaW5jb3JyZWN0bHkuIFRoYW5rcyB0byBPbGdhIEJ1Y2hvbmluYSBmcm9tIEFNQ0MgZm9yIHBvaW50aW5nCiAgICB0aGlzIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjU3MWFmZGUwMjk1YjAwN2E0NTA1NWVlNDlmODgyMmM3NTNhNTY1MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBKdW4gNyAxMjoyOTo1MiAyMDA4ICswMjAwCgogICAgYWRkIFNIQTI1NiBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5jZXNjbyBBbGJhbmVzZSA8RnJhbmNlc2NvLkFsYmFuZXNlQHN3aXNzY29tLmNvbT4KCmNvbW1pdCAzYmFiNzZhMjZlMDNkZjRmZjgxMzQyZmNjMTYzOTNjZTM3ZDk3NjZiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biA2IDIzOjA3OjQwIDIwMDggKzAyMDAKCiAgICBEZWxheSBGSVQgZm9ybWF0IGNoZWNrIG9uIHNlY3RvciBiYXNlZCBkZXZpY2VzCgogICAgR2xvYmFsIEZJVCBpbWFnZSBvcGVyYXRpb25zIGxpa2UgZm9ybWF0IGNoZWNrIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24KICAgIGEgZmlyc3Qgc2VjdG9yIGRhdGEsIGRlZmVyIHRoZW0gdG8gdGhlIHBvaW50IHdoZW4gd2hvbGUgRklUIGltYWdlIHdhcwogICAgdXBsb2FkZWQgdG8gYSBzeXN0ZW0gUkFNLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBQYXJ0aWFsICgnY21kX25hbmQnIGNhc2UpIEFja2VkLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgTkFORCBhbmQgRE9DIGJpdHMgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4MTAyNjNhZmVjNWFjNWYzOGY5Mjk2M2JiM2I2ZDc5OWU0MzMxZDAKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMyAxNzozODoxOSAyMDA4ICswODAwCgogICAgc2F0YTogd2FpdCBmb3IgZGV2aWNlIHVwZGF0aW5nIHNpZ25hdHVyZSB0byBob3N0CgogICAgVGhlIGRyaXZlciBuZWVkIHdhaXQgZm9yIHRoZSBkZXZpY2UgdXBkYXRpbmcgc2lnbmF0dXJlIHRvIGhvc3QuCiAgICBJZiB3ZSBkb24ndCB3YWl0IGZvciBpdCwgdGhlIGRyaXZlciBjYW4gbm90IGRldGVjdCB0aGUgZGV2aWNlKGRpc2spCiAgICB3aGVuIHRoZSBzeXN0ZW0gcG93ZXJzIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzQ1ZDhhMGQzY2VhODJlNmQxNzUzZTE0YWZiNDU4OGMzNDc2MWIxNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEp1biAyOCAxNDo1NjoxNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggNDYwRVggZXJyYXRhIHdpdGggQ1BVIGxvY2t1cCB1cG9uIGhpZ2ggQUhCIHRyYWZmaWMKCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBmaXggcHJvdmlkZWQgYnkgQU1DQyBzbyB0aGF0IHRoZSBsb2NrdXAgdXBvbgogICAgc2ltdWx0YW5pb3VzIHRyYWZmaWMgb24gQUhCIFVTQiBPVEcsIFVTQiAyLjAgYW5kIFNBVEEgZG9lc24ndCBvY2N1cgogICAgYW55bW9yZToKCiAgICBTZXQgU0RSMF9BSEJfQ0ZHW0EyUF9JTkNSNF0gKGJpdCAyNCkgYW5kIGNsZWFyIFNEUjBfQUhCX0NGR1tBMlBfUFJPVDJdCiAgICAoYml0IDI1KSBmb3IgYSBuZXcgNDYwRVggZXJyYXRhIHJlZ2FyZGluZyBjb25jdXJyZW50IHVzZSBvZiBBSEIgVVNCIE9URywKICAgIFVTQiAyLjAgaG9zdCBhbmQgU0FUQS4KCiAgICBUaGlzIGVycmF0YSBpcyBub3Qgb2ZmaWNpYWxseSBhdmFpbGFibGUgeWV0LiBJJ2xsIHVwZGF0ZSB0aGUgY29tbWVudAogICAgdG8gYWRkIHRoZSBlcnJhdGEgbnVtYmVyIGxhdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4YjYxNmVkYjExOGUzN2QwNWY2NDAxMzg5ZWFlZTFjNjM2YjIyODI4CkF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgpEYXRlOglNb24gSnVuIDIgMTY6NDI6MTkgMjAwOCAtMDQwMAoKICAgIHNlcmlhbF9wbDAxMC5jOiBhZGQgd2F0Y2hkb2cgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KCmNvbW1pdCA4NmQzMjczZTJiN2JlM2ZmZmI0NWUyMGMwODUzNWQ2YWQzYWRlZDZiCkF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgpEYXRlOglNb24gSnVuIDIgMTY6NDA6MDggMjAwOCAtMDQwMAoKICAgIGpmZnMyXzFwYXNzLmM6IGFkZCB3YXRjaGRvZyBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgoKY29tbWl0IDU3NDRkZGM2NjM3ZmVhNGY3YjkxMWE1NGE1ZmE4NjBjYjgxYTVkODkKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgpEYXRlOglGcmkgTWF5IDMwIDA5OjQ4OjE0IDIwMDggKzAyMDAKCiAgICBDb25maWd1cmUgRFNQIFBPU1Q7IGFkZCB3YXRjaGRvZyByZXNldCB0byBkaWFnIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgoKY29tbWl0IGYxMzUyNjUxNzg1OWJmNmI1NzNlMjNmZjQ3MTk5ZTEwN2QxMDA5YjUKQXV0aG9yOiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgpEYXRlOglUaHUgTWF5IDI5IDEwOjQwOjE3IDIwMDggKzAyMDAKCiAgICBBZGQgc2F0YSBzaWwzMTE0IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgoKY29tbWl0IGUwOTNhMjQ3NjI4MjI4MTAwZjQwNWI2ZDdmNmIxYmZjMTYxNDE5MzgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSnVuIDI4IDIzOjM0OjM3IDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDFkYjIzMmRkN2EwY2ViODEyMDhhOWYyNTQ1NzIwYzgwZTViZmQ4MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKdW4gMjggMjM6MTY6MDEgMjAwOCArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM3Zjg3OWVjMmIzODljNGYyYmY3MjZiMjkzYmQ1MTZmNGM2OTJlMDMKQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzo1ODo0MSAyMDA4IC0wNDAwCgogICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgTHlydGVjaCBTRkYtU0RSIGJvYXJkIChBUk05MjZFSlMpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMeXJ0ZWNoIFNGRi1TRFIgYm9hcmQsCiAgICBiYXNlZCBvbiB0aGUgVEkgRGFWaW5jaSBhcmNoaXRlY3R1cmUgKEFSTTkyNkVKUykuCgogICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBQaGlsaXAgQmFsaXN0ZXIgPHBoaWxpcEBiYWxpc3Rlci5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDM0MTE4OGI5Y2NhYThkNDQ2MmQ3NzJjYzA2N2FjYThkNzYxODYzM2EKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVRodSBNYXkgMjIgMTE6MDk6NTkgMjAwOCArMDIwMAoKICAgIE1NQzogQ29uc29saWRhdGUgTU1DL1NEIGNvbW1hbmQgZGVmaW5pdGlvbnMKCiAgICBUaGlzIG1vdmVzIHRoZSBNTUMgYW5kIFNEIENhcmQgY29tbWFuZCBkZWZpbml0aW9ucyBmcm9tCiAgICBpbmNsdWRlL2FzbS9hcmNoL21tYy5oIGludG8gaW5jbHVkZS9tbWMuaC4gVGhlc2UgZGVmaW5pdGlvbnMgYXJlCiAgICBnaXZlbiBieSB0aGUgTU1DIGFuZCBTRCBDYXJkIHN0YW5kYXJkcywgbm90IGJ5IGFueSBwYXJ0aWN1bGFyCiAgICBhcmNoaXRlY3R1cmUuCgogICAgVGhlcmUncyBhIGxvdCBtb3JlIHJvb20gZm9yIGNvbnNvbGlkYXRpb24gaW4gdGhlIE1NQyBkcml2ZXJzIHdoaWNoCiAgICBJJ20gaG9waW5nIHRvIGdldCBkb25lIGV2ZW50dWFsbHksIGJ1dCB0aGlzIHBhdGNoIGlzIGEgc3RhcnQuCgogICAgQ29tcGlsZS10ZXN0ZWQgZm9yIGFsbCBhdnIzMiBib2FyZHMgYXMgd2VsbCBhcyBscGMyMjkyc29kaW1tIGFuZAogICAgbHViYm9jay4gVGhpcyBzaG91bGQgY292ZXIgYWxsIHRocmVlIG1tYyBkcml2ZXJzIGluIHRoZSB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmYTYwZWRmYzRjOTUyNjI2ZTA0OGMwZTA2NWY2NTRiM2MxODIyZmE1CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVdlZCBNYXkgMjEgMTQ6Mzg6MDggMjAwOCArMDkwMAoKICAgIFVzZSBiZXR0ZXIgRXRoZXJuZXQgdGltaW5ncyBmb3IgYXBvbGxvbiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgNDFjNWVhYTcyNTNlZDgyYmJhZTFlZGE1NjY3NzU1ODcyYzYxNTE2NApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAxNiAxMzo1ODo1NiAyMDA4IC0wNTAwCgogICAgUmVzaXplIGRldmljZSB0cmVlIHRvIGFsbG93IHNwYWNlIGZvciBib2FyZCBjaGFuZ2VzIGFuZCB0aGUgY2hvc2VuIG5vZGUKCiAgICBDdXJyZW50IGNvZGUgcmVxdWlyZXMgdGhhdCBhIGNvbXBpbGVkIGRldmljZSB0cmVlIGhhdmUgc3BhY2UgYWRkZWQgdG8gdGhlIGVuZCB0bwogICAgbGVhdmUgcm9vbSBmb3IgZXh0cmEgbm9kZXMgYWRkZWQgYnkgYm9hcmQgY29kZSAoYW5kIHRoZSBjaG9zZW4gbm9kZSkuICBUaGlzCiAgICByZXF1aXJlcyB0aGF0IGRldmljZSB0cmVlIGNyZWF0b3JzIGFudGljaXBhdGUgaG93IG11Y2ggc3BhY2UgVS1Cb290IHdpbGwgYWRkIHRvCiAgICB0aGUgdHJlZSwgd2hpY2ggaXMgYWJzdXJkLglJZGVhbGx5LCB0aGUgY29kZSB3b3VsZCByZXNpemUgYW5kL29yIHJlbG9jYXRlIHRoZQogICAgdHJlZSB3aGVuIGl0IG5lZWRlZCBtb3JlIHNwYWNlLCBidXQgdGhpcyB3b3VsZCByZXF1aXJlIGEgc3lzdGVtaWMgY2hhbmdlIHRvIHRoZQogICAgZmR0IGNvZGUsIHdoaWNoIGlzIG5vbi10cml2aWFsLiAgSW5zdGVhZCwgd2UgcmVzaXplIHRoZSB0cmVlIGluc2lkZQogICAgYm9vdF9yZWxvY2F0ZV9mZHQsIHJlc2VydmluZyBlaXRoZXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgYm9vdG1hcCAoaW4gdGhlIGNhc2UKICAgIHdoZXJlIHRoZSBmZHQgaXMgaW5zaWRlIHRoZSBib290bWFwKSwgb3IgYWRkaW5nIENGR19GRFRfUEFEIGJ5dGVzIHRvIHRoZSBzaXplLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NTcwYTk5NDFmYzU2NTkyMjA3ODY3OWE3MmQyNDZmZTIwOGQ2OTZkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDE2IDEzOjU4OjU1IDIwMDggLTA1MDAKCiAgICBGaXggYW4gdW5kZXJmbG93IGJ1ZyBpbiBfX2xtYl9hbGxvY19iYXNlCgogICAgX19sbWJfYWxsb2NfYmFzZSBjYW4gdW5kZXJmbG93IGlmIGl0IGZhaWxzIHRvIGZpbmQgZnJlZSBzcGFjZS4gIFRoaXMgd2FzIGZpeGVkCiAgICBpbiBsaW51eCB3aXRoIGNvbW1pdCBkOTAyNGRmMDJmZmU3NGQ3MjNkOTdkNTUyZjg2ZGUzYjM0YmViOGNjLiAgVGhpcyBwYXRjaAogICAgbWVyZWx5IHVwZGF0ZXMgX19sbWJfYWxsb2NfYmFzZSB0byByZXNlbWJsZSB0aGUgY3VycmVudCB2ZXJzaW9uIGluIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2Mzc5NmM0ZTYxYjIwN2QyZTYzNTcyOWQ0MWI3YTdmN2QxODhiMDNjCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDE2IDEzOjU4OjU0IDIwMDggLTA1MDAKCiAgICBBZGQgbG1iX2ZyZWUKCiAgICBsbWJfZnJlZSBhbGxvd3MgdXMgdG8gdW5yZXNlcnZlIHNvbWUgbWVtb3J5IHNvIHdlIGNhbiB1c2UgbG1iX2FsbG9jX2Jhc2Ugb3IKICAgIGxtYl9yZXNlcnZlIHRvIHRlbXBvcmFyaWx5IHJlc2VydmUgc29tZSBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiMDNhYzhiNTEwMmFkOTVmOWZlZGU3ZDEzZmEyMzY5Nzc1OTNlN2QKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTYgMTM6NTg6NTMgMjAwOCAtMDUwMAoKICAgIEFkZCBBTElHTigpIG1hY3JvCgogICAgQUxJR04oKSByZXR1cm5zIHRoZSBzbWFsbGVzdCBhbGlnbmVkIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgcGFzc2VkCiAgICBpbiBhZGRyZXNzIG9yIHNpemUuICBUYWtlbiBmcm9tIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MzI2MmFmODVlM2U5ZDk5NzRjNmMwOGZiZDM3YTlhNzJlMDkwY2EyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDI0IDE3OjE1OjIyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyB3aXRoIHBoeXNfc2l6ZV90CgogICAgVGhpcyBwYXRjaCBpbmNsdWRlcyA8YXNtL3R5cGVzLmg+IGJlZm9yZSA8YXNtL3UtYm9vdC5oPiBpbiBzb21lIDR4eAogICAgYm9hcmQgc3BlY2lmaWMgZmlsZXMgd2hlcmUgaXQgaGFzIGJlZW4gbWlzc2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjhlYWIwZDc3MzUyYjg0ODg1ZjkzODc1OWJmMjYxMmI3YmYwYmM0NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gTWF5IDE5IDEyOjI2OjM4IDIwMDggKzAyMDAKCiAgICBDb25kaXRpb25hbGx5IGFkZCAtZm5vLXN0YWNrLXByb3RlY3RvciB0byBDRkxBR1MKCiAgICBXaGVuIGNvbXBpbGUtdGVzdGluZyBvbiBwb3dlcnBjLCBJIGdldCBlcnJvcnMgbGlrZSB0aGlzOgoKICAgIG5ldC9uZnMuYzo0MjI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnCgogICAgVGhpcyBzZWVtcyB0byBiZSBiZWNhdXNlIC1mc3RhY2stcHJvdGVjdG9yIGlzIG9uIGJ5IGRlZmF1bHQsIHNvCiAgICBsZXQncyBleHBsaWNpdGx5IGRpc2FibGUgaXQgb24gYWxsIGFyY2hpdGVjdHVyZXMgdGhhdCBzdXBwb3J0IHRoZQogICAgb3B0aW9uLgoKICAgIFRoZSBVYnVudHUgdG9vbGNoYWluIGlzIGFmZmVjdGVkIGJ5IHRoaXMgcHJvYmxlbSwgYW5kIGFjY29yZGluZyB0bwogICAgTWlrZSBGcnlzaW5nZXIsIEdlbnRvbyBoYXMgYmVlbiBydW5uaW5nIHdpdGggU1NQIGVuYWJsZWQgZm9yIHllYXJzLgogICAgTW9yZSBhbmQgbW9yZSBkaXN0cm9zIGFyZSB0dXJuaW5nIFNTUCBvbiBieSBkZWZhdWx0LCBzbyB0aGlzIHByb2JsZW0KICAgIGlzIGxpa2VseSB0byBnZXQgd29yc2UgaW4gdGhlIGZ1dHVyZS4KCiAgICBBbHNvLCBwb3dlcnBjIGp1c3QgaGFwcGVucyB0byBiZSBvbmUgb2YgdGhlIGFyY2hlcyBJIGRvCiAgICBjb21waWxlLXRlc3Rpbmcgb24uIFRoZXJlIG1heSBiZSBvdGhlciBhcmNoZXMgYWZmZWN0ZWQgYnkgdGhpcyB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZGZkM2JlODgxYzAzYTI2ZTMxZjBkZWE0YTQyZTc2MDYxZmE2MTBhYwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NTIgMjAwOCArMDIwMAoKICAgIHBjbWNpYS90aV9wY2kxNDEwYTogTW92ZSBjb21waWxlIGNvbmRpdGlvbiB0byB0aGUgTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcyZDVkNWY3YjVjNzRhMTg4ZGYyMzhlYzZkZDgyNGQ4MGM3NDg1N2EKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDE4IDE5OjA5OjUxIDIwMDggKzAyMDAKCiAgICBweGFfcGNtY2lhOiBNb3ZlIGNvbXBpbGUgY29uZGl0aW9uIHRvIHRoZSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzllZmYzMjg4MWZiNDI5MTAxYzkzN2NmOGMyNjhmMWQ0MmU1YzJhOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NTAgMjAwOCArMDIwMAoKICAgIG1hcmFidW5fcGNtY2lhOiBNb3ZlIGNvbXBpbGUgY29uZGl0aW9uIHRvIHRoZSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmExOWM0NmNhZTQzYzE2YzUyOGVkZGVmYWUzZGI5NzEzNGYxOTE1ZApBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJTW9uIEp1biAyMyAxMzoyNTozNCAyMDA4ICswMjAwCgogICAgZml4IG5vbi13b3JraW5nIG12QkwtTTcKCiAgICBBZGQgbWlzc2luZyAjZGVmaW5lIENPTkZJR19ISUdIX0JBVFMgaW4gbXZCTC1NNyBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg0NmYxNTc0ZGRkZGVkYTJiYzIyNzY1NWU2ODczMDg2OTVmNDFjZGMKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CU1vbiBKdW4gMjMgMTE6NDA6NTYgMjAwOCArMDIwMAoKICAgIGZpeCBzeXN0ZW0gY29uZmlnIG92ZXJ3cml0ZSBAIE1QQzgzNHggYW5kIE1QQzgzMTMKCiAgICBEdXJpbmcgODN4eCBzZXR1cCB0aGUgIlN5c3RlbSBJL08gY29uZmlndXJhdGlvbiByZWdpc3RlciBoaWdoIiBnZXRzCiAgICBvdmVyd3JpdHRlbiB3aXRoIHVzZXIgZGVmaW5lZCB2YWx1ZSBpZiBDRkdfU0lDUkggaXMgZGVmaW5lZC4KCiAgICBSZWdhcmRpbmcgdG8gdGhlIE1QQzgzNHggbWFudWFsIChUYWJsZSA1LTI4IHJldmUuMSkgYml0cyAyOCsyOSBvZiBTSUNSSAogICAgbXVzdCBrZWVwIHRoZWlyIHJlc2V0IHZhbHVlIHJlZ2FyZGxlc3Mgb2YgY29uZmlndXJhdGlvbi4KCiAgICBPbiBteSBib2FyZCAodXNpbmcgUkdNSUkpIHRob3NlIGJpdHMgYXJlIHNldCBhZnRlciByZXNldCAtIHlldCBpdCdzCiAgICB1bmNsZWFyIHdoZXJlIHRoZXkgY29tZSBmcm9tLgoKICAgIFRoZSBwYXRjaCBrZWVwcyBib3RoIGJpdHMgb24gTVBDODM0eCBhbmQgTVBDODMxMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4OTAyNDZhMmM1ZGY5MGE3NGUyOTQxZTM2NzNhNDliYmQzNmFlZTkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDE3IDE3OjQ1OjI3IDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBtb3ZlIENQVV9UWVBFX0VOVFJZIG92ZXIgdG8gcHJvY2Vzc29yLmgKCiAgICB0byBhdm9pZCB0aGlzOgoKICAgIGNwdS5jOjQ3OjE6IHdhcm5pbmc6ICJDUFVfVFlQRV9FTlRSWSIgcmVkZWZpbmVkCiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gY3B1LmM6MzM6CiAgICAvaG9tZS9raW0vZ2l0L3UtYm9vdC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaDo5ODI6MTogd2FybmluZzogdGhpcyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlZmluaXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFhYzdhNTA5NWI5NjhkNmM5YTNlNjQyMmYzMWI0YWQyMDNjYWM5YzgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMjMgMTE6MTU6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gaW4gZ3Bpb19jb25maWcoKQoKICAgIEFzIHBvaW50ZWQgb3V0IGJ5IEd1ZW5uYWRpIExpYWtob3ZldHNraSAodGhhbmtzKSwgcGluMiBpcyBhbHJlYWR5IHNoaWZ0ZWQKICAgIGxlZnQgYnkgb25lLiBTbyB0aGUgYWRkaXRpb25hbCBzaGlmdCBpcyBib2d1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDA3Nzc4MTIzMTZmYzI1MmM5NDE2NjVjMGY2MGMxNDhmZDc5ZDUwZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDIwIDIyOjI0OjA1IDIwMDggKzAyMDAKCiAgICBmZHQ6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNWY3MjNhM2I5OGM2MzBiZGUzM2RlNzQzNTFmMjEyMTY5MWZkZWYxNApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEp1biAyMCAxMDo0MTowNSAyMDA4ICswMjAwCgogICAgYXZyMzI6IEVuYWJsZSBTUEkgZmxhc2ggc3VwcG9ydCBvbiBBVE5HVzEwMAoKICAgIFRoZSBBVE5HVzEwMCBoYXMgOE1CIERhdGFGbGFzaCBvbiBib2FyZC4gR2l2ZSB1c2VycyBhY2Nlc3MgdG8gaXQgdGhyb3VnaAogICAgdGhlIG5ldyBTUEkgZmxhc2ggZnJhbWV3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1NjA1ZWY2YjU4MDI5MjFjYmVmZTZhOTMzYTlkZWEzNDk3Mzk2YjVjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgSnVuIDIwIDEyOjQ0OjI4IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IFNQSSBwb3J0bXV4IGluaXRpYWxpemF0aW9uCgogICAgVXNlIHRoZSBuZXcgR1BJTyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIHRvIHNldCB1cCB0aGUgY2hpcCBzZWxlY3QgbGluZXMsCiAgICBhbmQgbWFrZSBzdXJlIGJvdGggYnVzc2VzIHVzZSBHUElPIGZvciBjaGlwIHNlbGVjdCBjb250cm9sLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA0Njg4ZjllMzRhODdlODI1YWVkMzRkMDdjOWNhN2EyNzNlNmZjOGFiCkF1dGhvcjogUGV0ZXIgTWEgPHBtYUBtZWRpYW1hdGVjaC5jb20+CkRhdGU6CVN1biBKdW4gMSAyMjo1OToyNCAyMDA4IC0wNzAwCgogICAgYXZyMzI6IEFkZCBHUElPIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKCiAgICBBZGRzIEdQSU8gbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBmb3IgQVZSMzIgQVA3IHBsYXRmb3JtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIE1hIDxwbWFAbWVkaWFtYXRlY2guY29tPgogICAgW2hhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb206IGNvZGluZyBzdHlsZSBmaXh1cCwgc2xpZ2h0IHNpbXBsaWZpY2F0aW9uXQogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI0ZmUxYTcxMDkwYzczZWZjNmU0MTg4ZWVkMTg4YjJmZjY3ZmMwMmEKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjAyOjMwIDIwMDggKzAyMDAKCiAgICBNUEM4MzYwRVJESzogYWRhcHQgTkFORCBpbnRlcmZhY2UgZm9yIHRoZSByZS13cml0dGVuIEZTTCBOQU5EIFVQTSBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0Y2ggc2VudCBhIGZldyBtaW51dGVzIGFnbzoKICAgICJOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrIgogICAgSXQgaXMgdW50ZXN0ZWQsIG9mIGNvdXJzZS4gQW50b24sIGNvdWxkIHlvdSBwbGVhc2UgZ2l2ZSBpdCBhIHRyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIEFja2VkLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA5NjAyNmQ0MmZhNGU2NDZkMjgzMThjMGExNDM4YWFjNGIyMDE3OTA5CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVuIDEyIDEyOjQwOjExIDIwMDggKzAyMDAKCiAgICBGaXggNHh4IGJ1aWxkIGlzc3VlCgogICAgQnVpbGRpbmcgZm9yIDR4eCBkb2Vzbid0IHdvcmsgc2luY2UgY29tbWl0IDRkYmRiNzY4OgoKICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSA0eHhfcGNpZS5jOjI4OgogICAgaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg6OTcxOiBlcnJvcjogZXhwZWN0ZWQgJyknIGJlZm9yZSAndmVyJwogICAgbWFrZVsxXTogKioqIFs0eHhfcGNpZS5vXSBFcnJvciAxCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYTAzNmIwNDQzNjU3ZmUwZjQ3NzM3ODZkZTkwOTIyNTE4NjlmMDhhYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKdW4gMTkgMDE6NDU6NTAgMjAwOCAtMDUwMAoKICAgIE1QQzg2MTBIUENEOiBSZXBvcnQgYm9hcmQgaWQsIGJvYXJkIHZlcnNpb24gYW5kIGZwZ2EgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDdkZThjMjFmMTRkZjljMjBmZGNmNjAyN2FlYzhlODU0NWY3NWY4MzUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSnVuIDE5IDAxOjQ1OjI3IDIwMDggLTA1MDAKCiAgICBNUEM4NjQxSFBDTjogUmVwb3J0IGJvYXJkIGlkLCBib2FyZCB2ZXJzaW9uIGFuZCBmcGdhIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmYjhjMDYxZWEwNWZjNjhkMzdlMmE4YjlmOGM5NDlkNzZjOGQ3MWE4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDE2IDEwOjQwOjAyIDIwMDggKzAyMDAKCiAgICBjZmktZmxhc2g6IEZpeCBwcm9ibGVtIGluIGZsYXNoX3RvZ2dsZSgpLCBidXN5IHdhcyBub3QgZGV0ZWN0ZWQgcmVsaWFibHkKCiAgICBUaGlzIHBhdGNoIHNpbXBsaWZpZXMgZmxhc2hfdG9nZ2xlKCkgKEFNRCBjb21tYW5kc2V0KSwgd2hpY2ggaXMgdXNlZCB0bwogICAgZGV0ZWN0IGlmIGEgRkxBU0ggZGV2aWNlIGlzIHN0aWxsIGJ1c3kgd2l0aCBlcmFzZS9wcm9ncmFtIG9wZXJhdGlvbnMuIE9uCiAgICA4MDBNSHogQ2FueW9ubGFuZHMvR2xhY2llciBib2FyZHMgKDQ2MEVYL0dUKSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgogICAgZGlkIG5vdCBkZXRlY3QgdGhlIGJ1c3kgc3RhdGUgcmVsaWFibHksIHJlc3VsdGluZyBpbiBub24gZXJhc2VkIHNlY3RvcnMKICAgIGV0Yy4gVGhpcyBwYXRjaCBub3cgc2ltcGxpZmllcyB0aGlzIGZ1bmN0aW9uIGJ5ICJqdXN0IiBjb21wYXJpbmcgdGhlCiAgICBjb21wbGV0ZSBkYXRhLXdvcmQgaW5zdGVhZCBvZiBBTkRpbmcgaXQgd2l0aCB0aGUgY29tbWFuZC13b3JkICgweDQwKQogICAgYmVmb3JlIHRoZSBjb21wYXRpc29uLiBJdCBpcyBkb25lIHRoZSBzYW1lIHdheSBpbiB0aGUgTGludXggaW1wbGVtZW50YXRpb24KICAgIGNoaXBfcmVhZHkoKSBpbiBjZmlfY21kc2V0XzAwMDIuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWU0MDA2YmNhM2Q5ZmI0YTJkMDYxOTk2NzcxMDM2Y2IwMWU1MzlkMwpBdXRob3I6IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KRGF0ZToJTW9uIEp1biAxNiAwODo1ODowNyAyMDA4IC0wNDAwCgogICAgTkFORDogQWRkIG1pc3NpbmcgZGVjbGFyYXRpb24gdG8gbm9uLXJlZHVuZGFudCBzYXZlZW52KCkuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmNkYjdmNTBhYzU5NTk0NTQwZmZmZGY4ZGJkN2IxMmJlYWM3OWM1MgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglNb24gSnVuIDIgMTU6MDk6NTUgMjAwOCArMDIwMAoKICAgIE1QQzgzNjBFUkRLOiBhZGFwdCBOQU5EIGludGVyZmFjZSBmb3IgdGhlIHJlLXdyaXR0ZW4gRlNMIE5BTkQgVVBNIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgQWNrZWQtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjEyZWQ5MDYxNWMzZDIwZmE2YmQ3M2Q3MGQ1MTUzYmQwZDEyNGU1ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAxMCAxNTozNDoxMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogRGlzYWJsZSB0aGUgUlRDIE00MVQ2MiBzcXVhcmUgd2F2ZSBvdXRwdXQKCiAgICBUaGlzIHBhdGNoIGRpc2FibGVzIHRoZSBzcXVhcmUgd2F2ZSBvdXRwdXQgb2YgdGhlIE00MVQ2MiBSVEMgdXNlZCBvbgogICAgQ2FueW9ubGFuZHMgJiBHbGFjaWVyLiBIZXJlIHRoZSBleHBsYW5hdGlvbjoKCiAgICBUaGUgc2VyaWFsIHJlYWwtdGltZSBjbG9jayBwYXJ0IHVzZWQgaW4gdGhlIGRlc2lnbiBpcyBhbgogICAgU1RNaWNybyBNNDFUNjIuIFRoaXMgcGFydCBoYXMgYSBmdWxsLXRpbWUgMzJLSHogc3F1YXJlIHdhdmUKICAgIG91dHB1dCB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGUgVG1yQ2xrIGlucHV0IHRvIHRoZQogICAgcHJvY2Vzc29yLiBUaGUgZGVmYXVsdCBzdGF0ZSBmb3IgdGhpcyBzcXVhcmUgd2F2ZSBvdXRwdXQgaXMKICAgIGVuYWJsZWQgc28gdGhlIG91dHB1dCBydW5zIGNvbnRpbnVvdXNseSB3aGVuIHRoZSBib2FyZCBpcwogICAgcG93ZXJlZCBub3JtYWxseSBhbmQgYWxzbyBmcm9tIHRoZSBiYXR0ZXJ5LiBUaGUgVG1yQ2xrIGlucHV0CiAgICB0byB0aGUgcHJvY2Vzc29yIGdvZXMgdG8gZ3JvdW5kIHdoZW4gdGhlIHBvd2VyIGlzIHJlbW92ZWQKICAgIGZyb20gdGhlIGJvYXJkL3Byb2Nlc3NvciwgYW5kIHRoZXJlZm9yZSB0aGUgcnVubmluZyBzcXVhcmUKICAgIHdhdmUgb3V0cHV0IGlzIGRyaXZpbmcgZ3JvdW5kIHdoaWNoIGRyYWlucyB0aGUgYmF0dGVyeSBxdWlja2x5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhOTRmMjJmMDhmMjgwOTA1OTI2MjE5ZTU2ODU2ODk2NGNiOWVlYjlkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDExIDE4OjEwOjIwIDIwMDggLTA1MDAKCiAgICBGaXggYnVpbGQgaXNzdWUgd2l0aCBzdHJpbmcuaCBhbmQgbGludXgvc3RyaW5nLmgKCiAgICBUaGlzIGNvbW1pdDoKICAgIGNvbW1pdCAzMzhjYzAzODQ2MWE2Yzc3MDljNWI4NmZkOWEyNDAyMDkzMzhhMWFlCiAgICBBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBEYXRlOiAgIEZyaSBKdW4gNiAxNDoyODoxNCAyMDA4ICswMjAwCgoJdG9vbHMvbWtpbWFnZTogZml4IGNvbXBpbGVyIHdhcm5pbmdzIG9uIHNvbWUgc3lzdGVtcy4KCiAgICBCcm9rZSBidWlsZGluZyBvbiBzb21lIHN5c3RlbXMsIGJlY2F1c2UgdGhlIGhvc3QncyBzdHJpbmcuaCB3YXMgaW50ZXJmZXJpbmcKICAgIHdpdGggdS1ib290J3MgbGludXgvc3RyaW5nLmguICBJdCBkb2Vzbid0IGxvb2sgbGlrZSB3ZSBuZWVkIHRoZSB1LWJvb3Qgb25lIGlmCiAgICB3ZSdyZSBidWlsZGluZyBmb3IgdGhlIGhvc3QsIHNvIG5vdyB3ZSBvbmx5IGluY2x1ZGUgd2hlbiBidWlsZGluZyBpbnNpZGUKICAgIHUtYm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTk3M2UzYzYxNDcyMWJiZjE2OTg4MmZmYzNiZTI2NmE2NjExY2Q2MApBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDkgMTY6MDM6NDAgMjAwOCAtMDUwMAoKICAgIENoYW5nZSBpbml0ZHJhbSgpIHJldHVybiB0eXBlIHRvIHBoeXNfc2l6ZV90CgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiBpbml0ZHJhbSgpIGZyb20gbG9uZyBpbnQgdG8gcGh5c19zaXplX3QuCiAgICBUaGlzIGlzIHJlcXVpcmVkIGZvciBhIGNvdXBsZSBvZiByZWFzb25zOiBsb25nIGludCBsaW1pdHMgdGhlIGFtb3VudCBvZiBkcmFtCiAgICB0byAyR0IsIGFuZCB1LWJvb3QgaW4gZ2VuZXJhbCBpcyBtb3Zpbmcgb3ZlciB0byBwaHlzX3NpemVfdCB0byByZXByZXNlbnQgdGhlCiAgICBzaXplIG9mIHBoeXNpY2FsIG1lbW9yeS4gIHBoeXNfc2l6ZV90IGlzIGRlZmluZWQgYXMgYW4gdW5zaWduZWQgbG9uZyBvbiBhbG1vc3QKICAgIGFsbCBjdXJyZW50IHBsYXRmb3Jtcy4KCiAgICBUaGlzIHBhdGNoICpvbmx5KiBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgaW5pdGRyYW0gZnVuY3Rpb24gKGluCiAgICBpbmNsdWRlL2NvbW1vbi5oLCBhcyB3ZWxsIGFzIGluIGVhY2ggYm9hcmQncyBpbXBsZW1lbnRhdGlvbiBvZiBpbml0ZHJhbSkuICBJdAogICAgZG9lcyBub3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSBjb2RlIGluc2lkZSB0aGUgZnVuY3Rpb24gb24gYW55IG9mIHRoZSBwbGF0Zm9ybXM7CiAgICBwbGF0Zm9ybXMgd2hpY2ggd2lzaCB0byBzdXBwb3J0IG1vcmUgdGhhbiAyR0Igb2YgRFJBTSB3aWxsIG5lZWQgdG8gbW9kaWZ5CiAgICB0aGVpciBpbml0ZHJhbSgpIGZ1bmN0aW9uIGNvZGUuCgogICAgQnVpbGQgdGVzdGVkIHdpdGggTUFLRUFMTCBmb3IgcHBjLCBhcm0sIG1pcHMsIG1pcHMtZWwuIEJvb3RlZCBvbiBwb3dlcnBjCiAgICBNUEM4NjQxSFBDTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzOTFmZDkzYWIyM2UxNWFiM2RkNThhNTRmNWI2MDkwMjQwMDljMzc4CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMDozNzoxOCAyMDA4IC0wNTAwCgogICAgQ2hhbmdlIGxtYiB0byB1c2UgcGh5c19zaXplX3QvcGh5c19hZGRyX3QKCiAgICBUaGlzIHVwZGF0ZXMgdGhlIGxtYiBjb2RlIHRvIHVzZSBwaHlzX3NpemVfdAogICAgYW5kIHBoeXNfYWRkcl90IGluc3RlYWQgb2YgdW5zaWduZWQgbG9uZy4gIE90aGVyIGNvZGUKICAgIHdoaWNoIGludGVyYWN0cyB3aXRoIHRoaXMgY29kZSwgbGlrZSBnZXRlbnZfYm9vdG1fc2l6ZSgpCiAgICBpcyBhbHNvIHVwZGF0ZWQuCgogICAgQm9vdGVkIG9uIE1QQzg2NDFIUENOLCBidWlsZC10ZXN0ZWQgcHBjLCBhcm0sIG1pcHMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjFiMDlmYzI5NTJkYzYzNjAxN2RmNGU3OTcwZTNkZTEzMjI3NmJhMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVuIDkgMjA6Mzc6MTcgMjAwOCAtMDUwMAoKICAgIENoYW5nZSBwcmludF9zaXplIHRvIHRha2UgcGh5c19zaXplX3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNTdjYTNlMTI4Y2MxMGExMzNiYTc5YmM3ZWMzZTdiNTBlN2M4ZmJlCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gOSAyMDozNzoxNiAyMDA4IC0wNTAwCgogICAgQ2hhbmdlIGJkL2dkIG1lbXNpemUvcmFtX3NpemUgdG8gYmUgcGh5c19zaXplX3QuCgogICAgQ3VycmVudGx5LCBib3RoIGFyZSBkZWZpbmVkIGFzIGFuIHVuc2lnbmVkIGxvbmcsIGJ1dAogICAgc2hvdWxkIGJlIHBoeXNfc2l6ZV90LiBUaGlzIHNob3VsZCByZXN1bHQgaW4gbm8gcmVhbCBjaGFuZ2UsCiAgICBzaW5jZSBwaHlzX3NpemVfdCBpcyBjdXJyZW50bHkgYW4gdW5zaWduZWQgbG9uZyBmb3IgYWxsIHRoZQogICAgZGVmYXVsdCBjb25maWdzLiAgQWxzbyBhZGQgcHJpbnRfbG51bSB0byBjbWRfYmRpbmZvIHRvIGRlYWwKICAgIHdpdGggdGhlIHBvdGVudGlhbGx5IHdpZGVyIG1lbXNpemUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmEwNGY3MDEwOTU4ZTg4YTg5MTBmMmExMjNmZWU1M2ZkYzcyZTAxMwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKdW4gMTAgMTY6MTY6MDIgMjAwOCAtMDUwMAoKICAgIEZTTCBMQVc6IEFkZCBuZXcgaW50ZXJmYWNlIHRvIHVzZSB0aGUgbGFzdCBmcmVlIExBVwoKICAgIExBV3MgaGF2ZSB0aGUgY29uY2VwdCBvZiBwcmlvcml0eSBzbyBpdHMgdXNlZnVsIHRvIGJlIGFibGUgdG8gYWxsb2NhdGUKICAgIHRoZSBsb3dlc3QgKGhpZ2hlc3QgbnVtYmVyKSBwcmlvcml0eS4gIFdlIHdpbGwgZW5kIHVwIHVzaW5nIHRoaXMgd2l0aCB0aGUKICAgIG5ldyBERFIgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg1OWE4NmEyNWM1NjlkMzY2NWZmNDEzZDFkOTIzMzk0YjhhOTYxZjMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSnVuIDExIDAwOjUxOjQ1IDIwMDggLTA1MDAKCiAgICA4NXh4Lzg2eHg6IE1vdmUgdG8gZHluYW1pYyBtZ210IG9mIExBV3MKCiAgICBXaXRoIHRoZSBuZXcgTEFXIGludGVyZmFjZSAoc2V0X25leHRfbGF3KSB3ZSBjYW4gbW92ZSB0byBsZXR0aW5nIHRoZQogICAgc3lzdGVtIGFsbG9jYXRlIHdoaWNoIExBV3MgYXJlIHVzZWQgZm9yIHdoYXQgcHVycG9zZS4gIFRoaXMgbWFrZXMgbGlmZQogICAgYSBiaXQgZWFzaWVyIGdvaW5nIGZvcndhcmQgd2l0aCB0aGUgbmV3IEREUiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMDYwMDU0ZGFkYmJlNzAyN2NhMDg4ZWVkODA2YTNlZjFmODJmZGI3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEp1biAxMSAwMDo0NDoxMCAyMDA4IC0wNTAwCgogICAgRlNMIExBVzogS2VlcCB0cmFjayBvZiBMQVcgYWxsb2NhdGlvbnMKCiAgICBNYWtlIGl0IHNvIHdlIGtlZXAgdHJhY2sgb2Ygd2hpY2ggTEFXcyBoYXZlIGFsbG9jYXRlZCBhbmQgcHJvdmlkZQogICAgYSBmdW5jdGlvbiAoc2V0X25leHRfbGF3KSB3aGljaCBjYW4gYWxsb2NhdGUgYSBMQVcgZm9yIHVzIGlmIG9uZSBpcwogICAgZnJlZS4KCiAgICBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgbW92ZSB0byBkb2luZyBtb3JlICJkeW5hbWljIiBMQVcgYWxsb2NhdGlvbgogICAgc2luY2UgdGhlIG1ham9yaXR5IG9mIHVzZXJzIGRvbnQgcmVhbGx5IGNhcmUgYWJvdXQgd2hhdCBMQVcgbnVtYmVyCiAgICB0aGV5IGFyZSBhdC4KCiAgICBBbHNvLCBhZGQgQ09ORklHX01QQzg1NDAgb3IgQ09ORklHX01QQzg1NjAgdG8gdGhvc2UgYm9hcmRzIHdoaWNoIG5lZWRlZCB0aGVtCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGRlNzRhMTU5Y2FhNmUxOGI0ODFmZWMwMWQ0MGI4ODVhZWJiNTY2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDIyOjMxOjU3IDIwMDggLTA1MDAKCiAgICA4NXh4OiByZW1vdmUgZHVtbXkgYm9hcmRfZWFybHlfaW5pdF9mCgogICAgQSBudW1iZXIgb2YgYm9hcmQgcG9ydHMgaGF2ZSBlbXB0eSB2ZXJzaW9uIG9mIGJvYXJkX2Vhcmx5X2luaXRfZgogICAgZm9yIG5vIHJlYXNvbiBzaW5jZSB3ZSBjb250cm9sIGl0cyB2aWEgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgxZTU2ZTlhZjBkNDM3MTJkYjhlZmI4NDM2MDZhOGQ2MmVhYjQ1NGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSnVuIDkgMTg6NTU6MzggMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogVXBkYXRlIGNvbmZpZy5oCgogICAgKiBFbmFibGUgZmxhc2ggcHJvZ3Jlc3MKICAgICogcmVtb3ZlIENMRUFSX0xBVzAgc2luY2Ugd2UgZG9udCByZWFsbHkgdXNlIGl0CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5NzhlODE2MDRjMWIyODUyNmVkNTgwZGYwZmJlNjRlYjgzODRlOTRmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEp1biA5IDEzOjM3OjI0IDIwMDggLTA1MDAKCiAgICA4NXh4OiBSZW1vdmUgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgbWVtb3J5IHRlc3QgY29kZS4KCiAgICBSZW1vdmUgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgRERSIHRlc3QgY29kZSBmcm9tIEZTTCA4NXh4IGJvYXJkcy4KICAgIEJlc2lkZXMsIG90aGVyIGNvbW1vbiBjb2RlIGV4aXN0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEyM2NkZGRlMWE5NWY5ODdlM2ZlMmE3MjBhN2VjOTM3NWI3MjY0ZDcKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgSnVuIDYgMTU6NDI6NDUgMjAwOCArMDIwMAoKICAgIFNvY3JhdGVzOiBBZGRlZCBGUEdBIGJhc2UgYWRkcmVzcyB1cGRhdGUgaW4gRkRULgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgZmQ1MWIwZTBlNjIwYjhiYzlmZDRmNmRhYTNhNGZhNmY1ZTEzMTZmNApBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0NCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IE5BTkQgc3VwcG9ydCBhZGRlZC4gQ2hhbmdlZCB0aGUgVS1Cb290IGJhc2UgYWRkcmVzcyBhbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDI0OGFlNWNmYzhiZjY5MDc0ZDFkYTA5OWRjNDk1ZDhlMDYwNzA1NDcKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglGcmkgSnVuIDYgMTU6NDI6NDMgMjAwOCArMDIwMAoKICAgIE5BTkQ6IEFkZGVkIHN1cHBvcnQgZm9yIDEyOC1iaXQgT09CLCBhZGFwdGVkCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzMWNhMDIwODYxMmYyZWI1NzY5MDExMGQ3YzI4MTU5NTM2NTBlNDdiCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEp1biA2IDE1OjQyOjQyIDIwMDggKzAyMDAKCiAgICBTb2NyYXRlczogYWRkZWQgbWlzc2VkIGZpbGUgd2l0aCBVUE1BIGNvbmZpZ3VyYXRpb24gZGF0YS4KCiAgICBTaWduZWQtb2YtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNTlhYmQxNWI0M2NhYjdhNGQxOWRlNGJhMDk0MzgzN2Q5NTU1ZjdiYQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0MSAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEFkZGVkIEZQR0EgbWFwcGluZy4gTEFXcyBhbmQgVExCcyBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNzQwMjgwZTY4Y2NjMGI5NzFlNjEzZmFjZTdlYWFhOGJkMTM4MmI4YwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0MCAyMDA4ICswMjAwCgogICAgQWRkZWQgdGhlIHVwbWNvbmZpZygpIGZ1bmN0aW9uIGZvciA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDM5ZTY4NTE0ZmY5NDM5MzBlZTY5MmNmZjNmZGUwMzUzMmViN2ZlYwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CUZyaSBKdW4gNiAxNTo0MjozOSAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IGNvbmZpZyBmaWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBlOGNjM2YwNGIxMjRmNzU3YWY0NTI4MjA2ZTYwZDhlYjcxNWFlMDgzCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjoxMCAyMDA4ICswMjAwCgogICAgVFFNODV4eDogQ2hhbmdlIG1lbW9yeSBtYXAgdG8gc3VwcG9ydCBGbGFzaCBtZW1vcnkgPiAxMjggTWlCCgogICAgU29tZSBUUU04NXh4IGJvYXJkcyBjb3VsZCBiZSBlcXVpcHBlZCB3aXRoIHVwIHRvIDEgR2lCIChOT1IpIEZsYXNoCiAgICBtZW1vcnkuIFRoZSBjdXJyZW50IG1lbW9yeSBtYXAgb25seSBzdXBwb3J0cyB1cCB0byAxMjggTWlCIEZsYXNoLgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBDT05GSUdfVFFNX0JJR0ZMQVNILiBJZgogICAgc2V0LCB1cCB0byAxIEdpQiBmbGFzaCBpcyBzdXBwb3J0ZWQuIFRvIGFjaGlldmUgdGhpcywgdGhlIG1lbW9yeQogICAgbWFwIGhhcyB0byBiZSBhZGp1c3RlZCBpbiBncmVhdCBwYXJ0cyAoZm9yIGV4YW1wbGUgdGhlIENDU1JCQVIgaXMKICAgIG1vdmVkIGZyb20gMHhFMDAwMDAwMCB0byAweEEwMDAwMDAwKS4KCiAgICBJZiB5b3Ugd2FudCB0byBib290IExpbnV4IHdpdGggQ09ORklHX1RRTV9CSUdGTEFTSCBzZXQsIHRoZSBuZXcKICAgIG1lbW9yeSBtYXAgYWxzbyBoYXMgdG8gYmUgY29uc2lkZXJlZCBpbiB0aGUga2VybmVsIChjaGFuZ2VkCiAgICBDQ1NSQkFSIGFkZHJlc3MsIGNoYW5nZWQgUENJIElPIGJhc2UgYWRkcmVzcywgLi4uKS4gUGxlYXNlIHVzZQogICAgYW4gYXBwcm9wcmlhdGUgRmxhdCBEZXZpY2UgVHJlZSBibG9iICh0cW04NTQ4LmR0YikuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCAxYzJkZWZmMjJjZDZlMmJmMGU2MThmZDZlMDljYTNlZWM1YThkMDUxCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowOSAyMDA4ICswMjAwCgogICAgVFFNODV4eDogTkFORCBzdXBwb3J0IHZpYSBsb2NhbCBidXMgVVBNQgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIG9uIHRoZSBUUU04NTQ4LiBJdCBpcyBkaXNhYmxlZCBieQogICAgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZXMuIEl0IGlzIG5vdyBiYXNlZCBvbgogICAgdGhlIHJlLXdyaXR0ZW4gRlNMIE5BTkQgVVBNIGRyaXZlci4gQSBwYXRjaCBoYXMgYmVlbiBwb3N0ZWQgZWFybGllciB0b2RheQogICAgd2l0aCB0aGUgc3ViamVjdDoKCiAgICAiTkFORCBGU0wgVVBNOiBkcml2ZXIgcmUtd3JpdGUgdXNpbmcgdGhlIGh3Y29udHJvbCBjYWxsYmFjayIKCiAgICBOb3RlIHRoYXQgdGhlIFIvQiBwaW4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGF0IG1vZHVsZSByZXF1aXJpbmcgdG8gdXNlCiAgICB0aGUgc3BlY2lmaWVkIG1heGltdW0gZGVsYXkgdGltZS4KCiAgICBOb3RlOiBXaXRoIE5BTkQgc3VwcG9ydCBlbmFibGVkIHRoZSBzaXplIG9mIHRoZSBVLUJvb3QgaW1hZ2UgZXhjZWVkcwogICAgMjU2IEtCIGFuZCBURVhUX0JBU0UgbXVzdCB0aGVyZWZvcmUgYmUgc2V0IHRvIDB4ZmZmODAwMDAgaW4gY29uZmlnLm1rLAogICAgZG91YmxpbmcgdGhlIGltYWdlIHNpemUgOi0oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBXYWVobmVyIDx0aG9tYXMud2FlaG5lckB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KCmNvbW1pdCBiOWU4MDc4YmIzZjNjNDgxMTFhNzA4MWUyNzI3OTkzOGMzYTQ0NWUxCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowOCAyMDA4ICswMjAwCgogICAgVFFNODU0ODogUENJIGV4cHJlc3Mgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQQ0kgZXhwcmVzcyBjYXJkcy4gVGhlIGJvYXJkIHN1cHBvcnQKICAgIG5vdyB1c2VzIGNvbW1vbiBGU0wgUENJIGluaXQgY29kZSwgZm9yIGJvdGgsIFBDSSBhbmQgUENJZSBvbiBhbGwKICAgIFRRTTg1eHggbW9kdWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2FlaG5lciA8dGhvbWFzLndhZWhuZXJAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMTI4N2UwYzU1YTJlZTJjNTc1YWM5Y2U4ZTQzMDJjZDQwODViZTg3NgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDcgMjAwOCArMDIwMAoKICAgIFRRTTg1NDg6IEJhc2ljIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZXMKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlIGZyb20gVFEtQ29tcG9uZW50cwogICAgKGh0dHA6Ly93d3cudHFjLmRlLykgaW5jbHVkaW5nIEREUjIgU0RSQU0gaW5pdGlhbGlzYXRpb24gYW5kIHN1cHBvcnQgZm9yCiAgICBlVFNFQyAzIGFuZCA0CgogICAgRnVydGhlcm1vcmUgRmxhc2ggYnVmZmVyIHdyaXRlIGhhcyBiZWVuIGVuYWJsZWQgdG8gc3BlZWQgdXAgb3V0cHV0IHRvCiAgICB0aGUgRmxhc2ggYnkgYXBwcm94LiBhIGZhY3RvciBvZiAxMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2FlaG5lciA8dGhvbWFzLndhZWhuZXJAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMjU5OTEzNTMyMDRjNzhiMDk0YzNjMWZlYzkwMTgyZGNkNjA3YWI4ZgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDYgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IFN1cHBvcnQgZm9yIEZsYXQgRGV2aWNlIFRyZWUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTGludXgga2VybmVscyB1c2luZyB0aGUgRmxhdCBEZXZpY2UgVHJlZS4KICAgIEl0IGFsc28gcmUtZGVmaW5lcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBzZXR0aW5ncyBmb3IgYm9vdGluZyBMaW51eAogICAgd2l0aCB0aGUgRkRUIGJsb2IuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgZDllZTg0M2Q1NGM1NDc3NmUxZmRiODYzMzZjZTU1NDkwNmE4NzMzMQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDUgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IFN1cHBvcnQgZm9yIEludGVsIDgyNTI3IGNvbXBhdGlibGUgQ0FOIGNvbnRyb2xsZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFVQTUMgUkFNIHRvIHN1cHBvcnQgdXAgdG8gdHdvCiAgICBJbnRlbCA4MjUyNyBjb21wYXRpYmxlIENBTiBjb250cm9sbGVyIG9uIHRoZSBUUU04NXh4IG1vZHVsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdhZWhuZXIgPHRob21hcy53YWVobmVyQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDUxOGQ1Y2ZlNzI5MTYzMjNjNzQ2YWYxNjQ3NzY0NDU5OTE0ZjU1NWYKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjEyOjA0IDIwMDggKzAyMDAKCiAgICBUUU04NXh4OiBCdWdmaXggaW4gdGhlIFNEUkFNIGluaXRpYWxpc2F0aW9uCgogICAgVGhlIENTMF9CTkRTIHJlZ2lzdGVyIGlzIG5vdyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBkZXRlY3RlZAogICAgbWVtb3J5IHNpemUuCgogICAgU2lnbmVkLW9mZi1ieSBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA0NWRlZTJlNjIwY2NlYzZhYzdiMzU0OGZlODk3OWEzNGZkMDMwZTVkCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowMyAyMDA4ICswMjAwCgogICAgVFFNODV4eDogRml4IGNoaXAgc2VsZWN0IGNvbmZpZ3VyYXRpb24gZm9yIHNlY29uZCBGTEFTSCBiYW5rCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcmUtY2FsY3VsYXRpb24gb2YgdGhlIGF1dG9tYXRpYyBjaGlwIHNlbGVjdAogICAgY29uZmlndXJhdGlvbiBmb3IgYm9hcmRzIHdpdGggdHdvIHBvcHVsYXRlZCBGTEFTSCBiYW5rcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA0NjM0NmYyN2NkYTZmZDAyNWE0OTZiZGU4ZjJkNGFlZWUwNGFjYTVmCkF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CkRhdGU6CVRodSBKdW4gNSAxMzoxMjowMiAyMDA4ICswMjAwCgogICAgVFFNODV4eDogU3VwcG9ydCBmb3IgU3BhbnNpb24gJ04nIHR5cGUgZmxhc2hlcyBhZGRlZAoKICAgIFRoZSAnTicgdHlwZSBTcGFuc2lvbiBmbGFzaGVzIChTMjlHTHh4eE4gc2VyaWVzKSBoYXZlIGJpZ2dlciBzZWN0b3JzLAogICAgdGhhbiB0aGUgZm9ybWVybHkgdXNlZCAnTScgdHlwZXMgKFMyOUdMeHh4TSBzZXJpZXMpLCBzbyB0aGUgZmxhc2ggbGF5b3V0CiAgICBuZWVkcyB0byBiZSBjaGFuZ2VkIC0+IG5ldyBzdGFydCBhZGRyZXNzIG9mIHRoZSBlbnZpcm9ubWVudC4gVGhlIG1hY3JvCiAgICBkZWZpbml0aW9uIENPTkZJR19UUU1fRkxBU0hfTl9UWVBFIGlzIHVuZGVmaW5lZCBieSBkZWZhdWx0IGFuZCBtdXN0IGJlCiAgICBkZWZpbmVkIGZvciBib2FyZHMgd2l0aCAnTicgdHlwZSBmbGFzaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgNWQ1YmQ4MzhmNzZlYWRlMjJjMGVhNDBhNTAwMzg5ZjkyNGQwZGEzNgpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTI6MDEgMjAwOCArMDIwMAoKICAgIFRRTTg1eHg6IEZpeCBDUE0gcG9ydCBwaW4gY29uZmlndXJhdGlvbgoKICAgIERvIG5vdCBjb25maWd1cmUgcG9ydCBwaW5zIFBEMzAvUEQzMSBhcyBTQ0MxIFR4RC9SeEQgZXhjZXB0IGZvciB0aGUgVFFNODU2MAogICAgYm9hcmQuIE9uIHRoZSBvdGhlciBUUU04NXh4IGJvYXJkcyAoVFFNODU0MSBhbmQgVFFNODU1NSkgU0NDMSBpcyBub3QgdXNlZAogICAgYXMgc2VyaWFsIGludGVyZmFjZSBhbnl3YXkuIFdvcnNlLCBvbiBzb21lIGJvYXJkIHZhcmlhbnRzIGNvbmZpZ3VyaW5nIHRoZQogICAgcGlucyBmb3IgU0NDMSBsZWFkcyB0byBzaG9ydCBjaXJjdWl0cyAoZm9yIGV4YW1wbGUgb24gdGhlIFRRTTg1NDEtQkcpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGI5OWJhMTY3OWU4Y2Q1MWIwMjNlNjcwOThjODllNjA2ZTQ3MTM3ZDIKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjEyOjAwIDIwMDggKzAyMDAKCiAgICBUUU04NXh4OiBWYXJpb3VzIGNvZGluZyBzdHlsZSBmaXhlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IGFlOWU5N2ZhOTZmNjQzYzhiYTJiNjY2YjA2YTAyNmNjODcxN2ViMDAKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDEwIDIyOjE1OjU4IDIwMDggLTA0MDAKCiAgICBsaWJmZHQ6IE1vdmUgdGhlIHdvcmtpbmdfZmR0IHBvaW50ZXIgdG8gY21kX2ZkdC5jCgogICAgVGhlIHdvcmtpbmdfZmR0IHBvaW50ZXIgd2FzIGRlY2xhcmVkIGluIGNvbW1vbi9mZHRfc3VwcG9ydC5jIGJ1dCB3YXMKICAgIG5vdCB1c2VkIHRoZXJlLiAgTW92ZSBpdCB0byBjb21tb24vY21kX2ZkdC5jIHdoZXJlIGl0IGlzIHVzZWQgKGl0IGlzCiAgICBhbHNvIHVzZWQgaW4gbGliX3BwYy9ib290bS5jKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGU0ODliOWMwNzhlMjJiMGQ5ZTc1ZjAwMmNkMmExYmQ5NjdlODhmNWUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDEwIDExOjA2OjE3IDIwMDggLTA1MDAKCiAgICBmZHQ6IHVuc2hhZG93IGdsb2JhbCB3b3JraW5nIGZkdCB2YXJpYWJsZQoKICAgIGRpZmZlcmVudGlhdGUgd2l0aCBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIHNhbWUgbmFtZSBieSByZW5hbWluZyB0aGUKICAgIGdsb2JhbCAnZmR0JyB2YXJpYWJsZSAnd29ya2luZ19mZHQnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFlYjBlMjVkOWQ4ZmQ4ZWZkZmI5M2Y2NzBhNDE3NjYzZjM4NjAyMgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAxMCAxODo0OTozNCAyMDA4IC0wNTAwCgogICAgc29jcmF0ZXM6IEZpeCBQQ0kgY2xrIGZpeCBwYXRjaAoKICAgIFRoZSBzdWJtaXR0ZWQgcGF0Y2ggc2VlbXMgdG8gaGF2ZSBiZWVuIG1vcmUgdXAtdG8tZGF0ZSwgYnV0IGFuIG9sZGVyIHBhdGNoIHdhcwogICAgYWxyZWFkeSBpbiB0aGUgcmVwb3NpdG9yeS4JVGhpcyBwYXRjaCBlbmNvbXBhc3NlcyB0aGUgZGlmZmVyZW5jZXMKCiAgICBUYWtlbiBlbnRpcmVseSBmcm9tIFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3NWE1N2VmNmU0YjYxM2M4MTQzNDk3MWU5NmVkNzBjZjllYzliYTAKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJVGh1IEp1biA1IDEzOjAyOjI5IDIwMDggKzAyMDAKCiAgICBOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrCgogICAgVGhpcyBpcyBhIHJlLXdyaXRlIG9mIHRoZSBOQU5EIEZTTCBVUE0gZHJpdmVyIHVzaW5nIHRoZSBtb3JlIHVuaXZlcnNhbAogICAgaHdjb250cm9sIGNhbGxiYWNrIChpbnN0ZWFkIG9mIHRoZSBjbWRmdW5jIGNhbGxiYWNrKS4gSGVyZSBpcyBhIGJyaWVmCiAgICBsaXN0IG9mIGZ1cmhlciBtb2RpZmljYXRpb25zOgoKICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGUgVVBNIHNldHVwIHdyaXRpbmcgdGhlIFVQTSBhcnJheSBoYXMgYmVlbgogICAgICByZW1vdmVkIGZyb20gdGhlIGRyaXZlciBhbmQgbXVzdCBub3cgYmUgZG9uZSBieSB0aGUgYm9hcmQgc3BlY2lmaWMKICAgICAgY29kZS4KCiAgICAtIFRoZSBidXMgd2lkdGggZGVmaW5pdGlvbiBpbiAic3RydWN0IGZzbF91cG1fbmFuZCIgaXMgbm93IGluIGJpdHMgdG8KICAgICAgY29tcGx5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgTGludXggZHJpdmVyIGFuZCA4LCAxNiBhbmQgMzIgYml0CiAgICAgIGFjY2Vzc2VzIGFyZSBzdXBwb3J0ZWQuCgogICAgLSBjaGlwLT5kZXZfcmVhZCBpcyBvbmx5IHNldCBpZiBmdW4tPmRldl9yZWFkeSAhPSBOVUxMLCB3aGljaCBpcwogICAgICByZXF1aXJlZCBmb3IgYm9hcmRzIG5vdCBjb25uZWN0aW5nIHRoZSBSL0IgcGluLgoKICAgIC0gQSBmZXcgaXNzdWUgaGF2ZSBiZWVuIGZpeGVkIHdpdGggTXhNUiBiaXQgbWFuaXB1bGF0aW9uIGxpa2UgaW4gdGhlCiAgICAgIGNvcnJlc3BvbmRpbmcgTGludXggZHJpdmVyLgoKICAgIE5vdGU6IEkgdGhpbmsgdGhlICJpb19hZGRyIiBmaWVsZCBvZiAic3RydWN0IGZzbF91cG0iIGNvdWxkIGJlIHJlbW92ZWQKCSAgYXMgd2VsbCwgYmVjYXVzZSB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IGRldGVybWluZWQgYnkKCSAgIm5hbmQtPklPX0FERFJfW1JXXSIsIGJ1dCBJJ20gbm90IDEwMCUgc3VyZS4KCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHRlc3RlZCBvbiBhIFRRTTg1NDggbW9kdWxlcyB3aXRoIHRoZSBOQU5EIGNoaXAKICAgIE1pY3JvbiBNVDI5RjhHMDhGQUJXUC4KCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBwb3N0ZWQgdG8gdGhpcyBsaXN0IGEgZmV3CiAgICBtaW51dGVzIGFnbzoKCiAgICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKICAgICAgODN4eC84NXh4Lzg2eHg6IGFkZCBtb3JlIE14TVIgbG9jYWwgYnVzIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBBY2tlZC1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgNmJlZWNmYmI1NDI5OTJlZWRlNTgzMTI0MGNkNTg2NzgyNzQ2ODNhOQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglUaHUgSnVuIDUgMTM6MTE6NTkgMjAwOCArMDIwMAoKICAgIE1QQzg1eHg6IEJlYXV0aWZ5IGJvb3Qgb3V0cHV0IG9mIEwyIGNhY2hlIGNvbmZpZ3VyYXRpb24KCiAgICBUaGUgYm9vdCBvdXRwdXQgaXMgbm93IGFsaWduZWQgcG9wZXJseSB3aXRoIG90aGVyIGJvb3Qgb3V0cHV0CiAgICBsaW5lcywgZS5nLjoKCiAgICAgIEZMQVNIOiAxMjggTUIKICAgICAgTDI6ICAgIDUxMiBLQiBlbmFibGVkCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgMzk4NDE1MTE0ZjBhNzA1MTYzYTE0NTQzZTlmZWYwM2Y3MzRiMWZmYQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgSnVuIDQgMTI6NDU6MjIgMjAwOCArMDIwMAoKICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKCiAgICBQUEM6IGFkZCBhY2Nlc3NvciBtYWNyb3MgdG8gY2xlYXIgYW5kIHNldCBiaXRzIGluIG9uZSBzaG90CgogICAgVGhpcyBwYXRjaCBhZGRzIG1hY3JvcyBmcm9tIGxpbnV4L2luY2x1ZGUvYXNtLXBvd2VycGMvaW8uaCB0byBjbGVhciBhbmQKICAgIHNldCBiaXRzIGluIG9uZSBzaG90IHVzaW5nIHRoZSBpbl9iZTMyLCBvdXRfYmUzMiwgZXRjLiBhY2Nlc3NvciBmdW5jdGlvbnMuCiAgICBUaGV5IGFyZSB2ZXJ5IGhhbmR5IHRvIG1hbmlwdWxhdGUgYml0cyBpdCBJL08gcmVnaXN0ZXJzLgoKICAgIFRoaXMgcGF0Y2ggaXMgcmVxdWlyZWQgZm9yIG15IGZvcnRoY29taW5nIEZTTCBOQU5EIFVQTSBkcml2ZXIgcmUtd3JpdGUgYW5kCiAgICB0aGUgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgoKY29tbWl0IDQ2Nzc5ODhjN2VkYzA3MGMzNzg2ZDNkYjc5OTRhYmVjYTNhYjgyYTAKQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KRGF0ZToJV2VkIEp1biA0IDEzOjUyOjE3IDIwMDggKzAyMDAKCiAgICBUUU06IG1vdmUgVFFNIGJvYXJkcyB0byBib2FyZC90cWMKCiAgICBNb3ZlIGFsbCBUUU0gYm9hcmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZlbmRvciBzcGVjaWZpYyBkaXJlY3RvcnkgInRxYyIKICAgIGZvciBtb2R1bGVzIGZyb20gVFEtQ29tcG9uZW50cyBHbWJIIChodHRwOi8vd3d3LnRxYy5kZSkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgNmZhYjJmZTcyY2E1YmY5NTI4MGNkNTJjZGYzNzhhZjNlNTA2ZWI1MApBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglNb24gSnVuIDIgMTI6MDk6MzAgMjAwOCArMDIwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwoKICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBtb3JlIG1hY3JvIGRlZmluaXRpb25zIGZvciB0aGUgVVBNIE1hY2hpbmUgTW9kZSBSZWdpc3RlcnMKICAgIFRoZXkgYXJlIGNvcGllZCBmcm9tICJpbmNsdWRlL21wYzgyeHguaCIgdG8gc2ltcGxpZnkgdGhlIG1lcmdlIG9mIGFsbCA4eHh4CiAgICBjb21tb24gbG9jYWwgYnVzIGRlZmluaXRpb25zIGludG8gaW5jbHVkZS9hc20tcHBjL2ZzbF9sYmMuaC4gVGhleSBhcmUKICAgIHJlcXVpcmVkIGZvciBteSBmb3J0aGNvbWluZyBGU0wgTkFORCBVUE0gZHJpdmVyIHJlLXdyaXRlIGFuZCB0aGUgc3VwcG9ydAogICAgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZS4KCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdHdvIHBhdGNoZXMgZnJvbSBBbnRvbiBWb3JvbnRzb3Y6CgogICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3UtYm9vdC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnMDY1MTEuaHRtbAogICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3UtYm9vdC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnMDY1ODcuaHRtbAoKICAgIEkgbGVhdmUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbiBmaXhlcywgY29kZSBiZWF1dGlmaWNhdGlvbiBhbmQgbmFtZQogICAgY29ycmVjdGlvbnMgdG8gc29tZWJvZHkgZWxzZSA7LSguCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Cgpjb21taXQgYzhjNWZjMjY2ZTQ0OTllMjgzYzI5M2NjYjk3Mjg2MzE1NmFhNDEzNApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglUaHUgTWF5IDI5IDE4OjE0OjU2IDIwMDggKzA0MDAKCiAgICA4M3h4Lzg1eHg6IGZ1cnRoZXIgbG9jYWxidXMgY2xlYW51cHMKCiAgICBNZXJnZSBtcGM4NXh4LmgncyBMQkMgZGVmaW5lcyB0byBmc2xfbGJjLmguIEFsc28sIGFkb3B0IEFDUyBuYW1lcwogICAgZnJvbSBtcGM4NXh4LmgsIHNvIEFDU18wYjEwIHJlbmFtZWQgdG8gQUNTX0RJVjQsIEFDU18wYjExIHRvIEFDU19ESVYyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQyZGJkNjY3Yzg4ZDQ5Njg4MmQ1M2UyMjY1NmU4OWI2NTQyMDU0OTIKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIE1heSAyOCAxODoyMDoxNSAyMDA4ICswNDAwCgogICAgODN4eC84NXh4Lzg2eHg6IGZhY3RvciBvdXQgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaAoKICAgIFRoaXMgcGF0Y2ggbW92ZXMgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaCwgc28gd2UgY291bGQKICAgIHVzZSBpdCBvbiBNUEM4NXh4IGFuZCBNUEM4Nnh4IHByb2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgNzMwYjJmY2Y2ZmNkOWVlYzNlYTg2ZmJiMDg3YzNmOThhYTIzYTc2OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBNYXkgMjkgMTE6MjI6MDYgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCBzZXR0aW5nIG9mIGNhY2hlIHByb3BzIGluIHRoZSBkZXZpY2UgdHJlZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRkYmRiNzY4MWUyNDM0MzE1MzBkZjA3MjU2MjcxOTJhMGM0YWVmZGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgSnVuIDEwIDE2OjUzOjQ2IDIwMDggLTA1MDAKCiAgICA4NXh4OiBleHBvc2UgY3B1IGlkZW50aWZpY2F0aW9uCgogICAgVGhlIGN1cnJlbnQgY3B1IGlkZW50aWZpY2F0aW9uIGNvZGUgaXMgdXNlZCBqdXN0IHRvIHJldHVybiB0aGUgbmFtZQogICAgb2YgdGhlIHByb2Nlc3NvciBhdCBib290LiAgVGhlcmUgYXJlIHNvbWUgb3RoZXIgbG9jYXRpb25zIHRoYXQgdGhlIG5hbWUKICAgIGlzIHVzZWZ1bCAoZGV2aWNlIHRyZWUgc2V0dXApLiAgRXhwb3NlIHRoZSBmdW5jdGlvbmFsaXR5IHRvIG90aGVyIGJpdHMKICAgIG9mIGNvZGUuCgogICAgQWxzbywgZHJvcCB0aGUgJ0UnIHN1ZmZpeCBhbmQgYWRkIGl0IG9uIGJ5IGxvb2tpbmcgYXQgdGhlIFNWUiB2ZXJzaW9uCiAgICB3aGVuIHdlIHByaW50IHRoaXMgb3V0LiAgVGhpcyBpcyBtYWlubHkgdG8gYWxsb3cgdGhlIG1vc3QgZmxleGlibGUgdXNlCiAgICBvZiB0aGUgbmFtZS4gIFRoZSBkZXZpY2UgdHJlZSBjb2RlIHRlbmRzIHRvIG5vdCBjYXJlIGFib3V0IHRoZSAnRScgc3VmZml4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjMyOWZlMTEzZDg0N2U0M2NjYThlNGEwZTRlZGQ2MTNiNTBiODQ5MgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTAgMTM6MjU6MjQgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IE1WQkxNNzogbWlub3IgYnVpbGQgZml4dXBzCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMTI5M2U1NDliNTZkYTEzNWVmMzJmZmNhNWI5ZDM1YTE2YWE2ODAyCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgSnVuIDEwIDA5OjE0OjA1IDIwMDggKzAyMDAKCiAgICBhZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03IChib2FyZCttYWtlIGZpbGVzKQoKICAgIEFkZCBNUEM4MzQzIGJhc2VkIGJvYXJkIG12Qmx1ZUxZTlgtTTcuCiAgICBJdCdzIGEgc2luZ2xlIGJvYXJkIHN0ZXJlbyBjYW1lcmEgc3lzdGVtLgogICAgUGxlYXNlIHJlYWQgZG9jL1JFQURNRS5tdmJsbTcgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMDA1YjkzOTI1YmE0OWYwN2RhMmFhNzQ4NTI3OTk2ZDkyN2UxNzJmCkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgSnVuIDEwIDA5OjEzOjE2IDIwMDggKzAyMDAKCiAgICBhZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03IChkb2MrY29uZmlnKQoKICAgIEFkZCBNUEM4MzQzIGJhc2VkIGJvYXJkIG12Qmx1ZUxZTlgtTTcuCiAgICBJdCdzIGEgc2luZ2xlIGJvYXJkIHN0ZXJlbyBjYW1lcmEgc3lzdGVtLgogICAgUGxlYXNlIHJlYWQgZG9jL1JFQURNRS5tdmJsbTcgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmOTAyM2FmYmRmZDlmMjdlN2MzOGYzY2NlOTY1NzQ2ZTU2ZDYyZGQzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVRodSBNYXkgMjkgMTg6MTQ6NTYgMjAwOCArMDQwMAoKICAgIDgzeHgvODV4eDogZnVydGhlciBsb2NhbGJ1cyBjbGVhbnVwcwoKICAgIG1vdmUgdGhlIEJSeF8qIGFuZCBPUnhfKiBsZWZ0IGJlaGluZCBpbiBtcGM4NXh4LmgKCiAgICBUaGUgc2FtZSBpcyBuZWVkZWQgZm9yIG1wYzh4eC5oIGFuZCBtcGM4MjYwLmggKGRlZmluZXMgYXJlIGFsbW9zdAogICAgdGhlIHNhbWUsIGp1c3QgZmV3IGRpZmZlcmVuY2VzIHdoaWNoIG5lZWRzIHNvbWUgYXR0ZW50aW9uIHRob3VnaCkuCgogICAgQnV0IHRoZSBiYWQgbmV3cyBmb3IgbXBjOHh4IGFuZCBtcGM4MjYwIGlzIHRoYXQgdGhlcmUgYXJlIGEgbG90IG9mIHVzZXJzCiAgICBvZiB0aGVzZSBkZWZpbmVzLiBTbyB0aGlzIGNsZWFudXAgSSdsbCBsZWF2ZSBmb3IgdGhlICJiZXR0ZXIgdGltZXMiLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjMwYmIxZjdjOTU0ZDc4NTVkOWIyMzYyNGIzM2IwMGM1MGI0Njk3CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBNYXkgMjggMTg6MjA6MTUgMjAwOCArMDQwMAoKICAgIDgzeHgvODV4eC84Nnh4OiBmYWN0b3Igb3V0IEZyZWVzY2FsZSBMb2NhbGJ1cyBkZWZpbmVzIG91dCBvZiBtcGM4M3h4LmgKCiAgICBUaGlzIHBhdGNoIG1vdmVzIEZyZWVzY2FsZSBMb2NhbGJ1cyBkZWZpbmVzIG91dCBvZiBtcGM4M3h4LmgsIHNvIHdlIGNvdWxkCiAgICB1c2UgaXQgb24gTVBDODV4eCBhbmQgTVBDODZ4eCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDgyYjRmYzBjZThjY2E5NWU4NTdmYzUxMDIyZTg0MWNiMmRiZWU2YQpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CU1vbiBKdW4gMiAxNTowOTozMCAyMDA4ICswMjAwCgogICAgQWRkIG1pc3NpbmcgQ1NDT05GSUdfQkFOS19CSVRfMyBkZWZpbmUgdG8gbXBjODN4eC5oCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2I5MDRjY2I5M2MzMTk2NzI3ZTJlOTg3MGNiMWRmOTAzY2FiMTlhZApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CU1vbiBKdW4gOSAyMzozNzo0NCAyMDA4ICswOTAwCgogICAgbmV0OiBDb25kaXRpb25hbCBDT0JKUyBpbmNsdXNpb24gb2YgbmV0d29yayBkcml2ZXJzCgogICAgUmVwbGFjZSBDT0JKUy15IHdpdGggYXBwcm9wcmlhdGUgZHJpdmVyIGNvbmZpZyBuYW1lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAyZmI2OThiZjUwZjRhZmYyNDg1NTgxYTEyZmE2MzRhMDdjMDQwZTRhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biA5IDIxOjAyOjE3IDIwMDggLTA0MDAKCiAgICBVc2Ugc3RybmNtcCgpIGZvciB0aGUgZmR0IGNvbW1hbmQKCiAgICBDbGVhbmVyIHRoYW4gZG9pbmcgbXVsdGlwbGUgY29uZGl0aW9uYWxzIG9uIGNoYXJhY3RlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0N2FiZThhYjI5MGQyNzIxYThlZWFkZmY2NWI5MzllNmFmOGMwMWIwCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IEp1biA3IDEyOjI1OjA1IDIwMDggLTA0MDAKCiAgICBUaGUgZmR0IGJvYXJkc2V0dXAgY29tbWFuZCBjcml0ZXJpYSB3YXMgbm90IHVuaXF1ZQoKICAgIEl0IHdhcyBjaGVja2luZyBqdXN0IGZvciAiYiIsIHdoaWNoIGlzIG5vdCB1bmlxdWUgd2l0aCByZXNwZWN0IHRvIHRoZQogICAgImJvb3QiIGNvbW1hbmQuICBDaGFuZ2UgdG8gY2hlY2sgZm9yICJib2EiW3Jkc2V0dXBdLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMmYwOGJmYTk1MjZiYWU0ZjQ2MWUwNDM1MzBjZmI5MDNmZWMwZDI3MwpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglUdWUgTWF5IDIwIDE3OjE5OjExIDIwMDggKzEwMDAKCiAgICBsaWJmZHQ6IFNldmVyYWwgY2xlYW51cHMgdG8gcGFyYW1ldGVyIGNoZWNraW5nCgogICAgVGhpcyBwYXRjaCBtYWtlcyBhIGNvdXBsZSBvZiBzbWFsbCBjbGVhbnVwcyB0byBwYXJhbWV0ZXIgY2hlY2tpbmcgb2YKICAgIGxpYmZkdCBmdW5jdGlvbnMuCgoJLSBJbiBzZXZlcmFsIGZ1bmN0aW9ucyB3aGljaCB0YWtlIGEgbm9kZSBvZmZzZXQsIHdlIHVzZSBhbgogICAgaWRpb20gaW52b2x2aW5nIGZkdF9uZXh0X3RhZygpIGZpcnN0IHRvIGNoZWNrIHRoYXQgd2UgaGF2ZSBpbmRlZWQgYmVlbgogICAgZ2l2ZW4gYSBub2RlIG9mZnNldC4gIFRoaXMgcGF0Y2ggYWRkcyBhIGhlbHBlciBmdW5jdGlvbgogICAgX2ZkdF9jaGVja19ub2RlX29mZnNldCgpIHRvIGVuY2Fwc3VsYXRlIHRoaXMgdXNhZ2Ugb2YgZmR0X25leHRfdGFnKCkuCgoJLSBJbiBmZHRfcncuYyBpbiBzZXZlcmFsIHBsYWNlcyB3ZSBoYXZlIHRoZSBleHBhbmRlZCB2ZXJzaW9uCiAgICBvZiB0aGUgUldfQ0hFQ0tfSEVBREVSKCkgbWFjcm8gZm9yIG5vIHBhcnRpY3VsYXIgcmVhc29uLiAgVGhpcyBwYXRjaAogICAgcmVwbGFjZXMgdGhvc2UgaW5zdGFuY2VzIHdpdGggYW4gaW52b2NhdGlvbiBvZiB0aGUgbWFjcm87IHRoYXQncyB3aGF0CiAgICBpdCdzIGZvci4KCgktIEluIGZkdF9zdy5jIHdlIHJlbmFtZSB0aGUgY2hlY2tfaGVhZGVyX3N3KCkgZnVuY3Rpb24gdG8KICAgIHN3X2NoZWNrX2hlYWRlcigpIHRvIG1hdGNoIHRoZSBhbmFsZ291cyBmdW5jdGlvbiBpbiBmZHRfcncuYywgYW5kIHdlCiAgICBwcm92aWRlIGFuIFNXX0NIRUNLX0hFQURFUigpIHdyYXBwZXIgbWFjcm8gYXMgUldfQ0hFQ0tfSEVBREVSKCkKICAgIGZ1bmN0aW9ucyBpbiBmZHRfcncuYwoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IGZlYzZkOWVlN2MxMDQ0M2Y2NWNlMTc4OGVmODE4OTE5MTY3YmJmMmUKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MzQ6NDUgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfRkxBVF9UUkVFCgogICAgVXNlIENPTkZJR19PRl9MSUJGRFQgaW5zdGVhZCB0byBzdXBwb3J0IGZsYXR0ZW5lZCBkZXZpY2UgdHJlZXMuICBJdCBpcwogICAgY2xlYW5lciwgaGFzIGJldHRlciBmdW5jdGlvbmFsaXR5LCBhbmQgaXMgYmV0dGVyIHN1cHBvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDYyYmNkZGEyOTNlZmE3NTJmODI4MWZiZDlkYTAzODIyYjI3Y2U4MmYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MjY6MjkgMjAwOCAtMDQwMAoKICAgIENoYW5nZSB0aGUgc3R4eHN0IHRvIENPTkZJR19PRl9MSUJGRFQKCiAgICBUaGlzIHdhcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfRkxBVF9UUkVFLCBjaGFuZ2UKICAgIHRvIENPTkZJR19PRl9MSUJGRFQuCgogICAgV0FSTklORzogSXQgYXBwZWFycyB0aGF0IHRoaXMgYm9hcmQgbG9zdCBpdHMgYWJpbGl0eSB0byBib290IHZpYSBhCiAgICBmbGF0dGVuZWQgZGV2aWNlIHRyZWUgcHJpb3IgdG8gdGhpcyBjaGFuZ2VzZXQuCgogICAgV0FSTklORzogVGhpcyBjb252ZXJzaW9uIHdhcyB1bnRlc3RlZCBiZWNhdXNlIEkgZG8gbm90IGhhdmUgYSBib2FyZCB0bwogICAgdGVzdCBpdCBvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDU4OWMwNDI3MWQxMjk3MjlhOGIwMTM5MTQ1Mzg1MWFiOWNjNDA2OWMKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgSnVuIDMgMjA6MjQ6NTggMjAwOCAtMDQwMAoKICAgIENvbnZlcnQgbXBjNzQ0OGhwYzIgdG8gQ09ORklHX09GX0xJQkZEVAoKICAgIFRoaXMgd2FzIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBkZXByZWNhdGVkIENPTkZJR19PRl9GTEFUX1RSRUUsIGNoYW5nZQogICAgdG8gQ09ORklHX09GX0xJQkZEVC4KCiAgICBXQVJOSU5HOiBUaGlzIGNvbnZlcnNpb24gaXMgdW50ZXN0ZWQgYmVjYXVzZSBJIGRvIG5vdCBoYXZlIGEgYm9hcmQgdG8KICAgIHRlc3QgaXQgb24uCgogICAgTk9URTogVGhlIEZEVCBibG9iIChEVFMpIG11c3QgaGF2ZSBhbiAvYWxpYXNlcy9ldGhlcm5ldDAgYW5kIChvcHRpb25hbGx5KQogICAgL2FsaWFzZXMvZXRoZXJuZXQxIHByb3BlcnR5IGZvciB0aGUgZXRoZXJuZXQgdG8gd29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGVlMWUzNWJlZGU5MWRlYmM4YmZmOWIwMmY3NTU3NDQ4NjAzM2I2NTIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTWF5IDI5IDAxOjIxOjI0IDIwMDggLTA1MDAKCiAgICA4NXh4OiBPbmx5IHVzZSBQT1JQTExTUltERFJfUmF0aW9dIG9uIHBsYXRmb3JtcyB0aGF0IGRlZmluZSBpdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2I5NTE5ZmM1MDgwMjQzNmU0MTdjODM5ZTY5ZGY3YjIwMTZjYWRlNQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDE0IDEzOjEwOjA0IDIwMDggLTA1MDAKCiAgICBNUEM4NXh4OiBDaGFuZ2UgdHJhcHMuYyB0byBub3QgcmVmZXJlbmNlIG5vbi1hZGRyZXNzYWJsZSBtZW1vcnkKCiAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgogICAgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBzdGFjayBwb2ludGVyIG9yIG5vdC4gSG93ZXZlciwKICAgIG9uIHN5c3RlbXMgd2l0aCBhIGxvdCBvZiBSQU0sIG9ubHkgYSBzdWJzZXQgb2YgdGhlIFJBTSBpcwogICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCiAgICB0byB1c2UgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmF3IHJhbQogICAgc2l6ZSBvdXQgb2YgdGhlIGJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmYWRkYWVjZWE1MmY1ODVmNTM4ZmRmOWMyZTYxZjg1YTc4OWIxOWMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CkRhdGU6CU1vbiBKdW4gOSAxMzozOTo1NyAyMDA4ICswOTAwCgogICAgc2g6IFJlbmVzYXMgU29sdXRpb25zIFNINzc2M1JEUCBib2FyZCBzdXBwb3J0CgogICAgU0g3NzYzUkRQIGhhcyBTQ0lGLCBOT1IgRmxhc2gsIEV0aGVybmV0LCBVU0IgaG9zdCwgTENEQyBhbmQgTU1DLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydCBTQ0lGLCBOT1IgRmxhc2gsIGFuZCBFdGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNjAxNzkwOThhOTVlYWE5NzIwMDdkN2VjNThlNGMxNTg4MDI5NzIwZgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1biA2IDE2OjI0OjEzIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTSDc3NjMKCiAgICBSZW5lc2FzIFNINzc2MyBoYXMgMyBTQ0lGLCBNTUMsIExDREMsIEV0aGVybmV0IGFuZCBvdGhlci4KICAgIFRoaXMgcGF0Y2ggc3VwcHJ0cyBDUFUgcmVnaXN0ZXIncyBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMDhjNWZhYmUxODFkNjYzZWVjMGZlYmE1ZWNkMDJjMGI3ODkzNGE1MgpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEp1biA2IDE2OjE2OjA4IDIwMDggKzA5MDAKCiAgICBzaDogU0g3NzYzIFNDSUYgc3VwcG9ydAoKICAgIFNINzc2MyBoYXMgMyBTQ0lGIGNoYW5uZWxzLiBTQ0lGMCBhbmQgMSBhcmUgc2FtZSByZWdpc3RlciBjb25zdGl0dXRpb24sCiAgICBidXQgb25seSBTQ0lGMiBpcyBkaWZmZXJlbnQuIFRoaXMgcGF0Y2ggd29yayBhbGwgU0NJRiBjaGFubmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3OWI1MWZmODIwNWYwMzU0ZDUzMDA1NzA2MTRjMWQyZGI0OTk2NzljCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEp1biA3IDIwOjUxOjU5IDIwMDggKzA5MDAKCiAgICBbTUlQU10gY3B1L21pcHMvTWFrZWZpbGU6IFNwbGl0IFtDU11PQkpTIG9udG8gc2VwYXJhdGUgbGluZXMKCiAgICBBbHNvIGdldCByaWQgb2Ygc29tZSAjaWZkZWZzIGluICouYyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDhiZGU2M2ViM2Y3OWQ2OGY2OTMyMDE1MjhkYWZjOGFlN2FhMDg3ZGUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgSnVuIDcgMjA6NTE6NTYgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBSZW5hbWUgQWxjaGVteSBwcm9jZXNzb3IgY29uZmlncyBpbnRvIENPTkZJR19TT0NfKgoKICAgIENPTkZJR19TT0NfQVUxWDAwCgogICAgICBDb21tb24gQWxjaGVteSBBdTF4MDAgc3R1ZmYuIEFsbCBBbGNoZW15IHByb2Nlc3NvciBiYXNlZCBtYWNoaW5lcwogICAgICBuZWVkIHRvIGhhdmUgdGhpcyBjb25maWcgYXMgYSBzeXN0ZW0gdHlwZSBzcGVjaWZpZXIuCgogICAgQ09ORklHX1NPQ19BVTEwMDAsIENPTkZJR19TT0NfQVUxMTAwLCBDT05GSUdfU09DX0FVMTIwMCwKICAgIENPTkZJR19TT0NfQVUxNTAwLCBDT05GSUdfU09DX0FVMTU1MAoKICAgICAgTWFjaGluZSB0eXBlIHNwZWNpZmllcnMuIEVhY2ggcG9ydCBzaG91bGQgaGF2ZSBvbmUgb2YgYWJvdmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgY2M0OWNhZGVlYjhiYjJmMGFlM2ZkYzEzYWY3MDUxYWU1OWYwODNiYwpBdXRob3I6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KRGF0ZToJRnJpIE1heSAzMCAxNjowNToyOCAyMDA4IC0wNDAwCgogICAgZW52X25hbmQuYzogQWRkZWQgYmFkIGJsb2NrIG1hbmFnZW1lbnQgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcwoKICAgIE1vZGlmaWVkIHRvIGNoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCB0byBza2lwcGluZyBvdmVyIHRoZW0gd2hlbgogICAgQ0ZHX0VOVl9SQU5HRSBoYXMgYmVlbiBkZWZpbmVkLgogICAgQ0ZHX0VOVl9SQU5HRSBtdXN0IGJlIGxhcmdlciB0aGFuIENGR19FTlZfU0laRSBhbmQgYWxpZ25lZCB0byB0aGUgTkFORAogICAgZmxhc2ggYmxvY2sgc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgV29vZCA8c3R1YXJ0Lndvb2RAbGFieHRlY2hub2xvZ2llcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNzk3MjZiZDAwNTU4ZTgwMjYzZDQ0NTgxYzQ0MTY3NjI1YjdmYjlhCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMTQgMTM6MDk6NTggMjAwOCAtMDUwMAoKICAgIE1QQzg2eHg6IENoYW5nZSB0cmFwcy5jIHRvIG5vdCByZWZlcmVuY2Ugbm9uLWFkZHJlc3NhYmxlIG1lbW9yeQoKICAgIEN1cnJlbnRseSwgRU5EX09GX1JBTSBpcyB1c2VkIGJ5IHRoZSB0cmFwIGNvZGUgdG8gZGV0ZXJtaW5lIGlmCiAgICB3ZSBzaG91bGQgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHN0YWNrIHBvaW50ZXIgb3Igbm90LiBIb3dldmVyLAogICAgb24gc3lzdGVtcyB3aXRoIGEgbG90IG9mIFJBTSwgb25seSBhIHN1YnNldCBvZiB0aGUgUkFNIGlzCiAgICBndWFyYW50ZWVkIHRvIGJlIG1hcHBlZCBpbiBhbmQgYWNjZXNzaWJsZS4JQ2hhbmdlIEVORF9PRl9SQU0KICAgIHRvIHVzZSBnZXRfZWZmZWN0aXZlX21lbXNpemUoKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSByYXcgcmFtCiAgICBzaXplIG91dCBvZiB0aGUgYmQgdG8gcHJldmVudCB1cyBmcm9tIHRyeWluZyB0byBhY2Nlc3MKICAgIG5vbi1tYXBwZWQgbWVtb3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMzOGNjMDM4NDYxYTZjNzcwOWM1Yjg2ZmQ5YTI0MDIwOTMzOGExYWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTQ6Mjg6MTQgMjAwOCArMDIwMAoKICAgIHRvb2xzL21raW1hZ2U6IGZpeCBjb21waWxlciB3YXJuaW5ncyBvbiBzb21lIHN5c3RlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiMjgxNWY3OTI4OGQ0ZGE3YTNiYTE4YmRiZDA1MTIwY2UwOWQ1NjIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTY6MTA6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IG1pc3NwZWxsZWQgQ09ORklHXzQ0MFNQRS80NDBFUFgvR1JYIGNvbmZpZyBvcHRpb25zCgogICAgV2UgdXNlIHVwcGVyIGNhc2UgbGV0dGVycyBmb3IgdGhlIEFNQ0MgcHJvY2Vzc29yIGRlZmluZXMgKGxpa2UKICAgIENPTkZJR180NDBTUEUpIGluIFUtQm9vdC4gU28gdGhlIDQ0MFNQZSBpcyBsYWJlbGVkIENPTkZJR180NDBTUEUgYW5kCiAgICBub3QgQ09ORklHXzQ0MFNQZS4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgbGFzdCBtaXNzcGVsbGVkIGNvbmZpZyBvcHRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MjY3NWRjNmMwNmE0ODg0NmQxODAxMDYxNjFkNDlkZDcxNDM4M2NjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTU6MjEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAzLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0OTBmMjA0MDk2ZDZlMmM5OTQwZjY3ODE2ZjE1NGE4MTI1YmFiMTE2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTU6MDMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAyLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhOGExMWE5ZWQwNDZiNDgwYTE2ZTQ3YTE1OGY4ZjUzMDAwMjhkZmE2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDYgMTU6NTQ6MzEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAxLzMpCgogICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCiAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6CgogICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKCiAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAogICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KCiAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAogICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZTM4YzkzOGVkNGJjYWRiNGY0ZmMxNDE5YTU0MTQzMWU5NGZjMjAyCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVRodSBKdW4gNSAxMzowMzozNiAyMDA4ICswMjAwCgogICAgRE05MDAwIGZpeCBzdGF0dXMgY2hlY2sgZmFpbCAweDZkIGVycm9yIGZvciB0cml6ZXBzIGJvYXJkCgogICAgQWNjb3JkaW5nIHRvIHRoZSBBcHBsaWNhdGlvbiBOb3RlcyBvZiB0aGUgRE05MDAwLCBvbmx5IHRoZSAyIGJpdHMgMDoxIG9mCiAgICB0aGUgc3RhdHVzIGJ5dGUgbmVlZCB0byBiZSBjaGVja2VkIHRvIGlkZW50aWZ5IGEgdmFsaWQgcGFja2V0IGluIHRoZSBmaWZvCgogICAgQnV0LCBUaGUgc2V2ZXJhbCBkaWZmZXJlbnQgQXBwbGljYXRpb24gTm90ZXMgZG8gbm90IGFsbCBzcGVhayB0aGUgc2FtZQogICAgbGFuZ3VhZ2Ugb24gdGhlc2UgYml0cy4gVGhleSBkbyBub3QgZGlzYWdyZWUsIGJ1dCBvbmx5IDEgQXBwbGljYXRpb24gTm90ZQogICAgbm90ZWQgZXhwbGljaXRseSB0aGF0IG9ubHkgdGhlc2UgMiBiaXRzIG5lZWQgdG8gYmUgY2hlY2tlZC4KICAgIEV2ZW4gdGhlIGRhdGFzaGVldHMgZG8gbm90IG1lbnRpb24gYW55dGhpbmcgYWJvdXQgdGhlc2UgMiBiaXRzLgoKICAgIEJlY2F1c2UgdGhlIG9sZCBjb2RlLCBhbmQgdGhlIGtlcm5lbCBjaGVjayB0aGUgd2hvbGUgYnl0ZSwgSSBsZWZ0IHRoaXMgcGllY2UKICAgIHVudG91Y2hlZC4KCiAgICBIb3dldmVyLCBJIHRlc3RlZCBhbGwgYm9hcmQvRE05MDAwW0F8RXxFUF0gZGV2aWNlcyB3aXRoIHRoaXMgMiBiaXQgY2hlY2ssIHNvCiAgICBpdCBzaG91bGQgd29yay4KCiAgICBOb3RpY2UsIHRoYXQgdGhlIDJuZCBpdGVyYXRpb24gdGhyb3VnaCB0aGlzIHJlY2VpdmUgbG9vcCAod2hlbiBhIDJuZCBwYWNrZXQgaXMKICAgIGluIHRoZSBmaWZvKSBpcyBtdWNoIHNob3J0ZXIgbm93LCBjb21wYXJlZCB0byB0aGUgb2xkZXIgVS1ib290IGRyaXZlciBjb2RlLAogICAgc28gdGhhdCB3ZSBjYW4gbWF5YmUgcnVuIGludG8gYSBoYXJkd2FyZSBjb25kaXRpb24gbm93IHRoYXQgd2FzIG5ldmVyIHNlZW4KICAgIGJlZm9yZSwgb3IgbWF5YmUgd2FzIHNlZW4gdmVyeSB1bmZyZXF1ZW50bHkuCgogICAgQWRkaXRpb25hbHkgYWRkZWQgYSBjbGVhbnVwIG9mIGEgc3RhY2sgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDdkYWYyZWJlOTE5NmRkNjcxMzFhMDZkODUwNDljM2E4YTA4Y2E0MTMKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBVcGRhdGUgPGFzbS9hZGRyc3BhY2UuaD4gaGVhZGVyCgogICAgLSBGaXggdHJhZGl0aW9uYWwgS1NFRyBuYW1lcwogICAgLSBSZXBsYWNlIFBIWVNBRERSIHdpdGggQ1BIWVNBRERSCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBmMGQ1YTZmMDYwZDAwMzU4Yjg1YzYyYTkyMWE0MjNlYThkZjcxMTg0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVGh1IEp1biA1IDIyOjI5OjAwIDIwMDggKzA5MDAKCiAgICBbTUlQU10gbWlwc19jb25maWcubWs6IE1pc2MgZml4ZXMKCiAgICAtIEtpbGwgcmVkdW5kYW50IGAtcGlwZScgKHRoaXMgd2lsbCBiZSBhZGRlZCBieSAkKFRPUERJUikvY29uZmlnLm1rKQogICAgLSBNb2RpZnkgY29tbWVudHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDVmNjRkMjFjOWEyOTk4Nzk0ZjI1NWI0NjkxNjViOTFmMDkyZGZjMmQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBLaWxsIHVudXNlZCA8dmVyc2lvbi5oPiBpbmNsdXNpb25zCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBhNTVkNDgxNzRjZmQxYTViYzE4NDE1OTUxM2Y0OGRjYmJlNDA5YzgzCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVGh1IEp1biA1IDIyOjI5OjAwIDIwMDggKzA5MDAKCiAgICBbTUlQU10gbGliX21pcHMvdGltZS5jOiBGaXggQ1AwIGNvdW50IHJlZ2lzdGVyIHVzYWdlIGFuZCB0aW1lciByb3V0aW5lcwoKICAgIE1JUFMgcG9ydCBoYXMgdHdvIHByb2JsZW1zIGluIHRpbWVyIHJvdXRpbmVzLiBPbmUgaXMgbm93IHdlIGFzc3VtZSBDRkdfSFoKICAgIGVxdWFscyB0byBDUDAgY291bnRlciBmcmVxdWVuY3ksIGJ1dCB0aGlzIGlzIHdyb25nLiBDRkdfSFogaGFzIHRvIGJlIDEwMDAKICAgIGluIHRoZSBVLUJvb3Qgc3lzdGVtLgoKICAgIFRoZSBvdGhlciBpcyB3ZSBkb24ndCBoYXZlIGEgcHJvcGVyIHRpbWUgbWFuYWdlbWVudCBjb3VudGVyIGxpa2UgdGltZXN0YW1wCiAgICBvdGhlciBBUkNIcyBoYXZlLiBXZSBuZWVkIHRoZSAzMi1iaXQgbWlsbGlzZWNvbmQgY2xvY2sgY291bnRlci4KCiAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGltZXN0YW1wIGFuZCBDWUNMRVNfUEVSX0pJRkZZLiB0aW1lc3RhbXAgaXMgYQogICAgMzItYml0IG5vbi1vdmVyZmxvd2luZyBDRkdfSFogY291bnRlciwgYW5kIENZQ0xFU19QRVJfSklGRlkgaXMgdGhlIG51bWJlcgogICAgb2YgY2FsY3VsYXRlZCBDUDAgY291bnRlciBjeWNsZXMgaW4gYSBDRkdfSFouCgogICAgU1RSQVRFR1k6CgogICAgKiBGaXggaW1wcm9wZXIgQ0ZHX0haIHZhbHVlIHRvIGhhdmUgMTAwMAoKICAgICogVXNlIENGR19NSVBTX1RJTUVSX0ZSRVEgZm9yIHRpbWVyIGNvdW50ZXIgZnJlcXVlbmN5LCBpbnN0ZWFkLgoKICAgICogdGltZXJfaW5pdDogaW5pdGlhbGl6ZSB0aW1lc3RhbXAgYW5kIHNldCB1cCB0aGUgZmlyc3QgdGltZXIgZXhwaXJhdGlvbi4KICAgICAgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSBDUDAgY291bnQvY29tcGFyZSByZWdpc3RlcnMgaGVyZQogICAgICBhcyB0aGV5IGhhdmUgYmVlbiBhbHJlYWR5IHplcm9lZCBvdXQgb24gdGhlIHN5c3RlbSByZXNldC4gTGVhdmUgdGhlbSBhcwogICAgICB0aGV5IGFyZS4KCiAgICAqIGdldF90aW1lcjogY2FsY3VsYXRlIGhvdyBtYW55IHRpbWVzdGFtcHMgaGF2ZSBiZWVuIHBhc3NlZCwgdGhlbiByZXR1cm4KICAgICAgYmFzZS1yZWxhdGl2ZSB0aW1lc3RhbXAuIE1ha2Ugc3VyZSB3ZSBjYW4gZWFzaWx5IGNvdW50IG1pc3NlZCB0aW1lc3RhbXBzCiAgICAgIHJlZ2FyZGxlc3Mgb2YgQ1AwIGNvdW50L2NvbXBhcmUgdmFsdWUuCgogICAgKiBnZXRfdGlja3M6IHJldHVybiB0aGUgY3VycmVudCB0aW1lc3RhbXAsIHRoYXQgaXMgZ2V0X3RpbWVyKDApLgoKICAgIE1vc3QgcGFydHMgYXJlIGZyb20gZ29vZCBvbGQgTGludXggdjIuNi4xNiBrZXJuZWwuCgogICAgdjI6CiAgICAtIFJlbW92ZSBGSVhNRSBjb21tZW50cyBhcyB0aGV5IHR1cm5lZCBvdXQgdG8gYmUgdHJpdmlhbC4KICAgIC0gVXNlIENQMCBjb21wYXJlIHJlZ2lzdGVyIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIGZvciBleHBpcmVsby4KICAgIC0gS2lsbCBhIGdsb2JhbCB2YXJpYWJsZSAnY3ljbGVzX3Blcl9qaWZmeScuIFVzZSAjZGVmaW5lIENZQ0xFU19QRVJfSklGRlkKICAgICAgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDE5OWU0ZjY1N2M4YWY0MmVmZTNmYjNiYTFkMTEwNGViNmJiMjhjMjUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBsaWJfbWlwcy90aW1lLmM6IEZpeCB1ZGVsYXkKCiAgICBXaGF0IHdlIGhhdmUgdG8gZG8gaXMganVzdCB0byB3YWl0IGZvciBnaXZlbiBtaWNyby1zZWNvbmRzLiBObyBuZWVkIHRvCiAgICB0YWtlIGludG8gYWNjb3VudCBjdXJyZW50IHRpbWUsIGdldF90aW1lciBhbmQgQ0ZHX0haLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYzdlMzhlNDEzYWU2OTEyMGQzZTUxZjEzMmM3Y2IxZDZiMzUxNGQwMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVRodSBKdW4gNSAyMjoyODo1OSAyMDA4ICswOTAwCgogICAgW01JUFNdIGxpYl9taXBzL3RpbWUuYzogUmVwbGFjZSBDUDAgYWNjZXNzIGZ1bmN0aW9ucyB3aXRoIGV4aXN0aW5nIG1hY3JvcwoKICAgIFdlIGFscmVhZHkgaGF2ZSBtYW55IHByZS1kZWZpbmVkIENQMCBhY2Nlc3MgbWFjcm9zIGluIDxhc20vbWlwc3JlZ3MuaD4uCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIG1pcHNfe2NvbXBhcmUsY291bnR9X3NldCBhbmQgbWlwc19jb3VudF9nZXQgd2l0aAogICAgZXhpc3RpbmcgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgNmI1MmNmZTE2Y2Q1Mzk5MzVlMzJiZDhjZjE5MTQ2NTIyZTQ2MmE0ZApBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgSnVuIDMgMTU6NDg6MTcgMjAwOCArMDIwMAoKICAgIEdldCByaWQgb2YgYW5ub3lpbmcvc3VwZXJmbHVvdXMgYmFkLWNoZWNrc3VtIHdhcm5pbmcgbWVzc2FnZQoKICAgIFUtYm9vdCBjYW4gY29tcGxhaW4gYSBsb3QgYWJvdXQgJ2NoZWNrc3VtIGJhZCcgd2hlbiBpdCBpcyBhdHRhY2hlZCB0byB0aGUgbmV0d29yay4KICAgIEl0IGlzIGFubm95aW5nIGZvciBvcmRpbmFyeSB1c2VycyB3aG8gc3RhcnQgdG8gZG91YnQgdGhlIG5ldHdvcmsgY29ubmVjdGlvbgogICAgaW4gZ2VuZXJhbCB3aGVuIHRoZXkgc2VlIG1lc3NhZ2VzIGxpa2UgdGhpcy4KCiAgICBUaGlzIGlzIGNhdXNlZCBieSB0aGUgcm91dGluZSBOZXRDa3N1bU9rKCkgd2hpY2ggY2Fubm90IGhhbmRsZSBJUC1oZWFkZXJzIGxvbmdlcgogICAgdGhhbiAyMCBieXRlcy4gVGhvc2UgcGFja2FnZXMgY2FuIGJlIGlnbm9yZWQgYW55d2F5IGJ5IFUtYm9vdCwgc28gd2UgdHJhc2ggdGhlbQogICAgbm93IGJlZm9yZSBjaGVja2luZyB0aGUgY2hlY2tzdW0uCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ2ZWU1ZmE0MGMyNjk3MGQzOTk5MGM2ZmM0YTJmMjBhOTc4MjI2NTAKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJV2VkIEp1biA0IDEwOjQ3OjI1IDIwMDggKzAyMDAKCiAgICBGaXggb3JkZXIgZm9yIHJlYWRpbmcgcngtc3RhdHVzIHJlZ2lzdGVycyBpbiAzMmJpdCBtb2RlIG9mIERNOTAwMAoKICAgIEEgbGFzdCBtaW51dGUgY2xlYW51cCBiZWZvcmUgc3VibWl0dGluZyB0aGUgRE05MDAwQSBwYXRjaCBzZXJpZXMgeWVzdGVyZGF5IGludHJvZHVjZWQKICAgIGEgYnVnIGluIHJlYWRpbmcgdGhlIHJ4LXN0YXR1cyByZWdpc3RlcnMgaW4gMzJiaXQgbW9kZSBvbmx5LgogICAgVGhpcyBwYXRjaCByZXBhaXJzIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDk4MjkxZTJlNjg5MDk2NDIwNDY1MDc0Y2NlOTI2YjIyNmQyZTcxYjQKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIEp1biAzIDE1OjI2OjI2IDIwMDggKzAyMDAKCiAgICBETTkwMDA6IFNvbWUgbWlub3IgY29kZSBjbGVhbnVwcwoKICAgIFNvbWUgbGluZXMgb2YgdGhlIFUtYm9vdCBETTkwMDB4IGRyaXZlciBhcmUgbG9uZ2VyIHRoYW4gODAgY2hhcmFjdGVycywgb3IKICAgIG5lZWQgc29tZSBvdGhlciBtaW5vciBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA4NTBiYTc1NTVkYmQ0Y2E4ZDE0ZmM0NzViODY0ZDUzNDc5N2FkYWIzCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyNSAyMDA4ICswMjAwCgogICAgRE05MDAwOiBNYWtlIGRyaXZlciB3b3JrIHByb3Blcmx5IGZvciBETTkwMDBBCgogICAgVGhlIERNOTAwMEEgbmV0d29yayBjb250cm9sbGVyIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgVS1ib290IERNOTAwMHggZHJpdmVyLgogICAgQW5hbHlzaXMgc2hvd2VkIHRoYXQgbWFueSBpbmNvbWluZyBwYWNrZXRzIGFyZSBsb3N0LgoKICAgIFRoZSBETTkwMDBBIEFwcGxpY2F0aW9uIE5vdGVzIFYxLjIwIChzZWN0aW9uIDUuNi4xKSByZWNvbW1lbmQgdGhhdCB0aGUgcG9sbCB0bwogICAgY2hlY2sgZm9yIGEgdmFsaWQgcnggcGFja2V0IGJlIGRvbmUgb24gdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIsIG5vdAogICAgZGlyZWN0bHkgYnkgcGVyZm9ybWluZyB0aGUgZHVtbXkgcmVhZCBhbmQgdGhlIHJ4IHN0YXR1cyBjaGVjayBhcyBpcyBjdXJyZW50bHkKICAgIHRoZSBjYXNlIGluIHRoZSB1LWJvb3QgZHJpdmVyLgoKICAgIFdoZW4gdGhlIHJlY29tbWVuZGVkIHBvbGwgaXMgZG9uZSBhcyBzdWdnZXN0ZWQgdGhlIGRyaXZlciBzdGFydHMgd29ya2luZwogICAgY29ycmVjdGx5IG9uIDEwTWJpdC9IRCwgYnV0IG9uIDEwME1CaXQvRkQgcGFja2V0cyBjb21lIGluIGZhc3RlciBzbyB0aGF0IHRoZXJlCiAgICBjYW4gYmUgbW9yZSB0aGFuIDEgcGFja2FnZSBpbiB0aGUgZmlmbyBhdCB0aGUgc2FtZSB0aW1lLgoKICAgIFRoZSBkcml2ZXIgbXVzdCBwZXJmb3JtIHRoZSByeC1zdGF0dXMgY2hlY2sgaW4gYSBsb29wIGFuZCByZWFkIGFuZCBoYW5kbGUgYWxsCiAgICBwYWNrYWdlcyB1bnRpbCB0aGVyZSBpcyBubyBtb3JlIGxlZnQgX2FmdGVyXyB0aGUgaW50ZXJydXB0IFJYIGZsYWcgaXMgc2V0LgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmYmNiN2VjZTBlYTFlMzY0MTgwZjFjZjk2M2UwZmEwY2U3ZjY1NjBkCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyNCAyMDA4ICswMjAwCgogICAgRE05MDAwOiBJbXByb3ZlIGV0aF9yZXNldCgpIHJvdXRpbmUKCiAgICBBY2NvcmRpbmcgdG8gdGhlIGFwcGxpY2F0aW9uIG5vdGVzIG9mIHRoZSBETTkwMDAgdjEuMjIgY2hhcHRlciA1LjIgYnVsbGV0IDIsIHRoZQogICAgcmVzZXQgcHJvY2VkdXJlIG11c3QgYmUgZG9uZSB0d2ljZSB0byBwcm9wZXJseSByZXNldCB0aGUgRE05MDAwIGJ5IG1lYW5zIG9mIHNvZnR3YXJlLgogICAgVGhpcyBlcnJhdGEgaXMgbm90IG5lZWRlZCBhbnltb3JlIGZvciB0aGUgRE05MDAwQSwgYnV0IGl0IGRvZXMgbm90IGJvdGhlciBpdC4KCiAgICBUaGlzIGNoYW5nZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBETTkwMDBBLCBETTkwMDBFLCBETTkwMDBFUC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWNiYTMxODQ3ZmFkOWFlNDA3MDhjYzJjOWYzYTYzNGVjMzVmMzQxNgpBdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgpEYXRlOglUdWUgSnVuIDMgMTU6MjY6MjMgMjAwOCArMDIwMAoKICAgIERNOTAwMDogaW1wcm92ZSBldGhfc2VuZCgpIHJvdXRpbmUKCiAgICBUaGUgZXRoX3NlbmQgcm91dGluZSBvZiB0aGUgVS1ib290IERNOTAwMHggZHJpdmVyIGRvZXMgbm90IG1hdGNoIHRoZQogICAgRE05MDAwIG9yIERNOTAwMEEgYXBwbGljYXRpb24gbm90ZXMvcHJvZ3JhbW1pbmcgZ3VpZGVzLgoKICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIHRoZSBzdGFiaWxpdHkgb2YgdGhlIERNOTAwMEEgbmV0d29yayBjb250cm9sbGVyLgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxMzRlMjY2MjUzYzAyYTc4MzI1NjBkYTU5ZDM5NDk4OWM0ZjY0NDUzCkF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CkRhdGU6CVR1ZSBKdW4gMyAxNToyNjoyMiAyMDA4ICswMjAwCgogICAgRE05MDAwOiByZXBhaXIgZGVidWcgbG9nZ2luZwoKICAgIEl0IHNlZW1zIHRoYXQgdGhlIGRlYnVnZ2luZyBjb2RlIG9mIHRoZSBETTkwMDB4IGRyaXZlciBpbiBVLWJvb3QgaGFzIG5vdCBiZWVuCiAgICBjb21waWxlZCBmb3IgYSBsb25nIHRpbWUsIGJlY2F1c2UgaXQgY2Fubm90IGNvbXBpbGUuLi4KCiAgICBBbHNvIHJlYXJyYW5nZWQgc29tZSBsb2dsaW5lcyB0byBnZXQgbW9yZSB1c2VmdWwgaW5mbyB3aGlsZSBkZWJ1Z2dpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGExMDEzNjFiZmUyM2MxMjAzMjFlNDVkMTE0YzA2MDNiOGUwNzYzZTkKQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KRGF0ZToJVHVlIEp1biAzIDE1OjI2OjIxIDIwMDggKzAyMDAKCiAgICBETTkwMDA6IEFkZCBkYXRhIGJ1cy13aWR0aCBhdXRvIGRldGVjdGlvbi4KCiAgICBUaGUgVS1ib290IERNOTAwMHggZHJpdmVyIGNvbnRhaW5zIGEgY29tcGlsZSB0aW1lIGJ1cy13aWR0aCBkZWZpbml0aW9uIGZvcgogICAgdGhlIGRhdGFidXMgY29ubmVjdGVkIHRvIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIuCgogICAgVGhpcyBjb21waWxlIGNoZWNrIG1ha2VzIHRoZSBjb2RlIHVuY2xlYXIsIGluZmxleGlibGUgYW5kIGlzIHVubmVjY2Vzc2FyeS4KICAgIEl0IGNhbiBiZSBhc2tlZCB0byB0aGUgbmV0d29yayBjb250cm9sbGVyIHdoYXQgaXRzIGJ1cy13aWR0aCBpcyBieSByZWFkaW5nIGJpdHMKICAgIDYgYW5kIDcgb2YgdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIuCgogICAgVGhlIGxpbnV4IGtlcm5lbCBhbHJlYWR5IHVzZXMgYSBydW50aW1lIG1lY2hhbmlzbSB0byBkZXRlcm1pbmUgdGhpcyBidXMtd2lkdGgsCiAgICBzbyB0aGUgaW1wbGVtZW50YXRpb24gYmVsb3cgbG9va3Mgc29tZXdoYXQgbGlrZSB0aGF0IGltcGxlbWVudGF0aW9uLgoKICAgIFRoaXMgY2hhbmdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIERNOTAwMEEsIERNOTAwMEUsIERNOTAwMEVQLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA2M2EwYWZhMGMzMmU1ZjRlYTk4YTk0Mzk1NDI4NzAwNzI0Mzc0MDRkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDQgMTk6MTk6MjAgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBTRFJBTSBpbml0IGluIGJhbWJvbyBOQU5EIGJvb3RpbmcgcG9ydAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgYnkgRXVnZW5lIE8nQnJpYW4gKHRoYW5rcyBFdWdlbmUpCiAgICBpbnRyb2R1Y2VkIGJ5IHRoZSBjb21taXQ6CgogICAgcHBjNHh4L05BTkRfU1BMOiBDb25zb2xpZGF0ZSA0MDUgYW5kIDQ0MCBOQU5EIGJvb3RpbmcgY29kZSBpbiBzdGFydC5TCgogICAgV2l0aCB0aGlzIHBhdGNoIFNEUkFNIHdpbGwgZ2V0IGluaXRpYWxpemVkIGFnYWluIGFuZCBib290aW5nIGZyb20gTkFORAogICAgaXMgd29ya2luZyBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KCmNvbW1pdCA5ZWYxY2JlZjFhNjQ5ZTM3NzkyOThiMGU2NjNiZTQ4NjVjYmJiZmJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAyNyAxNDoxOTozMCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEZpeCBQQ0kgYnVzIGZyZXF1ZW5jeSByZXBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDhlYzZlMzMyZWFjZTBlZTc4YzcxZWU1ZjY0NWQxMmIwNjgxM2I4NmYKQXV0aG9yOiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgpEYXRlOglUaHUgTWF5IDI5IDExOjEwOjMwIDIwMDggKzAyMDAKCiAgICBGaXggaW5jb3JyZWN0IHN3aXRjaCBmb3IgSUZfVFlQRSBpbiBwYXJ0LmMKCiAgICBVc2UgY29ycmVjdCBmaWVsZCBpbiBibG9ja19kZXZfZGVzY190IHdoZW4gd3JpdGluZyBpbnRlcmZhY2UgdHlwZSBpbgogICAgZGV2X3ByaW50LiBFcnJvciBpbnRyb2R1Y2VkIGluIDU3NGIzMTk1LgoKICAgIEFsc28gYWRkZWQgZml4IGZyb20gTWFydGluIEtyYXVzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Cgpjb21taXQgYjY0YjhhMGJkMzEwOTM1YjcwYWY2OWFjOTcwOTUyZjJiMzY0YWU1NgpBdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KRGF0ZToJVHVlIE1heSAyNyAxMDoyNTozOSAyMDA4ICswMjAwCgogICAgQWRkIHNpemUgI2RlZmluZXMgZm9yIEFsdGVyYSBDeWNsb25lLUlJIEVQMkM4IGFuZCBFUDJDMjAuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgoKY29tbWl0IDM1ZWY4NzdmMGE4ZjYyMzJjZGVmNzQ4ZjQ0MmZlZDVhY2NiMmI2NDEKQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgpEYXRlOglUaHUgTWF5IDIyIDE4OjU2OjUyIDIwMDggLTA1MDAKCiAgICBBZGRpdGlvbmFsIGZpeCB0byByZWFkbGluZV9pbnRvX2J1ZmZlcigpIHdpdGggQ09ORklHX0NNRExJTkVfRURJVElORyBiZWZvcmUgcmVsb2NhdGluZwoKICAgIFJlbW92ZWQgdW5uZWVkZWQgY29tbWFuZCBsaW5lIGhpc3RvcnkgaW5pdGlhbGl6YXRpb24uICBBbHNvLCB0aGUgb3JpZ2luYWwKICAgIGNvZGUgd291bGQgYWNjZXNzIHRoZSAnaW5pdHRlZCcgdmFyaWFibGUgYmVmb3JlIHJlbG9jYXRpb24gdG8gU0RSQU0KICAgIHdoaWNoIHJlc3VsdGVkIGluIGVycmF0aWMgYmVoYXZpb3Igc2luY2UgdGhlIGJzcyBpcyBub3QgaW5pdGlhbGl6ZWQgd2hlbgogICAgZXhlY3V0aW5nIGZyb20gZmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KCmNvbW1pdCAyMmYzNzFiNjMwMzhhNGVjYWIwNDA2ODg3N2MxMDg5ZTUxYTAxYmExCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzoyODozMCAyMDA4IC0wNzAwCgogICAgUFBDNHh4OiBTaW1wbGlmaWVkIHBvc3Rfd29yZF97bG9hZCwgc3RvcmV9CgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHBvc3Rfd29yZF97bG9hZCxzdG9yZX0gYnkgdXNpbmcgdGhlIHByZXByb2Nlc3NvcgogICAgdG8gZWxpbWluYXRlIHJlZHVuZGFudCwgY29weS1hbmQtcGFzdGVkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KCmNvbW1pdCA5YzA0OGI1MjM0MTNhZTVmM2ZmMzRlMDBjZjU3NTY5YzMzNjhhYjUxCkF1dGhvcjogVmFzaWxpeSBMZW9lbmVua28gPHZhc2lsaXkubGVvbmVua29AbWFpbC5ydT4KRGF0ZToJV2VkIE1heSA3IDIxOjI1OjMzIDIwMDggKzA0MDAKCiAgICBjZmlfZmxhc2g6IGVuYWJsZSBNMTggZmxhc2ggY2hpcHMgZmFtaWx5IHN1cHBvcnQuCgogICAgQWRkZWQgbmV3IGNvbW1hbmQgc2V0IElELiBCdWZmZXJlZCB3cml0ZSBjb21tYW5kIHByb2Nlc3NpbmcgaXMgY2hhbmdlZAogICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBNMTggZmxhc2ggY2hpcHMgZmFtaWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBLb3JvbGV2IDxha29yb2xldkBpbmZyYWRlYWQub3JnPgogICAgU2lnbmVkLW9mZi1ieTogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgoKY29tbWl0IDkzYzU2ZjIxMmNjZGFkYzE4MjAxOGYwNzY5Y2IyODQ0MjZiODhmMWQKQXV0aG9yOiBWYXNpbGl5IExlb2VuZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgpEYXRlOglXZWQgTWF5IDcgMjE6MjQ6NDQgMjAwOCArMDQwMAoKICAgIGNmaV9mbGFzaDogc3VwcG9ydCBvZiBsb25nIGNtZCBpbiBVLWJvb3QuCgogICAgU29tZSBOT1IgZmxhc2ggY2hpcHMgbmVlZHMgc3VwcG9ydCBvZiBjb21tYW5kcyB3aXRoIGxlbmd0aCBncmV0aGVyIHRoYW4gbWF4CiAgICB2YWx1ZSBzaXplIG9mIHVjaGFyLiBGb3IgZXhhbXBsZSBhbGwgTTE4IGZhbWlseSBjaGlwcyB1c2UgMHgxZmYgY29tbWFuZCBpbgogICAgYnVmZmVyZWQgd3JpdGUgbW9kZSBhcyB2YWx1ZSBvZiBwcm9ncmFtIGxvb3BzIGNvdW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBLb3JvbGV2IDxha29yb2xldkBpbmZyYWRlYWQub3JnPgogICAgU2lnbmVkLW9mZi1ieTogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgoKY29tbWl0IDRkOTFkMWRmMmYxNmI1MTFhYjgwZGVjNTBjODBlMDUwYmEwZDg0MWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MDY6MDYgMjAwOCArMDIwMAoKICAgIERUVDogSXNzdWUgb25lLXNob3QgY29tbWFuZCBvbiBBRDc0MTQgKExNNzUgY29kZSkgdG8gcmVhZCB0ZW1wCgogICAgT24gQUQ3NDE0IHRoZSBmaXJzdCB2YWx1ZSB1cG9uIGJvb3R1cCBpcyBub3QgcmVhZCBjb3JyZWN0bHkuCiAgICBUaGlzIGlzIG1vc3QgbGlrZWx5IGJlY2F1c2Ugb2YgdGhlIDgwMG1zIHVwZGF0ZSB0aW1lIG9mIHRoZQogICAgdGVtcCByZWdpc3RlciBpbiBub3JtYWwgdXBkYXRlIG1vZGUuIFRvIGdldCBjdXJyZW50IHZhbHVlcwogICAgZWFjaCB0aW1lIHdlIGlzc3VlIHRoZSAiZHR0IiBjb21tYW5kIGluY2x1ZGluZyB1cG9uIHBvd2VydXAKICAgIHdlIHN3aXRjaCBpbnRvIG9uZS1zaG9ydCBtb2RlLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gb24gQUQ3NDE0IGVxdWlwcGVkIGJvYXJkcyAoU2VxdW9pYSwKICAgIENhbnlvbmxhbmRzIGV0YyksIHRoYXQgdGVtcCB2YWx1ZSBwcmludGVkIGluIHRoZSBib290dXAgbG9nIHdhcwogICAgaW5jb3JyZWN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZTViZmNmN2IwNDI1ZTAzMmJlMTI2OTgyNTJkYmFhNmI2NWEyOGMwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBNYXkgMzAgMTY6NTU6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IHZhcmlhbnQncyBjb25maWcgZmlsZQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGRlYWQgY29kZSBmcm9tIENQQ0k0MDUgYm9hcmQncwogICAgY29uZmlnIGZpbGVzLiBKRkZTMiBzdXBwb3J0IGlzIGFsc28gcmVtb3ZlZC4gSXQncyBub3QgdXNlZCBhbmQKICAgIENQQ0k0MDUyIGRvZXMgbm90IGJ1aWxkIGFueW1vcmUgd2l0aG91dCBzb21lIHNpemUgcmVkdWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDI5MThlYjlkNDJiYzcwNWZjYmQxOGM5ZmNjMzlkMTVmZjI4NDNjNjUKQXV0aG9yOiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+CkRhdGU6CVRodSBNYXkgMjkgMTY6MzI6MzMgMjAwOCArMDIwMAoKICAgIFJlbW92ZSBzaGVsbCB2YXJpYWJsZSBVTkRFRl9TWU0uCgogICAgVU5ERUZfU1lNIGlzIGEgc2hlbGwgdmFyaWFibGUgaW4gdGhlIG1haW4gTWFrZWZpbGUgdXNlZCB0byBmb3JjZSB0aGUKICAgIGxpbmtlciB0byBhZGQgYWxsIHUtYm9vdCBjb21tYW5kcyB0byB0aGUgZmluYWwgaW1hZ2UuIEl0IGhhcyBubyB1c2UgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+Cgpjb21taXQgOGM2NjQ5N2UwNmJmODAzNDg5YzU4OWRmNThlZTU5MWQ3MTAzMzI3NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAxNiAxMToxMDozNSAyMDA4ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IGluIFNQSSBmbGFzaAoKICAgIFRoaXMgaXMgcHJldHR5IGluY29tcGxldGUuLi5pdCBkb2Vzbid0IGhhbmRsZSByZWFkaW5nIHRoZSBlbnZpcm9ubWVudAogICAgYmVmb3JlIHJlbG9jYXRpb24sIGl0IGRvZXNuJ3Qgc3VwcG9ydCByZWR1bmRhbnQgZW52aXJvbm1lbnQsIGFuZCBpdAogICAgZG9lc24ndCBzdXBwb3J0IGVtYmVkZGVkIGVudmlyb25tZW50LiBCdXQgYXBhcnQgZnJvbSB0aGF0LCBpdCBkb2VzCiAgICBzZWVtIHRvIHdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGI2MzY4NDY3ZTZhOTdmMjI1ZTBhNWZkN2JmYzVjNzU5OGVmNWRkYzQKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzQgMjAwOCArMDIwMAoKICAgIFNQSSBGbGFzaDogQWRkICJzZiIgY29tbWFuZAoKICAgIFRoaXMgYWRkcyBhIG5ldyBjb21tYW5kLCAic2YiIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgU1BJCiAgICBmbGFzaC4gQ3VycmVudGx5LCBpbml0aWFsaXphdGlvbiwgcmVhZGluZywgd3JpdGluZyBhbmQgZXJhc2luZyBpcwogICAgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkMjVjZTdkMjRjYzBmOTM4ODE1NTlmNDAwOTE3NWVhMzA1YWY2NWU4CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDE2IDExOjEwOjMzIDIwMDggKzAyMDAKCiAgICBTUEkgRmxhc2ggc3Vic3lzdGVtCgogICAgVGhpcyBhZGRzIGEgbmV3IFNQSSBmbGFzaCBzdWJzeXN0ZW0uCgogICAgQ3VycmVudGx5LCBvbmx5IEFUNDUgRGF0YUZsYXNoIGluIG5vbi1wb3dlci1vZi10d28gbW9kZSBpcyBzdXBwb3J0ZWQsCiAgICBidXQgc29tZSBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBvdGhlciBmbGFzaCB0eXBlcyBpcyBpbiBwbGFjZSBhcwogICAgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNjA0NDVjYjVjM2ViNzdlZDFhMDdmMmQ5MDhlZWYwOTE3NDQ4MzY5OApBdXRob3I6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzIgMjAwOCArMDIwMAoKICAgIGF0bWVsX3NwaTogRHJpdmVyIGZvciB0aGUgQXRtZWwgU1BJIGNvbnRyb2xsZXIKCiAgICBUaGlzIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBTUEkgY29udHJvbGxlciBmb3VuZCBvbiBtb3N0IEFUOTEgYW5kIEFWUjMyCiAgICBjaGlwcywgaW1wbGVtZW50aW5nIHRoZSBuZXcgU1BJIEFQSS4KCiAgICBDaGFuZ2VkIGluIHY0OgogICAgICAtIFVwZGF0ZSB0byBuZXcgQVBJCiAgICAgIC0gSGFuZGxlIHplcm8tbGVuZ3RoIHRyYW5zZmVycyBhcHByb3ByaWF0ZWx5LiBUaGUgdXNlciBtYXkgc2VuZCBhCgl6ZXJvLWxlbmd0aCBTUEkgdHJhbnNmZXIgd2l0aCBTUElfWEZFUl9FTkQgc2V0IGluIG9yZGVyIHRvCglkZWFjdGl2YXRlIHRoZSBjaGlwIHNlbGVjdCBhZnRlciBhIHNlcmllcyBvZiB0cmFuc2ZlcnMgd2l0aCBjaGlwCglzZWxlY3QgYWN0aXZlLiBUaGlzIGlzIHVzZWZ1bCBlLmcuIHdoZW4gcG9sbGluZyB0aGUgc3RhdHVzCglyZWdpc3RlciBvZiBEYXRhRmxhc2guCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZDI1NWJiMGU3OGQxY2FjNWI3YzhjOThjYjc3YTA5NWY1ZjE2ZGUwZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDE2IDExOjEwOjMxIDIwMDggKzAyMDAKCiAgICBTUEkgQVBJIGltcHJvdmVtZW50cwoKICAgIFRoaXMgcGF0Y2ggZ2V0cyByaWQgb2YgdGhlIHNwaV9jaGlwc2VsIHRhYmxlIGFuZCBhZGRzIGEgaGFuZGZ1bCBvZiBuZXcKICAgIGZ1bmN0aW9ucyB0aGF0IG1ha2VzIHRoZSBTUEkgbGF5ZXIgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4KCiAgICBJbnN0ZWFkIG9mIHRoZSBzcGlfY2hpcHNlbCB0YWJsZSwgZWFjaCBib2FyZCB0aGF0IHdhbnRzIHRvIHVzZSBTUEkKICAgIGdldHMgdG8gaW1wbGVtZW50IHRocmVlIGhvb2tzOgogICAgICAqIHNwaV9jc19hY3RpdmF0ZSgpOiBBY3RpdmF0ZXMgdGhlIGNoaXBzZWxlY3QgZm9yIGEgZ2l2ZW4gc2xhdmUKICAgICAgKiBzcGlfY3NfZGVhY3RpdmF0ZSgpOiBEZWFjdGl2YXRlcyB0aGUgY2hpcHNlbGVjdCBmb3IgYSBnaXZlbiBzbGF2ZQogICAgICAqIHNwaV9jc19pc192YWxpZCgpOiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBidXMvY2hpcHNlbGVjdAoJY29tYmluYXRpb24gY2FuIGJlIGFjdGl2YXRlZC4KCiAgICBOb3QgYWxsIGRyaXZlcnMgbWF5IG5lZWQgdGhvc2UgZXh0cmEgZnVuY3Rpb25zIGhvd2V2ZXIuIElmIHRoYXQncyB0aGUKICAgIGNhc2UsIHRoZSBib2FyZCBjb2RlIG1heSBqdXN0IGxlYXZlIHRoZW0gb3V0IChhc3N1bWluZyB0aGV5IGtub3cgd2hhdAogICAgdGhlIGRyaXZlciBuZWVkcykgb3IgcmVseSBvbiB0aGUgbGlua2VyIHRvIHN0cmlwIHRoZW0gb3V0IChhc3N1bWluZwogICAgLS1nYy1zZWN0aW9ucyBpcyBiZWluZyB1c2VkLikKCiAgICBUbyBzZXQgdXAgY29tbXVuaWNhdGlvbiBwYXJhbWV0ZXJzIGZvciBhIGdpdmVuIHNsYXZlLCB0aGUgZHJpdmVyIG5lZWRzCiAgICB0byBjYWxsIHNwaV9zZXR1cF9zbGF2ZSgpLiBUaGlzIHJldHVybnMgYSBwb2ludGVyIHRvIGFuIG9wYXF1ZQogICAgc3BpX3NsYXZlIHN0cnVjdCB3aGljaCBtdXN0IGJlIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byBzdWJzZXF1ZW50IFNQSQogICAgY2FsbHMuIFRoaXMgc3RydWN0IGNhbiBiZSBmcmVlZCBieSBjYWxsaW5nIHNwaV9mcmVlX3NsYXZlKCksIGJ1dCBtb3N0CiAgICBkcml2ZXIgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBkbyB0aGlzLgoKICAgIEJlZm9yZSBzdGFydGluZyBvbmUgb3IgbW9yZSBTUEkgdHJhbnNmZXJzLCB0aGUgZHJpdmVyIG11c3QgY2FsbAogICAgc3BpX2NsYWltX2J1cygpIHRvIGdhaW4gZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgU1BJIGJ1cyBhbmQgaW5pdGlhbGl6ZQogICAgdGhlIGhhcmR3YXJlLiBXaGVuIGFsbCB0cmFuc2ZlcnMgYXJlIGRvbmUsIHRoZSBkcml2ZXIgbXVzdCBjYWxsCiAgICBzcGlfcmVsZWFzZV9idXMoKSB0byBtYWtlIHRoZSBidXMgYXZhaWxhYmxlIHRvIG90aGVycywgYW5kIHBvc3NpYmx5CiAgICBzaHV0IGRvd24gdGhlIFNQSSBjb250cm9sbGVyIGhhcmR3YXJlLgoKICAgIHNwaV94ZmVyKCkgYmVoYXZlcyBtb3N0bHkgdGhlIHNhbWUgYXMgYmVmb3JlLCBidXQgaXQgbm93IHRha2VzIGEKICAgIHNwaV9zbGF2ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHNwaV9jaGlwc2VsIGZ1bmN0aW9uIHBvaW50ZXIuIEl0IGFsc28KICAgIGdvdCBhIG5ldyBwYXJhbWV0ZXIsIGZsYWdzLCB3aGljaCBpcyB1c2VkIHRvIHNwZWNpZnkgY2hpcCBzZWxlY3QKICAgIGJlaGF2aW91ci4gVGhpcyBtYXkgYmUgZXh0ZW5kZWQgd2l0aCBvdGhlciBmbGFncyBpbiB0aGUgZnV0dXJlLgoKICAgIFRoaXMgcGF0Y2ggaGFzIGJlZW4gYnVpbGQtdGVzdGVkIG9uIGFsbCBwb3dlcnBjIGFuZCBhcm0gYm9hcmRzCiAgICBpbnZvbHZlZC4gSSBoYXZlIG5vdCB0ZXN0ZWQgTklPUyBzaW5jZSBJIGRvbid0IGhhdmUgYSB0b29sY2hhaW4gZm9yIGl0CiAgICBpbnN0YWxsZWQsIHNvIEkgZXhwZWN0IHNvbWUgYnJlYWthZ2UgdGhlcmUgZXZlbiB0aG91Z2ggSSd2ZSB0cmllZAogICAgZml4aW5nIHVwIGV2ZXJ5dGhpbmcgSSBjb3VsZCBmaW5kIGJ5IHZpc3VhbCBpbnNwZWN0aW9uLgoKICAgIEkgaGF2ZSBydW4tdGltZSB0ZXN0ZWQgdGhpcyBvbiBBVlIzMiBBVE5HVzEwMCB1c2luZyB0aGUgYXRtZWxfc3BpIGFuZAogICAgRGF0YUZsYXNoIGRyaXZlcnMgcG9zdGVkIGFzIGEgZm9sbG93LXVwLiBJJ2QgbGlrZSBzb21lIGhlbHAgdGVzdGluZwogICAgb3RoZXIgYm9hcmRzIHRoYXQgdXNlIHRoZSBleGlzdGluZyBTUEkgQVBJLgoKICAgIEJ1dCBtb3N0IG9mIGFsbCwgSSdkIGxpa2Ugc29tZSBjb21tZW50cyBvbiB0aGUgbmV3IEFQSS4gSXMgdGhpcyBzdHVmZgogICAgdXNhYmxlIGZvciBldmVyeW9uZT8gSWYgbm90LCB3aHk/CgogICAgQ2hhbmdlZCBpbiB2NDoKICAgICAgLSBCdWlsZCBmaXhlcyBmb3IgdmFyaW91cyBib2FyZHMsIGRyaXZlcnMgYW5kIGNvbW1hbmRzCiAgICAgIC0gUHJvdmlkZSBjb21tb24gc3RydWN0IHNwaV9zbGF2ZSBkZWZpbml0aW9uIHRoYXQgY2FuIGJlIGV4dGVuZGVkIGJ5Cglkcml2ZXJzCiAgICAgIC0gUGFzcyBhIHN0cnVjdCBzcGlfc2xhdmUgKiB0byBzcGlfY3NfYWN0aXZhdGUgYW5kIHNwaV9jc19kZWFjdGl2YXRlCiAgICAgIC0gTWFrZSBkZWZhdWx0IGJ1cyBhbmQgbW9kZSBidWlsZC10aW1lIGNvbmZpZ3VyYWJsZQogICAgICAtIE92ZXJyaWRlIGRlZmF1bHQgU1BJIGJ1cyBJRCBhbmQgbW9kZSBvbiBteDMyYWRzIGFuZCBpbXgzMV9saXRla2l0LgoKICAgIENoYW5nZWQgaW4gdjM6CiAgICAgIC0gQWRkIG9wYXF1ZSBzdHJ1Y3Qgc3BpX3NsYXZlIGZvciBjb250cm9sbGVyLXNwZWNpZmljIGRhdGEgYXNzb2NpYXRlZAoJd2l0aCBhIHNsYXZlLgogICAgICAtIEFkZCBzcGlfY2xhaW1fYnVzKCkgYW5kIHNwaV9yZWxlYXNlX2J1cygpCiAgICAgIC0gQWRkIHNwaV9mcmVlX3NsYXZlKCkKICAgICAgLSBzcGlfc2V0dXAoKSBpcyBub3cgY2FsbGVkIHNwaV9zZXR1cF9zbGF2ZSgpIGFuZCByZXR1cm5zIGEKCXN0cnVjdCBzcGlfc2xhdmUKICAgICAgLSBzb2Z0X3NwaSBub3cgc3VwcG9ydHMgZm91ciBTUEkgbW9kZXMgKENQT0x8Q1BIQSkKICAgICAgLSBBZGQgYnVzIHBhcmFtZXRlciB0byBzcGlfc2V0dXBfc2xhdmUoKQogICAgICAtIENvbnZlcnQgdGhlIG5ldyBpLk1YMzIgU1BJIGRyaXZlcgogICAgICAtIENvbnZlcnQgdGhlIG5ldyBNQzEzNzgzIFJUQyBkcml2ZXIKCiAgICBDaGFuZ2VkIGluIHYyOgogICAgICAtIENvbnZlcnQgdGhlIG1wYzh4eHhfc3BpIGRyaXZlciBhbmQgdGhlIG1wYzgzNDllbWRzIGJvYXJkIHRvIHRoZQoJbmV3IEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KICAgIFRlc3RlZC1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDI4OTAxMTIwN2Q5OTliMmU0MDg1MTUwZDJhYTMwZDU0N2FkOWI4MDAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzAgMjAwOCArMDIwMAoKICAgIE1vdmUgZGVmaW5pdGlvbiBvZiBjb250YWluZXJfb2YoKSB0byBjb21tb24uaAoKICAgIEFWUjMyIGFuZCBBVDkxU0FNOSBib3RoIGhhdmUgdGhlaXIgb3duIGlkZW50aWNhbCBkZWZpbml0aW9ucyBvZgogICAgY29udGFpbmVyX29mKCkgdGFrZW4gZnJvbSB0aGUgTGludXgga2VybmVsLiBNb3ZlIGl0IHRvIGNvbW1vbi5oIHNvCiAgICB0aGF0IGFsbCBhcmNoaXRlY3R1cmVzIGNhbiB1c2UgaXQuCgogICAgY29udGFpbmVyX29mKCkgaXMgYWxyZWFkeSB1c2VkIGJ5IHNvbWUgZHJpdmVycywgYW5kIHdpbGwgYmUgdXNlZAogICAgZXh0ZW5zaXZlbHkgYnkgdGhlIG5ldyBhbmQgaW1wcm92ZWQgU1BJIEFQSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMTEwZTAwNmZlNjdmYjRhNmUxNzE5YWU2OTU2Yzc5YjdmZmMwMTQ4YgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAxNiAxMTowODoxMSAyMDA4ICswMjAwCgogICAgc29mdF9pMmM6IFB1bGwgU0RBIGhpZ2ggYmVmb3JlIHJlYWRpbmcKCiAgICBTcG90dGVkIGJ5IERlYW4gQ2FwaW5kYWxlLgoKICAgIFN5c3RlbXMgdGhhdCBzdXBwb3J0IG9wZW4tZHJhaW4gR1BJTyBwcm9wZXJseSBhcmUgYWxsb3dlZCBwcm92aWRlIGFuCiAgICBlbXB0eSBJMkNfVFJJU1RBVEUgZGVmaW5lLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBiZQogICAgY2FyZWZ1bCBub3QgdG8gZHJpdmUgU0RBIGxvdyB3aGVuIHRoZSBzbGF2ZSBpcyBleHBlY3RlZCB0byByZXNwb25kLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG1pc3NpbmcgSTJDX1NEQSgxKSB0byByZWFkX2J5dGUoKSByZXF1aXJlZCB0bwogICAgdHJpc3RhdGUgdGhlIFNEQSBsaW5lIG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IG9wZW4tZHJhaW4gR1BJTy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgM2MxZGUxYTZkMzZiZTllZWUyODRhNmM1OTZhODZlOTRmMTljYzViMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAxMTozNDo1MyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgaW1wbGVtZW50YXRpb25zIG9mIHRlc3RkcmFtKCkKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHVzZWQgdGVzdGRyYW0oKSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGJvYXJkCiAgICB0aGF0IGFyZSBtYWludGFpbmVkIGJ5IG15c2VsZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYmJlZmYzMGNiZDFjNWQ1NTFlYjBhZDFjMjIzOWVjMDE4NDRjMGIwYQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjM3OjI4IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBzdXBlcmZsdW91cyBkcmFtX2luaXQoKSBjYWxsIG9yIHJlcGxhY2UgaXQgYnkgaW5pdGRyYW0oKQoKICAgIEhpc3RvcmljYWxseSB0aGUgNDA1IFUtQm9vdCBwb3J0IGhhZCBhIGRyYW1faW5pdCgpIGNhbGwgaW4gZWFybHkgaW5pdAogICAgc3RhZ2UuIFRoaXMgZnVuY3Rpb24gd2FzIHN0aWxsIGNhbGxlZCBmcm9tIHN0YXJ0LlMgYW5kIG1vc3Qgb2YgdGhlIHRpbWUKICAgIGNvZGVkIGluIGFzc2VtYmxlci4gVGhpcyBpcyBub3QgbmVlZGVkIGFueW1vcmUgKHNpbmNlIGEgbG9uZyB0aW1lKSBhbmQKICAgIGJvYXJkcyBzaG91bGQgaW1wbGVtZW50IHRoZSBjb21tb24gaW5pdGRyYW0oKSBmdW5jdGlvbiBpbiBDIGluc3RlYWQuCgogICAgVGhpcyBwYXRjaCBub3cgcmVtb3ZlZCB0aGUgZHJhbV9pbml0KCkgY2FsbCBmcm9tIHN0YXJ0LlMgYW5kIHJlbW92ZXMgdGhlCiAgICBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgc2NhdHRlcmVkIHRocm91Z2ggbW9zdCBvZiB0aGUgNDA1IGJvYXJkCiAgICBwb3J0cy4gU29tZSBvbGRlciBib2FyZCBwb3J0cyByZWFsbHkgaW1wbGVtZW50IHRoaXMgZHJhbV9pbml0KCkgdGhvdWdoLgogICAgVGhlc2UgYXJlOgoKICAgIGNzYjI3MgogICAgY3NiNDcyCiAgICBFUklDCiAgICBFWEJJVEdFTgogICAgVzdPTE1DCiAgICBXN09MTUcKCiAgICBJIGNoYW5nZWQgdGhvc2UgYm9hcmRzIHRvIGNhbGwgdGhpcyBhc3NlbWJsZXIgZHJhbV9pbml0KCkgZnVuY3Rpb24gbm93CiAgICBmcm9tIHRoZWlyIGJvYXJkIHNwZWNpZmljIGluaXRkcmFtKCkgaW5zdGVhZC4gVGhpcyAqc2hvdWxkKiB3b3JrLCBidXQgcGxlYXNlCiAgICB0ZXN0IGFnYWluIG9uIHRob3NlIHBsYXRmb3Jtcy4gQW5kIGl0IGlzIHBlcmhhcHMgYSBnb29kIGlkZWEgdGhhdCB0aG9zZQogICAgYm9hcmRzIHVzZSBzb21lIGNvbW1vbiA0MDUgU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tIGNwdS9wcGM0eHggYXQKICAgIHNvbWUgdGltZS4gU28gZnVydGhlciBwYXRjaGVzIHdlbGNvbWUgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTkyZjkwZTI3MmIzOTg5ZWU3YjRhNjY2ZDFmZGFiODMxZjIwZjhkMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjIyOjExIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVzZSBuZXcgNHh4IFNEUkFNIGNvbnRyb2xsZXIgZW5hYmxlIGRlZmluZXMgaW4gY29tbW9uIEVDQyBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM5YjMyYmUxOGNkMzNiNTNhODQwNjVlZGNkNGU0NjUxNjVjYzU1NjQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMiAxNzoyMDowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tbW9uIEVDQyBnZW5lcmF0aW9uIGNvZGUgZm9yIDQ0MEdQIHN0eWxlIHBsYXRmb3JtcwoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGNvbW1vbiA0eHggRUNDIGNvZGUgcmVhbGx5IHVzYWJsZSBvbiA0NDBHUCBzdHlsZQogICAgcGxhdGZvcm1zLgoKICAgIFNpbmNlIHRoZSBJQk0gRERSIGNvbnRyb2xsZXIgdXNlZCBvbiA0NDBHUC9HWC9FUC9HUiBpcyBub3QgcmVnaXN0ZXIKICAgIGNvbXBhdGlibGUgdG8gdGhlIElCTSBERFIvMiBjb250cm9sbGVyIHVzZWQgb24gNDA1RVgvNDQwU1AvU1BlLzQ2MEVYL0dUCiAgICB3ZSBuZWVkIHRvIG1ha2Ugc29tZSBwcm9jZXNzb3IgZGVwZW5kYW50IGRlZmluZXMgdXNlZCBsYXRlciBvbiBieSB0aGUKICAgIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWM3MjRmODgzZWUzZjM5MjVlNmM1NTAyN2U4ZmZhNzBhZGE4MzMwMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1biAyIDE3OjEzOjU1IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBLaWxhdWVhIHRvIHVzZSB0aGUgY29tbW9uIEREUjIgaW5pdCBmdW5jdGlvbgoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUga2lsYXVlYSBhbmQga2lsYXVlYV9uYW5kIChmb3IgTkFORCBib290aW5nKQogICAgYm9hcmQgcG9ydCB0byBub3QgdXNlIGEgYm9hcmQgc3BlY2lmaWMgRERSMiBpbml0IHJvdXRpbmUgYW55bW9yZS4gTm93CiAgICB0aGUgY29tbW9uIGNvZGUgZnJvbSBjcHUvcHBjNHh4IGlzIHVzZWQuCgogICAgVGhhbmtzIHRvIEdyYW50IEVyaWNrc29uIGZvciBhbGwgaGlzIGJhc2ljIHdvcmsgb24gdGhpcyA0MDVFWCBlYXJseQogICAgYm9vdHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxN2NlYjA2OWI4NWZiYjkyNjljNGRjMDliMmMyMzdmODgzMzRjNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDIgMTQ6NTk6MjEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFNEUkFNL0REUi9ERFIyIGRlZmluZXMsIHBhcnQyCgogICAgVGhpcyBwYXRjaCBub3cgYWRkcyBhIG5ldyBoZWFkZXIgZmlsZSAoYXNtLXBwYy9wcGM0eHgtc2RyYW0uaCkgZm9yIGFsbAogICAgcHBjNHh4IHJlbGF0ZWQgU0RSQU0vRERSL0REUjIgY29udHJvbGxlciBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmVhMTZmNmEwNjZjY2IwNDZlOTFlYmNlNGYzMjZiNjlmNGMwNTY5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDIgMTQ6NTc6NDEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFNEUkFNL0REUi9ERFIyIGRlZmluZXMsIHBhcnQxCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBTRFJBTSByZWxhdGVkIGRlZmluZXMgZnJvbSB0aGUgUFBDNHh4IGhlYWRlcnMKICAgIHBwYzQwNS5oIGFuZCBwcGM0NDAuaC4gVGhpcyBpcyBuZWVkZWQgc2luY2Ugbm93IHNvbWUgNDA1IFBQQydzIHVzZQogICAgdGhlIHNhbWUgU0RSQU0gY29udHJvbGxlciBhcyA0NDAgc3lzdGVtcyBkbyAobGlrZSA0MDVFWCBhbmQgNDQwU1ApLgoKICAgIEl0IGFsc28gaW50cm9kdWNlcyBuZXcgZGVmaW5lcyBmb3IgdGhlIGVxdWlwcGVkIFNEUkFNIGNvbnRyb2xsZXIgYmFzZWQgb24KICAgIHdoaWNoIFBQQyB2YXJpYW50IGlzIHVzZWQuIFRoZXJlIG5ldyBkZWZpbmVzIGFyZToKCiAgICB1c2VkIG9uIDQwNUdSL0NSL0VQIGFuZCBzb21lIFhpbGlueCBWaXJ0ZXggYm9hcmRzLgoKICAgIHVzZWQgb24gNDQwR1AvR1gvRVAvR1IuCgogICAgdXNlZCBvbiA0NDBFUHgvR1J4LgoKICAgIHVzZWQgb24gNDA1RVgvci80NDBTUC9TUGUvNDYwRVgvR1QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY0ODUyZDA5ZTA2ZGQ2ZGIyYjJkYjJhM2M1OWJjMmRiMTc2YTU0ZDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMiAxNDozNTo0NCAyMDA4ICswMjAwCgogICAgcHBjNHh4L05BTkRfU1BMOiBDb25zb2xpZGF0ZSA0MDUgYW5kIDQ0MCBOQU5EIGJvb3RpbmcgY29kZSBpbiBzdGFydC5TCgogICAgVGhpcyBwYXRjaCBjb25zb2xpZGF0ZXMgdGhlIDQwNSBhbmQgNDQwIHBhcnRzIG9mIHRoZSBOQU5EIGJvb3RpbmcgY29kZQogICAgc2VsZWN0ZWQgdmlhIENPTkZJR19OQU5EX1NQTC4gTm93IGNvbW1vbiBjb2RlIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUKICAgIFNEUkFNIGJ5IGNhbGxpbmcgaW5pdGRyYW0oKSBhbmQgdG8gImNvcHkvcmVsb2NhdGUiIHRvIFNEUkFNL09DTS9ldGMuCiAgICBPbmx5ICphZnRlciogcnVubmluZyBmcm9tIHRoaXMgbG9jYXRpb24sIG5hbmRfYm9vdCgpIGlzIGNhbGxlZC4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBpbml0c2RyYW0oKSBjYWxsIGlzIG5vdyBtb3ZlZCBmcm9tIG5hbmRfYm9vdC5jCiAgICB0byBzdGFydC5TLiBJIGV4cGVyaWVuY2VkIHByb2JsZW1zIHdpdGggc29tZSBib2FyZHMgbGlrZSBLaWxhdWVhCiAgICAoNDA1RVgpLCB3aGljaCBkb24ndCBoYXZlIGludGVybmFsIFNSQU0gKE9DTSkgYW5kIHJlbG9jYXRpb24gbmVlZHMgdG8KICAgIGJlIGRvbmUgdG8gU0RSQU0gYmVmb3JlIHRoZSBOQU5EIGNvbnRyb2xsZXIgY2FuIGdldCBhY2Nlc3NlZC4gV2hlbgogICAgaW5pdGRyYW0oKSBpcyBjYWxsZWQgbGF0ZXIgb24gaW4gbmFuZF9ib290KCksIHRoaXMgY2FuIGxlYWQgdG8gcHJvYmxlbXMKICAgIHdpdGggdmFyaWFibGVzIGluIHRoZSBic3Mgc2VjdGlvbnMgbGlrZSBuYW5kX2VjY19wb3NbXS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGEyNGMwN2JhNWRhMmM3MmFkMWYwNWUzZWI4YTQ2Mzc1MDIwMGM5OApBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVRodSBNYXkgMjIgMTQ6NDQ6MjQgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogRW5hYmxlIFByaW1vcmRpYWwgU3RhY2sgZm9yIDQweCBhbmQgVW5pZnkgRUNDIEhhbmRsaW5nCgogICAgVGhpcyBwYXRjaCAoUGFydCAyIG9mIDIpOgoKICAgICogUm9sbHMgdXAgYSBzdWl0ZSBvZiBjaGFuZ2VzIHRvIGVuYWJsZSBjb3JyZWN0IHByaW1vcmRpYWwgc3RhY2sgYW5kCiAgICAgIGdsb2JhbCBkYXRhIGhhbmRsaW5nIHdoZW4gdGhlIGRhdGEgY2FjaGUgaXMgdXNlZCBmb3Igc3VjaCBhIHB1cnBvc2UKICAgICAgZm9yIFBQQzQweC12YXJpYW50cyAoaS5lLiBDRkdfSU5JVF9EQ0FDSEVfQ1MpLgoKICAgICogUmVsYXRlZCB0byB0aGUgZmlyc3QsIHVuaWZpZXMgRERSMiBTRFJBTSBhbmQgRUNDIGluaXRpYWxpemF0aW9uIGJ5CiAgICAgIGVsaW1pbmF0aW5nIHJlZHVuZGFudCBFQ0MgaW5pdGlhbGl6YXRpb24gaW1wbGVtZW50YXRpb25zIGFuZCBtb3ZpbmcKICAgICAgcmVkdW5kYW50IFNEUkFNIGluaXRpYWxpemF0aW9uIG91dCBvZiBib2FyZCBjb2RlIGludG8gc2hhcmVkIDR4eAogICAgICBjb2RlLgoKICAgICogRW5hYmxlcyBNQ1NSIHZpc2liaWxpdHkgb24gdGhlIDQwNUVYKHIpLgoKICAgICogRW5hYmxlcyB0aGUgdXNlIG9mIHRoZSBkYXRhIGNhY2hlIGZvciBpbml0aWFsIFJBTSBvbgogICAgICBib3RoIEFNQ0MncyBLaWxhdWVhIGFuZCBNYWthbHUgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQKICAgICAgQ0ZHX1BPU1RfTUVNT1JZIGZsYWcgZnJvbSBlYWNoIGJvYXJkJ3MgQ09ORklHX1BPU1QgdmFsdWUuCgogICAgICAtIFJlbW92ZWQsIHBlciBTdGVmYW4gUm9lc2UncyByZXF1ZXN0LCBkZWZ1bmN0IG1lbW9yeS5jIGZpbGUgZm9yCglNYWthbHUgYW5kIHJvbGxlZCBzZHJhbV9pbml0IGZyb20gaXQgaW50byBtYWthbHUuYy4KCiAgICBXaXRoIHJlc3BlY3QgdG8gdGhlIDR4eCBERFIgaW5pdGlhbGl6YXRpb24gYW5kIEVDQyB1bmlmaWNhdGlvbiwgdGhlcmUKICAgIGlzIGNlcnRhaW5seSBtb3JlIHdvcmsgdGhhdCBjYW4gYW5kIHNob3VsZCBiZSBkb25lIChmaWxlIHJlbmFtaW5nLAogICAgZXRjLikuIEhvd2V2ZXIsIHRoYXQgY2FuIGJlIGhhbmRsZWQgYXQgYSBsYXRlciBkYXRlIG9uIGEgc2Vjb25kIG9yCiAgICB0aGlyZCBwYXNzLiBBcyBpdCBzdGFuZHMsIHRoaXMgcGF0Y2ggbW92ZXMgdGhpbmdzIGZvcndhcmQgaW4gYW4KICAgIGluY3JlbWVudGFsIHlldCBwb3NpdGl2ZSB3YXkgZm9yIHRob3NlIHBsYXRmb3JtcyB0aGF0IHV0aWxpemUgdGhpcwogICAgY29kZSBhbmQgdGhlIGZlYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4MjFiNWYxMjBiZWRmNzM4Njc1MTM0NjY0MTI1ODdjNjkxMmE4ZjgKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglUaHUgTWF5IDIyIDE0OjQ0OjE0IDIwMDggLTA3MDAKCiAgICBwcGM0eHg6IEVuYWJsZSBQcmltb3JkaWFsIFN0YWNrIGZvciA0MHggYW5kIFVuaWZ5IEVDQyBIYW5kbGluZwoKICAgIFRoaXMgcGF0Y2ggKFBhcnQgMSBvZiAyKToKCiAgICAqIFJvbGxzIHVwIGEgc3VpdGUgb2YgY2hhbmdlcyB0byBlbmFibGUgY29ycmVjdCBwcmltb3JkaWFsIHN0YWNrIGFuZAogICAgICBnbG9iYWwgZGF0YSBoYW5kbGluZyB3aGVuIHRoZSBkYXRhIGNhY2hlIGlzIHVzZWQgZm9yIHN1Y2ggYSBwdXJwb3NlCiAgICAgIGZvciBQUEM0MHgtdmFyaWFudHMgKGkuZS4gQ0ZHX0lOSVRfRENBQ0hFX0NTKS4KCiAgICAqIFJlbGF0ZWQgdG8gdGhlIGZpcnN0LCB1bmlmaWVzIEREUjIgU0RSQU0gYW5kIEVDQyBpbml0aWFsaXphdGlvbiBieQogICAgICBlbGltaW5hdGluZyByZWR1bmRhbnQgRUNDIGluaXRpYWxpemF0aW9uIGltcGxlbWVudGF0aW9ucyBhbmQgbW92aW5nCiAgICAgIHJlZHVuZGFudCBTRFJBTSBpbml0aWFsaXphdGlvbiBvdXQgb2YgYm9hcmQgY29kZSBpbnRvIHNoYXJlZCA0eHgKICAgICAgY29kZS4KCiAgICAqIEVuYWJsZXMgTUNTUiB2aXNpYmlsaXR5IG9uIHRoZSA0MDVFWChyKS4KCiAgICAqIEVuYWJsZXMgdGhlIHVzZSBvZiB0aGUgZGF0YSBjYWNoZSBmb3IgaW5pdGlhbCBSQU0gb24KICAgICAgYm90aCBBTUNDJ3MgS2lsYXVlYSBhbmQgTWFrYWx1IGFuZCByZW1vdmVzIGEgcmVkdW5kYW50CiAgICAgIENGR19QT1NUX01FTU9SWSBmbGFnIGZyb20gZWFjaCBib2FyZCdzIENPTkZJR19QT1NUIHZhbHVlLgoKICAgICAgLSBSZW1vdmVkLCBwZXIgU3RlZmFuIFJvZXNlJ3MgcmVxdWVzdCwgZGVmdW5jdCBtZW1vcnkuYyBmaWxlIGZvcgoJTWFrYWx1IGFuZCByb2xsZWQgc2RyYW1faW5pdCBmcm9tIGl0IGludG8gbWFrYWx1LmMuCgogICAgV2l0aCByZXNwZWN0IHRvIHRoZSA0eHggRERSIGluaXRpYWxpemF0aW9uIGFuZCBFQ0MgdW5pZmljYXRpb24sIHRoZXJlCiAgICBpcyBjZXJ0YWlubHkgbW9yZSB3b3JrIHRoYXQgY2FuIGFuZCBzaG91bGQgYmUgZG9uZSAoZmlsZSByZW5hbWluZywKICAgIGV0Yy4pLiBIb3dldmVyLCB0aGF0IGNhbiBiZSBoYW5kbGVkIGF0IGEgbGF0ZXIgZGF0ZSBvbiBhIHNlY29uZCBvcgogICAgdGhpcmQgcGFzcy4gQXMgaXQgc3RhbmRzLCB0aGlzIHBhdGNoIG1vdmVzIHRoaW5ncyBmb3J3YXJkIGluIGFuCiAgICBpbmNyZW1lbnRhbCB5ZXQgcG9zaXRpdmUgd2F5IGZvciB0aG9zZSBwbGF0Zm9ybXMgdGhhdCB1dGlsaXplIHRoaXMKICAgIGNvZGUgYW5kIHRoZSBmZWF0dXJlcyBhc3NvY2lhdGVkIHdpdGggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDM5NjgwMDE5ZTA2MTcxZDRhNTY5NGI3OTkyYWNjY2U4N2Y1OTBlCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMzoyODozMCAyMDA4IC0wNzAwCgogICAgUFBDNHh4OiBTaW1wbGlmaWVkIHBvc3Rfd29yZF97bG9hZCwgc3RvcmV9CgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHBvc3Rfd29yZF97bG9hZCxzdG9yZX0gYnkgdXNpbmcgdGhlIHByZXByb2Nlc3NvcgogICAgdG8gZWxpbWluYXRlIHJlZHVuZGFudCwgY29weS1hbmQtcGFzdGVkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KCmNvbW1pdCBmOTc5NjkwZWUzMzc0NTBiMjAzMGFiYTEyOGY5NWI3YThkOTg4MWMwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1heSAxNSAxNToxMzowOCAyMDA4IC0wNTAwCgogICAgRml4IHdhcm5pbmdzIGZyb20gZ2NjLTQuMy4wIGJ1aWxkIG9uIGEgcHBjIGhvc3QKCiAgICAqIFRoZSBjZmlfZmxhc2guYyBtZW1zZXQgZml4IGFjdHVhbCBhbGxvd3MgdGhlIGJvYXJkIHRvIGJvb3Qgc28gdGhlcmUgaXMKICAgICAgYSBiaXQgbW9yZSBnb2luZyBvbiBoZXJlIHRoYW4ganVzdCByZXNvbHZpbmcgd2FybmluZ3MgYXNzb2NpYXRlZCB3aXRoCiAgICAgIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKICAgICogaW5jbHVkZS9hc20vYml0b3BzLmg6MzAyOiB3YXJuaW5nOiAnX19zd2FiMzJwJyBpcyBzdGF0aWMgYnV0IHVzZWQgaW4KICAgICAgaW5saW5lIGZ1bmN0aW9uICdleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdCcgd2hpY2ggaXMgbm90IHN0YXRpYwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOWIxMjRhNjgzNDZjZTk2MDViNmUxZmNmNzllMTAyMTU0MWNkYmE5ZQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDE0IDEzOjA5OjUxIDIwMDggLTA1MDAKCiAgICBNUEM1MTJ4OiBDaGFuZ2UgdHJhcHMuYyB0byBub3QgcmVmZXJlbmNlIG5vbi1hZGRyZXNzYWJsZSBtZW1vcnkKCiAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgogICAgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBzdGFjayBwb2ludGVyIG9yIG5vdC4gSG93ZXZlciwKICAgIG9uIHN5c3RlbXMgd2l0aCBhIGxvdCBvZiBSQU0sIG9ubHkgYSBzdWJzZXQgb2YgdGhlIFJBTSBpcwogICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCiAgICB0byB1c2UgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmF3IHJhbQogICAgc2l6ZSBvdXQgb2YgdGhlIGJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxNjczZTlhZTE0Yjc3MWNkMTNmYWYxOTk0NzE5MjU5OWNhZTM5NTkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgTWF5IDEzIDE5OjAxOjU0IDIwMDggLTA1MDAKCiAgICBNYWtlIHN1cmUgY29tbW9uLmggaXMgdGhlIGZpcnN0IGluY2x1ZGUuCgogICAgSWYgY29tbW9uLmggaXNuJ3QgZmlyc3Qgd2UgY2FuIGdldCBDT05GSUdfIG9wdGlvbnMgZGVmaW5lZCBpbiB0aGUKICAgIGJvYXJkIGNvbmZpZyBmaWxlIGlnbm9yZWQuCVRoaXMgY2FuIGNhdXNlIGFuIGlzc3VlIGlmIGFueSBvZiB0aG9zZQogICAgY29uZmlnIG9wdGlvbnMgaW1wYWN0IHRoZSBzaXplIG9mIHR5cGVzIG9mIGRhdGEgc3RydWN0dXJlcwogICAgKGVnIENPTkZJR19QSFlTXzY0QklUKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDk1ZDQ0OWFkNGRlNzlkZDMyYjE3MDViOGE0ZDM1NTBmMWU5MDgxZTMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWF5IDEzIDE1OjUzOjI5IDIwMDggKzAyMDAKCiAgICBBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzCgogICAgQWRkIGxvZ2J1ZmZlciB0byByZXNlcnZlZCBMTUIgYXJlYXMgdG8gcHJldmVudCBpbml0cmQgYWxsb2NhdGlvbgogICAgZnJvbSBvdmVybGFwaW5nIHdpdGggaXQuCgogICAgTWFrZSBzdXJlIHRvIHVzZSBjb3JyZWN0IGxvZ2J1ZmZlciBiYXNlIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA2OTU2ZDUzZDk5MzQ4NjI1MDdmODNmMGUzMjU1ZGZkNDY2MmU3NDgyCkF1dGhvcjogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KRGF0ZToJVHVlIE1heSAxMyAxMzoyOTo1NCAyMDA4ICswMjAwCgogICAgbHdtb241OiBhZGQgbWVtb3J5LXBhdHRlcm4tdGVzdCB0byBGUEdBIFBPU1QuCgpjb21taXQgZTM0YTBlOTExYjZhMTU2OGQwY2E4NjQyMzRmYmQwZWUwNjBkOWIzNQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDggMTk6MDI6NTEgMjAwOCAtMDUwMAoKICAgIFBQQzogODZ4eCBBZGQgYmF0IHJlZ2lzdGVycyB0byByZWdpbmZvIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNWI5YjhjZGI4YjZlYjNhOGIwZjVkOTkwOWQ2OWNjYzljNzAzZWQ5CkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgOSAxNTo0MTozNSAyMDA4IC0wNTAwCgogICAgUFBDOiBBZGQgcHJpbnRfYmF0cygpIHRvIGxpYl9wcGMvYmF0X3J3LmMKCiAgICBUaGlzIGZ1bmN0aW9uIHByaW50cyB0aGUgdmFsdWVzIG9mIGFsbCB0aGUgQkFUIHJlZ2lzdGVyCiAgICBwYWlycyAtIEkgbmVlZGVkIHRoaXMgZm9yIGRlYnVnIGVhcmxpZXIgdGhpcyB3ZWVrOyBhZGRpbmcgaXQgdG8KICAgIGxpYl9wcGMgc28gb3RoZXJzIGNhbiB1c2UgaXQgKGFuZCBhZGQgaXQgdG8gcmVnaW5mbyBjb21tYW5kcwogICAgaWYgc28gZGVzaXJlZCkuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzE0OGYyNGMxNTc0M2EwMmU4NTU2MzZlNmJlZDAxM2JkMTIxZjdmMgpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDE1IDIxOjI5OjA0IDIwMDggLTA1MDAKCiAgICBQUEM6IENoYW5nZSBsaWJfcHBjL2JhdF9ydy5jIHRvIHVzZSBoaWdoIGJhdHMKCiAgICBDdXJyZW50bHksIHRoaXMgY29kZSBvbmx5IGRlYWxzIHdpdGggQkFUcyAwLTMsIHdoaWNoIG1ha2VzCiAgICBpdCB1c2VsZXNzIG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IEJBVHMgNC03LiAgQWRkIHRoZQogICAgc3VwcG9ydCBmb3IgdGhlc2UgcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxCZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMxZDgyNjcyMjQzNDkzMWUxMTUyYTA5ZDE0MDE4N2RjZjcyZjhhYWMKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSA4IDE5OjAyOjEyIDIwMDggLTA1MDAKCiAgICBQUEM6IENyZWF0ZSBhbmQgdXNlIENPTkZJR19ISUdIX0JBVFMKCiAgICBDaGFuZ2UgYWxsIGNvZGUgdGhhdCBjb25kaXRpb25hbGx5IG9wZXJhdGVzIG9uIGhpZ2ggYmF0CiAgICByZWdpc3RlcnMgKHRoYXQgaXMsIEJBVHMgNC03KSB0byBsb29rIGF0IENPTkZJR19ISUdIX0JBVFMKICAgIGluc3RlYWQgb2YgdGhlIG15cmlhZCB3YXlzIHRoaXMgaXMgZG9uZSBub3cuICBEZWZpbmUgdGhlIG9wdGlvbgogICAgZm9yIGV2ZXJ5IGNvbmZpZyBmb3Igd2hpY2ggaGlnaCBiYXRzIGFyZSBzdXBwb3J0ZWQgKGFuZAogICAgZW5hYmxlZCBieSBlYXJseSBib290LCBvbiBwYXJ0cyB3aGVyZSB0aGV5J3JlIG5vdCBhbHdheXMKICAgIGVuYWJsZWQpCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWEzYjhiZjljMzAwNjViYjJlYTg1Mjc5OWQzMmRiNTAyMDU5ODQ5NQpBdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgpEYXRlOglXZWQgTWF5IDI4IDE5OjU1OjE5IDIwMDggKzAyMDAKCiAgICBFMTAwMDogQWRkIHN1cHBvcnQgZm9yIHRoZSA4MjU0MUdJIExGIEludGVsIFBybyAxMDAwIEdUIERlc2t0b3AgQWRhcHRlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBmZjM2ZmJiMmU3NTgzZmI4MDhlZWY3NzNmNTExNDg5YzdhOWMyZGYzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAyOCAxMzowNjoyNSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCAxMCBiYXNlIGV0aGVybmV0IHN1cHBvcnQgZm9yIG1jZjU0NDV4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMWE5ZmNjNGI3NjU1OTlkYjI0ZmE5YzMyMjkzNTk5ZjI0YzdhMTliYQpBdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBtaXBzOiBBZGQgYW4gJ2luY2x1ZGUvYXNtL2Vycm5vLmgnLCBsaWtlIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzCgogICAgQWxsIG90aGVyIHUtYm9vdCBhcmNoaXRlY3R1cmVzIGhhdmUgYW4gaW5jbHVkZS9hc20vZXJybm8uaCwgc28KICAgIHRoaXMgY2hhbmdlIGFkZHMgaXQgdG8gdGhlIG1pcHMgaW5jbHVkZS9hc20tbWlwcyBoZWFkZXJzIGFsc28uCgogICAgU3RvbGVuIGZyb20gTGludXggMi42LjI1LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgoKY29tbWl0IGUyYWQ4NDI2NjI0YmFjNDU3YWNjNjkyNWI2ZmY0MDhlOWJmMjA0NjYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogVXBkYXRlIGNvcHJvY2Vzc29yIHJlZ2lzdGVyIGFjY2VzcyBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDFhM2FkYWM4MWMyOTJmMmVlNzZlNDNjZGViMmZiZThmOTE1ZmUxOTQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM4IDIwMDggKzA5MDAKCiAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogVXBkYXRlIHJlZ2lzdGVyIC8gYml0IGZpZWxkIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBiZjQ2MmFlNDUwYTdmMmVlZWRkYzY5OWVkMzQ1YjM5MWUzMjYzNTQwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozNyAyMDA4ICswOTAwCgogICAgW01JUFNdIDxhc20vbWlwc3JlZ3MuaD46IENvZGlueWdTdHlsZSBjbGVhbnVwcwoKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDg5YTE1NTBlYzZiNzQ0NTIyNzRhN2EyMzEyNzkzNmUyYzdlZWM3MTEKQXV0aG9yOiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozNyAyMDA4ICswOTAwCgogICAgbWlwczogSWYgQ09ORklHX0NNRF9TUEkgaXMgZGVmaW5lZCwgY2FsbCBzcGlfaW5pdCgpCgogICAgVGhlIG1pcHMgYXJjaGl0ZWN0dXJlIGN1cnJlbnRseSBkb2VzIG5vdCBjYWxsICdzcGlfaW5pdCgpJyBpbiB0aGUgZ2VuZXJpYwogICAgYm9hcmQgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBDT05GSUdfQ01EX1NQSSBpcyBkZWZpbmVkLgoKICAgIFRoaXMgcGF0Y2ggcmVjdGlmaWVzIHRoYXQgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZTk5NmJjMzM5YjBmMzlmNmMwYjI5YjE0NTViYTdlYjMxOGIwMjNkMwpBdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgpEYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gbGliX21pcHMvYm9hcmQuYzogQWRkIG5hbmRfaW5pdAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgc3RhbmRhcmQgJ25hbmRfaW5pdCgpJyBjYWxsIHRvIHRoZSBtaXBzIGdlbmVyaWMKICAgICdib2FyZF9pbml0X3IoKScgY2FsbCwgYnJpbmdpbmcgTUlQUyBpbiBsaW5lIHdpdGggdGhlIG90aGVyIGFyY2hpdGVjdHVyZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGQ2YWMyZWQ4OTNjMjE2ODczOGFlZTAxNTc5ZDYyODNhZjhkMzcwNDUKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxMDo0OTo0NiAyMDA4IC0wNTAwCgogICAgUmVtb3ZlIHByb3RvdHlwZXMgb2YgbmFuZF9pbml0KCkgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIG5hbmQuaC4KCiAgICBMaWtld2lzZSB3aXRoIG9uZW5hbmRfaW5pdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIyOWM1NmYwN2E4MmVhY2RhOGM4NzIwY2IxNDZmYzliZTBmNmRiNTQKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAyMiAxMDo0OTowMCAyMDA4IC0wNTAwCgogICAgTWFrZSBvbmVuYW5kX3Vib290Lmggc2VsZi1zdWZmaWNpZW50LgoKICAgIERvbid0IGFzc3VtZSB0eXBlcyBhcmUgcHJvdmlkZWQgYnkgcHJldmlvdXNseSBpbmNsdWRlZCBoZWFkZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3MjNiYmI0NmFiYjdiMmNhMjRlZWFkNTExNGEzZmFhNTgwNjBjMjAKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNDoyNjo1OSAyMDA4ICswMTAwCgogICAgbmFuZDogQ29ycmVjdCBOQU5EIGVyYXNlIHBlcmNlbnRhZ2Ugb3V0cHV0CgogICAgRm9yIE5BTkQgZXJhc2Ugc2l6ZXMgc21hbGxlciB0aGFuIG9uZSBOQU5EIGVyYXNlIGJsb2NrLCBlcmFzZQogICAgcGVyY2VudGFnZSBvdXRwdXQgYmVjb21lcyBncmF0ZXIgdGhhbiAxMDAlIGUuZy4KCiAgICAtLSBjdXQgLS0KICAgICAgPiBuYW5kIGluZm8KICAgIERldmljZSAwOiBOQU5EIDY0TWlCIDEsOFYgOC1iaXQsIHNlY3RvciBzaXplIDE2IEtpQgogICAgICA+IG5hbmQgZXJhc2UgMHgxMDAwMDAgMHgyMDAwCiAgICBOQU5EIGVyYXNlOiBkZXZpY2UgMCBvZmZzZXQgMHgxMDAwMDAsIHNpemUgMHgyMDAwCiAgICBFcmFzaW5nIGF0IDB4MTAwMDAwIC0tIDIwMCUgY29tcGxldGUuCiAgICBPSwogICAgICA+CiAgICAtLSBjdXQgLS0KCiAgICBDb3JyZWN0IHRoaXMgYW5kIGdpdmUgdXNlciBhIHdhcm5pbmcgdGhhdCBtb3JlIGlzIGVyYXNlZCB0aGFuIHNwZWNpZmllZDoKCiAgICAtLSBjdXQgLS0KICAgICAgPiBuYW5kIGVyYXNlIDB4MTAwMDAwIDB4MjAwMAogICAgTkFORCBlcmFzZTogZGV2aWNlIDAgb2Zmc2V0IDB4MTAwMDAwLCBzaXplIDB4MjAwMAogICAgV2FybmluZzogRXJhc2Ugc2l6ZSAweDAwMDAyMDAwIHNtYWxsZXIgdGhhbiBvbmUgZXJhc2UgYmxvY2sgMHgwMDAwNDAwMAoJICAgICAgIEVyYXNpbmcgMHgwMDAwNDAwMCBpbnN0ZWFkCiAgICBFcmFzaW5nIGF0IDB4MTAwMDAwIC0tIDEwMCUgY29tcGxldGUuCiAgICBPSwogICAgICA+CiAgICAtLSBjdXQgLS0KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KCmNvbW1pdCA1OTIyZGI2YzA5NDg1MDZiZTkxZTBkZTQ0ZTdhNjg2M2ExOGE0MTdmCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVHVlIE1heSAxMyAxNzozMToyNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cCBuYW5kX2luZm9bXSBkZWNsYXJhdGlvbi4KCiAgICBUaGUgbmFuZF9pbmZvIGFycmF5IGlzIGRlY2xhcmVkIGFzIGV4dGVybiBpbiBzZXZlcmFsIC5jIGZpbGVzLgogICAgVGhvc2UgZGF5cywgbmFuZC5oIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheSwgc28gdGhlcmUgaXMKICAgIG5vIG5lZWQgdG8gZGVjbGFyZSBpdCBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEzNWYwYTc0ODhhZjI5NDdhZGJlNGI0MGI3OTI4MGJkZmU1ZTk4ODYKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSAxOSAwOTozMDo0MyAyMDA4IC0wNTAwCgogICAgTkFORDogUHJvdmlkZSBhIHNhbmUgZGVmYXVsdCBmb3IgTkFORF9NQVhfQ0hJUFMuCgogICAgVGhpcyBhbGxvd3MgdGhlIGhlYWRlciB0byBiZSBpbmNsdWRlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYSBib2FyZCdzCiAgICBjb25maWcgZmlsZSBwcm92aWRlcyBOQU5ELXJlbGF0ZWQgZGVmaW5pbml0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhODA5MmMwMjFkMjdmMjdmNGIzMjNiN2Q0OTk3OWNhMDFiM2ZjMTlkCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gTWF5IDI2IDEyOjE5OjEwIDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHRoZW9yZXRpY2FsIHJhY2UgaW4gdWRlbGF5KCkKCiAgICBJZiB0aGUgc3BlY2lmaWVkIGRlbGF5IGlzIHZlcnkgc2hvcnQsIHRoZSBjeWNsZSBjb3VudGVyIG1heSBnbyBwYXN0IHRoZQogICAgImVuZCIgdGltZSB3ZSBhcmUgd2FpdGluZyBmb3IgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gcmVhZGluZyBpdC4KCiAgICBGaXggaXQgYnkgY2hlY2tpbmcgdGhlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjeWNsZSBjb3VudCAibm93IiBhbmQgdGhlCiAgICBjeWNsZSBjb3VudCBhdCB0aGUgYmVnaW5uaW5nLiBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIHRoZSBkZWxheQogICAgbWVhc3VyZWQgaW4gbnVtYmVyIG9mIGN5Y2xlcyBpcyBiZWxvdyAyXjMxLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA0OGVhNjIzZWFlODY3NDc5MzM3MmUzZTdjOTVlNzJlNWE0NGQ3YTk1CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgTWF5IDIxIDEzOjAxOjA5IDIwMDggKzAyMDAKCiAgICBhdnIzMjogQ29tcGlsZSBhdG1lbF9tY2kubyBjb25kaXRpb25hbGx5CgogICAgUmVtb3ZlICNpZmRlZiBDT05GSUdfTU1DIGZyb20gdGhlIHNvdXJjZSBmaWxlIGFuZCB1c2UgY29uZGl0aW9uYWwKICAgIGNvbXBpbGF0aW9uIGluIHRoZSBNYWtlZmlsZSBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBlOTJhNWJmODMzMDY1NGUzM2FjMTNmNmIzMDU4NjM0ZTU4ZjVkMWMwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTWF5IDIyIDEyOjI4OjI1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogRml4IHdyb25nIGVycm9yIGZsYWdzIGluIGF0bWVsX21jaSBkcml2ZXIKCiAgICBNYWtlIHN1cmUgd2UgY2hlY2sgZm9yIENSQyBlcnJvcnMgd2hlbiBzZW5kaW5nIGNvbW1hbmRzIHRoYXQgdXNlIENSQwogICAgY2hlY2tpbmcuCgogICAgUmVwb3J0ZWQtYnk6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+CiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgN2E5NmRkYWRkMTNlNmFjOWE4MjlhZmZjZTliNmY4ODIzZjU4MGU0OQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1heSAyMSAxMToxMDo1OSAyMDA4ICswMjAwCgogICAgYXZyMzI6IEZpeCB0d28gd2FybmluZ3MgaW4gYXRtZWxfbWNpLmMKCiAgICBUaGUgd2FybmluZ3MgYXJlIGhhcm1sZXNzIGJ1dCBhbm5veWluZy4gTGV0J3MgZml4IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGEyM2UyNzdjNGEzYTJiYmM0MmQyMzdhYWUyOWRhM2E4OTcxZTc1N2YKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBNYXkgMTkgMTE6MzY6MjggMjAwOCArMDIwMAoKICAgIGF2cjMyOiBSZXdvcmsgU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZQoKICAgIFRoaXMgY2xlYW5zIHVwIHRoZSBTRFJBTSBpbml0aWFsaXphdGlvbiBhbmQgcmVsYXRlZCBjb2RlIGEgYml0LCBhbmQKICAgIGFsbG93cyBmYXN0ZXIgYm9vdGluZy4KCiAgICAgICogQWRkIGRlZmluaXRpb25zIGZvciBFQkkgYW5kIGludGVybmFsIFNSQU0gdG8gYXNtL2FyY2gvbWVtb3J5LW1hcC5oCiAgICAgICogUmVtb3ZlIG1lbW9yeSB0ZXN0IGZyb20gc2RyYW1faW5pdCgpIGFuZCBtYWtlIGNhbGxlciByZXNwb25zaWJsZQoJZm9yIHZlcmlmeWluZyB0aGUgU0RSQU0gYW5kIGRldGVybWluaW5nIGl0cyBzaXplLgogICAgICAqIFJlbW92ZSBiYXNlX2FkZHJlc3MgbWVtYmVyIGZyb20gc3RydWN0IHNkcmFtX2NvbmZpZyAod2FzIHNkcmFtX2luZm8pCiAgICAgICogQWRkIGRhdGFfYml0cyBtZW1iZXIgdG8gc3RydWN0IHNkcmFtX2NvbmZpZyBhbmQga2lsbCBDRkdfU0RSQU1fMTZCSVQKICAgICAgKiBBZGQgc3VwcG9ydCBmb3IgYSBjb21tb24gU1RLMTAwMCBoYWNrOiAxNk1CIFNEUkFNIGluc3RlYWQgb2YgOC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTUxMDdiN2MwMjg4MDY5MTk2MzBiZjAyYzY1M2FhOGY0Zjg2N2M5NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE1heSAxOSAxMToyNzozNyAyMDA4ICswMjAwCgogICAgYXZyMzI6IERvIHN0cmljdGVyIHN0YWNrIGNoZWNraW5nIGluIHRoZSBleGNlcHRpb24gaGFuZGxlcgoKICAgIERvbid0IGRvIGEgc3RhY2sgZHVtcCBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyBvdXRzaWRlIHRoZSBtZW1vcnkgYXJlYQogICAgcmVzZXJ2ZWQgZm9yIHN0YWNrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBjYWY4M2VhODg4YTAyMjBmNDE3NDdkMGI3NzQ4ZmE0M2I0YTRiZDQ5CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDIgMTU6MzI6NTcgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBVc2UgdGhlIHNhbWUgZW50cnkgcG9pbnQgZm9yIHJlc2V0IGFuZCBleGNlcHRpb24gaGFuZGxpbmcKCiAgICBTaW5jZSB0aGUgcmVzZXQgdmVjdG9yIGlzIGFsd2F5cyBhbGlnbmVkIHRvIGEgdmVyeSBsYXJnZSBib3VuZGFyeSwgd2UKICAgIGNhbiBzYXZlIGEgY291cGxlIG9mIEtCIHdvcnRoIG9mIGFsaWdubWVudCBwYWRkaW5nIGJ5IHBsYWNpbmcgdGhlCiAgICBleGNlcHRpb24gdmVjdG9ycyBhdCB0aGUgc2FtZSBhZGRyZXNzLgoKICAgIERlY2lkaW5nIHdoaWNoIG9uZSBpdCBpcyBpcyBlYXN5OiBJZiB3ZSdyZSBoYW5kbGluZyBhbiBleGNlcHRpb24sIHRoZQogICAgQ1BVIGlzIGluIEV4Y2VwdGlvbiBtb2RlLiBJZiB3ZSdyZSBzdGFydGluZyB1cCBhZnRlciByZXNldCwgdGhlIENQVSBpcwogICAgaW4gU3VwZXJ2aXNvciBtb2RlLiBTbyB0aGlzIGFkZHMgYSB2ZXJ5IG1pbmltYWwgb3ZlcmhlYWQgdG8gdGhlIHJlc2V0CiAgICBwYXRoIChvbmx5IGV4ZWN1dGVkIG9uY2UpIGFuZCB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIHBhdGggKG5vcm1hbGx5CiAgICBuZXZlciBleGVjdXRlZCBhdCBhbGwuKQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwYzE2ZWVkMjE4OWExOTBiZDU2NTViMzNjMDI5ZjgwOWE5YjMxMTI4CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgTWF5IDIgMTU6MjQ6MjIgMjAwOCArMDIwMAoKICAgIGF2cjMyOiBQdXQgbWVtc2V0IGluIGl0cyBvd24gc2VjdGlvbgoKICAgIEFsbCBDIGNvZGUgaXMgY29tcGlsZWQgd2l0aCAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucy4KICAgIEFzc2VtYmx5IGZ1bmN0aW9ucyBzaG91bGQgZ2V0IHRoZWlyIG93biBzZWN0aW9ucyBhcyB3ZWxsIHNvIHRoYXQKICAgIGV2ZXJ5dGhpbmcgbG9va3MgY29uc2lzdGVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgM2FjZTI1MjdiYTgwYmQyZmUxYmNlYWFiNTBkMGIzYzRmYjVkZDAyMApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIE1heSAyIDE1OjIxOjQwIDIwMDggKzAyMDAKCiAgICBhdnIzMjogUmVuYW1lIHBtX2luaXQoKSBhcyBjbGtfaW5pdCgpIGFuZCBtYWtlIFNvQy1zcGVjaWZpYwoKICAgIHBtX2luaXQoKSB3YXMgYWx3YXlzIG1vcmUgYWJvdXQgY2xvY2sgaW5pdGlhbGl6YXRpb24gdGhhbiBhbnl0aGluZwogICAgZWxzZS4gRGVhbGluZyB3aXRoIFBMTHMsIGNsb2NrIGdhdGluZyBhbmQgc3VjaCBpcyBhbHNvIGluaGVyZW50bHkKICAgIFNvQy1zcGVjaWZpYywgc28gbW92ZSBpdCBpbnRvIGEgU29DLXNwZWNpZmljIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGY1OTcyYzNiMjQ1NGMyMjk1N2YyODQyY2ZlNjRlYzgxMThlMDE1YgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNjoxNTo1NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBuZXctc3R5bGUgTWFrZWZpbGUgZm9yIHRoZSBhdDMyYXAgcGxhdGZvcm0KCiAgICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBhdm9pZCBjb21waWxpbmcgY2VydGFpbiBmaWxlcyBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTliMmJiNzhhMWJkOGViZGI2MzM1MDliZGQxYzgxMzRkNTI3YjIxMwpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNDozNjo0NyAyMDA4ICswMjAwCgogICAgYXZyMzI6IFJlbW92ZSB1bnVzZWQgZmlsZSBjcHUvYXQzMmFwL3BtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNDQ0NTNiMjViMDY0MjZlZWYwYjdiMmZhN2MwMjZmZGYxOWNlMzRmMgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxNDoxOToyOCAyMDA4ICswMjAwCgogICAgYXZyMzI6IENsZWFuIHVwIHRoZSBITUFUUklYIGNvZGUKCiAgICBSZXdvcmsgdGhlIEhNQVRSSVggY29uZmlndXJhdGlvbiBpbnRlcmZhY2Ugc28gdGhhdCBpdCBiZWNvbWVzIGVhc2llcgogICAgdG8gY29uZmlndXJlIHRoZSBITUFUUklYIGZvciBib2FyZHMgd2l0aCBzcGVjaWFsIG5lZWRzLCBhbmQgYWRkIG5ldwogICAgcGFydHMuCgogICAgVGhlIEhNQVRSSVggaGVhZGVyIGZpbGUgaGFzIGJlZW4gc3BsaXQgaW50byBhIGdlbmVyYWwsCiAgICBjaGlwLWluZGVwZW5kZW50IHBhcnQgd2l0aCByZWdpc3RlciBkZWZpbml0aW9ucywgZXRjLiBhbmQgYQogICAgY2hpcC1zcGVjaWZpYyBwYXJ0IHdpdGggU0ZSIGJpdGZpZWxkIGRlZmluaXRpb25zIGFuZCBtYXN0ZXIvc2xhdmUKICAgIGlkZW50aWZpZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwYTJlNDg3OTJkZDM3MmM5MGI4MDA1OWYzMjM1ZTY3YTU2N2UxNmZjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDEyOjE0OjExIDIwMDcgKzAxMDAKCiAgICBhdnIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDYgYm9hcmQKCiAgICBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIEFUU1RLMTAwMiB3aXRoIDY0TUIgU0RSQU0gYW5kIE5BTkQgZmxhc2ggb24KICAgIGJvYXJkLiBJdCdzIGN1cnJlbnRseSBpbiBwcm9kdWN0aW9uIGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3ODFlYjlhMWU0YWY0YmQzNGMxMzhlNjEyNmVjNWNjNmRkNGI1NDQwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUdWUgQXByIDI5IDEyOjUzOjA1IDIwMDggKzAyMDAKCiAgICBhdnIzMjogR2V0IHJpZCBvZiB0aGUgLmZsYXNocHJvZyBzZWN0aW9uCgogICAgVGhlIC5mbGFzaHByb2cgc2VjdGlvbiB3YXMgb25seSBuZWVkZWQgYmFjayB3aGVuIHdlIHdlcmUgcnVubmluZwogICAgZGlyZWN0bHkgZnJvbSBmbGFzaCwgYW5kIGl0J3MgZXZlbiBtb3JlIHVzZWxlc3Mgb24gTkdXMTAwIHNpbmNlIGl0CiAgICB1c2VzIHRoZSBDRkkgZmxhc2ggZHJpdmVyIHdoaWNoIG5ldmVyIHVzZWQgdGhpcyB3b3JrYXJvdW5kIGluIHRoZQogICAgZmlyc3QgcGxhY2UuCgogICAgUmVtb3ZlIGl0IG9uIFNUSzEwMDAgYXMgd2VsbCwgYW5kIGdldCByaWQgb2YgYWxsIHRoZSBhc3NvY2lhdGVkIGNvZGUgYW5kCiAgICBhbm5vdGF0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgY2RkNDJjMGM3YTUyMDVmYzM4MDkxMmQ4MzIyOTA2OWE3MWVhM2FiZgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxMzowOTo1NiAyMDA4ICswMjAwCgogICAgYXZyMzI6IFVzZSBjb3JyZWN0IGNvbmRpdGlvbiBhcm91bmQgbWFjYiBjbG9jayBhY2Nlc3NvcnMKCiAgICBnZXRfbWFjYl9wY2xrX3JhdGUoKSBhbmQgZ2V0X21hY2JfaGNsa19yYXRlKCkgc2hvdWxkIGJlIGF2YWlsYWJsZSB3aGVuCiAgICB0aGUgY2hpcCBoYXMgYSBNQUNCIGNvbnRyb2xsZXIsIG5vdCB3aGVuIGl0IGhhcyBhIFVTQVJULgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmNzkzYTM1ODE5MDFmZjM5YzJhYmI5NDAxMmQ5YmJjODU3M2NjZjAyCkF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+CkRhdGU6CVdlZCBBcHIgMTYgMjI6NTc6NTggMjAwOCAtMDcwMAoKICAgIGF2cjMyOiBEaXNhYmxlIHRoZSBBUDcwMDAgaW50ZXJuYWwgd2F0Y2hkb2cgb24gc3RhcnR1cAoKICAgIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSB3YXRjaGRvZyBvZmYgaW4gYWxsIGNhc2VzLiAgVGhhdCB3aWxsIGF0IGxlYXN0CiAgICBnZXQgcmlkIG9mIHRoZSBjb25zdGFudCByZWJvb3QgY3ljbGUsIHRob3VnaCBpdCB3b24ndCBsZXQgdGhlIHdhdGNoZG9nCiAgICBhY3R1YWxseSBydW4gaW4gdGhlIG5ldyBrZXJuZWxzOiAgaXRzIHByb2JlKCkgY29tZXMgdXAgd2l0aCBhIHBvbGl0ZQogICAgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNTVhYzdhNzQ5MGI1NWRhNTY2NTlmOTVkODJhMGM4M2I5NzU2ZGYyNwpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgpEYXRlOglGcmkgRmViIDIyIDEyOjU0OjM5IDIwMDggLTA4MDAKCiAgICBhdnIzMjogc3RrMTAwMiBhbmQgbmd3MTAwIGNvbnZlcmdlbmNlCgogICAgTWFrZSBTVEsxMDAyIGFuZCBOR1cxMDAgYm9hcmRzIGFjdCBtb3JlIGFsaWtlOgogICAgICAtIFNUSyBib2FyZHMgY2FuIHVzZSBhcyBtYW55IGFyZ3VtZW50cyBhcyBOR1cKICAgICAgLSBTVEsgYm9hcmRzIGRvbid0IG5lZWQgdG8gbWFuYWdlIEZQR0FzIGVpdGhlcgogICAgICAtIE5HVyBjb21tYW5kcyBzaG91bGQgbWF0Y2ggU1RLIG9uZXMKCiAgICBBbHNvIHNwZWxsIFUtQm9vdCByaWdodCBpbiBwcm9tcHRzIGZvciBTVEsxMDAyIGFuZCBOR1cxMDAuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICBbaGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbTogdXBkYXRlIFNUSzEwMFszNF0gYXMgd2VsbF0KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1ZTE4ODJkZjZhM2VmYzdkZTU1MjRkMjhjZWE0ZWNkZTdkMTYzZDU0CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMzo0NzowMCAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IEZpeCBQQ0kgYnVzIGZyZXF1ZW5jeSByZXBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDc5MWUxZGJhOGRlNzZhZDhlNzYyYTdiYWRiODY5ZjIyNGExZjhiODIKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglUdWUgTWF5IDI3IDExOjQ5OjEzIDIwMDggKzAyMDAKCiAgICBTb2NyYXRlczogQWRkZWQgVVNCIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA1YTkwNGU1NjM3Y2ZmMWQ3MDhkYzY3MDk4MDA0ZjgzYmE5ZTg0YzU0CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMTozNTowMiAyMDA4ICswMjAwCgogICAgVVNCOiBhZGQgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgQ09ORklHX1BDSV9PSENJX0RFVk5PCgogICAgSW4gY2FzZSBvZiBzZXZlcmFsIFBDSSBVU0IgY29udHJvbGxlcnMgb24gYSBib2FyZCB0aGlzIHZhcmlhYmxlCiAgICBzcGVjaWZ5cyB3aGljaCBjb250cm9sbGVyIHRvIHVzZS4KICAgIFNlZSBkb2MvUkVBRE1FLmdlbmVyaWNfdXNiX29oY2kgZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAyZjc0NjhhZWJhNjBlMTI4ODAzMGE4ZDAwN2M0ZTYzYmQzZjEzMjIxCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIE1heSAyNyAxMDozNjowNyAyMDA4ICswMjAwCgogICAgU29jcmF0ZXM6IGFkZCBzdXBwb3J0IGZvciBEUzc1IERpZ2l0YWwgVGhlcm1vIFNlbnNvciBvbiBJMkMgYnVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgODNlOWQ3YTI2MTRkNDAwNmI5MjY5MGFmYTMzOTBjMjkxNzM0MjY3ZQpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXkgMjYgMTg6MTY6MDQgMjAwOCArMDIwMAoKICAgIFNvY3JhdGVzOiBDb25maWcgZmlsZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNjAyY2FjMTM4OWI3NTViMjIzMjcyZjIzMjhhNDdlNmY4YzI0MDg0OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXkgMjQgMTI6NDc6NDYgMjAwOCArMDIwMAoKICAgIE1BS0VBTEw6IGFkZCBhdDkxIGxpc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDI5MGVmNjQzNjgzOGIxY2MwMTNiZDY3ZTBlMDQ5NWM5ZWIzZTIzYzAKQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+CkRhdGU6CUZyaSBNYXkgMjMgMTU6Mzc6MDUgMjAwOCAtMDcwMAoKICAgIEFkZCBNYXJ2ZWxsIDg4RTExMTggc3VwcG9ydCBmb3IgVFNFQwoKICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTU3YjM3N2Q4YmZjOGI4MzNiNmU3NDk0NTdiY2RmYTI5ODMzMWEyNApBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJTW9uIE1heSA1IDE0OjA2OjExIDIwMDggKzAyMDAKCiAgICBzbWM5MTF4OiBhZGQgMTYgYml0IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDYzMjRlNWJlYzg4MjVmN2ZlZTMwMjZmZmJkMzk0NDU0YWU4YjUzZmIKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KRGF0ZToJV2VkIE1heSAyMSAyMToyOToxMCAyMDA4ICswMjAwCgogICAgRml4IGVuZGlhbmVzcyBjb252ZXJzaW9uIGluIHVzYl9vaGNpLmMKCiAgICBTb3JyeSwgSSBmb3Jnb3QgdGhpcyBsaW5lOgoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgoKICAgIEkgdGhpbmsgdGhpcyBtdXN0IGJlIHN3YXBwZWQgKHJlc3VsdCBtYXkgYmUgZXF1YWwpLgoKY29tbWl0IGM5MTgyNjFjNmQ5ZjI2NWY4OGJhZjcwZjhhNzNkZmU2ZjBjYjk1OTYKQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KRGF0ZToJV2VkIE1heSAyMSAyMjoxMjowMCAyMDA4ICswMjAwCgogICAgVVNCOiByZXBsYWNlIG9sZCBzd2FwXyB3aXRoIHByb3BlciBlbmRpYW5lc3MgY29udmVyc2lvbiBtYWNyb3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZmI2MzkzOWI0ZmUxNDA4NDljZGJhNjlmOWU2NGEzZTBlMmYzY2UxYwpBdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgpEYXRlOglXZWQgTWF5IDIxIDIxOjI5OjEwIDIwMDggKzAyMDAKCiAgICBGaXggZW5kaWFuZXNzIGNvbnZlcnNpb24gaW4gdXNiX29oY2kuYwoKICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA0Nzc0MzRjNjNjMmVhNWJhYTVjNmM0ZTQzNTAwNzg2ZjQzNjUxMWZmCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSAyMiAwMToxNTo1MyAyMDA4ICswMjAwCgogICAgVVNCOiBhZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgUENJIE9IQ0kgY29udHJvbGxlcnMKCiAgICBBZGQgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgQ09ORklHX1BDSV9PSENJX0RFVk5PLgogICAgSW4gY2FzZSBvZiBzZXZlcmFsIFBDSSBVU0IgY29udHJvbGxlcnMgb24gYSBib2FyZCB0aGlzIHZhcmlhYmxlCiAgICBzcGVjaWZ5cyB3aGljaCBjb250cm9sbGVyIHRvIHVzZS4KCiAgICBBbHNvIGFkZCBVU0Igc3VwcG9ydCBmb3Igc29rcmF0ZXMgYm9hcmQuCgogICAgU2VlIGRvYy9SRUFETUUuZ2VuZXJpY191c2Jfb2hjaSBmb3IgZGV0YWlscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBjZTY3NTRkZjYxY2JlMjNiNWI3M2QwOTVhMDBhYzlhODUwNGIzZDc3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMSAxNjo1NjowOCAyMDA4ICswMjAwCgogICAgRml4IHNvbWUgd2hpdGVzcGFjZSBpc3N1ZXMKCiAgICBpbnRyb2R1Y2VkIGJ5IDUzNjc3ZWYxOCAiQmlnIHdoaXRlLXNwYWNlIGNsZWFudXAuIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDQxNjYwM2FlYjA2ODYxYjQ2OGIwNmE5ODFlNTJjM2ZmODA1ZGI3YgpBdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTIgMTQ6MzY6MzkgMjAwOCAtMDUwMAoKICAgIE1ha2UgYWRzNTEyMSBvdXQtb2YtdHJlZSBjb21waWxpbmcgc2FmZQoKICAgIFJldXNlIHRoZSBleGlzdGluZyBESVUgZHJpdmVyIGluIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24uCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZTFiYWQ0N2NkMzQ1Yzc2YzkxYTY0Y2FmNDEwMTFlNDMxYjYyNTk5CkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIwOjAxIDIwMDggLTA1MDAKCiAgICBBZGRpbmcgRElVIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSA1MTIxQURTCgogICAgQWRkIERJVSBhbmQgY2ZiIGNvbnNvbGUgc3VwcG9ydCB0byBGU0wgNTEyMUFEUyBib2FyZC4KCiAgICBVc2UgI2RlZmluZSBDT05GSUdfVklERU8gaW4gY29uZmlnIGZpbGUgdG8gZW5hYmxlIGZiIGNvbnNvbGUuCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNDhmZjY4ZDIzNWU2NzExNzZmNmI0OTZjNDQyNDZkYmU1ZTBhOTNmCkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIwOjAwIDIwMDggLTA1MDAKCiAgICBSZXBsYWNlIERQUklOVEYgd2l0aCBkZWJ1ZwoKICAgIFJlbW92ZSBEUFJJTlRGIG1hY3JvIGFuZCByZXBsYWNlIGl0IHdpdGggZ2VuZXJpYyBkZWJ1ZyBtYWNyby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNiODBjNWY1NzRhZDdmNmUxYzU1YTY4ZjQyNzUyYjQyN2ZkZjc3OGQKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWF5IDUgMTA6MTk6NTkgMjAwOCAtMDUwMAoKICAgIE1vdmUgcGl4ZWwgY2xvY2sgc2V0dGluZyB0byBib2FyZCBmaWxlCgogICAgVGhlIGNsb2NrIGRpdmlkZXIgaGFzIGRpZmZlcmVudCBmb3JtYXQgaW4gNTEyMSBhbmQgODYxMC4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0bwogICAgYm9hcmQgc3BlY2lmaWMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUzNjc3ZWYxOGUyNWM5N2FjNjEzMzQ5MDg3YzVjYjMzYWU1YTI3NDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDIwIDE2OjAwOjI5IDIwMDggKzAyMDAKCiAgICBCaWcgd2hpdGUtc3BhY2UgY2xlYW51cC4KCiAgICBUaGlzIGNvbW1pdCBnZXRzIHJpZCBvZiBhIGh1Z2UgYW1vdW50IG9mIHNpbGx5IHdoaXRlLXNwYWNlIGlzc3Vlcy4KICAgIEVzcGVjaWFsbHksIGFsbCBzZXF1ZW5jZXMgb2YgU1BBQ0VzIGZvbGxvd2VkIGJ5IFRBQiBjaGFyYWN0ZXJzIGdldAogICAgcmVtb3ZlZCAodW5sZXNzIHRoZXkgYXBwZWFyIGluIHByaW50IHN0YXRlbWVudHMpLgoKICAgIEFsc28gcmVtb3ZlIGFsbCBlbWJlZGRlZCAidmltOiIgYW5kICJ2aToiIHN0YXRlbWVudHMgd2hpY2ggaGlkZQogICAgaW5kZW50YXRpb24gcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyZjg0NWRjMmJkZjQ2MWJmZWU5ZmEyNTgyM2Y3NjlmNWRiOWViYTBiCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE3OjQ2OjIzIDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogZml4IHNlY29uZCBUU0VDIGNvbmZpZ3VyYXRpb24gKGl0IGlzIGFjdHVhbGx5IFRTRUMzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgNzkzNjcwYzNjMGYwZjcyY2FlYWQ2MmYwYmU5ZmMzZDlmYmM2MDYwZgpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBNYXkgOCAxNDoxNzowOCAyMDA4ICswMjAwCgogICAgRml4ZWQgcmVzZXQgZm9yIHNvY3JhdGVzCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBlMTg1NzVkNWY1ODlhNjJlMTljNzBkNDcxZDRiNGUyN2NhZDNhZjU2CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIE1heSA3IDE1OjEwOjQ5IDIwMDggKzAyMDAKCiAgICBzb2NyYXRlczogY2hhbmdlcyB0byBzdXBwb3J0IEZEVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVkMTA4YWM4ZjQzNTkyNGM2MjRjZDZhYWFjZDQ0ZjM1ZjVjZjk0YzAKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglXZWQgQXByIDMwIDExOjQyOjUwIDIwMDggKzAyMDAKCiAgICBJbml0aWFsIHN1cHBvcnQgZm9yICJTb2NyYXRlcyIgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgoKY29tbWl0IDBlMTVkZGQxMWYxYTg0YzQ2NWU0MzRlYjA1MWQyZWYwOGVmMDJiOWIKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBNYXkgOCAxNTo0Njo0MiAyMDA4ICswMjAwCgogICAgUE9TVDogcmVwbGFjZSB0aGUgTE9HQlVGRl9JTklUSUFMSVpFRCBmbGFnIGluIGdkLT5wb3N0X2xvZ193b3JkICgxIDw8IDMxKSB3aXRoIHRoZSBHRF9GTEdfTE9HSU5JVCBmbGFnIGluIGdkLT5mbGFncy4KCiAgICBUaGlzIHdheSB3ZSBiZWNvbWUgYWJsZSB0byB1dGlsaXplIHRoZSBmdWxsIHBvc3RfbG9nX3dvcmQgZm9yIFBPU1QKICAgIGFjdGl2aXRpZXMgKG92ZXJ3aXNlLCBQT1NUIEVDQywgd2hpY2ggaGFzIDB4ODAwMCBJRCwgY291bGQgYmUKICAgIGVycm9uZW91c2x5IHRyZWF0ZWQgYXMgc3RhcnRlZCBpbiBwb3N0X291dHB1dF9iYWNrbG9nKCkgZXZlbiBpZiB0aGVyZQogICAgd2FzIGFjdHVhbGx5IG5vIFBPU1QgRUNDIHJ1biAoYmVjYXVzZSBvZiBPQ00gUE9TVCBmYWlsdXJlLCBmb3IKICAgIGV4YW1wbGUpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA3ODQ1ZDQ5MDk0YzgxMzIxMDIxYjUwYTRkYmI4ODY0ZDJmMzc3N2U0CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDY6MDIgMjAwOCArMDIwMAoKICAgIFBPU1Q6IG1hcmsgT0NNIHRlc3QgYXMgUE9TVF9TVE9QCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgMjhhMzg1MDY1ODgyZDZjYjZhYzVmNDQzMzExZmY4Nzg4N2VkN2MxMwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQ1OjI2IDIwMDggKzAyMDAKCiAgICBQT1NUOiBhZGQgUE9TVF9TVE9QIGZsYWcKCiAgICBEb24ndCBydW4gZnV0aGVyIHRlc3RzIGluIGNhc2Ugb2YgYSB0ZXN0IGZhaWxzIHRoYXQgaXMgbWFya2VkIGFzCiAgICBQT1NUX1NUT1AuCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYTUyNTE0NWQ4MTEwZDE1YjQzODlkMjNjM2VhOGE3OGYyMjUwOWQzZgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQ0OjE2IDIwMDggKzAyMDAKCiAgICBQT1NUOiBzd2l0Y2ggQ0ZHX1BPU1RfT0NNIHdpdGggQ0ZHX1BPU1RfQ09ERUMgKHdvcmthcm91bmQpCgogICAgU3dpdGNoIHRoZSBPQ00gdGVzdGlkIHdpdGggdGhlIGNvZGVjIG9uZS4gVGhlIHJlYXNvbiBpcyB0aGF0IGN1cnJlbnQKICAgIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoZSBQT1NUX1JPTSB0ZXN0aWQgdG8gZml0IGludG8gbG93ZXIgMTYKICAgIGJpdHMsIGFuZCB0aGUgY29kZWMgdGVzdCB3aWxsIG5ldmVyIHJ1biB3aXRoIFBPU1RfUk9NIGhvcGVmdWxseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KCmNvbW1pdCA4Yjk2Yzc4OGQ1OGY3Y2I4NWE4OWVlM2YxOWM5YjMzNWQyMjQ0M2NkCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDM6MjggMjAwOCArMDIwMAoKICAgIGx3bW9uNTogZW5hYmxlIE9DTSBwb3N0IHRlc3Qgb24gbHdtb241IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNmU4ZWM2ODIyNjg0OTNiOGQwOThmOTllMTdiMWNlNzFiNDQ0ODk3NwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1heSA4IDE1OjQyOjQ3IDIwMDggKzAyMDAKCiAgICBQT1NUOiBPQ00gdGVzdCBhZGRlZC4KCiAgICBBZGRlZCBPQ00gdGVzdCB0byBQT1NUIGxheWVyLiBUaGlzIHZlcnNpb24gcnVucyBiZWZvcmUgYWxsIG90aGVyIHRlc3RzCiAgICBidXQgZG9lc24ndCB5ZXQgaW50ZXJydXB0IHBvc3Qgc2VxdWVuY2Ugb24gZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA2ODkxMjYwYmRkOTM1YTM4MmM5NWQ5ZmEzMzM5MjJiMGRmZGVkNjhhCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgTWF5IDggMTU6NDA6MzkgMjAwOCArMDIwMAoKICAgIFBPU1Q6IHR5cG8gZml4CgogICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Cgpjb21taXQgNzI3ZjYzMzM0Njc2ZTc2MDg3N2Q0M2JmYjhmMGU5MzMxYWM4YjEwMQpBdXRob3I6IEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJVHVlIE1heSAyMCAwMjoxNjozNiAyMDA4IC0wNzAwCgogICAgY29tbW9uL3VzYi5jOiBmaXggaW5jb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZQoKICAgIFNpZ25lZCBvZmYgYnk6IEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCA0Y2UxZTIzYjVlMTIyODM1Nzk4MjhiM2QyM2U4ZmQ2ZTEzMjhhN2FhCkF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAxNSAxNToyNjoyNyAyMDA4IC0wNTAwCgogICAgRml4IDgzMTNFUkRCIGJvYXJkIGNvbmZpZ3VyYXRpb24KCiAgICBDaGFuZ2UgTENSUiBjbG9jayByYXRpbyBmcm9tIDIgdG8gNCB0byBjb21tb2RhdGUgVlNDNzM4NS4KICAgIENvcnJlY3QgVFNFQzEgdnMgVFNFQzIgYXNzaWdubWVudC4KICAgIERlZmluZSBFVEhBRERSIGFuZCBFVEgxQUREUiBhbHdheXMuCgogICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmMyODllMzIwZGNmYjM3NjBlOTljZjFkNzY1Y2IwNjcxOTRhMTIwMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTkgMDk6NDc6MjUgMjAwOCAtMDUwMAoKICAgIG1wYzg2eHg6IFJlbW92ZWQgdW51c2VkIGFuZCB1bmNvbmZpZ3VyZWQgbWVtb3J5IHRlc3QgY29kZS4KCiAgICBCZXNpZGVzLCBvdGhlciBjb21tb24gY29kZSBleGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxODBhOTBhYmRhZTcyNTg3YzBmNjc5ZWRmODk5MTQ1NWU1NTk0NDBkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAxMjo0NzoxMSAyMDA4ICswMjAwCgogICAgUmVsZWFzZSB2MS4zLjMKCiAgICBVcGRhdGUgQ0hBTkdFTE9HIGZvciByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMTZiZWRjNjYxZGUwZGFlNzY3YjEzNzdkODQxMzM3M2EzZmJjZmE3OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxOSAwNzoxNDozOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBDYW55b25sYW5kczogRGlzYWJsZSBQQ0llMC9TQVRBIGluIGRldi10cmVlIGRlcGVuZGluZyBvbiBzZWxlY3Rpb24KCiAgICBXaGVuIFNBVEEgaXMgc2VsZWN0ZWQgKHZpYSBqdW1wZXIgSjYpIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgZmlyc3QgUENJZQogICAgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIHRoYXQgTGludXggZG9lc24ndCBpbml0aWFsaXplIGl0LiBPdGhlcndpc2UKICAgIHRoZSBMaW51eCBTQVRBIGRyaXZlciB3aWxsIGZhaWwgdG8gZGV0ZWN0IHRoZSBkZXZpY2VzLgoKICAgIFRoZSBzYW1lIGdvZXMgdGhlIG90aGVyIHdheSBhcm91bmQgdG9vLiBTbyBpZiBQQ0llIGlzIHNlbGVjdGVkIHdlIG5lZWQKICAgIHRvIGRpc2FibGUgdGhlIFNBVEEgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUuCgogICAgVGhpcyBpcyBiZWNhdXNlIFBDSWUgcG9ydCAwIGFuZCBTQVRBIG9uIDQ2MEVYIHNoYXJlIHRoZSBzYW1lIHBpbnMKICAgIChtdWx0aXBsZXhlZCkgYW5kIHdlIGhhdmUgdG8gY29uZmlndXJlIGluIFUtQm9vdCB3aGljaCBwZXJpcGhlcmFsIGlzCiAgICBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzY2MyN2I0MjZhZWVmZTI5MzBmOTExNjkyZTlkZjMxNDNmYjI1NjVmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1OCAyMDA4ICswMjAwCgogICAgaTM4NjogRml4IG11bHRpcGxlIGRlZmluaXRpb25zIG9mIF9fc2hvd19ib290X3Byb2dyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzMTFmMzQ0NjkzMGMxZTY0YzEyMDI2YzFjZmQwMDUwMGIwNWJlNTJkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1NyAyMDA4ICswMjAwCgogICAgc2M1MzBfc3B1bms6IGFkZCBtaXNzaW5nIFNPQkpTIGVudHJ5CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhNTU5MzE3MTQzYjRmOTU5MjdiMDhjZDM4ODcwN2U2ZjA3N2U5NWZhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1NiAyMDA4ICswMjAwCgogICAgc2M1MjBfc3B1bms6IEZpeCBmbGFzaAoKICAgIGZsYXNoLmM6NTkzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKICAgIGZsYXNoLmM6Mzk4OiBlcnJvcjogbGFiZWwgYXQgZW5kIG9mIGNvbXBvdW5kIHN0YXRlbWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTFmMjIxMzE3YWY2NDE5MWVlOGNhZjMwM2VhOTMwNTk0MzE1ODY5MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NDkgMjAwOCArMDIwMAoKICAgIGRyaXZlcnMvcGNtY2lhOiBhZGQgbWlzc2luZyBpODIzNjUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGRkMjIzOTQ0MTMyZjk3ZmZhNTI5NzdlYTk1ZTVhNTI0MjhmNWNjMmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWF5IDE4IDE5OjA5OjQ3IDIwMDggKzAyMDAKCiAgICBpMzg2L2Jvb3RtOiByZW1vdmUgdW51c2VkIHZhcgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTlkYTM0MWRmMTliMzJhZDJlY2I1OGNlNTI5ZjdlNGZhZGE3ODE0ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgMTggMTk6MDk6NDUgMjAwOCArMDIwMAoKICAgIGV4YW1wbGUvZ2l0aWdub3JlOiB1cGRhdGUgd2l0aCBhbGwgZ2VuZXJhdGVkIGV4YW1wbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBhMzhkYzNlYTg2MTRmOGIwYzQxZTQzMmI0NDVhOTk1OWI5NzExMjk1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAxNSAwMDo0Mjo0NSAyMDA4ICswMjAwCgogICAgVFFNODI3MjogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nCgogICAgLi4uYW5kIGFkZCB0byBNQUtFQUxMIHNjcmlwdAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNGY4MDVjMWUzYTYwYjkyNjNkYThlYzNiY2QxZjQ1ZWRjZWZhN2RjZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMjM6MzQ6NTMgMjAwOCArMDIwMAoKICAgIGVudmlyb25tZW50OiBmaXggYnVnIGludHJvZHVjZWQgYnkgY29tbWl0IGE4NDA5ZjRmMWFjOAoKICAgIGVudl9nZXRfY2hhciBpcyBub3QgYSBmdW5jdGlvbiwgYnV0IGEgcG9pbnRlciB0byBvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwYzExOTM1Y2Q2MmNhMWY2NWVlYjIyOGZmNGM4NDg0NDBkNDU1M2JmCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTM6Mzk6MjIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogUVVBRDEwMEhEOiBBbGxvdyB0aGUgZW52aXJvbm1lbnQgdG8gYmUgcHV0IGludG8gZmxhc2guCgogICAgQWZ0ZXIgbW92aW5nIFRFWFRfQkFTRSB0aGUgdmFsdWUgZm9yIENGR19FTlZfQUREUiB3YXMgaW5jb3JyZWN0LiAgQWxzbwogICAgdXNlIGEgcmVkdW5kYW50IGVudmlyb25tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGNkYTJhNGE5OTYxZmQ0MzQxYjdkYjMwNWNiMjJmYzA1OTU3ZThiNzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDE0IDEzOjU1OjMwIDIwMDggKzAyMDAKCiAgICBGaXggY29uZmlnIGZpbGVzIGZvciBvdXQtb2YtdHJlZSBidWlsZGluZwoKICAgIFNldmVyYWwgYm9hcmQvPC4uLj4vY29uZmlnLm1rIGZpbGVzIGluY2x1ZGUgZHluYW1pY2FsbHkgYnVpbHQgKGJ5CiAgICB0aGUgTWFrZWZpbGUpIGNvbmZpZyBmaWxlcyBidXQgdXNlZCB0aGUgd3JvbmcgZmlsZSBuYW1lIG9mCgkkKFRPUERJUikvYm9hcmQvJChCT0FSRERJUikvY29uZmlnLnRtcAogICAgaW5zdGVhZCBpZiB0aGUgY29ycmVjdAoJJChPQkpUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9jb25maWcudG1wCgogICAgVGhlIGJ1ZyBpcyBuYXN0eSBiZWNhdXNlIHRoZSBidWlsZCByZXN1bHQgaXMgY29ycmVjdCBmb3IgdGhlIChub3JtYWwpCiAgICBpbi10cmVlIGJ1aWxkcywgYW5kIGJlY2F1c2UgJ3NpbmNsdWRlJyBpcyB1c2VkIG5vIGVycm9ycyBnZXQgcmFpc2VkCiAgICBldmVuIGZvciBvdXQtb2YtdHJlZSBidWlsZCB0ZXN0cy4gQnV0IG91dC1vZi10cmVlIGJ1aWxkcyB1c2UgYW4KICAgIGluY29tcGxldGUgYW5kIHRodXMgdXN1YWxseSBpbmNvcnJlY3QgY29uZmlndXJhdGlvbi4uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmRkNzA4MmUwNmQ1ODA0MDQwMTBiMDZmZTRlMGU4YjcwMzhhMDBjOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNCAxMzo0MDowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggYm9ndXMgQ2FueW9ubGFuZHMgY29uZmlnLm1rCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgY2FueW9ubGFuZHMgY29uZmlnLm1rIGZpbGUgdG8gZW5hYmxlIGNvcnJlY3QKICAgIG91dC1vZi10cmVlIGJ1aWxkcy4gVGhhbmtzIHRvIFdvbGZnYW5nIERlbmsgZm9yIHNwb3R0aW5nIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGZkZDEyNDdhNjZkNzg4YTM0NDYyNDRmNmZkZTk5NTVhOTNjMjYzMjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTA6MzI6MzIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5kaXZpZHVhbCBoYW5kbGluZyBvZiBkZHIyX2ZpeGVkLmMgZm9yIGNhbnlvbmxhbmRzX25hbmQgYnVpbGQKCiAgICBDYW55b25sYW5kcyBoYXMgYSBmaWxlIGRkcjJfZml4ZWQuYyB3aGljaCBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudCB3aGVuCiAgICBidWlsZGluZyBpbiBzZXBhcmF0ZSBkaXJlY3RvcnkuIEl0IGhhcyB0byBiZSBsaW5rZWQgdG8gYnVpbGQgZGlyZWN0b3J5CiAgICBvdGhlcndpc2UgaXQgaXMgbm90IHNlZW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE4NDA5ZjRmMWFjODRjMzYyNzNjMWExZTM0MTE4OTY2MjUyMWJjZmIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDE0IDEyOjIyOjQ5IDIwMDggKzAyMDAKCiAgICBlbnZpcm9ubWVudDogY2xlYW51cCBwcm90b3R5cGUgZGVjbGFyYXRpb25zIG9mIGVudiBmdW5jdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZjM5YjA3OTQ4MDE1YzQ4MGI3MmE2ZTczMmNmN2Q4MzlhYTkzYTllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNCAxMjoyMTo0OCAyMDA4ICswMjAwCgogICAgbGlua3N0YXRpb25fSEdMQU46IEZpeCBvdXQgb2YgdHJlZSBidWlsZGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA4NTU1MWMwNWNhMDllNmM0OTFlYTExYTFjNjcyN2EzNjc3NmE1NDUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTQgMTA6MzI6MzIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogSW5kaXZpZHVhbCBoYW5kbGluZyBvZiBkZHIyX2ZpeGVkLmMgZm9yIGNhbnlvbmxhbmRzX25hbmQgYnVpbGQKCiAgICBDYW55b25sYW5kcyBoYXMgYSBmaWxlIGRkcjJfZml4ZWQuYyB3aGljaCBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudCB3aGVuCiAgICBidWlsZGluZyBpbiBzZXBhcmF0ZSBkaXJlY3RvcnkuIEl0IGhhcyB0byBiZSBsaW5rZWQgdG8gYnVpbGQgZGlyZWN0b3J5CiAgICBvdGhlcndpc2UgaXQgaXMgbm90IHNlZW4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE1MTBiODJkNTA2MTVmMzQ0ZTg5ZDQyNTMzZTgyMjRjY2UwNjdkYzAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWF5IDEzIDIzOjE1OjUyIDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogZml4ICJlcnJvcjogdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDY5NGE5MTQyOGY2YzMyODBmZTFlZTA5MjM0ODhhMWU3ZThkYmM0CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVHVlIE1heSAxMyAxNzozMToyNCAyMDA4ICswMjAwCgogICAgQ2xlYW51cCBuYW5kX2luZm9bXSBkZWNsYXJhdGlvbi4KCiAgICBUaGUgbmFuZF9pbmZvIGFycmF5IGlzIGRlY2xhcmVkIGFzIGV4dGVybiBpbiBzZXZlcmFsIC5jIGZpbGVzLgogICAgVGhvc2UgZGF5cywgbmFuZC5oIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheSwgc28gdGhlcmUgaXMKICAgIG5vIG5lZWQgdG8gZGVjbGFyZSBpdCBlbHNld2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzBmYWIxOTA4ZmMxNzM0YTQwMzcxMWVhYWJiZWY1NDZiYzRiNzdkYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxMyAyMDoyMjowMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgNDA1RVgocikgcmV2aXNpb24gQyBQVlIgZGVmaW5pdGlvbnMgYW5kIGRldGVjdGlvbiBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY1ZGNmYTc5MjA0ZjQ3NTBiOTA1YTE3M2E1MzY1ZTBiMmViNmMyZjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWF5IDEyIDAxOjExOjIxIDIwMDggKzAyMDAKCiAgICBSZXZlcnQgInBjaTogQWRkIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBjb25maWcgb3B0aW9uIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNTU3NzRiNTEyZmRmNjNjMDUxNmQ0NDFjYzVkYTdjNTRiYmZmYjdmMgogICAgd2hpY2ggYnJva2UgbWFueSBQb3dlclBDIGJvYXJkcy4KCmNvbW1pdCBlZTBjZmE3MDgwM2EzZTYyOWVhNTgxYTliMjE2ZjhlY2VmNDAyYmZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxMiAwMDo1NjoyOCAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMWI1NjA1Y2E1N2ZiYjM2NGY0ZDc4ZWVlZTI4Yjk3NGVkODc1ZTg4OAogICAgd2hpY2ggYnJlYWtzIGJ1aWxkaW5nIG9uIGFsbCBQUEMgYm9hcmRzIHRoYXQgZG9uJ3QgdXNlIGEgbG9nIGJ1ZmZlci4KCmNvbW1pdCAwMmI5YjIyNDQ2ZTNkN2FkNmE2MzgyYmUxN2ExY2U3OWE3ZGU1ODliCkF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBNYXkgMTAgMTQ6MDI6MDQgMjAwOCAtMDcwMAoKICAgIEZpeCBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpLXR5cGUgbGVnYWN5IGltYWdlcy4KCiAgICBDYWxjdWxhdGlvbiBvZiB0YWlsIHdhcyBpbmNvcnJlY3Qgd2hlbiBzaXplICUgNCA9PSAwLgoKICAgIE5ldyBjb2RlIHJlbW92ZXMgdGhlIGNvbmRpdGlvbmFsIGFuZCBkb2VzIHRoZSBzYW1lIHRoaW5nIGJ1dCB3aXRoIGFyaXRobWV0aWMKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOWRjYTNjM2YzN2QyNjQ3YWVjNDUwOWIyNGIxNmQxNTg4MmFlM2U0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSAxMiAwMDo0MDo1OCAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJDaGFuZ2UgZW52X2dldF9jaGFyIGZyb20gYSBnbG9iYWwgZnVuY3Rpb24gcHRyIHRvIGEgZnVuY3Rpb24uIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYzA1NTliZTM3MWIyYTY0YjFhODE3MDg4YzMzMDg2ODhlMjE4MmY5MwogICAgd2hpY2ggaXMga25vd24gdG8gYnJlYWsgYm9vdGluZyBmcm9tIGRhdGFmbGFzaCBhbmQgTkFORC4KCmNvbW1pdCAyMGU1ZWQxMzc0ODM4MjNhYWVhNTE3ODE2OWYzYjE0NGM3YTRkOWUwCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1heSAxMSAyMzoxMzo1NyAyMDA4ICswMjAwCgogICAgQVBJOiByZW1vdmUgZHVwbGljYXRlIHN5c2NhbGwgY2hlY2sKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDY3ZTNiZWI1MmMzMjBiMGEzMWNmMDMwNzE2Yzk5MzkyY2RlMmQ1MzIKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTWF5IDkgMjE6NDY6NTEgMjAwOCArMDIwMAoKICAgIEFUOTE6IENsZWFudXAgdW51c2VkIGNvbmZpZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucy4KCiAgICBDT05GSUdfRU5WX09WRVJXUklURSBpcyBjb21tZW50ZWQgb3V0IGluIHRoZSBjb25maWcgaGVhZGVyIGZpbGVzLAogICAgc28gbGV0J3MgY2xlYW51cCB0aGUgZmlsZXMgYnkgcmVtb3ZpbmcgdGhlIHdob2xlIGRlZmluaXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTk4ODNhZWRlMmFjMGE1MjI0OTNiZmIyYjM1YTdkYmIyMDAwNzFiMQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozNCAyMDA4ICswMjAwCgogICAgU3VwcG9ydCBBVDkxQ0FQOSByZXZDIENQVXMKCiAgICBUaGUgQVQ5MUNBUDkgcmV2QyBDUFUgaGFzIGEgZmV3IGRpZmZlcmVuY2VzIG92ZXIgdGhlIHByZXZpb3VzLAogICAgcmV2QiBDUFUgd2hpY2ggd2FzIGRpc3RyaWJ1dGVkIGluIHNtYWxsIHF1YW50aXRpZXMgb25seSAocmV2QSB3YXMKICAgIGFuIGludGVybmFsIEF0bWVsIHByb2R1Y3Qgb25seSkuCgogICAgVGhlIHJldkMgc2lsaWNvbiBuZWVkcyBhIHNwZWNpYWwgaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgdG8KICAgIHN3aXRjaCBmcm9tIHRoZSBpbnRlcm5hbCAoaW1wcmVjaXNlKSBSQyBvc2NpbGxhdG9yIHRvIHRoZQogICAgZXh0ZXJuYWwgMzJrIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDA5OGI3YjRiNDQxYjEyYzJhNjRkZDUxNzkzMGY0M2M3OTM1NDI3NTkKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMTQ6NTI6MzMgMjAwOCArMDIwMAoKICAgIFVzZSBjdXN0b20gbG9nbyBmb3IgQXRtZWwgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY3VzdG9tIHZlbmRvciBsb2dvIGZvciB0aGUgQXRtZWwgQVQ5MSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzYxYzcwYjgwY2RkM2JlYWQ0MDE0NmI5NmE4ZTcxM2Q2YWUwMTYzMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozMiAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTlSTEVLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFTQU05UkxFSyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA1NmEyNDc5Y2Q3ZmVjYWJkZDkxMzQ4YTc3NWIyODAxZGQyZTY1YzdmCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDE0OjUyOjMxIDIwMDggKzAyMDAKCiAgICBBVDkxU0FNOTI2M0VLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFTQU05MjYzRUsgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODIwZjJhOTU4MzI1MDYxYTQ0NjExNWYzMDM1ZTQ4ZTQ3MjZiMzM5MApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxNDo1MjozMCAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjFFSzogaG9vayB1cCB0aGUgQVRNRUwgTENEIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5lY2Vzc2FyeSBhZGFwdGF0aW9ucyAoUElPIGNvbmZpZ3VyYXRpb25zIGFuZAogICAgZGVmaW5lcyBpbiBjb25maWcgaGVhZGVyIGZpbGUpIHRvIGhvb2sgdXAgdGhlIEF0bWVsIExDRCBkcml2ZXIgdG8gdGhlCiAgICBBVDkxU0FNOTI2MUVLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGMxMzliMTdkMjBjODM3MWMxZTBhOGQ3ZmIyN2MxMTA1MGNmODYzMDQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMTQ6NTI6MjkgMjAwOCArMDIwMAoKICAgIEFUOTFDQVA5QURLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCiAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKICAgIEFUOTFDQVA5QURLIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDM5Y2Y0ODA0ODRmY2NlNWMwNGE1OTBlZTFjMzBiZTBjMTdiMDJjMzQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglGcmkgTWF5IDkgMjE6NTc6MTggMjAwOCArMDIwMAoKICAgIEFkZCBBVE1FTCBMQ0QgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVE1FTCBMQ0RDIGRyaXZlciB3aGljaCBpcyB1c2VkIG9uIHNvbWUKICAgIEFUOTEgYW5kIEFWUiBwbGF0Zm9ybXMuCgogICAgSXMgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGhlIEFUOTFDQVA5QURLLCBBVDkxU0FNOTI2MUVLLCBBVDkxU0FNOTI2M0VLIGFuZAogICAgQVQ5MVNBTTlSTEVLIGJvYXJkcy4gQWRhcHRhdGlvbiBmb3IgQVZSMzIgc2hvdWxkIHByb2JhYmx5IGJlIGVhc3kuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMjExOGViYjQ0ZGM0MGY4MTE3Yzk0OTUwZmQ5NTc5OWE5ZWY4MjFiMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxODo1MjoyNSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTlSTEVLIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUOTFTQU05UkwgY2hpcCBhbmQgdGhlIEFUOTFTQU05UkxFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOGU0MjliM2VlZTIzOTI3YzEyMjI2NzlmNmI2ZjUzNjY3YjIxNTk1YwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAxODo1MjoyMyAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjNFSyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MyBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjNFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZDk5YThmZjY2ZDhhZTg3ZTVjODc1OTBlZDJlNGVhZDYyOTU0MDYwNwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMiAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjFFSyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MSBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjFFSwogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODZjOGM4YTQxNDk4OGM1MDEwNGEzYjAyYzI5ZjUwYWYyYmU3MzhjMApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogRml4IGRhdGFmbGFzaCBvZmZzZXRzIGluIENPTkZJR19CT09UQ09NTUFORAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRhdGFmbGFzaCBvZmZzZXRzIHVzZWQgaW4gQ09ORklHX0JPT1RDT01NQU5ECiAgICBpbiBvcmRlciB0byBjb3BlIHdpdGggdGhlIGNoYW5nZXMgaW4gRGF0YUZsYXNoIHBhcnRpdGlvbm5pbmcgc2NoZW1lCiAgICAoY3NldCBjM2E2MGNiMykuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgOTY5OTZhYzI1ZDUyMjI2MTFhODg4ODk2OGRiNmU1M2E2ZDM3MjZkYQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoyMCAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogTm9ybWFsaXplIEJPT1RBUkdTCgogICAgVGhpcyBwYXRjaCBhZGFwdHMgQ09ORklHX0JPT1RBUkdTIHRvIHRoZSBjaG9zZW4gYm9vdCBtZXRob2QgKGJvb3QgZnJvbQogICAgRGF0YUZsYXNoIG9yIGZyb20gTkFORCksIGFuZCBnaXZlcyB0byBMaW51eCBhIGZ1bGx5IHNwZWNpZmllZCBtdGRwYXJ0cwogICAgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzlmMGNiNmU5YzU0ZDMxYTFkOWUzZjVlMjI2YTliZWJjM2MzYTQ3YQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxOSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTkyNjBFSzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBTUEkgdGltaW5ncyB0byBjbG9zZWx5IG1hdGNoIHRoZSBvbmVzCiAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMTIxMmIyZjVjNWVkNDQwYmY4ZTllYmM4ZTRmZDc0ODg4NThiOTM1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE4IDIwMDggKzAyMDAKCiAgICBBVDkxU0FNOTI2MEVLOiBIYW5kbGUgOCBvciAxNiBiaXQgTkFORAoKICAgIFRoZSBBdG1lbCBib2FyZHMgY2FuIGhhbmRsZSA4IG9yIDE2IGJpdCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoCiAgICBtYWtlcyB0aGUgc3VwcG9ydCBjb25maWd1cmFibGUgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIgZmlsZQogICAgKENGR19OQU5EX0RCV184IG9yIENGR19OQU5EX0RCV18xNikuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYWI1MjY0MGZjMDE2MjRlMjA4NDI0ZTUyN2FmMGI3YjNhNWE2NWExMgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxNyAyMDA4ICswMjAwCgogICAgQVQ5MUNBUDlBREs6IEZpeCBkYXRhZmxhc2ggb2Zmc2V0cyBpbiBDT05GSUdfQk9PVENPTU1BTkQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBkYXRhZmxhc2ggb2Zmc2V0cyB1c2VkIGluIENPTkZJR19CT09UQ09NTUFORAogICAgaW4gb3JkZXIgdG8gY29wZSB3aXRoIHRoZSBjaGFuZ2VzIGluIERhdGFGbGFzaCBwYXJ0aXRpb25uaW5nIHNjaGVtZQogICAgKGNzZXQgYzNhNjBjYjMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDMyNjc1MDhlYzRjOWU3NGMzOWVlNDFjOWFlNjk1MWFkMTg1ZmUyNzAKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjA6NTI6MTYgMjAwOCArMDIwMAoKICAgIEFUOTFDQVA5QURLOiBOb3JtYWxpemUgQk9PVEFSR1MKCiAgICBUaGlzIHBhdGNoIGFkYXB0cyBDT05GSUdfQk9PVEFSR1MgdG8gdGhlIGNob3NlbiBib290IG1ldGhvZCAoYm9vdCBmcm9tCiAgICBEYXRhRmxhc2ggb3IgZnJvbSBOQU5EKSwgYW5kIGdpdmVzIHRvIExpbnV4IGEgZnVsbHkgc3BlY2lmaWVkIG10ZHBhcnRzCiAgICB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5M2RhNDhiOTEwNTExOTExY2UxMTA2NTZlMTdlZDczM2M4YWM0YzQ1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE1IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBTUEkgdGltaW5ncyB0byBjbG9zZWx5IG1hdGNoIHRoZSBvbmVzCiAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxYzkwZGYzZTE0OGNlMGEzZTJjODZjNjNiMzhiMTlkNDc3NzJmMmEwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE0IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogSGFuZGxlIDggb3IgMTYgYml0IE5BTkQKCiAgICBUaGUgQXRtZWwgYm9hcmRzIGNhbiBoYW5kbGUgOCBvciAxNiBiaXQgTkFORCBtZW1vcmllcy4gVGhpcyBwYXRjaAogICAgbWFrZXMgdGhlIHN1cHBvcnQgY29uZmlndXJhYmxlIGluIHRoZSBib2FyZCBjb25maWcgaGVhZGVyIGZpbGUKICAgIChDRkdfTkFORF9EQldfOCBvciBDRkdfTkFORF9EQldfMTYpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDExYjE2MmJhZTA1OGU5NmM3OTI5ZTM1OGQ0YWRmZjJiZWU2YzJjYzQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjA6NTI6MTMgMjAwOCArMDIwMAoKICAgIFVzZSBhIGNvbW1vbiB1LWJvb3QubGRzIGZpbGUgYWNyb3NzIGFsbCBBVDkxQ0FQOS9BVDkxU0FNOSBwbGF0Zm9ybXMKCiAgICBBbGwgdGhlIEFUOTFDQVA5L0FUOTFTQU05IGJvYXJkcyBoYXZlIHRoZSBzYW1lIGxpbmtlciBzY3JpcHQuIFRoZSBwYXRjaAogICAgYmVsb3cgYXZvaWRzIHRoZSBkdXBsaWNhdGlvbiBvZiB1LWJvb3QubGRzIGJ5IHB1dHRpbmcgdGhlIGZpbGUgaW4gdGhlCiAgICBjcHUgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIGJvYXJkIG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNDhhYmVhNGI4OWFkYWY1ZTQ1ZWE3NWI1ZTM4YzBkOGRlMTc5ZWNlCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjEyIDIwMDggKzAyMDAKCiAgICBBZGQgcHJvcGVyIGNvcHlyaWdodCBub3RpY2VzIGluIEF0bWVsIGJvYXJkcyBNYWtlZmlsZXMKCiAgICBUaGUgTWFrZWZpbGVzIGZvciB0aGUgQVQ5MUNBUDkvQVQ5MVNBTTkgYm9hcmRzIGhhdmUgYW4gaW5jb21wbGV0ZQogICAgY29weXJpZ2h0IG5vdGljZS4gVGhpcyBwYXRjaCBhZGRzIHRoZSBtaXNzaW5nIHBpZWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlODE3YTA0MmNlZjYxNjRiZjI2ZmVlODZmOTAzMjZmMmVjOWU2NzQ1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIwOjUyOjExIDIwMDggKzAyMDAKCiAgICBBZGQgY29weXJpZ2h0IGluZm9ybWF0aW9uIGluIEF0bWVsIGJvYXJkcyBwYXJ0aXRpb24uYwoKICAgIFdoZW4gVWxmIGRpZCB0aGUgZGF0YWZsYXNoLmMgY2xlYW51cCwgaGUgZGlkbid0IGFkZCBoaXMgY29weXJpZ2h0IG9uCiAgICB0aGUgbmV3IGNyZWF0ZWQgZmlsZXMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGY2YzgxMDEwNmY0Zjc2ZDgzY2ZjNTdkOThmNDU0MGNkNDVmOWExOQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMDo1MjoxMCAyMDA4ICswMjAwCgogICAgVXBkYXRlIG9yaWdpbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIGluIGFyY2gtYXQ5MXNhbTkgaGVhZGVyIGZpbGVzCgogICAgV2hlbiBkb2luZyB0aGUgQVQ5MUNBUDkvQVQ5MVNBTTkgcG9ydCwgYSBudW1iZXIgb2YgaGVhZGVyIGZpbGVzIHdlcmUKICAgIGNvcGllZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwgc291cmNlcy4gVGhpcyBwYXRjaCBleHBsaWNpdGx5IHNwZWNpZmllcwogICAgdGhpcyBvcmlnaW4gZm9yIGFsbCB0aGUgY29waWVkIGhlYWRlcnMsIGFuZCBmb3IgdGhvc2UgbWlzc2luZyBjb3B5cmlnaHQKICAgIGluZm9ybWF0aW9uLCBhZGRzIGl0LgoKICAgIEFkZGl0aW9uYWx5LCB0aGUgaGVhZGVyIGZpbGUgJ2F0OTFzYW05MjZ4X21jLmgnIGhhcyBiZWVuIHN1cGVyY2VlZGVkCiAgICBpbiB0aGUgbGF0ZXN0IGtlcm5lbCBzb3VyY2VzIGJ5ICdhdDkxc2FtOV9zbWMuaCcuCgogICAgVGhlIGNvcHlyaWdodCBpbmZvcm1hdGlvbiBoYXMgYmVlbiBjb25maXJtZWQgYnkgdGhlIEFUOTEgTGludXgga2VybmVsCiAgICBtYWludGFpbmVyLCBBbmRyZXcgVmljdG9yIDxhdmljdG9yLnphQGdtYWlsLmNvbT4uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNzlkZDE3MTI2ODlkNmE1MDMxZDdjYmZmNTQ5NTcwNDk2ODA3NTFjNwpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxNjowMDo1NSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBLaWxhdWVhOiBBZGQgQ09ORklHX0JPT1RQX1NVQk5FVE1BU0sgdG8gS2lsYXVlYSBib2FyZCBjb25maWcKCiAgICBXaGVuIHVzaW5nIGRoY3AvYm9vdHAgdGhlICJuZXRtYXNrIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0CiAgICBiZWNhdXNlIENPTkZJR19CT09UUF9TVUJORVRNQVNLIGlzIG5vdCBkZWZpbmVkLiBCdXQgdXN1YWxseSB0aGlzIGlzCiAgICBkZXNpcmVhYmxlLCBzbyB0aGUgZm9sbG93aW5nIHBhdGNoIGFkZHMgdGhpcyB0aGlzIG9wdGlvbiB0byB0aGUgYm9hcmQKICAgIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg2OWQxNGI0Y2MyZTQ3ZGUyZGRjYjExN2JhZDA0MDdhNDQ0MzY2ODQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTAgMTA6MzA6MzYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBkZWZjb25maWcgdG8gdXNlIGRldmljZS10cmVlIGJvb3RpbmcgYXMgZGVmYXVsdAoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBvbiBNYWthbHUuIE5vdyAibmV0X25mcyIgZm9yCiAgICBleGFtcGxlIHVzZXMgdGhlIGRldmljZS10cmVlIHN0eWxlIGJvb3RpbmcgZm9ybWVybHkga25vdyBhcyAibmV0X25mc19mZHQiLgogICAgQWxzbyB0aGUgYWRkcmVzc2VzIGluIFJBTSB3ZXJlIGNoYW5nZWQgYmVjYXVzZSBvZiB0aGUgbmV3IGltYWdlIGJvb3RpbmcKICAgIHN1cHBvcnQsIHdoaWNoIGNoZWNrIGZvciBpbWFnZSBvdmVyd3JpdGluZy4gU28gdGhlIGFkZHJlc3NlcyBuZWVkZWQgdG8KICAgIGdldCBhZGp1c3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjM2MTJhN2IxOTljYWIzOTQyZjYwZDljMTM5MmViMzlkNThjYzY5OQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZ2lsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDcgMTM6Mjg6MTYgMjAwOCAtMDUwMAoKICAgIFBQQzogZml4IG1hcF9waHlzbWVtIGJ1aWxkIHdhcm5pbmcKCiAgICBtYXBfcGh5c21lbSBjdXJyZW50bHkgZ2VuZXJhdGVzIGEgd2FybmluZyB3aGVuIENPTkZJR19QSFlTXzY0QklUIGlzCiAgICBlbmFibGVkLiAgVGhpcyBxdWlldHMgdGhlIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPEJlY2t5LkJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzZmMzI2NzVmNDAyOTIwMDJlZTFmZWQyNTJjMTgwYTQzMDIyZDJkNApBdXRob3I6IEJlY2t5IEJydWNlIDxiZ2lsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWF5IDcgMTM6MjQ6NTcgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBwY2kgY29kZSB0byB1c2UgcGh5c19hZGRyX3QKCiAgICBQaHlzaWNhbCBhZGRycyBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGJ5IHBoeXNfYWRkcl90LCBub3QKICAgIHVuc2lnbmVkIGxvbmcuICBPdGhlcndpc2UsIHN5c3RlbXMgdGhhdCB1c2UgQ09ORklHX1BIWVNfNjRCSVQKICAgIGFyZSBnb2luZyB0byBmYWlsIG1pZ2h0aWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxYTYxNjc0MWZjMTI4Y2RiODhmMzliZGRjZDRkNzJmZTE3NDY2ZDAKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSA4IDIyOjMyOjIyIDIwMDggLTA3MDAKCiAgICBTdXBwb3J0IGxlZ2FjeSBtdWx0aS10eXBlIGltYWdlcyB3aXRob3V0IEZEVCBzZWN0aW9uLgoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBsZWdhY3kgbXVsdGktdHlwZSBpbWFnZXMgY29udGFpbmluZyBvbmx5IGEgTGludXgga2VybmVsCiAgICBhbmQgcm9vdCBmaWxlIHN5c3RlbSB0byBiZSBsb2FkZWQsIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cwogICAgdmVyc2lvbnMgb2YgdS1ib290LgoKICAgIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBvbGQgaW1hZ2UgZmlsZXMgc3VjaCBhcyBhIExpbnV4IDIuNCBrZXJuZWwgLwogICAgZmlsZXN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDg4MTAzMWQ5NzMyNzgzYjdhZWFlMjE5OGZjN2ViNDgwYWU4OTc0YTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTWF5IDEwIDAwOjM4OjAyIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTVlOWQ2YzljMDgxNjBiZTdlNWEzNmUwNGQxMjVjY2NlOTliODc3NApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMTAgMDA6MzY6MDkgMjAwOCArMDIwMAoKICAgIHBvc3QvY3B1L3BwYzR4eC9NYWtlZmlsZTogbGluZSBsZW5ndGggY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2NlOWNmZGFiY2Y0MTZlY2QyYWFjYzM2ODFjOTFlNTM3OGM3NWEzZApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBNYXkgOCAyMjo1MjowOSAyMDA4ICswMjAwCgogICAgRml4IEAgLT4gPGF0PiBzdWJzdGl0dXRpb24KCiAgICBXaGVuIGFwcGx5aW5nIHRoZSBBVDkxQ0FQOSBwYXRjaGVzIHVwc3RyZWFtLCBzb21ldGhpbmcgdHJhbnNmb3JtZWQKICAgIHRoZSAnQCcgY2hhcmFjdGVyIGludG8gdGhlICcgPGF0PiAnIHNlcXVlbmNlLgoKICAgIFRoZSBwYXRjaCBiZWxvdyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgZm9ybSBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZQogICAgaXQgaGFzIGJlZW4gbW9kaWZpZWQgKHRoZSBBVDkxQ0FQOSBmaWxlcywgdGhlIEFUOTFTQU05MjYwIGZpbGVzIHdoaWNoCiAgICB3ZXJlIGNvcGllZCBmcm9tIEFUOTFDQVA5LCBhbmQgYSBjb3VwbGUgb2Ygb3RoZXIgZmlsZXMgd2hlcmUgdGhlCiAgICAnIDxhdD4gJyBzZXF1ZW5jZSB3YXMgcHJlc2VudCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5NjA2YjNjODFiM2M0N2ExZDU4NTE0ZTlhMjMyYzZmNDYxYTE3NTk3CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IE1heSA4IDIyOjUyOjEwIDIwMDggKzAyMDAKCiAgICBVcGRhdGUgb3JpZ2luIGFuZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gYXJjaC1hdDkxc2FtOSBoZWFkZXIgZmlsZXMKCiAgICBXaGVuIGRvaW5nIHRoZSBBVDkxQ0FQOS9BVDkxU0FNOSBwb3J0LCBhIG51bWJlciBvZiBoZWFkZXIgZmlsZXMgd2VyZQogICAgY29waWVkIGZyb20gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2VzLiBUaGlzIHBhdGNoIGV4cGxpY2l0bHkgc3BlY2lmaWVzCiAgICB0aGlzIG9yaWdpbiBmb3IgYWxsIHRoZSBjb3BpZWQgaGVhZGVycywgYW5kIGZvciB0aG9zZSBtaXNzaW5nIGNvcHlyaWdodAogICAgaW5mb3JtYXRpb24sIGFkZHMgaXQuCgogICAgQWRkaXRpb25hbHksIHRoZSBoZWFkZXIgZmlsZSAnYXQ5MXNhbTkyNnhfbWMuaCcgaGFzIGJlZW4gc3VwZXJjZWVkZWQKICAgIGluIHRoZSBsYXRlc3Qga2VybmVsIHNvdXJjZXMgYnkgJ2F0OTFzYW05X3NtYy5oJy4KCiAgICBUaGUgY29weXJpZ2h0IGluZm9ybWF0aW9uIGhhcyBiZWVuIGNvbmZpcm1lZCBieSB0aGUgQVQ5MSBMaW51eCBrZXJuZWwKICAgIG1haW50YWluZXIsIEFuZHJldyBWaWN0b3IgPGF2aWN0b3IuemFAZ21haWwuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IGNlYjZiNGZiZTFkY2M0MGJiNjcyZWY4MTMzZGRmNDgxM2U5N2NiYjEKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjI6NTI6MTEgMjAwOCArMDIwMAoKICAgIEFkZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gQXRtZWwgYm9hcmRzIHBhcnRpdGlvbi5jCgogICAgV2hlbiBVbGYgZGlkIHRoZSBkYXRhZmxhc2guYyBjbGVhbnVwLCBoZSBkaWRuJ3QgYWRkIGhpcyBjb3B5cmlnaHQgb24KICAgIHRoZSBuZXcgY3JlYXRlZCBmaWxlcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDJhYjAyZmQ0NTZkOGVmOTJhZTlmNTQzOTYxOGQxZmE3Y2ExNmU1ZjMKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMDowOToyNyAyMDA4ICswMjAwCgogICAgbXgzMWFkczogZml4IDMya0h6IGNsb2NrIGhhbmRsaW5nCgogICAgQWNjb3JkaW5nIHRvIHNjaGVtYXRpY3MgYW5kIHRvIFJlZEJvb3Qgc291cmNlcywgdGhlIE1YMzFBRFMgdXNlcyBhIDMyNzY4SHoKICAgIG9zY2lsbGF0b3IgYXMgYSBTS0lMIHNvdXJjZS4gRml4IHByZXZpb3VzbHkgd3JvbmdseSBhc3N1bWVkIDMyMDAwSHogdmFsdWUuCiAgICBBbHNvIGZpeCBhIHR5cG8gd2hlbiB2ZXJpZnlpbmcgYSBqdW1wZXIgY29uZmlndXJhdGlvbi4gV2hpbGUgYXQgaXQsIG1ha2UKICAgIHR3byBuZWVkbGVzc2x5IGdsb2JhbCBmdW5jdGlvbnMgc3RhdGljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAxYjU2MDVjYTU3ZmJiMzY0ZjRkNzhlZWVlMjhiOTc0ZWQ4NzVlODg4CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1heSA3IDEzOjEwOjA0IDIwMDggKzAyMDAKCiAgICBBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzCgogICAgQWRkIGxvZ2J1ZmZlciB0byByZXNlcnZlZCBMTUIgYXJlYXMgdG8gcHJldmVudCBpbml0cmQgYWxsb2NhdGlvbgogICAgZnJvbSBvdmVybGFwaW5nIHdpdGggaXQuCgogICAgTWFrZSBzdXJlIHRvIHVzZSBjb3JyZWN0IGxvZ2J1ZmZlciBiYXNlIGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjNTk1MThlMTU5NDliMzQwM2RmNWM1YjBjMmM0OGVhMGU1YmVhMjRiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1heSA3IDEzOjA4OjU0IDIwMDggKzAyMDAKCiAgICBwcGM6IENsZWFudXAgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgdXNlCgogICAgUmVtb3ZlZCBkdXBsaWNhdGVkIGVmZmVjdGl2ZSBtZW1vcnkgc2l6ZSBjYWxjdWxhdGlvbiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMjczYzM3ZDg0M2Q1YjU4MTA5MDM3ODAxNmNkMTJkZDljNTg2OTA3YgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXkgNyAwOTowMzo1MyAyMDA4ICswMjAwCgogICAgRml4IGJ1aWxkIGVycm9ycyB3aGVuIENPTkZJR19MT0dCVUZGRVIgYW5kIENPTkZJR19GSVQgYXJlIGVuYWJsZWQKCiAgICBSZWNlbnQgbW9kaWZjYXRpb25zIHRvIExPR0JVRkZFUiBoYW5kbGluZyBjb2RlIHdlcmUgaW5jb3JyZWNseQogICAgaW50cm9kdWNlZCB0byBmaXRfY2hlY2tfa2VybmVsKCkgcm91dGluZSBkdXJpbmcKICAgICJNZXJnZSBicmFuY2ggJ25ldy1pbWFnZScgb2YgZ2l0Oi8vd3d3LmRlbnguZGUvZ2l0L3UtYm9vdC10ZXN0aW5nIiwKICAgIGNvbW1pdCAyN2YzM2U5ZjQ1ZWY3Zjk2ODVjYmRjNjUwNjZhMTgyOGU4NWRkZTRmLgoKICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoaXMgbWVyZ2UgaXNzdWUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiYzExNzU2ZGFmZjg5YTNkZTA5Y2E4MGFkYWM5NjJiODhjZjA2ZTZlCkF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KRGF0ZToJVHVlIE1heSA2IDIwOjE2OjE1IDIwMDggLTA3MDAKCiAgICBQcm9wYWdhdGUgRXJyb3IgU3RhdHVzIHRvIHRoZSBTaGVsbCBvbiBmd19wcmludGVudiBFcnJvcnMKCiAgICBDaGFuZ2VkIGltcGxlbWVudGF0aW9uIHN1Y2ggdGhhdCBmd19wcmludGVudiByZXR1cm5zIGZhaWx1cmUgc3RhdHVzCiAgICB3aGVuIG9uZSBvciBtb3JlIHNwZWNpZmllZCB2YXJpYWJsZXMgZG8gbm90IGV4aXN0IG9yIHdoZW4gaW5jb3JyZWN0CiAgICBjb21tYW5kIHN5bnRheCBpcyB1c2VkLgoKICAgIFRoaXMgYWlkcyBzY3JpcHRpbmcgZndfcHJpbnRlbnYgc3VjaCB0aGF0IHRoZSBzY3JpcHQgY2FuIGtleSBvZiB0aGUKICAgIHJldHVybiBzdGF0dXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBzdGFuZGFyZCBlcnJvciAic2NyYXBpbmciLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGYzYjZkNTI4ZTRkZDcxOTY0MGE0YmZjZDk1NGY0ZTRjN2Y1ZGIwZDYKQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgpEYXRlOglUdWUgTWF5IDYgMTY6MTg6MDAgMjAwOCAtMDcwMAoKICAgIEZpeCBDb21waWxhdGlvbiBFcnJvcnMgd2l0aCAndG9vbHMvZW52L2Z3X3ByaW50ZW52JwoKICAgIEluIHRoZSBjdXJyZW50IHRvcC1vZi10cmVlLCAxLjMuMy4tcmMyLCB0aGUgb3B0aW9uYWwgdG9vbAogICAgJ3Rvb2xzL2Vudi9md19wcmludGVudicgZmFpbHMgdG8gY29tcGlsZSBmb3IgdHdvIHJlYXNvbnM6CgogICAgMSkgVGhlIGhlYWRlciB3YXRjaGRvZy5oIGNhbm5vdCBiZSBmb3VuZC4KICAgIDIpIFRoZSBoZWFkZXIgemxpYi5oIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSB0b29sIGNoYWluIHJhdGhlciB0aGFuIHRoZQogICAgICAgcHJvamVjdCBjYXVzaW5nIGEgcHJvdG90eXBlIGNvbmZsaWN0IGZvciBjcmMzMi4KCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBib3RoIG9mIHRoZXNlIGlzc3Vlcy4KCiAgICBQbGF0Zm9ybXMgVGVzdGVkIE9uOgogICAgLSBBTUNDICJLaWxhdWVhIgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Cgpjb21taXQgNTk3ZjZjMjZhMThiMzg5OTAzYTY0NjkyYmFjYmY5YTFjYTY5MzU1YgpBdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1heSA1IDEwOjIyOjUzIDIwMDggLTA1MDAKCiAgICBGaXggcmVhZGxpbmVfaW50b19idWZmZXIoKSB3aXRoIENPTkZJR19DTURMSU5FX0VESVRJTkcgYmVmb3JlIHJlbG9jYXRpbmcKCiAgICBXaGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgZW5hYmxlZCwgcmVhZGxpbmVfaW50b19idWZmZXIoKSBkb2Vzbid0CiAgICB3b3JrIGJlZm9yZSByZWxvY2F0aW5nIHRvIFJBTSBiZWNhdXNlIGNvbW1hbmQgaGlzdG9yeSBpcyB3cml0dGVuIGludG8KICAgIGEgZ2xvYmFsIGFycmF5IHRoYXQgaXMgbm90IHdyaXRhYmxlIGJlZm9yZSByZWxvY2F0aW9uLiAgVGhpcyBwYXRjaAogICAgZGVmZXJzIHRvIHRoZSBuby1lZGl0aW5nIGFuZCBuby1oaXN0b3J5IGNvZGUgaW4gcmVhZGxpbmVfaW50b19idWZmZXIoKQogICAgaWYgaXQgaXMgY2FsbGVkIGJlZm9yZSByZWxvY2F0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNzI2YzBmMWU1ZjEwOGRjY2VhMDUyOTY1MTIzYjk1ODM3ZDJiZDQwMgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglNb24gTWF5IDUgMTY6MTE6MjIgMjAwOCArMDIwMAoKICAgIGNvc21ldGljOiBBZGp1c3QgY29kaW5nIHN0eWxlIGZvciBzd2l0Y2ggc3RhdGVtZW50cyB0byBiZSBjb25zaXN0ZW50CgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNTc0YjMxOTUxMmIxM2UxMDgwMGYwMDQ1ZTM5Yjk5M2Y0Y2EyNWU0MgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglNb24gTWF5IDUgMTY6MTE6MjEgMjAwOCArMDIwMAoKICAgIEZpeCBkaXNrIHR5cGUgb3V0cHV0IGluIGRpc2svcGFydC5jCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgMDQ1YjRkMmQ3MTY4ZWYwOWM3MzQ5ZGNmNmVjZWJlNzQzMmI3NDE3MQpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJpdmVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDE0OjIwOjAzIDIwMDggKzAzMDAKCiAgICBNYWlsIGFkZHJlc3MgY2hhbmdlLCBkb2N1bWVudGF0aW9uIG1vZGlmaWVkCgogICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZC5sdW5ndUB3aW5kcnZpZXIuY29tPgoKY29tbWl0IDRkNDliMjgwMzhlMjgxOTA4OGU4MzU2YTc3MjEyZmM5NWE4OWNlNWEKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBNYXkgNCAxNTo0Mjo0MSAyMDA4ICswMjAwCgogICAgbWljcm9ibGF6ZTogUmVwYXJlIGludGMgaGFuZGxpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgODc4YjNiMWUxOTNlNTcwY2FmM2U5NmFkOGUzMWU1NjFmNjhkMDI4NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXkgNCAxNToxNzo1MiAyMDA4ICswMjAwCgogICAgaW5jbHVkZS9naXRpZ25vcmU6IHVwZGF0ZSB0byBhbGwgYXJjaGl0ZWN0dXJlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMWRmMzY4YWVkM2I4YmMyNDBmZTE1OTVkMjkwYjBlOTFiMjI5NjFkYQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDAyOjEyOjA2IDIwMDggKzAyMDAKCiAgICBpZGU6IFJlbW92ZSBzcHVyaW91cyBzZWNvbmQgaW5jbHVkZSBvZiBpby5oCgogICAgUmVtb3ZlZCB0aGUgc2Vjb25kIGluY2x1ZGUsIHdpdGggYWxsIHRoZSAjaWZkZWYgYXJvdW5kIGFzIHN1Z2dlc3RlZCBieSBXb2xmZ2FuZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgOGZiYzk4NWJkYWQwOWIyM2I3ZWI0ZGYxZDJlYTU4OTYxOWQ4ZGI0YwpBdXRob3I6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgpEYXRlOglUdWUgTWF5IDYgMTY6NDY6MzcgMjAwOCAtMDQwMAoKICAgIEZpeCBzb21lIHR5cG9zCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aHJlZSB0eXBvcy4KICAgIFRoZSBmaXJzdCBpcyBhIHJlcGV0aXRpb24gb2YgQ09ORklHX0NNRF9CU1AuCiAgICBUaGUgc2Vjb25kIG1ha2VzIHRoZSAjZW5kaWYgY29tbWVudCBtYXRjaCBpdHMgI2lmLgogICAgVGhlIHRoaXJkIGlzIGEgc3BlbGxpbmcgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogQWRyaWFuIEZpbGlwaSA8YWRyaWFuLmZpbGlwaUBldXJvdGVjaC5jb20+Cgpjb21taXQgZTQxOWUxMmQwNGFlM2IyODBjOTlhODdhMmVhNGFkN2E0MDYyOGJjYgpBdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+CkRhdGU6CVN1biBNYXkgNCAxNjo0NTowMSAyMDA4IC0wNzAwCgogICAgUmVjb2duaXplICdwb3dlcnBjJyBBcyBhbiBBbGlhcyBmb3IgSUhfQVJDSF9QUEMKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlY29nbml0aW9uIG9mICdwb3dlcnBjJyBhcyBhbiBhbGlhcyBmb3IgdGhlIFBvd2VyUEMKICAgIGFyY2hpdGVjdHVyZSB0eXBlIHNpbmNlIExpbnV4IGlzIGFscmVhZHkgdHJlbmRpbmcgaW4gdGhhdCBkaXJlY3Rpb24sCiAgICBwcmVmZXJyaW5nICdwb3dlcnBjJyB0byAncHBjJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgoKY29tbWl0IGY1YTI0MjU5MTkwYzM4OGMyNTI3YmRjNDlmZWUzNDU3N2Q4NjJjYzcKQXV0aG9yOiBXaGVhdGxleSBUcmF2aXMgPFRyYXZpcy5XaGVhdGxleUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWF5IDIgMTM6MzU6MTUgMjAwOCAtMDcwMAoKICAgIDc0NTAgYW5kIDg2eHggTDIgY2FjaGUgaW52YWxpZGF0ZSBidWcgY29ycmVjdGlvbnMKCiAgICBUaGUgNzYxMCBhbmQgcmVsYXRlZCBwYXJ0cyBoYXZlIGFuIEwySVAgYml0IGluIHRoZSBMMkNSIHRoYXQgaXMKICAgIG1vbml0b3JlZCB0byBzaWduYWwgd2hlbiB0aGUgTDIgY2FjaGUgaW52YWxpZGF0ZSBpcyBjb21wbGV0ZSB3aGVyZWFzIHRoZQogICAgNzQ1MCBhbmQgcmVsYXRlZCBwYXJ0cyB1dGlsaXplIEwySSBmb3IgdGhpcyBwdXJwb3NlLiBIb3dldmVyLCB0aGUKICAgIGN1cnJlbnQgY29kZSBkb2VzIG5vdCBhY2NvdW50IGZvciB0aGlzIGRpZmZlcmVuY2UuIEFkZGl0aW9uYWxseSB0aGUgODZ4eAogICAgTDIgY2FjaGUgaW52YWxpZGF0ZSBjb2RlIHVzZWQgYW4gImFuZGkiIGluc3RydWN0aW9uIHdoZXJlIGFuICJhbmRpcyIKICAgIGluc3RydWN0aW9uIHNob3VsZCBoYXZlIGJlZW4gdXNlZC4KCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBib3RoIG9mIHRoZXNlIGJ1Z3MuCgogICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDx0cmF2aXMud2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLUJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRkMzFjZGM0NWQzNTkyYTU1NDVhNjQ5ZmI1YTI0YjQ1OGE0ZTRiNzIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgTWF5IDkgMTA6MTY6MTMgMjAwOCArMDIwMAoKICAgIEF2b2lkIGluZmluaXRlIGxvb3AgIkdlbmVyYXRpbmcgaW5jbHVkZS9hdXRvY29uZi5tayIKCiAgICBGaXggYSBib2d1cyBjaXJjdWxhciBkZXBlbmRlbmN5IHRoYXQgY2F1c2VkIGFuIGluZmluaXRlIGxvb3Agb2YKICAgICJHZW5lcmF0aW5nIGluY2x1ZGUvYXV0b2NvbmYubWsiIGFnYWluIGFuZCBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU2N2ZiODUyMTc4ZGJmNTk1MjlkNzMwMTYyMGEzZjM3MzJhNGIwMmQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgTWF5IDggMjI6NTI6MDkgMjAwOCArMDIwMAoKICAgIEZpeCBAIC0+IDxhdD4gc3Vic3RpdHV0aW9uCgogICAgV2hlbiBhcHBseWluZyB0aGUgQVQ5MUNBUDkgcGF0Y2hlcyB1cHN0cmVhbSwgc29tZXRoaW5nIHRyYW5zZm9ybWVkCiAgICB0aGUgJ0AnIGNoYXJhY3RlciBpbnRvIHRoZSAnIDxhdD4gJyBzZXF1ZW5jZS4KCiAgICBUaGUgcGF0Y2ggYmVsb3cgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGZvcm0gaW4gYWxsIHRoZSBwbGFjZXMgd2hlcmUKICAgIGl0IGhhcyBiZWVuIG1vZGlmaWVkICh0aGUgQVQ5MUNBUDkgZmlsZXMsIHRoZSBBVDkxU0FNOTI2MCBmaWxlcyB3aGljaAogICAgd2VyZSBjb3BpZWQgZnJvbSBBVDkxQ0FQOSwgYW5kIGEgY291cGxlIG9mIG90aGVyIGZpbGVzIHdoZXJlIHRoZQogICAgJyA8YXQ+ICcgc2VxdWVuY2Ugd2FzIHByZXNlbnQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDczY2NiMzQxMGEwNzg1NTkzY2RhN2FlZTQ1NWRmYzUxZjc5MGUyODEKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeS5qZW5uZWpvaG5AZnJlZW5ldC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDowNDozMiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgdGhlIEhhcnJpcyBRVUFEMTAwSEQgQU1DQyA0MDVFUC1iYXNlZCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVmMjY0MjYyNWNiZmIxYzM2OTVlMzQ3OGQwOGFlNTE1MDUyYTQ5NTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMToxMDo0NiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBLaWxhdWVhOiBGaXggaW5jb3JyZWN0IEZQR0EgRklGTyBhZGRyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGEwMGVjY2ZlYmM5NTRhZDk0ODUxNjFlZmVjYTdkOWFhZjYyNmQ1MzAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMTowNToxNSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGQgZmR0IHN1cHBvcnQgdG8gYWxsIHJlbWFpbmluZyBBTUNDIFBQQzR4eCBldmFsIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBmZHQgKGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSkgc3VwcG9ydCB0byBhbGwgcmVtYWluaW5nIEFNQ0MKICAgIGV2YWwgYm9hcmRzLiBNb3N0IG5ld2VyIGJvYXJkcyBhbHJlYWR5IHN1cHBvcnQgZGV2aWNlIHRyZWUuIFdpdGggdGhpcyBwYXRjaCwKICAgIGFsbCBBTUNDIGJvYXJkcyBub3cgZW5hYmxlIGRldmljZSB0cmVlIHBhc3NpbmcgZnJvbSBVLUJvb3QgdG8gTGludXgKICAgIGFyY2gvcG93ZXJwYyBrZXJuZWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYjVkODhiOTYxMWUwYzM1YzUzNTQzYWQzYjRhYjk5ZmE4MjIwM2UzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDggMTE6MDE6MDkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIHdlYWsgZGVmYXVsdCBmdF9ib2FyZF9zZXR1cCgpIHJvdXRpbmUKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkZWZhdWx0IGZ0X2JvYXJkX3NldHVwKCkgcm91dGluZSB0byB0aGUgNHh4IGZkdCBjb2RlLgogICAgVGhpcyByb3V0aW5lIGlzIGRlZmluZWQgYXMgd2VhayBhbmQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGEgYm9hcmQgc3BlY2lmaWMKICAgIG9uZSBpZiBuZWVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQxYzFiYTg1Yzc5MTUwNTNhZGY2YThkMTRhMDhhYzZmY2I3NTBkMDEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXkgOCAxMDo0ODo1OCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBhY2FkaWE6IEFkZCBmZHQgc3VwcG9ydCBhbmQgZml4IHNlY3Rpb24gb3ZlcmxhcCBwcm9ibGVtCgogICAgVGhpcyBwYXRjaCBhZGRzIGZkdCAoZmxhdHRlbmVkIGRldmljZSB0cmVlKSBzdXBwb3J0IHRvIHRoZSBBTUNDCiAgICBBY2FkaWEgZXZhbCBib2FyZC4gVGhpcyBpbmNyZWFzZXMgdGhlIGltYWdlIHNpemUgYW5kIGl0IGRvZXNuJ3QKICAgIGZpdCBhbnltb3JlIGludG8gMjU2a0J5dGUuIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcwogICAgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgd2UgZGVjaWRlZCB0byBpbmNyZWFzZSB0aGUgVS1Cb290IGltYWdlIHNpemUKICAgIChhZGQgb25lIGZsYXNoIHNlY3RvcikuCgogICAgQWxzbyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IGRlZmluaXRpb24gdG8gbWFrZSBpdAogICAgaW5kZXBlbmRlbnQgb2Ygc3VjaCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0YWRiMzAyM2RlNzViYzE1MGYwODhjODkzNWRiMzQwOTMwYWQzOGM4CkF1dGhvcjogSXJhIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+CkRhdGU6CVR1ZSBBcHIgMjkgMTE6MTg6NTQgMjAwOCAtMDcwMAoKICAgIHBwYzR4eDogQWRkIGRldmljZSB0cmVlIHN1cHBvcnQgdG8gQU1DQyBZb3NlbWl0ZQoKICAgIEFkZCBzdXBwb3J0IGZvciBib290aW5nIHdpdGggYSBkZXZpY2UgdHJlZSBibG9iLiBUaGlzIGlzIG5lZWRlZCB0byBib290CiAgICBBUkNIPXBvd2VycGMga2VybmVscy4gQWxzbyBhZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgZXRoMCBtYWMgYWRkcmVzcwogICAgdmlhIHRoZSBldGhhZGRyIHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI5YmJlZmNlMWE2NTNlYTM1Zjc0YTY2ZWMxMTdjZGRhMmUwNDNhNGIKQXV0aG9yOiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2hlbGxAYW1jYy5jb20+CkRhdGU6CVdlZCBNYXkgNyAwOTowMDoyMyAyMDA4IC0wNzAwCgogICAgcHBjNHh4OiBGaXggdHlwb3MgaW4gNDYwR1QvRVggRkJEViBhcnJheQoKICAgIENvcnJlY3RlZCB0d28gdHlwb3MgaW4gdGhlIDQ2MEdUL0VYIEZCRFYgYXJyYXkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoZWxsQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY2ZjVmYTkyNjM2MjkyNzFlZGM4NjE3OGIxZjIyNGUzYzlhYWIyYjMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgNyAxNjo1NDozMSAyMDA4IC0wNTAwCgogICAgODV4eDogTGltaXQgQ1BVMiB3b3JrYXJvdW5kIHRvIHBhcnRzIHRoYXQgaGF2ZSB0aGUgZXJyYXRhCgogICAgU2lnbmVkLW9mZi1ieTogRWJvbnkgWmh1IDxlYm9ueS56aHVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNWZlNTE0ZThhY2U1NjQzMDBkMmMxZDczODQ2ZGRmZjQ5NjU0MjQzCkF1dGhvcjogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDI1IDE1OjQ0OjQ1IDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBzeXN0ZW0gcGVyZm9ybWFuY2Ugc2V0dGluZ3MgZm9yIE1QQzgzNDlFTURTLgoKICAgIFRoZXNlIHNhbWUgc2V0dGluZ3MgYXJlIHVzZWQgb24gTVBDODM0OUlUWCwgYW5kCiAgICBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIE1QQzgzNDlFTURTLgoKICAgIFNpZ25lZC1vZmYtYnk6IExlZSBOaXBwZXIgPGxlZS5uaXBwZXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDkzODdkYmE5MTBlNDg1NjQwYjU3NWU5MjBlZTQ2M2I3ZTYxMWRjMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXkgNiAxMzoyMjo1MiAyMDA4ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NhY2hlLlM6IEZpeCBidWlsZCB3YXJuaW5nCgogICAgU29tZSBvbGQgR05VIGFzc2VtYmxlcnMsIHN1Y2ggYXMgdjIuMTQgKEVMREsgMy4xLjEpLCB2Mi4xNiAoRUxESyA0LjEuMCksCiAgICB3YXJucyBpbGxlZ2FsIGdsb2JhbCBzeW1ib2wgcmVmZXJlbmNlcyBieSBiYWwgKGFuZCBqYWwgYWxzbykgaW5zdHJ1Y3Rpb24uCiAgICBUaGlzIGRvZXMgbm90IGhhcHBlbiB3aXRoIHRoZSBsYXRlc3QgYmludXRpbHMgdjIuMTguCgogICAgSGVyZSdzIGFuIGV4YW1wbGUgb24gZ3RoMl9jb25maWc6CgogICAgbWlwc180S0MtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4OTAwMDAwMDAgLUkvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2luY2x1ZGUgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5CiAgICBzdGVtIC9vcHQvZWxkazMxMS91c3IvYmluLy4uL2xpYi9nY2MtbGliL21pcHMtbGludXgvMy4zLjMvaW5jbHVkZSAtcGlwZSAgLURDT05GSUdfTUlQUyAtRF9fTUlQU19fIC1HIDAgLW1hYmljYWxscyAtZnBpYyAtcGlwZSAtbXNvZnQtZmxvYXQgLW1hcmNoPTRrYyAtbXR1bmU9NGsKICAgIGMgLUVCIC1jIC1vIGNhY2hlLm8gY2FjaGUuUwogICAgY2FjaGUuUzogQXNzZW1ibGVyIG1lc3NhZ2VzOgogICAgY2FjaGUuUzoyNDM6IFdhcm5pbmc6IFByZXRlbmRpbmcgZ2xvYmFsIHN5bWJvbCB1c2VkIGFzIGJyYW5jaCB0YXJnZXQgaXMgbG9jYWwuCiAgICBjYWNoZS5TOjI1MDogV2FybmluZzogUHJldGVuZGluZyBnbG9iYWwgc3ltYm9sIHVzZWQgYXMgYnJhbmNoIHRhcmdldCBpcyBsb2NhbC4KCiAgICBJbiBwcmluY2lwbGUsIGdhcyBtaWdodCBiZSBzZW5zaXRpdmUgdG8gZ2xvYmFsIHN5bWJvbCByZWZlcmVuY2VzIGluIFBJQwogICAgY29kZSBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIHByb2Nlc3NlZCB0aHJvdWdoIEdPVCAoZ2xvYmFsIG9mZnNldCB0YWJsZSkuCiAgICBCdXQgaWYgYGJhbCcgaW5zdHJ1Y3Rpb24gaXMgdXNlZCwgaXQgcmVzdWx0cyBpbiBQQy1iYXNlZCBvZmZzZXQganVtcC4KICAgIFRoaXMgaXMgdGhlIGNhdXNlIG9mIHRoaXMgd2FybmluZy4KCiAgICBJbiBwcmFjdGljZSwgd2Uga25vdyBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIFBDLWJhc2VkIHJlZmVyZW5jZSBvciBHT1QtCiAgICBiYXNlZC4gQXMgZm9yIHRoaXMgY2FzZSwgYm90aCB3aWxsIHdvcmsgYmVmb3JlL2FmdGVyIHJlbG9jYXRpb24uIEJ1dCBsZXQncwogICAgZml4IHRoZSBjb2RlLgoKICAgIFRoaXMgcGF0Y2ggZXhwbGljaXRseSBzZXRzIHVwIGEgdGFyZ2V0IGFkZHJlc3MsIHRoZW4ganVtcCB0aGVyZS4KICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGRpc2Fzc2VtYmxlZCBjb2RlIHdpdGgvd2l0aG91dCB0aGlzIHBhdGNoLgoKICAgICA5MDAwMDY2ODoJICAgICAxNDg1ZmZlZgkgICAgIGJuZSAgICAgYTAsYTEsOTAwMDA2MjggPG1pcHNfY2FjaGVfcmVzZXQrMHgyMD4KICAgICA5MDAwMDY2YzoJICAgICBhYzgwZmZmYwkgICAgIHN3ICAgICAgemVybywtNChhMCkKICAgICA5MDAwMDY3MDoJICAgICAwMTQwMjgyMQkgICAgIG1vdmUgICAgYTEsdDIKICAgIC05MDAwMDY3NDoJICAgICAwNDExZmZiYQkgICAgIGJhbCAgICAgOTAwMDA1NjAgPG1pcHNfaW5pdF9pY2FjaGU+CiAgICAtOTAwMDA2Nzg6CSAgICAgMDE4MDMwMjEJICAgICBtb3ZlICAgIGEyLHQ0CiAgICAtOTAwMDA2N2M6CSAgICAgMDE2MDI4MjEJICAgICBtb3ZlICAgIGExLHQzCiAgICAtOTAwMDA2ODA6CSAgICAgMDQxMWZmY2MJICAgICBiYWwgICAgIDkwMDAwNWI0IDxtaXBzX2luaXRfZGNhY2hlPgogICAgLTkwMDAwNjg0OgkgICAgIDAxYTAzMDIxCSAgICAgbW92ZSAgICBhMix0NQogICAgLTkwMDAwNjg4OgkgICAgIDAzMDAwMDA4CSAgICAganIgICAgICB0OAogICAgLTkwMDAwNjhjOgkgICAgIDAwMDAwMDAwCSAgICAgbm9wCiAgICArOTAwMDA2NzQ6CSAgICAgMDE4MDMwMjEJICAgICBtb3ZlICAgIGEyLHQ0CiAgICArOTAwMDA2Nzg6CSAgICAgOGY4ZjgzZWMJICAgICBsdyAgICAgIHQ3LC0zMTc2NChncCkKICAgICs5MDAwMDY3YzoJICAgICAwMWUwZjgwOQkgICAgIGphbHIgICAgdDcKICAgICs5MDAwMDY4MDoJICAgICAwMDAwMDAwMAkgICAgIG5vcAogICAgKzkwMDAwNjg0OgkgICAgIDAxNjAyODIxCSAgICAgbW92ZSAgICBhMSx0MwogICAgKzkwMDAwNjg4OgkgICAgIDAxYTAzMDIxCSAgICAgbW92ZSAgICBhMix0NQogICAgKzkwMDAwNjhjOgkgICAgIDhmOGY4MWUwCSAgICAgbHcgICAgICB0NywtMzIyODgoZ3ApCiAgICArOTAwMDA2OTA6CSAgICAgMDFlMGY4MDkJICAgICBqYWxyICAgIHQ3CiAgICArOTAwMDA2OTQ6CSAgICAgMDAwMDAwMDAJICAgICBub3AKICAgICs5MDAwMDY5ODoJICAgICAwMzAwMDAwOAkgICAgIGpyICAgICAgdDgKICAgICs5MDAwMDY5YzoJICAgICAwMDAwMDAwMAkgICAgIG5vcAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMGY4YzYyYTE0YjUyM2M1Njg3NGViY2I2N2MxYTE2Yzk5YWFkNDhiMwpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJpdmVyLmNvbT4KRGF0ZToJTW9uIE1heSA1IDE0OjA0OjAwIDIwMDggKzAzMDAKCiAgICBBbGxvdyBidWlsZGluZyBtaXBzIHZlcnNpb25zIHdpdGggRUxESyAzLjEuMQoKICAgIC5ncHdvcmQgd29ya3Mgb25seSB3aXRoIGxvY2FsIHN5bWJvbHMgb24gY2VydGFpbiBiaW51dGlscyB2ZXJzaW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJ2aWVyLmNvbT4KCmNvbW1pdCAxMmE2N2E5ZTUxZjZiM2VjMjZjYjBmMDc3ZmI1Njg1YTQ0N2MzNTlkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA1IDEyOjUyOjM2IDIwMDggKzAyMDAKCiAgICBNQUtFQUxMOiBhZGQgaW5rYTR4MCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjgzZGNjMTNhZTdiMmRhYjM5NGJmZWY2ZjY5OTc1MGQxMTQ5MGVlMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXkgNCAyMTozNDoyMyAyMDA4ICswMjAwCgogICAga2I5MjAyIGJvYXJkOiBmaXggYnVpbGQgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZhZGY2MWRjNGNiNWM1M2EyZGY5OTBjYmM4ZGYyYmNlYWNiZmQ4NjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWF5IDQgMTI6MTA6MzMgMjAwOCArMDIwMAoKICAgIFByZXBhcmUgZm9yIHYxLjMuMy1yYzMKCiAgICBVcGRhdGUgQ2hOQUdFTE9HLCBtaW5vciB3aGl0ZSBzcGFjZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgN2MwNzczZmRlNjEwMGI2MWJlMjU1OGNiNWQ4YzQ0MmEzMTk0YWVjYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXkgNCAwMDozNToxNSAyMDA4ICswMjAwCgogICAgZHJpdmVycy9uZXQvdHNlYy5jOiBGaXggdHlwby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFhNzM3OTQ1ZTZmMzdhNWRlNWRiYWQ1NTBhNzY5NGUwY2IyYTgxMjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CUZyaSBNYXkgMiAyMTo0NToxMiAyMDA4IC0wNDAwCgogICAgdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmg6IHVzZSBwcmludGYgcmF0aGVyIHRoYW4gZWNobyAtbgoKICAgIFNvbWUgc3lzdGVtcyBhcmUgZHVtYiBhbmQgZG8gbm90IGltcGxlbWVudCB0aGUgLW4gZmxhZyB0byBlY2hvIChsaWtlIE9TIFgpLgogICAgQ29udmVydCB0aGUgTWFrZWZpbGUgdG8gdXNlIHByaW50ZiBhcyB0aGlzIHNob3VsZCB3b3JrIGV2ZXJ5d2hlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0YWNjMmExMDhhZDBhNjY5MTY1OTI0NzA0YTZjYjA4M2Y5MTM4MjQyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgTWF5IDIgMTg6MTc6NTAgMjAwOCAtMDQwMAoKICAgIGZpeCBidWlsZGluZyB3aGVuIHNhdmVlbnYgaXMgZGlzYWJsZWQgaW4gc29tZSBzZXR1cHMKCiAgICBJZiB5b3UgZW5hYmxlIGVudmlyb25tZW50IGluIHRoZSBmbGFzaCwgYnV0IGRpc2FibGUgdGhlIGVtYmVkZGVkCiAgICBvcHRpb24sIGFuZCB5b3UgZGlzYWJsZSB0aGUgc2F2ZWVudiBjb21tYW5kLCB0aGVuIHRoZSAjaWYgbmVzdGVkCiAgICBsb2dpYyB3aWxsIHRyaWdnZXIgYSBjb21waWxlIGZhaWx1cmU6CiAgICBlbnZfZmxhc2guYzogSW4gZnVuY3Rpb24gJ2Vudl9yZWxvY2F0ZV9zcGVjJzoKICAgIGVudl9mbGFzaC5jOjM5OTogZXJyb3I6ICdmbGFzaF9hZGRyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKICAgIFRoZSBmaXggaXMgdG8gYWRkIENNRF9TQVZFRU5WIGlmZGVmIHByb3RlY3Rpb24gbGlrZSBldmVyeXdoZXJlIGVsc2UuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNjZjFhZDUzNWFlMWMwZGMyZDQ2NjIzNWM2NjhhZGJkZmUzYTU1YjcKQXV0aG9yOiBKZXJlbXkgTWNOaWNvbGwgPGplcmVteS5tY25pY29sbEB3aW5kcml2ZXIuY29tPgpEYXRlOglGcmkgTWF5IDIgMTY6MTA6MDQgMjAwOCAtMDQwMAoKICAgIFNCQzg1NDg6IGZpeCBhZGRyZXNzIG1hc2sgdG8gYWxsb3cgNjRNIGZsYXNoCgogICAgRml4IGluY29ycmVjdCBtYXNrIHRvIGVuYWJsZSBhbGwgNjRNQiBvZiBvbmJvYXJkIGZsYXNoLgogICAgUHJldmlvdXNseSBVLUJvb3QgaW5jb3JyZWN0bHkgbWFwcGVkIG9ubHkgOE1CIG9mIGZsYXNoLCB0aGlzCiAgICBwYXRjaCBjb3JyZWN0bHkgbWFwcyBhbGwgdGhlIGF2YWlsYWJsZSBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgTWNOaWNvbGwgPGplcmVteS5tY25pY29sbEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDM2NDgwODVjNDY0YzhjMjJlZjc2ZmFiMDA2Y2E0MzQ0ZDM3OTYxMjQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgTWF5IDIgMTk6NDg6NTYgMjAwOCArMDIwMAoKICAgIHFlbXVfbWlwczogYWRkIFJFQURNRQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmZkZDAwMjY4OTE5MGEwMDIyYzdiM2RiYWIzN2ZjYmE3MjQ1ODBjZQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIE1heSAyIDAyOjM1OjU5IDIwMDggKzAyMDAKCiAgICBGaXggbWlzc3BlbGxlZCBjb21tZW50CgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IGZhOTU2ZmRlNjBiN2VjNGRkNjZiZDYyZjk5MTBmZDM0MWI1MDQ5YTEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBNYXkgMSAwNDoxMzowNSAyMDA4IC0wNDAwCgogICAgbWtpbWFnZTogbWFrZSBtbWFwKCkgY2hlY2tzIGNvbnNpc3RlbnQKCiAgICBUaGUgbW1hcCgpIHJlbGF0ZWQgY29kZSBpcyBmdWxsIG9mIGluY29uc2lzdGVudCBjYXN0cy9jb25zdGFudHMgd2hlbgogICAgaXQgY29tZXMgdG8gZXJyb3IgY2hlY2tpbmcsIGFuZCBtYXkgYnJlYWsgd2hlbiBidWlsZGluZyBvbiBzb21lCiAgICBzeXN0ZW1zIChsaWtlIG9uZXMgdGhhdCBkbyBub3QgaW1wbGljaXRseSBkZWZpbmUgdGhlIGNhZGRyX3QgdHlwZSkuCiAgICBMZXQncyBqdXN0IGF2b2lkIHRoZSB3aG9sZSBtZXNzIGJ5IHdyaXRpbmcgdGhlIGNvZGUgbmljZSBhbmQgY2xlYW4gaW4KICAgIHRoZSBmaXJzdCBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGU5MGNkMDQ0N2EwZjBjY2Y1MjllZjg2ZjBlNmI1NjE4N2QzYjgyYQpBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJVGh1IE1heSAxIDA5OjA1OjM0IDIwMDggKzAyMDAKCiAgICBGaXggZGVmaW5lZCBidXQgbm90IHVzZWQgYnVpbGQgd2FybmluZwoKICAgIC0gd2FybmluZzogJ3Nyb20nIGRlZmluZWQgYnV0IG5vdCB1c2VkCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IGI3MTE5MGYzMjUwYWFmZmNjODFjMzVmNmNmZDM0OThjYjdjNDgwMTMKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVRodSBNYXkgMSAwOTowNToyNiAyMDA4ICswMjAwCgogICAgRml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIGJ1aWxkIHdhcm5pbmdzCgogICAgLSB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiDigJhzZXJpYWxfaW5pdGlhbGl6ZeKAmQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCA5YWNkZTEyOWNjM2Y5YzFiM2JjMTFhODIxNDgwZGQ0NDY3NzRkNjE4CkF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgpEYXRlOglUdWUgQXByIDI5IDE5OjE4OjMyIDIwMDggKzAyMDAKCiAgICBUU0VDOiBhZGQgY29uZmlnIG9wdGlvbnMgZm9yIFZTQzg2MDEgUkdNSUkgUEhZCgogICAgVGhlIFZpdGVzc2UgVlNDODYwMSBSR01JSSBQSFkgaGFzIGludGVybmFsIGRlbGF5IGZvciBib3RoIFJ4CiAgICBhbmQgVHggY2xvY2sgbGluZXMuIFRoZXkgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgMiBiaXRzIGluIGV4dGVuZGVkCiAgICByZWdpc3RlciAweDE3LgogICAgVGhlcmVmb3JlIENGR19WU0M4NjAxX1NLRVdfVFggYW5kIENGR19WU0M4NjAxX1NLRVdfUlggaGF2ZQogICAgYmVlbiBpbnRyb2R1Y2VkIHdpdGggdmFsaWQgdmFsdWVzIDAtMyBnaXZpbmcgMC4wLCAxLjQsMS43IGFuZCAyLjBucyBkZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICAtLQoKICAgICBkcml2ZXJzL25ldC90c2VjLmMgfCAgICA2ICsrKysrKwogICAgIGRyaXZlcnMvbmV0L3RzZWMuaCB8ICAgIDMgKysrCiAgICAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpjb21taXQgYmQ5OGVlNjBkZjQzZWU2ZGQ2ZjVlYmUzMmM2N2QwM2U5MDUxM2ZmOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXkgMyAyMzowNzoxNSAyMDA4ICswMjAwCgogICAgUmV2ZXJ0ICJDb2xkRmlyZTogR2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlY3QgR0NDIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYjcxNjZlMDVhNTEzYzA4MDZiNjNiOWRmYjZmMWQ3NzY0NWNlZGUyYQogICAgKHJlcGxhY2VkIGJ5IGNvbW1pdCBjNGU1ZjUyYTU4ZDI3OGVlYmI4N2Y0NzZlMzUzOTcyYzVkYWNlYTQwKS4KCmNvbW1pdCBjNGU1ZjUyYTU4ZDI3OGVlYmI4N2Y0NzZlMzUzOTcyYzVkYWNlYTQwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSAzIDIyOjI1OjAwIDIwMDggKzAyMDAKCiAgICBjb25maWcubWs6IHVzZSBjb3JyZWN0IChjcm9zcykgY29tcGlsZXIKCiAgICBTb21lIGNvbmZpZy5tayBmaWxlcyByZWZlcmVuY2UgJChDQykgdG8gdGVzdCBmb3Igc3BlY2lmaWMgdG9vbCBjaGFpbgogICAgZmVhdHVyZXMsIHNvIG1ha2Ugc3VyZSAkKENDKSBnZXRzIHNldCBiZWZvcmUgaW5jbHVkaW5nIGFueSBzdWNoCiAgICBjb25maWcgZmlsZXMuCgogICAgVGhpcyBwYXRjaCByZXBsYWNlcyBjb21taXQgYjcxNjZlMDVhNSAoIkNvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbQogICAgdGhlIGNvcnJlY3QgR0NDIikuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyN2MzODY4OWQwY2ZkZTBlNDQ0MjM5MzQ1Zjk3YjVlZWNjOWY0MDY3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IE1heSAxIDAyOjEzOjQ0IDIwMDggKzAyMDAKCiAgICBweGE6IGZpeCBwcmV2aW91cyBkZWZpbml0aW9uIG9uIGNwdSBpbml0CgogICAgc3RhcnQuUzoxODM6MTogd2FybmluZzogIklDTVIiIHJlZGVmaW5lZAogICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0YXJ0LlM6MzM6CiAgICBpbmNsdWRlL2FzbS9hcmNoL3B4YS1yZWdzLmg6OTM1OjE6IHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uCiAgICBzdGFydC5TOjE4NzoxOiB3YXJuaW5nOiAiUkNTUiIgcmVkZWZpbmVkCiAgICAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZkMTJlNjk3ZGU3OTRkNzAwNzY3ZjIyZjk1MGUzMDI2Y2NmNGRhZjYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgTWF5IDEgMDI6MTM6NDMgMjAwOCArMDIwMAoKICAgIHB4YTogZml4IHBjbWNpYSBvcGVyYXRpb24gb24gJ2knIG1heSBiZSB1bmRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZDc3ZjUxMDJkZmVhYTM2Y2Q1OGQ5YTlmMDgzYmQyY2M0OTE1MjZmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEFwciAzMCAxNjoyNDozNSAyMDA4IC0wNTAwCgogICAgTVBDODYxMEhQQ0Q6IERyb3AgLU8yIGZyb20gdGhlIGJ1aWxkIGZsYWdzCgogICAgTWFrZSB0aGUgZmxhZ3MgdXNlIC1PcyBsaWtlIGFsbCBvdGhlciBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDAwNzJiNzhiZTJiNDFlNWEwY2EzZGRjMzkzMzU1NzRkYzJlODU1YmQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTU6NTA6MzkgMjAwOCArMDIwMAoKICAgIFJUQzogRml4IG1vbnRoIG9mZnNldCBieSBvbmUgcHJvYmxlbSBpbiBNNDFUNjIgUlRDIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHdpdGggdGhlIG1vbnRoIGJlaW5nIHJlYWQgYW5kIHdyaXR0ZW4KICAgIGluY29ycmVjdGx5IChvZmZzZXQgYnkgb25lKS4gVGhpcyBvbmx5IGdldHMgdmlzaWJsZSBieSBhbHNvIHVzaW5nCiAgICB0aGUgTGludXggZHJpdmVyIChydGMtbTQxdDgwKS4KCiAgICBUZXN0ZWQgb24gQU1DQyBDYW55b25sYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQxYmExY2FkOGU2NTk4YTI0NjZlN2UyOTc2YzZhMTIyODVkZjYxOQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBNYXkgMyAxMzo1MTo0NCAyMDA4ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NvbmZpZy5tazogRml4IEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiBwaWNrZXIKCiAgICBDdXJyZW50IHRyaWNrIHRvIHBpY2sgdXAgR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIHVzZXMgYSBkb3QoLikgYXMgYQogICAgZGVsaW1pdGVyLCBhbmQgdGFrZSB0aGUgc2Vjb25kIGZpZWxkIHRvIG9idGFpbiBtaW5vciB2ZXJzaW9uIG51bWJlci4gQnV0CiAgICBhcyBjYW4gYmUgZXhwZWN0ZWQsIHRoaXMgZG9lc24ndCB3b3JrIHdpdGggYSB2ZXJzaW9uIHN0cmluZyB3aGljaCBoYXMKICAgIGRvdHMgbW9yZSB0aGFuIG5lZWRzLgoKICAgIEhlcmUncyBhbiBleGFtcGxlOgoKICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicKICAgIEdOVSBhc3NlbWJsZXIgKFNvdXJjZXJ5IEcrKyBMaXRlIDQuMi0xMjkpIDIuMTguNTAuMjAwODAyMTUKICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicgfCBjdXQgLWQuIC1mMgogICAgMi0xMjkpIDIKICAgICQKCiAgICBUaGlzIHBhdGNoIHJlc3RyaWN0cyB0aGUgdmVyc2lvbiBmb3JtYXQgdG8gMi5YWC5YWC4uLiBUaGlzIHdpbGwgd29yawogICAgaW4gbW9zdCBjYXNlcy4KCiAgICAkIG1pcHMtbGludXgtZ251LWFzIC0tdmVyc2lvbiB8IGdyZXAgJ0dOVSBhc3NlbWJsZXInIHwgZWdyZXAgLW8gJzJcLlswLTlcLl0rJwogICAgMi4xOC41MC4yMDA4MDIxNQogICAgJCBtaXBzLWxpbnV4LWdudS1hcyAtLXZlcnNpb24gfCBncmVwICdHTlUgYXNzZW1ibGVyJyB8IGVncmVwIC1vICcyXC5bMC05XC5dKycgfCBjdXQgLWQuIC1mMgogICAgMTgKICAgICQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGVhNjM4OTUxYWNlYWQ3ZjEwODZjOTA4YzBiOWYwODZiZWFiODJhMjIKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgTWF5IDMgMTM6NTE6MjggMjAwOCArMDkwMAoKICAgIFtNSVBTXSBjcHUvbWlwcy9jYWNoZS5TOiBBZGQgZGNhY2hlX2VuYWJsZQoKICAgIFJlY2VudCBib290ZWxmIGNvbW1hbmQgZml4ZXMgKDAxN2U5Yjc5MjVmNzQ4NzhkMGU5NDc1Mzg4Y2NhOWJkYTVlZjk0ODIsCiAgICAiYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgYm9vdGVsZiBiZWhhdmlvciIpIHJlcXVpcmVzIHBvcnRzIHRvIGhhdmUgdGhpcwogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQyYzZmYmVjNDM5N2M5MzZiMThjZDQyNDgyYjY5NzNjZDY3ODFiZGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDEgMjE6MzA6MTYgMjAwOCArMDIwMAoKICAgIG9uZW5hbmQ6IHJlbmFtZSAxNiBiaXQgbWVtb3J5IGNvcHkgaW50byBtZW1jcHlfMTYoKSB0byBhdm9pZCBjb25mbGljdHMKCiAgICBPbmVuYW5kIG5lZWRzIGEgdmVyc2lvbiBvZiBtZW1jcHkoKSB3aGljaCBwZXJmb3JtcyAxNiBiaXQgYWNjZXNzZXMKICAgIG9ubHk7IG1ha2Ugc3VyZSB0aGUgbmFtZSBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSBzdGFuZGFyZAogICAgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxMmJjNGU5NDI1MWMzNjljNTI5ZmZhNTA1Y2Y1OGIxNDhjMzcyZjdmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAzMCAyMjozODoxNyAyMDA4ICswMjAwCgogICAgY21kX25hbmQ6IGZpeCB3YXJuaW5nOiBzdHIybG9uZyBuY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDFiOWVkMjU3NGEzOGM5M2NiMDNkYWQ0MTg4NWZjMDZiZTRiZmM5ZGQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXByIDQgMTE6MTY6MTEgMjAwOCAtMDUwMAoKICAgIEZpeCBjYWxjdWxhdGlvbiBvZiBJMkMgY2xvY2sgZm9yIHNvbWUgODZ4eCBjaGlwcwoKICAgIFNvbWUgODZ4eCBjaGlwcyB1c2UgQ0NCIGFzIHRoZSBiYXNlIGNsb2NrIGZvciB0aGUgSTJDLCBhbmQgb3RoZXJzIHVzZWQgQ0NCLzIuCiAgICBUaGVyZSBpcyBubyBwYXR0ZXJuIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGNoaXBzIHVzZSB3aGljaAogICAgZnJlcXVlbmN5LCBzbyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlzIHRvIGxvb2sgdXAgdGhlIGFjdHVhbCBTT0MKICAgIGRlc2lnbmF0aW9uIGFuZCB1c2UgdGhlIHJpZ2h0IHZhbHVlIGZvciB0aGF0IFNPQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYzMmY3ZmU3YmQzYTViZGEzYTQ3NjUyMGYwMGUxYWNhN2MyMTAzYTkKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDMwIDEyOjExOjE5IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGV0aGVybmV0IGhhbmcgaXNzdWUgZm9yIG1jZjU0N3hfOHgKCiAgICBUaGUgZXRoZXJuZXQgaGFuZyBpcyBjYXVzZWQgYnkgcmVjZWl2aW5nIGJ1ZmZlciBpbiBEUkFNIGlzIG5vdAogICAgeWV0IHJlYWR5IGR1ZSB0byBhY2Nlc3MgY3ljbGVzIHJlcXVpcmUgbG9uZ2VyIHRpbWUgaW4gRFJBTS4KICAgIFJlbG9jYXRlIERNQSBidWZmZXIgZGVzY3JpcHRvcnMgZnJvbSBEUkFNIHRvIGludGVybmFsIFNSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ODZkOTAxNzZmYzI1N2UwYWI0ZDBkYjA1ZDExZDA3NDliYmVkM2NhCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEFwciAzMCAxMjoxMDo0NyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBjb21waWxhdGlvbiBpc3N1ZSBjYXVzZWQgYnkgbmV3IGNoYW5nZXMgaW4gZnNsX2kyYy5jCgogICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgQ29taW8gTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjcxNjZlMDVhNTEzYzA4MDZiNjNiOWRmYjZmMWQ3NzY0NWNlZGUyYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBcHIgMzAgMTI6MTA6MjMgMjAwOCAtMDUwMAoKICAgIENvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29ycmVjdCBHQ0MKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdXJ0IE1haGFuIDxrbWFoYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzc4ZTdlYzk1ZGE0NzUxZWM4ZmU0NjFiYWFjYWIyYmY3ZDI1MTJhOQpBdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVdlZCBBcHIgMzAgMTg6MDI6NTkgMjAwOCArMDIwMAoKICAgIEZpeCB3YXJuaW5nIGluIGVudl9uYW5kLmMgaWYgY29tcGlsZWQgZm9yIERhVmluY2kgU2NobW9vZ2llCgogICAgRml4IHdhcm5pbmdzCgogICAgbnZfbmFuZC5jOiBJbiBmdW5jdGlvbiAnc2F2ZWVudic6CiAgICBlbnZfbmFuZC5jOjIwMDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAzIG9mICduYW5kX3dyaXRlJyBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKICAgIGVudl9uYW5kLmM6IEluIGZ1bmN0aW9uICdlbnZfcmVsb2NhdGVfc3BlYyc6CiAgICBlbnZfbmFuZC5jOjI3NTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAzIG9mICduYW5kX3JlYWQnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQoKICAgIGlmIGNvbXBpbGVkIGZvciBkYXZpbmNpX3NjaG1vb2dpZV9jb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+CiAgICBBY2sgYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IDMzYTRhNzBkNDhkNjIyY2M0OTUwYzYwYTg0ZmVjMjNiOTQyMWYyM2UKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTM6MzQ6NDAgMjAwOCArMDIwMAoKICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgbmV0L25ldC5jIGZvciBNUEM4NjEwSFBDRCBib2FyZAoKICAgIE1QQzg2MTBIUENEIGJvYXJkIGFkZHMgLU8yIGdjYyBvcHRpb24gdG8gUExBVEZPUk1fQ1BQRkxBR1MKICAgIGNhdXNpbmcgb3ZlcnJpZGluZyBkZWZhdWx0IC1PcyBvcHRpb24uIE5ldyBnY2MgKHZlci4gNC4yLjIpCiAgICBwcm9kdWNlcyB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgbmV0L25ldC5jIGZpbGUgd2l0aCAtTzIKICAgIG9wdGlvbi4gVGhlIHBhdGNoIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDU4YjU3NWU1NzVjMjVmZGY4Yzg4MTQxZTE0NWRiMjAxZjMwOTIxNDkKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJV2VkIEFwciAzMCAxNToyMzozOCAyMDA4ICswMjAwCgogICAgbHdtb241OiBmaXggb2Zmc2V0IGVycm9yIGluIHN5c21vbjAgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBMYXVlIDxzYXNjaGEubGF1ZUBsaWViaGVyci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU3NDE5YjI0M2EzNzNkZTRlZTA0MmY3ZDRmNDVmNjZkZTc4NzI0MGQKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJV2VkIEFwciAzMCAxNToxNjozNSAyMDA4ICswMjAwCgogICAgbHdtb241OiBmaXggbWFudWFsIG1lcmdlIGVycm9yIGluIFBPU1QKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgoKY29tbWl0IDQyZmZjZWMzZjllYmEwMTBhNjYyZDViNDI5ODE4MTJiNmJlYmZiOWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE3OjQ2OjI2IDIwMDggKzAyMDAKCiAgICBjbWRfbmFuZC5jOiBmaXggYW5vdGhlciAnaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZScgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRlMTA5ZDkwOTcwN2UyZGZlODA2YmU1ZWZjM2NkYjEwM2I0N2M4YWQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE3OjI1OjA3IDIwMDggKzAyMDAKCiAgICBNYWtlZmlsZTogZml4IHBhcmFsbGVsIGJ1aWxkcwoKICAgIFRoaXMgcHJvYmxlbSBzaG93cyB1cCB3aXRoIHBhcmFsbGVsIGJ1aWxkcyBvbmx5OyBpdCByZXN1bHRzIGluCiAgICBzb21ld2hhdCBjcnlwdGljIGVycm9yIG1lc3NhZ2VzIGxpa2UKCgkkIEpPQlM9LWo2IE1BS0VBTEwgbmV0c3RhcgoJQ29uZmlndXJpbmcgZm9yIG5ldHN0YXIgYm9hcmQuLi4KCWFybS1saW51eC1sZDogY2Fubm90IGZpbmQgLWxnZW5lcmljCgltYWtlWzFdOiAqKiogW2VlcHJvbS5zcmVjXSBFcnJvciAxCgogICAgQSBmZXcgYm9hcmRzIChsaWtlIG5ldHN0YXIgYW5kIHZvaWNlYmx1ZSkgbmVlZCBzb21lIGxpYnJhcmllcyBmb3IKICAgIGJ1aWxkaW5nOyBob3dldmVyLCB0aGUgYm9hcmQgTWFrZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgc3VjaAogICAgZGVwZW5kZW5jaWVzIHdoaWNoIG1heSBjYXVzZSBwcm9ibGVtcyB3aXRoIHBhcmFsbGVsIGJ1aWxkcy4gQWRkaW5nCiAgICBzdWNoIGRlcGVuZGVuY2llcyBpcyBkaWZmaWN1bHQgYXMgd2Ugd291bGQgYWxzbyBoYXZlIHRvIHByb3ZpZGUgYnVpbGQKICAgIHJ1bGVzLCB3aGljaCBhbHJlYWR5IGV4aXN0IGluIHRoZSByZXNwZWN0aXZlIGxpYnJhcnkgTWFrZWZpbGVzLgoKICAgIFRvIHNvbHZlIHRoaXMsIHdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBsaWJyYXJpZXMgZ2V0IGJ1aWx0IGJlZm9yZSB0aGUKICAgIGJvYXJkIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0ZjI3MDk4ZTViMDczNjk4OWIxM2NkNjFkN2JjYTk0YjM1NzRjZjVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDMwIDE0OjUxOjM2IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkYXB0IENhbnlvbmxhbmRzIGZpeGVkIEREUjIgc2V0dXAgdG8gbmV3IERJTU0gbW9kdWxlCgogICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBDYW55b25sYW5kcy9HbGFjaWVyIGZpeGVkIEREUjIgY29udHJvbGxlciBzZXR1cAogICAgdXNlZCBmb3IgTkFORCBib290aW5nIHRvIG1hdGNoIHRoZSB2YWx1ZXMgbmVlZGVkIGZvciB0aGUgbmV3IDUxMk1CCiAgICBESU1NIG1vZHVsZXMgc2hpcHBlZCB3aXRoIHRoZSBwcm9kdWN0aW9ucyBib2FyZHM6CgogICAgQ3J1Y2lhbDogQ1Q2NDY0QUM2NjcuOEZCCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhOTIwMmE2NTlkYzc1OTk2ZmFjZjE0NzVmMTg2NmExOWE5ZDMxMjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMzAgMTA6NDk6NDMgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBESU1NcyB3aXRoIDggYmFua3MgaW4gNDR4X3NwZF9kZHIyLmMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIERJTU1zIHRoYXQgaGF2ZSA4IGJhbmtzLiBOb3cgdGhlCiAgICBNQ0lGMF9NQnhDRiByZWdpc3RlciB3aWxsIGJlIHNldHVwIGNvcnJlY3RseSBmb3IgdGhpcyBzZXR1cCB0b28uCgogICAgVGhpcyB3YXMgbm90aWNlZCB3aXRoIHRoZSA1MTJNQiBESU1NIG9uIENhbnlvbmxhbmRzL0dsYWNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc2NjE3Mjk5MzU4ZWJiYTI2MGVjYzAyZDMzZThlNzVkOGQxM2RkM2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI5IDIzOjQxOjA2IDIwMDggKzAyMDAKCiAgICBQcmVwYXJlIHYxLjMuMy1yYzIsIGFnYWluLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjdmY2M0YzEzOTkzNzgyMzQyY2Y1Y2QyMGQyMzdhNjI4MTY0OGEwYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjM6MzU6MjQgMjAwOCArMDIwMAoKICAgIFByZXBhcmUgdjEuMy4zLXJjMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjdiMTZhMGE0ZDU3MWRkMzNiMmI1MTg1YTU0ZjdkZGMzMTFmODlkNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjM6MzI6MjAgMjAwOCArMDIwMAoKICAgIGNvbW1vbi9lbnZfbmFuZC5jOiBmaXggb25lIG1vcmUgaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBpc3N1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZWE2ZjY2ODk0Zjk1MjIyOWVlYmZjNGFkMDNjZDIxZmU1YzhiM2YwZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMjE6MzM6MDggMjAwOCArMDIwMAoKICAgIHBvc3QvYm9hcmQvbHdtb241L3N5c21vbi5jOiBmaXggbWFudWFsIG1lcmdlIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzBhMGY4MTQxMmIwYjE4YTZmZDBiZWE5NjA0NTFiYzZjMmNjYTQ5YQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTI6NTQ6NTkgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZCAtbW5vLXNwZSB0byBlNTAwLzg1eHggYnVpbGRzCgogICAgTmV3ZXIgZ2NjJ3MgbWlnaHQgYmUgY29uZmlndXJlZCB0byBlbmFibGUgYXV0b3ZlY3Rvcml6YXRpb24gYnkgZGVmYXVsdC4KICAgIElmIHdlIGhhcHBlbiB0byBidWlsZCB3aXRoIG9uZSBvZiB0aG9zZSBjb21waWxlcnMgd2Ugd2lsbCBnZXQgU1BFCiAgICBpbnN0cnVjdGlvbnMgaW4gcmFuZG9tIGNvZGUuCgogICAgLW1uby1zcGUgZGlzYWJsZXMgdGhlIGNvbXBpbGVyIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgU1BFCiAgICBpbnN0cnVjdGlvbnMgd2l0aG91dCBvdXIga25vd2xlZGdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGVhMDhlNWJlNjk0MzZhYmNjOTVkM2RhMTE0ZGU0YTJmZjhhNmFiNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTA6MTg6MzQgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSAuZ2l0aWdub3JlIGZvciB6bGliLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ1MjM5Y2Y0MTUyMTA5Y2FhOTI1MTQ1Y2NkNDMzNTI5OTAyZGY4ODcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgQXByIDI5IDEwOjI3OjA4IDIwMDggLTA1MDAKCiAgICA4NXh4Lzg2eHg6IFJlbmFtZSBleHRfcmVmcmVjIHRvIHRpbWluZ19jZmdfMyB0byBtYXRjaCBkb2NzCgogICAgQWxsIHRoZSA4NXh4IGFuZCA4Nnh4IFVNIGRlc2NyaWJlIHRoZSByZWdpc3RlciBhcyB0aW1pbmdfY2ZnXzMKICAgIG5vdCBhcyBleHRfcmVmcmVjLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZWY3ZDMwYjE0Mzk0ZTRjNGExNTMxMThmNTg0NTc2MGNhZGFkYTAyYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgMjkgMTA6Mjg6MzQgMjAwOCAtMDUwMAoKICAgIDg1eHgvODZ4eDogUmVuYW1lIEREUiBpbml0IGFkZHJlc3MgYW5kIGluaXQgZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlcgoKICAgIFJlbmFtZSBpbml0X2FkZHIgYW5kIGluaXRfZXh0X2FkZHIgdG8gbWF0Y2ggdGhlIGRvY3MgYmV0d2VlbgogICAgODV4eCBhbmQgODZ4eC4gIEJvdGggbm93IHVzZSAnaW5pdF9hZGRyJyBhbmQgJ2luaXRfZXh0X2FkZHInLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2Y2Y2MwMTQyNzA1NDk2ODQ4NzNhNTk3MmQyNTk1MDUyYzQ2OGNiNgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBBcHIgMjggMDI6MjQ6MDQgMjAwOCAtMDUwMAoKICAgIDg1eHg6IEFkZGl0aW9uYWwgZml4ZXMgYW5kIGNsZWFudXAgb2YgTVAgY29kZQoKICAgICogYWRqdXN0IF9fc3Bpbl90YWJsZSBhbGlnbm1lbnQgdG8gbWF0Y2ggZVBBUFIgdjAuOTQgc3BlYwogICAgKiBsb29wIG92ZXIgYWxsIGNwdXMgd2hlbiBkZXRlcm1pbmcgd2hvIGlzIHVwLiAgVGhpcyBmaXhlcyBhbiBpc3N1ZSBpZgogICAgICB0aGUgImJvb3QgY3B1IiBpc24ndCBjb3JlMC4gIFRoZSAiYm9vdCBjcHUiIHdpbGwgYWxyZWFkeSBiZSBpbiB0aGUKICAgICAgY3B1X3VwX21hc2sgc28gdGhlcmUgaXMgbm8gaGFybQogICAgKiBBZGRlZCBzb21lIHByb3RlY3Rpb24gaW4gdGhlIGNvZGUgdG8gZW5zdXJlIHByb3BlciBiZWhhdmlvci4gIFRoZXNlCiAgICAgIGNoYW5nZXMgYXJlIGV4cGxpY2l0bHkgbmVlZGVkIGJ1dCBkb24ndCBodXJ0OgogICAgICAtIEFkZGVkIGVpZWlvIHRvIGVuc3VyZSB0aGUgImhvdCB3b3JkIiBvZiB0aGUgdGFibGUgaXMgd3JpdHRlbiBhZnRlcgoJYWxsIG90aGVyIHRhYmxlIHVwZGF0ZXMgaGF2ZSBvY2N1cnJlZC4KICAgICAgLSBBZGRlZCBpc3luYyB0byBlbnN1cmUgd2UgZG9uJ3QgcHJlZmV0Y2ggbG9hZGluZyBvZiB0YWJsZSBlbnRyaWVzCgl1bnRpbCB3ZSBhIHJlbGVhc2VkCgogICAgVGhlc2UgaXNzdWVzIHdlIHJhaXNlZCBieSBEYXZlIExpdS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGIyZDUyN2E4YjlmYjUwYWZjY2JhZjc5YjU1NDA5NTI1ODVjZGM3NjAKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBBcHIgMjkgMTU6MDY6NDEgMjAwOCArMDIwMAoKICAgIGx3bW9uNTogbWlub3IgY2xlYW4tdXAgdG8gaW5jbHVkZS9jb25maWdzL2x3bW9uNS5oCgogICAgTFdNT041IERTUElDIFBPU1QgdXNlcyB0aGUgd2F0Y2gtZG9nIHNjcmF0Y2ggcmVnaXN0ZXIuIFNvLCBtYWtlCiAgICB0aGUgQ0ZHX0RTUElDX1RFU1RfQUREUiBkZWZpbml0aW9uIG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGY0YzRkMjFhODg1Y2NjMjIyZmQwYWNkZjY1M2I2ODMyNDllODUxMTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTY6MDg6MDUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IENGR19NT05JVE9SX0xFTiBvbiBLYXRtYWkgZmFpbHNhdmUgdGhpcyB0aW1lCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzODEwNWVmZTFkMmIxYTQwYTNhOTdiNGMxZjg1YzIxMTFiZWEyZDgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6MzI6NDUgMjAwOCArMDIwMAoKICAgIHBwYyBmbHVzaF9jYWNoZTogYWRkIHdhdGNoLWRvZyB0cmlnZ2VyaW5nIGludG8gdGhlIGxvb3BzLgoKICAgIFNvbWUgYm9hcmRzIChlLmcuIGx3bW9uNSkgbmVlZCByYXRoZXIgYSBmcmVxdWVudCB3YXRjaC1kb2cKICAgIGtpY2tpbmcuIFNpbmNlIHRoZSB0aW1lIGl0IHRha2VzIGZvciB0aGUgZmx1c2hfY2FjaGUoKSBmdW5jdGlvbgogICAgdG8gY29tcGxldGUgaXRzIGpvYiBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIGRhdGEgYmVpbmcgZmx1c2hlZCwgb25lCiAgICBtYXkgZW5jb3VudGVyIHdhdGNoLWRvZyByZXNldHMgb24gc3VjaCBib2FyZHMgd2hlbiwgZm9yIGV4YW1wbGUsCiAgICBkb3dubG9hZCBiaWcgZmlsZXMgb3ZlciBldGhlcm5ldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgY2FiOTlkNmYzMjgxYWI2Nzg0ZmVjY2Y5OGI5YjQyNWRhYTU4NDE4YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyOSAxNDo0NDo1NCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gd2FybmluZyBpbiBkZW5hbGlfc3BkX2RkcjIuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZWM5ZDc4ZmU1Y2Q1ODVkMjg2ODczMWZhMTA4Y2ExZTYyNzMwZTcwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI5IDE0OjEyOjA3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBLYXRtYWkgQ0ZHX01PTklUT1JfTEVOCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg1YWQxODRiM2IyYjBmOGFmOTIyODQ3NzMwM2M1NWRjYTFiNTJlZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6NTc6MDcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ29tcGxldGUgcmVtb3ZlIGJvZ3VzIGRmbHVzaCgpCgogICAgU2luY2UgdGhlIGN1cnJlbnQgZGZsdXNoKCkgaW1wbGVtZW50YXRpb24gaXMga25vdyB0byBoYXZlIHNvbWUgcHJvYmxlbXMKICAgIChhcyBzZWVtIG9uIGx3bW9uNSBFQ0MgaW5pdCkgdGhpcyBwYXRjaCByZW1vdmVzIGl0IGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VzCiAgICBpdCBieSB1c2luZyBjbGVhbl9kY2FjaGVfcmFuZ2UoKS4KCiAgICBUZXN0ZWQgb24gS2F0bWFpIHdpdGggRUNDIERJTU0uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzNTg0NmQ2ZWNhYWQyNTVhZDI4ZDkzZWJiYjc4YjNkNWRhNjhjZGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMjkgMTM6MzY6NTEgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIEVDQyBpbml0aWFsaXphdGlvbiBvbiBsd21vbjUgdG8gdXNlIGNsZWFuX2RjYWNoZV9yYW5nZSgpCgogICAgQXMgaXQgc2VlbXMgdGhlICJvbGQiIEVDQyBpbml0aWFsaXphdGlvbiByb3V0aW5lIGJ5IHVzaW5nIGRmbHVzaCgpIGRpZG4ndAogICAgd3JpdGUgYWxsIGxpbmVzIGluIHRoZSBkY2FjaGUgYmFjayB0byBtZW1vcnkgb24gbHdtb241LiBUaGlzIGNvdWxkIGxlYWQKICAgIHRvIEVDQyBlcnJvciB1cG9uIExpbnV4IGJvb3RpbmcuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHJvZ3JhbV9lY2MoKQogICAgcm91dGluZSB0byBub3cgdXNlIGNsZWFuX2RjYWNoZV9yYW5nZSgpIGluc3RlYWQgb2YgZGZsdXNoKCkuCiAgICBjbGVhbl9kY2FjaGVfcmFuZ2UoKSB1c2VzIGRjYnN0IHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IGluIHRoaXMKICAgIGNhc2UuCgogICAgU2luY2UgZGZsdXNoKCkgaXMga25vd24gaXMgY2F1c2UgcHJvYmxlbXMsIHRoaXMgcm91dGluZSB3aWxsIGJlCiAgICByZW1vdmVkIGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VkIGJ5IGNsZWFuX2RjYWNoZV9yYW5nZSgpIHdpdGggYW4KICAgIGFkZGl0aW9uYWwgcGF0Y2guCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE4ZWMxOWU0YWExYTA0NWRmYmYyYzdjMmUzMzk2MzQ4OGU5MmQ3NTcKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBBcHIgMjggMTg6MTk6MzQgMjAwOCArMDIwMAoKICAgIFBPU1Q6IGZpeCBNYWtlZmlsZXMgZm9yIG1wYzh4eCwgbHdtb24sIGFuZCBuZXR0YSBQT1NUcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgZWVhNWE3NDNhMjE5M2VmMmEwNWI5YmM2ZGM0NDdiYTI0MTQxNmYzNQpBdXRob3I6IE1hcmt1cyBCcnVubmVyIDxzdXBlci5maXJldHdpc3RlckBnb29nbGVtYWlsLmNvbT4KRGF0ZToJTW9uIEFwciAyOCAwODo0Nzo0NyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXh1cCBlYmMgY2xvY2sgaW4gRkRUIGZvciA0MDVHUC9FUAoKICAgIE9uIHBwYzQwNUVQIGFuZCBwcGM0MDVHUCAoYXQgbGVhc3QpIHRoZSBlYmMgaXMgZGlyZWN0bHkgYXR0YWNoZWQgdG8gdGhlIHBsYgogICAgYW5kIG5vdCB0byB0aGUgb3BiLiBUaGlzIHBhdGNoIHdpbGwgdHJ5IHRvIGZpeHVwIC9wbGIvZWJjIGlmIC9wbGIvb3BiL2ViYwogICAgZG9lc24ndCBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgQnJ1bm5lciA8c3VwZXIuZmlyZXR3aXN0ZXJAZ21haWwuY29tPgoKY29tbWl0IDJlZjc1MDNhNTkzYzc3YTgwYzJhMDU0MDExOTcwMjI3YzRiNjI3NzQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDA3OjU3OjE3IDIwMDggKzAyMDAKCiAgICBORTIwMDA6IEZpeCByZWdyZXNzc2lvbiBpbnRyb2R1Y2VkIGJ5IGU3MTAxODVhYWU5MCBvbiBub24gQVg4ODc5NgoKICAgIE1vdmUgbm9uLWlubGllZCBmdW5jdGlvbnMgaW50byBzcGVjaWZpYyBkcml2ZXJzIGZpbGUKICAgIFNldCBnZXRfcHJvbSBhcyB3ZWFrCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA0MGNiOTBlZTJiOTdkYjFmNjk3ZTFiNTRmMTlhNTQ4ZmZjOTZkNzFiCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTc6MDQ6MTkgMjAwOCArMDIwMAoKICAgIG5ldDogbWFrZSBBUlAgdGltZW91dCBjb25maWd1cmFibGUKCiAgICBDdXJyZW50bHkgdGhlIHRpbWVvdXQgd2FpdGluZyBmb3IgYW4gQVJQIHJlcGx5IGlzIGhhcmQgc2V0IHRvIDUgc2Vjb25kcy4KICAgIE9uIGkuTVgzMUFEUyBkdWUgdG8gYSBoYXJkd2FyZSAic3RyYW5nZW5lc3MiIHVwIHRvIGZvdXIgZmlyc3QgSVAgcGFja2V0cwogICAgdG8gdGhlIGJvYXJkcyBnZXQgbG9zdCwgd2hpY2ggdHlwaWNhbGx5IGFyZSBBUlAgcmVwbGllcy4gQnkgY29uZmlndXJpbmcKICAgIHRoZSB0aW1lb3V0IHRvIGEgbG93ZXIgdmFsdWUgd2Ugc2lnbmlmaWNhbnRseSBpbXByb3ZlIHRoZSBmaXJzdCBuZXR3b3JrCiAgICB0cmFuc2ZlciB0aW1lIG9uIHRoaXMgYm9hcmQuIFRoZSB0aW1lb3V0IGlzIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsCiAgICBsYXRlciBpbnRlcm5hbGx5IGl0IGlzIGNvbnZlcnRlZCB0byBkZWNpc2Vjb25kcywgYmVjYXVzZSBpdCBoYXMgdG8gYmUKICAgIGNvbnZlcnRlZCB0byBoYXJkd2FyZSB0aWNrcywgYW5kIENGR19IWiByYW5nZXMgZnJvbSA5MDAgdG8gMjcwMDAwMDAgb24KICAgIGRpZmZlcmVudCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAxM2UwYjhmN2NhOWQyOTI2N2JmMDFkN2EwMWU1MjFhMDUxN2FkY2UxCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTM6MzY6MTggMjAwOCArMDIwMAoKICAgIG1pbm9yIGNzODkwMCBkcml2ZXIgY2xlYW4gdXAKCiAgICBSZW1vdmUgYSByZWR1bmRhbnQgcmVnaXN0ZXIgZGVmaW5pdGlvbiwgY2xlYW4gdXAgc29tZSBjb2Rpbmcgc3R5bGUKICAgIHZpb2xhdGlvbnMuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA3MDdmYTkxN2NjYTI0YzBmMjI3NzZmNDhhYzRhNmZhNWU1MTg5YjEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAyMjowMTowNCAyMDA4ICswMjAwCgogICAgamZmczJfMXBhc3MuYzogZml4IGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgd2FybmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmFlZTAwZjVlNmExY2YyOWQ4ZmU4ZmRjOWI3MjUyZmJkMzExMTVkOQpBdXRob3I6IFNhc2NoYSBMYXVlIDxTYXNjaGEuTGF1ZUBnbXguYml6PgpEYXRlOglUdWUgQXByIDEgMTA6MTA6MTggMjAwOCArMDIwMAoKICAgIGx3bW9uNTogdXBkYXRlIGRzUElDIFBPU1Qgc3BlemlmaWNhdGlvbgoKICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbHdtb241IGJvYXJkIGRzUElDIFBPU1QgZ290IGNoYW5nZWQuCiAgICBBbHNvIGFkZCBkZWZpbmVzIGZvciB0aGUgdGVtcGVyYXR1cmVzICBhbmQgdm9sdGFnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KCmNvbW1pdCAzZTQ2MTVhYjdmZjM4NzgxYTVkZDgwZDBmNDliOWFmNTViNGZlMGI3CkF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+CkRhdGU6CVR1ZSBBcHIgMSAxNToxMzowMyAyMDA4ICswMjAwCgogICAgRml4IHdhdGNoZG9nIFBPU1QgZm9yIGx3bW9uNQoKICAgIElmIHRoZSBoYXJkd2FyZSB3YXRjaGRvZyBkZXRlY3RzIGEgdm9sdGFnZSBlcnJvciwgdGhlIHdhdGNoZG9nIHNldHMKICAgIEdQSU82MiB0byBsb3cuIFRoZSB3YXRjaGRvZyBQT1NUIGhhcyB0byBkZXRlY3QgdGhpcyBsb3cgbGV2ZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPGxlZ2xhczBAbGVncGMxODAubGVnLmxpZWJoZXJyLmk+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRkNTc0OGJjZDY2OWY0NmFlYjY2ODZjMWIzNDEzMjM4NDM3MzhjY2MKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDozNzoxNCAyMDA4ICswMjAwCgogICAgcnRsODE2OTogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgogICAgRml4IG11bHRpcGxlIGNvbXBpbGVyIHdhcm5pbmdzIHJlbGF0ZWQgdG8gYXJndW1lbnQgdHlwZSBtaXNtYXRjaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA0MTNiZjU4NjI2NmY4NmM2YmRiYzZjNmQxNDBmNjdhMTVhZjRjNGYxCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CU1vbiBBcHIgMjggMTQ6MzY6MDYgMjAwOCArMDIwMAoKICAgIElERTogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgogICAgVGhlIElERSBkcml2ZXIgY2FuIHVzZSAzMi1iaXQgYWRkcmVzc2VzIGluIExCQSBtb2RlLCBpbiB3aGljaCBjYXNlIGl0CiAgICBzcGl0cyBtdWx0aXBsZSB3YXJuaW5ncyBkdXJpbmcgY29tcGlsYXRpb24uIEZpeCB0aGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgoKY29tbWl0IGRiOTA4NGRlMjhjNDZhYzgxYzhmNjgxNzIyY2IwZDc0MTFiZTRkN2YKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDozNTo1NyAyMDA4ICswMjAwCgogICAgTGlua1N0YXRpb246IGZpeCBjb21waWxlciB3YXJuaW5nLCBhZGQgYSBtYWludGFpbmVyCgogICAgb3V0Xzggd2FudHMgYSBwb2ludGVyIHRvIGFuIHVuc2lnbmVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gQWRkIGEKICAgIG1haW50YWluZXIgZm9yIExpbmtzdGF0aW9uIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCBjNzFhYmJhM2NiNjdiMDYzZjc4OWYxN2FiZjZjNzQ0NzcyN2MwY2Q1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxNDo1NToxMiAyMDA4ICswMjAwCgogICAgY21kX25hbmQuYzogZml4ICJkaWZmZXIgaW4gc2lnbmVkbmVzcyIgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjJjMjg4YTM1MzQxYWQwMmFjMDNiMTU2M2Q3ODY3NjNjOWM4ZjE1OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBcHIgMjggMTI6NDg6NDcgMjAwOCArMDIwMAoKICAgIHBjbmV0LmM6IGZpeCBhIG1lcmdlIGlzc3VlCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0Y2E3OWY0NzdlYmQyNWE2ODcyZTYxOTZkODBlMmY1ZWZmNDQxMzc2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMjowODoxOCAyMDA4ICswMjAwCgogICAgTkFORDogZml4IHNvbWUgc3RyaWN0LWFsaWFzaW5nIGNvbXBpbGVyIHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1Y2QwMTMwZWNjNzlkNmRjZGUxYjFhYzI1M2FiYzQ1N2NhOGMzMTE1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDExOjM3OjE0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxlIHdhcm5pbmcgb2YgaGN1NCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1Mzc5Y2QxNWRkNmM3NGFjNTE0OTliY2UzNDU1YmY2ZTBjZGJlOWYxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMTozMToyMyAyMDA4ICswMjAwCgogICAgTVBDODMyM0VSREI6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnbWFjX3JlYWRfZnJvbV9lZXByb20nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3NjAyZWQ1MGEyZjBlZjNkYzhkN2RhOTNmMTE2ZGU1MDI4OGY1YjU5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDAwOjI1OjMyIDIwMDggKzAyMDAKCiAgICBteDMxYWRzOiBmaXggbG9hZGFkZHIgZW52aXJvbm1lbnQgdmFyaWFibGUgZGVmaW5lCgogICAgQXJpdGhtZXRpYyBleHByZXNzaW9ucyBkbyBub3QgZ2V0IGV2YWx1YXRlZCB1bmRlciBzdHJpbmdpZmljYXRpb24uIFJlbW92ZQogICAgZGVmYXVsdCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGFkZCBESENQIGNvbW1hbmQgc3VwcG9ydC4gVGhhbmtzIHRvIEZlbGl4CiAgICBSYWRlbnNreSBmb3IgcmVwb3J0aW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAxNDRlZWM3NzdhYzA3YmNiMTJiZDM4MjQ1YTVhMjg5ZjY5NGE3Zjk4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyOCAxMDo1NToyNCAyMDA4ICswMjAwCgogICAga2F0bWFpOiBmaXggc2VjdGlvbiBvdmVybGFwIHByb2JsZW0KCiAgICBTaW5jZSB3ZSBkaWRuJ3Qgd2FudCB0byByZW1vdmUgZmVhdHVyZXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgd2UKICAgIGRlY2lkZWQgdG8gaW5jcmVhc2UgdGhlIFUtQm9vdCBpbWFnZSBzaXplIChhZGQgb25lIGZsYXNoIHNlY3RvcikuCgogICAgQWxzbyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IGRlZmluaXRpb24gdG8gbWFrZSBpdAogICAgaW5kZXBlbmRlbnQgb2Ygc3VjaCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk0MWQ2OTZkMjU2MjRlM2NjNjVlYmY5MjQxOTk1NDFhY2Y1MmQ3NGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXByIDI4IDEwOjU1OjI0IDIwMDggKzAyMDAKCiAgICBrYXRtYWk6IGZpeCBzZWN0aW9uIG92ZXJsYXAgcHJvYmxlbQoKICAgIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcyBmcm9tIHRoZSBjb25maWd1cmF0aW9uLCB3ZQogICAgZGVjaWRlZCB0byBpbmNyZWFzZSB0aGUgVS1Cb290IGltYWdlIHNpemUgKGFkZCBvbmUgZmxhc2ggc2VjdG9yKS4KCiAgICBBbHNvIGNoYW5nZWQgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgZGVmaW5pdGlvbiB0byBtYWtlIGl0CiAgICBpbmRlcGVuZGVudCBvZiBzdWNoIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDNjNmNkMzlmOTE4NDE0M2ZkOGM1Mzc4NzJiM2Q0YjJlMDNmMTQ2NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVNhdCBBcHIgMjYgMTE6NDQ6NDQgMjAwOCAtMDUwMAoKICAgIHBvc3Q6IEZpeCBidWlsZGluZyB3aXRoIE89CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZDc1MzFjMWU5ZDU2YjllNWUwNmQyYzBlMDJiNzk4ZGFiNzJmNzBjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNiAwMTo1NTowMCAyMDA4ICswMjAwCgogICAgUHJlcGFyZSB2MS4zLjMtcmMxCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOWNmMmVjOTBkOGNlNTJkYTYwYzE2OTM2OTNjNDA0OGNiODEwOTY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAyNiAwMToyNTozOSAyMDA4ICswMjAwCgogICAgcG9zdC9NYWtlZmlsZTogbWFrZSBzdXJlIHRvIHVzZSB0aGUgY29ycmVjdCBmbGFncwoKICAgIEFSRkxBR1Mgd2FzIG5vdCBzZXQsIHdoaWNoIGNhdXNlZCAicHBjXzh4eC1hcjogY3JlYXRpbmcgbGliZ2VucG9zdC5hIgogICAgbWVzc2FnZXMgdG8gYmUgcHJpbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDdlZDQwMTE3MzNlN2RjYThmNjRkMjEyOTFlNDI5NDY2MmY3ZGMzZTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgQXByIDI2IDAwOjM0OjQyIDIwMDggKzAyMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjkyMDRlMTUxNzM4MzRmZjhkMTIzZTM2Mjc5Y2U0OWMzYzZjNzRmYwpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozODoxMiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBFbmFibGUgU1BJIGFuZCBNQzEzNzgzL1JUQyBzdXBwb3J0IGZvciB0aGUgTGl0ZWtpdCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBTUEkgYW5kIE1DMTM3ODMvUlRDIHN1cHBvcnQgZm9yIHRoZSBMaXRla2l0IGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KCmNvbW1pdCBmOTdhYmJmYjQ3ZDllNDA3MzU0ZTE1N2NhZTNmNjM2OWU0NjBjZDM3CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAyNSAwMTowODozMiAyMDA4IC0wNTAwCgogICAgTVBDODU0NERTOiBkZWNvZGUgcGNpZTMgZW5kLXBvaW50IGNvbmZpZ3VyYXRpb24gY29ycmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI5MjE4OGUxNTUyM2MxNjVjNDI2OTQwM2ZkY2QzM2MyNmQ4OTE3NmUKQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgMjUgMDA6NTU6MDkgMjAwOCAtMDUwMAoKICAgIE1QQzg1NDREUzogUmVtb3ZlcyB0aGUgdW5rbm93biBmbGFzaCBtZXNzYWdlIGluZm9ybWF0aW9uCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bmtub3duIGZsYXNoIG1lc3NhZ2UgaW5mb3JtYXRpb246CiAgICAnIyMgVW5rbm93biBGTEFTSCBvbiBCYW5rIDEgLSBTaXplID0gMHhkZWFkYmVlZiA9IC0yODYyNjEyNDggTUInCiAgICBUaGlzIHVua25vd24gZmxhc2ggbWVzc2FnZSBpcyBjYXVzZWQgYnkgUHJvbUpldC4KICAgIFNvbWUgb2YgdGhlIGJvYXJkIHVzZXIgaXMgdW5oYXBweSB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiMjExNTc1NzQwM2JlZWYwYWM2YmMyYzZjM2IyNGYzMTI1NmE3NWQyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEFwciAyNCAxNDowNzozOCAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogYnVtcCBsb2FkYWRkciBvdmVyIGZkdGFkZHIgdG8gMHg1MDAwMDAKCiAgICB0aGlzIHNlZW1zIGFzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4gaHVtYW4gbWVtb3J5LCB0eXBpbmcsCiAgICBhbmQgbGFzdCBidXQgbm90IGxlYXN0LCB0byBhY2NvbW1vZGF0ZSBmb3IgY3VycmVudCBhbmQgZnV0dXJlIGtlcm5lbCBibG9hdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmU1YTcxOTAyNjVhMzRkOTY4NTc4ZmYyNjY1NDljNjBmNmY1NzY1NApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxNSAxMzoxMjoyMyAyMDA4ICswODAwCgogICAgbXBjODN4eDogY2xlYW4gdXAgdGhlIHJlYWRtZSBmb3IgODN4eCBib2FyZHMKCiAgICAxLiBjb3JyZWN0IHRoZSB0eXBvCiAgICAyLiBjb3JyZWN0IHRoZSBtZW1vcnkgbWFwIGZvciA4Mzd4ZXJkYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmNhZTUyYTY4MTllZTlkYWQ1ZDBkOTZjZDdkYWViMjAxMDhkNDVmZgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxNSAxMzoxMToxMSAyMDA4ICswODAwCgogICAgbXBjODN4eDogcmVtb3ZlIHRoZSB1bnVzZWQgQ1BNJ3Mgc3R1ZmYKCiAgICBUaGUgTVBDODN4eCBmYW1pbHkgbmV2ZXIgaGF2ZSBDUE0gYmxvY2ssIHNvIHJlbW92ZSBpdCBmcm9tIDgzeHguCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNjNhZDYzMjVhOGFjMDA5N2E1NGI0MThhMzI4ODkyNmIwNDg0YjE4CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBBcHIgMTggMTY6Mjk6NDAgMjAwOCArMDIwMAoKICAgIGNmaS1mbGFzaDogQWRkIENGR19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgY29uZmlndXJhYmxlIGZsYXNoIGF1dG8gcHJvdGVjdGlvbiBsaXN0IHRoYXQgY2FuIGJlIHVzZWQKICAgIHRvIG1ha2UgVS1Cb290IHByb3RlY3QgZmxhc2ggcmVnaW9ucyBpbiBmbGFzaF9pbml0KCkuCgogICAgVGhlIGlkZWEgaGFzIGJlZW4gZGlzY3Vzc2VkIG9uIHRoZSB1LWJvb3QgbWFpbGluZyBsaXN0IHN0YXJ0aW5nCiAgICBvbiBOb3YgMTh0aCwgMjAwNy4KCiAgICBFdmVuIHRoaXMgcGF0Y2ggYnJpbmdzIGEgbmV3IGZlYXR1cmUgaXQgaXMgdXNlZCBhcyBhIGJ1Z2ZpeCBmb3IgNHh4CiAgICBwbGF0Zm9ybXMgd2hlcmUgZmxhc2hfaW5pdCgpIGRvZXMgbm90IGNvbXBsZXRlbHkgcHJvdGVjdCB0aGUKICAgIG1vbml0b3IncyBmbGFzaCByYW5nZSBpbiBhbGwgc2l0dWF0aW9ucy4KCiAgICBVLUJvb3QgcHJvdGVjdHMgdGhlIGZsYXNoIHJhbmdlIGZyb20gQ0ZHX01PTklUT1JfQkFTRSB0bwogICAgKENGR19NT05JVE9SX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAgLSAxKSBieSBkZWZhdWx0LiBUaGlzIGRvZXMgbm90CiAgICBpbmNsdWRlIHRoZSByZXNldCB2ZWN0b3IgYXQgMHhmZmZmZmZmYy4KCiAgICBFeGFtcGxlOgogICAgI2RlZmluZSBDRkdfRkxBU0hfQVVUT1BST1RFQ1RfTElTVCB7ezB4ZmZmODAwMDAsIDB4ODAwMDB9fQoKICAgIFRoaXMgY29uZmlnIG9wdGlvbiB3aWxsIGF1dG8gcHJvdGVjdCB0aGUgbGFzdCA1MTJrIG9mIGZsYXNoIHRoYXQKICAgIGNvbnRhaW5zIHRoZSBib290bG9hZGVyIG9uIGJvYXJkIGxpa2UgQVBDNDA1IGFuZCBQTUM0MDUuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDBkOTFhZTNhY2I0ZjI5ZDFhMmEzYTc2Njc0NzQ3OGVkNTRlMjg0OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAyNSAxMzo1OTowMyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgZG91YmxlIGRlZmluZXMgaW4gbHdtb241LmgKCiAgICBpbnRyb2R1Y2VkIHdpdGggbGF0ZXN0IGx3bW9uNS9QT1NUIG1lcmdlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc1OTAzNzhmYjljNjg2NzA5NDkyY2ViMTQyODI1Y2QwNTgyNTU5NTYKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDI1IDEzOjU0OjAyIDIwMDggKzAyMDAKCiAgICBVc2Ugd2F0Y2hkb2ctYXdhcmUgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcyAtIHRha2UgdHdvCgogICAgU29tZSBmaWxlcyBkaWRuJ3QgZ2V0IHVwZGF0ZWQgcHJvcGVybHkgd2l0aCB0aGUgIlVzZSB3YXRjaGRvZy1hd2FyZQogICAgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcyIgY29tbWl0LCB0aGlzIGNvbW1pdAogICAgZml4ZXMgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZTA0OGM0MzhlMjBlYzg5YjQ5ZGE1ZjA4NWY4Zjc1NmViYTZlNTg3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBBcHIgMjUgMTI6MDE6MzkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIGJvb3Rjb3VudCBsaW1pdCBoYW5kbGluZyBmb3IgQVBDNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDFkZTZiMjhiZTVkMTA3YWU5MGFkN2E4YTQzNjUzYzQ5OTY2ZThhZmUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDI1IDEyOjEwOjA5IDIwMDggKzAyMDAKCiAgICBVc2Ugd2F0Y2hkb2ctYXdhcmUgZnVuY3Rpb25zIHdoZW4gY2FsY3VsYXRpbmcgaGFzaGVzIG9mIGltYWdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZDAwY2UwOTA0MGQzMTAwZTJjNzk5OGVmNTZkYjYyYzJkMjBkOWVlMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMjUgMTI6NDQ6MDggMjAwOCArMDIwMAoKICAgIFVTQjogZml4IG1vcmUgR0NDIDQuMi54IGFsaWFzaW5nIHdhcm5pbmdzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGFmZjRmODY0NDhmNjU4NjkzMGYwYTNiZTdmYzRiMGRkY2Y0NTA5ODAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI1IDEyOjQxOjUzIDIwMDggKzAyMDAKCiAgICBsaWJfZ2VuZXJpYy9jcmMzMi5jOiBhZGQgbWlzc2luZyAjaW5jbHVkZSA8d2F0Y2hkb2cuaD4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDAzY2NkYmNkNTYwMjYxMGNlYTRiZDBkYjdlNDhlMWVmODgxYTUxZWYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDI1IDExOjUyOjIxIDIwMDggKzAyMDAKCiAgICBsaWJfZ2VuZXJpYy9jcmMzMi5jOiBmaXggY29tcGlsZSBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyNGJmZWRiZDBiZTRkY2FhOTQ4NjE0MDc4MjBkNmE3MGZlYTdlMDNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDIyIDEyOjIwOjMyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFBhc3MgUENJZSByb290LWNvbXBsZXgvZW5kcG9pbnQgY29uZmlndXJhdGlvbiB0byBMaW51eCB2aWEgdGhlIGZkdAoKICAgIFRoZSBQQ0llIHJvb3QtY29tcGxleC9lbmRwb2ludCBzZXR1cCBhcyBjb25maWd1cmVkIHZpYSB0aGUgInBjaWVfbW9kZSIKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgbm93IGdldCBwYXNzZWQgdG8gdGhlIExpbnV4IGtlcm5lbCBieSBzZXR0aW5nCiAgICB0aGUgZGV2aWNlX3R5cGUgcHJvcGVydHkgb2YgdGhlIFBDSWUgZGV2aWNlIHRyZWUgbm9kZS4gRm9yIG5vcm1hbCByb290LQogICAgY29tcGxleCBjb25maWd1cmF0aW9uIGl0IHdpbGwga2VlcCBpdHMgZGVmYXVsdHMgdmFsdWUgb2YgInBjaSIgYW5kIGZvcgogICAgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBpdCB3aWxsIGdldCBjaGFuZ2VkIHRvICJwY2ktZW5kcG9pbnQiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYjA2MTViZjYwMGQyY2FmNWFhMjk1OGY0N2Y1YmEzNjRjNTJkNWU3CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDEwOjMwOjUzIDIwMDggKzAyMDAKCiAgICBsd21vbjU6IHdhdGNoZG9nIFBPU1QgZml4CgogICAgVXNlIHRoZSBHUFQwX01BU0t4IHJlZ2lzdGVycyBhcyB0aGUgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHdhdGNoLWRvZwogICAgdGltZXIgUE9TVCB0ZXN0IGluc3RlYWQgb2YgR1BUMF9DT01QeC4gVGhlIGxhdHRlcgogICAgKEdQVDBfQ09NUDEuLkdQVDBfQ09NUDUpIGFyZSB1c2VkIGZvciB0aGUgbG9nLWJ1ZmZlciBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA3OGU0ODgyOTg4MjRiYzE1MGI1ZjNlYmY3OTU4Y2Q3MWZhMmFmMWI5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxODoxMDoxNCAyMDA4IC0wNTAwCgogICAgbGliX3BwYzogUmV2ZXJ0ICJNYWtlIE1QQzgzeHggb25lIHN0ZXAgY2xvc2VyIHRvIGZ1bGwgcmVsb2NhdGlvbi4iCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCA3MDQzMWU4YTczOTNiNmI3OTNmNzc5NTdmOTViOTk5ZmM5YTI2OWI4IHdoaWNoIGhhcwogICAgcHJvdmVuIHByb2JsZW1hdGljIGdldHRpbmcgcmlnaHQgZnJvbSB0aGUgc3RhcnQgYXQgbGVhc3Qgb24gODN4eCBhbmQKICAgIDR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE5OTcxNWI4ZWJmYzUwMGYzZjQwZTAxYjM2YjY0ZDQ3MzkzODQ0M2QKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAxNDo1MDowMSAyMDA4ICswMjAwCgogICAgUmVhbGluaW5nIHNvbWUgaGVhZGVyIGRlZmluaXRpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDRhY2JjNmM3Zjk5M2NhZTQwOWM0MjQ2MTU0MTVhM2U3NjgyMGYxM2QKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgQXByIDI0IDA3OjU3OjE2IDIwMDggKzAyMDAKCiAgICBORTIwMDA6IGNvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiNGFmZjFmZmFmNzEyMDAzMmM2NTMzNTdjMDA3ZmFhMTRmNzRkMjlkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAyMyAwMDoxMTo0NyAyMDA4ICswOTAwCgogICAgcWVtdS1taXBzLmg6IEFkZCBDRkkgc3VwcG9ydAoKICAgIENPTkZJR19FTlZfT1ZFUldSSVRFIGlzIGFsc28gYWRkZWQuCgogICAgVGhpcyBwYXRjaCBpcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgNGExZjExYjQ1YTgyOTA4ZTViMGRmNjAyZDcwMzA4MjQxM2E2YjdlZApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBBcHIgMjIgMjI6NDc6MjcgMjAwOCArMDkwMAoKICAgIGRvYy9SRUFETUUubWlwczogQWRkIE1JUFMgbm90ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDIxNWIwMWJiYThiYzY2MmQzNWY3MmIwODQ3MDBiMTkyZDM2N2RmYjQKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgQXByIDIyIDEyOjI3OjU2IDIwMDggKzAyMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgY2FsY3VsYXRpbmcgaGFzaGVzIHdpdGggd2F0Y2hkb2cgdHJpZ2dlcmluZwoKICAgIEltcGxlbWVudCB3YXRjaG9kZy1hd2FyZSB2YXJpYW50cyBvZiBoYXNoIGNhbGN1bGF0aW9uIGZ1bmN0aW9uczoKICAgIC0gY3JjMzJfd2QoKQogICAgLSBtZDVfd2QoKQogICAgLSBzaGExX2NzdW1fd2QoKQogICAgVGhlIGFib3ZlIGZ1bmN0aW9ucyBjYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiBjaHVua3MsCiAgICB0cmlnZ2VyaW5nIHRoZSB3YXRjaGRvZyBhZnRlciBwcm9jZXNzaW5nIGVhY2ggY2h1bmsuIFRoZSBjaHVuayBzaXplCiAgICBpcyBnaXZlbiBhcyBhIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgODg3NWUzYWJhYjk4NmRmOTMwMTY3Y2U1YzFhYzRmOTVkY2FjYzgxYwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEFwciAyMyAxMTowMjoxMiAyMDA4ICswOTAwCgogICAgcWVtdS1taXBzOiBDbGVhbnVwIHdoaXRlc3BhY2UsIGluZGVudGF0aW9uLCBldGMuCgogICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgogICAgVGhpcyBwYXRjaCB3YXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgYnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQuCiAgICBUaGVuIEkgcmUtY3JlYXRlZCBmcm9tIHNjcmF0Y2gsIGFuZCBjaGFuZ2VkIG1vcmUgbGluZXMgdGhhbiB0aGUgb3JpZ2luYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMzg2NTYzMTk3ZTNhNTBiMGU5N2FkOWFhZTg3ZjU3ZDlhYWI5MDlhYgpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgpEYXRlOglXZWQgT2N0IDEwIDIzOjAyOjA5IDIwMDcgKzAzMDAKCiAgICBGaXhlZCBwY25ldCBpb19iYXNlCgogICAgQnVzIGFuZCBwaHlzIGFkZHJlc3MgYXJlIG5vdCBhbHdheXMgdGhlIHNhbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCAxMWVhMjZmZDFjYjYzYzkxNDAzZmUwNGE2ZWVhOTc1Y2Q0MTg2MDNmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAyNCAyMzo0NDoyNiAyMDA4ICswMjAwCgogICAgZHJpdmVycy9uZXQvcGNuZXQuYzogQ29kaW5nIFN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTllZjdiODQ1NzhiN2NhZmFkZmQ3ODQ4OGMyZmQyYWFjOTNmNjM2CkF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+CkRhdGU6CVdlZCBPY3QgMTAgMjM6MDQ6MjMgMjAwNyArMDMwMAoKICAgIEFkZGVkIEFtNzlDOTcwQSBjaGlwIGlkIHRvIHBjbmV0CgogICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Cgpjb21taXQgMTdjOWRlNmJiMzNmNjc2ZWI3NzZkY2JmYzQ2ZmMxYjE0YzM4NzFhNQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozNTowMyAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBGaXggYXJjaGl0ZWN0dXJlIG51bWJlcnMgZm9yIEFEUyBhbmQgTGl0ZWtpdCBib2FyZHMKCiAgICBDb3JyZWN0IHRoZSBMaW51eCBhcmNoaXRlY3R1cmUgbnVtYmVyIGZvciBpLk1YMzEgTGl0ZWtpdCBhbmQgQURTIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgZTdhZTg0ZDZjNzI4ODc5MGU4ODYzOWY1N2NiNjBkYWY4OWMxMTM2OQpBdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KRGF0ZToJU3VuIEFwciAyMCAxMDozNjozNiAyMDA4ICswMjAwCgogICAgaS5NWDMxOiBVc2Ugc3ltYm9saWMgbmFtZXMgZm9yIExpdGVraXQgbWVtYmFzZXMuCgogICAgVXNlIHN5bWJvbGljIG5hbWVzIGluc3RlYWQgb2YgaGFyZCBjb2RlZCBhZGRyZXNzZXMgZm9yIExpdGVraXQgbWVtYmFzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgoKY29tbWl0IDJlZjFkOWI2MDMwZDAyZjU3NmIxYmNkOWZlYzk0OGU2MDI1MjIwMTIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXByIDE5IDE3OjU5OjIwIDIwMDggKzAyMDAKCiAgICBGaXggc2hvd19ib290X3Byb2dyZXNzIHByb3RvdHlwZQoKICAgIGluIGNvbW1pdCBmYWQ2MzQwNzEgIm1ha2Ugc2hvd19ib290X3Byb2dyZXNzICgpIHdlYWsuIgogICAgc2hvd19ib290X3Byb2dyZXNzIGlzIHN1cHBvc2VkIHRvIGJlIGRlY2xhcmVkIGFzIHdlYWsgYnV0IGRlY2xhcmVkIGFzCiAgICBpbmxpbmUgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGVkYmVkMjQ3YTE0ZDcwYjk0OTU4MDEwZjczNjYyMTIxMjI4NWRlOTEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDE4IDEyOjM5OjIzIDIwMDggKzAyMDAKCiAgICBNZW1vcnkgZm9vdHByaW50IG9wdGltaXphdGlvbnMKCiAgICBBcyBzdWdnZXN0ZWQgYnkgV29sZmdhbmcgRGVuazoKICAgIC0gaW1hZ2UgcHJpbnRpbmcgZnVuY3Rpb25zOgogICAgICAtIHJlbW92ZSB3cmFwcGVycwogICAgICAtIHJlbW92ZSBpbmRlbnRhdGlvbiBwcmVmaXggZnJvbSBmdW5jdGlvbnMnIHNpZ25hdHVyZXMKICAgIC0gbWVyZ2UgZ2V0ZW52X3ZlcmlmeSBhbmQgZ2V0ZW52X2F1dG9zdGFydCBpbnRvIG9uZSBwYXJhbWV0cml6ZWQgZnVuY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBhMGI2MDZmYWFlYzRhZmIzZjc1MGIwOWFhNGRmMWU0MGEzOWRjYjgKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMTUgMTM6MzM6MTEgMjAwOCArMDIwMAoKICAgIE1YMzFBRFMgZW52aXJvbm1lbnQgdmFyaWFibGUgdXBkYXRlLCBzcGkgYW5kIHJ0YyBzdXBwb3J0CgogICAgVXBkYXRlIE1YMzFBRFMgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBiZXR0ZXIgbWF0Y2ggdGhlIGZsYXNoIGxheW91dCBhbmQKICAgIHRoZSBtZW1vcnkgbWFwLCBzdXBwb3J0IFNQSSBhbmQgUlRDLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAwMjJmMTIxNjM1OTViOWE1NTM4MGM2ZDc3YzMxMTliOTNkNmE5YTRiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEFwciAyMSAwOToyODozNiAyMDA4IC0wNTAwCgogICAgODV4eDogUm91bmQgdXAgZnJlcXVlbmN5IGNhbGN1bGF0aW9ucyB0byBnZXQgcmVhc29uYWJsZSBvdXRwdXQKCiAgICBlZy4gYmVjYXVzZSBvZiByb3VuZGluZyBlcnJvciB3ZSBjYW4gZ2V0IDc5OU1oeiBpbnN0ZWFkIG9mIDgwME1oei4KCiAgICBJbnRyb2R1Y2VkIERJVl9ST1VORF9VUCBhbmQgcm91bmR1cCB0YWtlbiBmcm9tIGxpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZWphbiBNaW5pYyA8bWluaWNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg3NmI4Zjk3ODk4MjIxNmFiNGEyMmRjZDllZmRkZmNkOWIwZTA0ZTYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgQXByIDIzIDE2OjU4OjA0IDIwMDggLTA1MDAKCiAgICBmc2xfcGNpOiBPbmx5IG1vZGlmeSByZWdpc3RlcnMgaWYgd2UgaGF2ZSB0aGVtCgogICAgcG1lX21zZ19kZXQgZXhpc3RzIG9ubHkgb24gUENJZSBjb250cm9sbGVycyBvbmx5IHNldCBpdCBpZiB3ZSBhcmUgYSAiYnJpZGdlIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzZmUzMjMzNDMzN2RlZjE2MGIzMDJhYTlkMTUyZDgwOGJmY2M2OGUKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglXZWQgQXByIDIzIDEwOjU3OjMzIDIwMDggKzAyMDAKCiAgICBVU0I6IHJlbW92ZSBhIGNwdSBidWcgd29ya2Fyb3VuZCBmb3IgYW4gdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgZjk1NzU3NmNiNTNlNmNmYWI0MTI3MDljZmM4ZGIxYWZkMzlkMjFjMwpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMjMgMTA6NTM6MjMgMjAwOCArMDIwMAoKICAgIFVTQjogZml4IHRob3NlIHBlc2t5IGFsaWFzaW5nIHdhcm5pbmdzIGlzc3VlZCBieSBnY2MtNC4yCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDg5Y2RhYjc4OGYzNzE2YjMzNWZlZmI2MGI4MzZlYmNmOTc1YWNlYWIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBNYXIgMzEgMTE6MDI6MDEgMjAwOCAtMDQwMAoKICAgIGNyYzMyOiB1c2UgdWludDMyX3QgcmF0aGVyIHRoYW4gdW5zaWduZWQgbG9uZwoKICAgIFRoZSBlbnZjcmMuYyBkb2VzIHNpemVvZih1bnNpZ25lZCBsb25nKSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBjcmMsIGJ1dAogICAgdGhpcyBpcyBkb25lIHdpdGggdGhlIGJ1aWxkIHRvb2xjaGFpbiBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQgdG9vbAogICAgY2hhaW4sIHNvIGlmIHRoZSBidWlsZCBpcyBhIDY0Yml0IHN5c3RlbSBidXQgdGhlIHRhcmdldCBpcyAzMmJpdHMsCiAgICB0aGUgc2l6ZSB3aWxsIG9idmlvdXNseSBiZSB3cm9uZy4gVGhpcyBjb252ZXJ0cyBhbGwgdW5zaWduZWQgbG9uZwogICAgc3R1ZmYgcmVsYXRlZCB0byBjcmMzMiB0byB1aW50MzJfdCB0eXBlcy4gQ29tcGlsZSB0ZXN0ZWQgb25seTogb3V0cHV0CiAgICBvZiAuL3Rvb2xzL2VudmNyYyB3aGVuIHJ1biBvbiBhIDMyYml0IGJ1aWxkIHN5c3RlbSBtYXRjaGVzIHRoYXQgb2YgYQogICAgNjRiaXQgYnVpbGQgc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDgwYzQwYjc2NWIzNjQyZGRiOWYzMzkyYjc4OTg3MTVhYWI0NGEyOWMKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgTWFyIDI2IDA5OjUzOjI5IDIwMDggKzAxMDAKCiAgICBBUk06IERhdmluY2k6IEZpeCBETTY0NHggdGltZXIgb3ZlcmZsb3cgaGFuZGxpbmcgYW5kIGNsZWFudXAKCiAgICBGaXggQVJNIGJhc2VkIERhVmluY2kgRE02NDR4IHRpbWVyIG92ZXJmbG93IGhhbmRsaW5nIGFuZCBjbGVhbnVwIHRpbWVyIGNvZGUuCgogICAgQ2hhbmdlczoKCiAgICAtIFJlbW92ZSAqX21hc2tlZCgpIGZ1bmN0aW9ucyBhcyBub3RlZCBieSBXb2xmZ2FuZwoKICAgIC0gQWRhcHQgcmVnaXN0ZXIgbmFtaW5nIHRvIHJlY2VudCBUSSBzcGVjIChzcHJ1ZTI2LCBNYXJjaCAyMDA3KQoKICAgIC0gRml4IHJlc2V0X3RpbWVyKCkgaGFuZGxpbmcKCiAgICAtIEFzIHJlcG9ydGVkIGJ5IFBpZXRlciBbMV0gdGhlIG92ZXJmbG93IGZpeCBpbnRyb2R1Y2VkIGEgZGVsYXkgb2YgZmFjdG9yIDE2IChlLmcgMiBzZWNvbmRzIGJlY2FtZSAzMikuIFdoaWxlIHRoZSBvdmVyZmxvdyBmaXggaXMgYmFzaWNhbGx5IG9rYXksIGl0IG1pc3NlZCB0byBkaXZpZGUgdWRlbGF5IGJ5IDE2LCB0b28uIEZpeCB0aGlzLgoKICAgIFsxXSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5ib290LWxvYWRlcnMudS1ib290LzM4MTc5CgogICAgLSBSZW1vdmUgc29mdHdhcmUgZGl2aXNpb24gb2YgdGltZXIgY291bnQgdmFsdWUgKERJVih4KSBtYWNybykgYW5kIGRvIGl0IGluIGhhcmR3YXJlIChUSU1fQ0xLX0RJVikuCgogICAgTWFueSB0aGFua3MgdG8gVHJveSBLaXNreSA8dHJveS5raXNreUBib3VuZGFyeWRldmljZXMuY29tPiBhbmQgUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4gZm9yIHRoZSBoaW50cyAmIHRlc3RpbmchCgogICAgUGF0Y2ggaXMgY29tcGlsZSB0ZXN0ZWQgd2l0aCBkYXZpbmNpX2R2ZXZtICYgc29uYXRhICYgc2NobW9vZ2llIGNvbmZpZ3VyYXRpb24gYW5kIHRlc3RlZCBieSBQaWV0ZXIgb24gRGFWaW5jaSBFVk0gaGFyZHdhcmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4KCmNvbW1pdCBhNmU2ZmM2MTBlMzlkZWM0MWI3OTY4MDQxM2Q0ZWQzODE0NWJkM2M4CkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIEFwciA5IDE2OjA5OjQxIDIwMDggKzAyMDAKCiAgICBBZGRlZCB3YXRjaGRvZyB0cmlnZ2VyaW5nIGNhbGxzIGluIHRoZSAibXRlc3QiIHRlc3QgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBkMzJhODc0YjliNGMxZTk0OWVlMzhiZTc3OTBmNmJmNmQ2MTQzNDUxCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglTdW4gQXByIDYgMTk6MTk6MTQgMjAwOCArMDIwMAoKICAgIGx3bW9uNSB3YXRjaGRvZzogbGltaXQgdHJpZ2dlciByYXRlCgogICAgTGltaXQgdGhlIHJhdGUgb2YgaC93IHdhdGNoLWRvZyB0cmlnZ2VyaW5nIG9uIHRoZSBMV01PTjUgYm9hcmQgYnkKICAgIHRoZSBDT05GSUdfV0RfTUFYX1JBVEUgdmFsdWUuCgogICAgTm90ZSB0aGF0IGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIHdoaWNoIHVzZWQgbWljcm9zZWNvbmRzCiAgICBpbnN0ZWFkIG9mIHRpY2tzIGRpcyBub3Qgd29yay4gVGhlIHByb2JsZW0gd2FzIHRoYXQgd2UgdXNlZAogICAgdXNlYzJ0aWNrcygpIHRvIGNvbnZlcnQgbWljcm9zZWNvbmRzIGludG8gdGlja3MuIHVzZWMydGlja3MoKSB1c2VzCiAgICBnZXRfdGJjbGsoKSwgd2hpY2ggaW4gdHVybiBjYWxscyBnZXRfc3lzX2luZm8oKS4gSXQgdHVybnMgb3V0IHRoYXQKICAgIHRoaXMgZnVuY3Rpb24gZG9lcyBhIGxvdCBvZiBwcm9sb25nZWQgb3BlcmF0aW9ucyAobGlrZSBkaXZpc2lvbnMpCiAgICB3aGljaCB0YWtlIHRvbyBtdWNoIHRpbWUgc28gd2UgZG8gbm90IHRyaWdnZXIgdGhlIHdhdGNoZG9nIGluIHRpbWUsCiAgICBhbmQgaXQgcmVzZXRzIHRoZSBzeXN0ZW0uCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDJkMmI5OTRhMzBiYjEwMDc3NGRjNzQ3YWU5ODY1YjdmOTUyODVhODgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NTE6MzcgMjAwOCArMDIwMAoKICAgIFBPU1Q6IG1vdmUgQ09ORklHX1BPU1QgdG8gTWFrZWZpbGVzCgogICAgSW50cm9kdWNlIHRoZSBuZXcgbG9naWNhbCBvcHRpb24gQ09ORklHX0hBU19QT1NUIHdoaWNoIGlzIHNldCB3aGVuIHRoZQogICAgcGxhdGZvcm0gaGFzIENPTkZJR19QT1NUIHNldC4gVXNlIENPTkZJR19IQVNfUE9TVCBpbiB0aGUgcG9zdC8gTWFrZWZpbGVzCiAgICB0byBkZXRlcm1pbmUgc2hvdWxkIHRoZSBQT1NUIGxpYnMgYmUgY29tcGlsZWQgZm9yIHRoZSBzZWxlY3RlZCB0YXJnZXQKICAgIHBsYXRmb3JtLCBvciBub3QuCgogICAgVG8gYXZvaWQgYnJlYWtpbmcgdS1ib290IGxpbmtpbmcgcHJvY2VzcywgdGhlIGVtcHR5IHBvc3QvbGlicG9zdC5hIGZpbGUgaXMKICAgIGNyZWF0ZWQgZm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSBQT1NUcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBhNTFlOTI0OGUyZDI3ZTBhMDJlZjFlNzQwYzU3NmNlOTBhMzllZTEKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NDk6MzQgMjAwOCArMDIwMAoKICAgIFBPU1Q6IHByZXBhcmF0aW9ucyBmb3IgbW92aW5nIENPTkZJR19QT1NUIHRvIE1ha2VmaWxlcwoKICAgIFJlbW92ZSBDT05GSUdfUE9TVCBpZmRlZnMgZnJvbSB0aGUgcG9zdC8gc291cmNlIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWQ0MGQ0NDMwZDllYmM4NDM0YzZmMDc5ODU5NDgzNmUxZWZhN2ExZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyMiAxNDoxNDoyMCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggQ2FueW9ubGFuZHMgYW5kIEdsYWNpZXIgZGVmYXVsdCBlbnZpcm9ubWVudCBmb3IgZmR0IHVzYWdlCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgQ2FueW9ubGFuZHMgYW5kIEdsYWNpZXIgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBiZXR0ZXIKICAgIGZpdCB0byB0aGUgYXJjaC9wb3dlcnBjIGRldmljZS10cmVlIGtlcm5lbHMuIFRoZSB2YXJpYWJsZXMgZGVhbGluZyB3aXRoCiAgICBhcmNoL3BwYyBib290aW5nIGFyZSByZW1vdmVkLCBzaW5jZSB0aGVzZSBib2FyZHMgYXJlIHN1cHBvcnRlZCBvbmx5IGluCiAgICBhcmNoL3Bvd2VycGMuIEdsYWNpZXIgdXNlcyB0aGUgc2FtZSBjb25maWcgZmlsZSBhcyBDYW55b25sYW5kcy4KCiAgICBBbHNvLCB0aGUgR2xhY2llciBub3cgdXNlcyBub24tRlBVIHJvb3RwYXRoLCBzaW5jZSA0NjBHVCBoYXMgbm8gRlBVLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNzg5Y2I0YTRjMGMxZGVmZjgyMDUzNTM5Y2ZlMjlhOWM2ZTIzZjhiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDIyIDE0OjA2OjQyIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFNtYWxsIGNvZGluZyBzdHlsZSBjbGVhbnVwIGZvciB0aGUgbGF0ZXN0IGVzZCBwYXRjaGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDc5OTQxZDYzYmMwM2FlZDhjNDhkNzYwMmYxODIxN2NjMjAwZWU5MzEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxODowMTowNyAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQ1BVIHN0cmFwcGluZyBmb3IgUE1DNDQwIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdGVtcG9yYXJ5ICd0ZXN0JyBzdHJhcHBpbmcgb3B0aW9uCiAgICBvZiB0aGUgc2JlIGNvbW1hbmQuIFRoZSAnNjY3JyBzdHJhcHBpbmcgb3B0aW9uIG5vdyB1c2VzCiAgICBhIFBMQi9QQ0kgZGl2aWRlciBvZiAzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGYwMGNmMzE5M2E2NjM1MzU1YjEyMWU5MGRlYmIyZjU0ZTc3N2U3ZGEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxNDo0MjoyMSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIEFQQzQwNSBzdHJhdGFmbGFzaCBkcml2ZXIKCiAgICBUaGUgQVBDNDA1IGJvYXJkIHN1cHBvcnQgaGFzIGJlZW4gbWlncmF0ZWQgdG8gdXNlIHRoZSBjb21tb24KICAgIENGSSBmbGFzaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMWM2ODY2NzZhODY0NzNiYmQ5MjE1MWYwNTQ0ZTEwOTQxM2Y2ZWQwNgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQyOjE3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBUEM0MDUgY29uZmlndXJhdGlvbgoKICAgIC0gZW5hYmxlIGVzZCdzIGF1dG9fdXBkYXRlIG1lY2hhbmlzbQogICAgLSBzdXBwb3J0IGFsdGVybmF0aXZlIGZsYXNoIGxheW91dCBvbiByZXYuIDEuOCBib2FyZHMKICAgIC0gdXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIC0gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCiAgICAtIGNvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMGI5ODcyNTE1YTUyMWJmNzg2NmRjMjRiODVkZGNlNzA4ZTYwZDcwMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQyOjExIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBUEM0MDUgYm9hcmQgc3VwcG9ydAoKICAgIC0gZW5hYmxlIGVzZCdzIGF1dG9fdXBkYXRlIG1lY2hhbmlzbQogICAgLSBmaXggTENEIHN1cHBvcnQgb24gbGF0ZXN0IGhhcmR3YXJlIHJldmlzaW9uICh1c2VzIG90aGVyIExDRCBjb250cm9sbGVyKQogICAgLSBzdXBwb3J0IGFsdGVybmF0aXZlIGZsYXNoIGxheW91dCBvbiByZXYuIDEuOCBib2FyZHMKICAgIC0gY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4Mzk3NWQwMmUyMjVlMjMxOTYwNzg0OTcyZTc4MjBhOGIzMDM3NTZiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBBcHIgMjEgMTQ6NDI6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogdXBkYXRlIGVzZCdzIGNvbW1vbiBhdXRvX3VwZGF0ZSBjb2RlIGZvciA0MDUgYm9hcmRzCgogICAgLSBDb2Rpbmcgc3R5bGUgY2xlYW51cCAobG9uZyBsaW5lcykKICAgIC0gaW1wcm92ZSBoYW5kbGluZyBvZiBwcm90ZWN0ZWQgZmxhc2ggcmVnaW9ucwogICAgLSByZW1vdmUgZGVhZCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYjkyMzNmZTVkNTljYjI1ZDk3NTA3MTYxNmJkMTAzNWQ2ZjRjMjI4NQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gQXByIDIxIDE0OjQxOjU5IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBlc2QncyBjb21tb24gTENEIGNvZGUgZm9yIDQwNSBib2FyZHMKCiAgICAtIENvZGluZyBzdHlsZSBjbGVhbnVwIChsb25nIGxpbmVzKQogICAgLSBBZGQgczFkMTM1MDUgc3VwcG9ydAogICAgLSBNYWtlIHNvbWUgZnVuY3Rpb25zIHJldHVybiBhIHJlc3VsdCBjb2RlIGluc3RlYWQgb2Ygdm9pZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRlYTY4MTg5NDI0YzNmMTI0MjQyN2E4MTQ2YTM4NjFiZjA5MzE3M2MKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxMTozNjo1NSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgRlBHQSBpbWFnZSBmb3IgQVBDNDA1IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDJhMDViMTUyOTI0YWNmY2VjM2IwMzc2OTMzMjllNTE3ZTZkMzU3OGYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJTW9uIEFwciAyMSAxMTozNjowOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgYm9vdGxvZ28gZm9yIEFQQzQwNSBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4ZGVhZmRjNmFkMzY4MzY4Y2YwM2I1OGNhYjRiZDM5ZjQ1ZDY0YjVjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXByIDE4IDE2OjQxOjMxIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBkY2FjaGVfZW5hYmxlKCkgZm9yIDQ0MAoKICAgIGRjYWNoZV9lbmFibGUoKSB3YXMgbWlzc2luZyBmb3IgNDQwIGFuZCB0aGUgcGF0Y2gKICAgIDAxN2U5Yjc5MjVmNzQ4NzhkMGU5NDc1Mzg4Y2NhOWJkYTVlZjk0ODIgWyJhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmCiAgICAiXSBiZWhhdmlvciB1c2VzIHRoaXMgZnVuY3Rpb24uCgogICAgTm90ZTogQ3VycmVudGx5IHRoZSBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgbGlrZQogICAgZC9pY2FjaGVfZGlzYWJsZS9lbmFibGUoKSBhcmUgTk9QJ3Mgb24gNDQwLiBUaGlzIG1heSBiZSBjaGFuZ2VkIGluIHRoZQogICAgZnV0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDllMGQxNzdhMDc0OTYxNGIzMTZlYzg0N2ZiNjIzZjA5YzgyYzA3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBBcHIgMjEgMTE6MTk6MDQgMjAwOCArMDIwMAoKICAgIHZpZGVvOiBBZGQgbWlzc2luZyBmcmVlIGZvciBsb2dvIG1lbW9yeQoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0d28gbWlzc2luZyBmcmVlKClzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDg0YzAxZDNhMDVhZTNhY2E1ZjdjMGMxM2EzMWNhNzJiYTExOTlhNDIKQXV0aG9yOiBUcm95IEtpc2t5IDx0cm95Lmtpc2t5QGJvdW5kYXJ5ZGV2aWNlcy5jb20+CkRhdGU6CU1vbiBTZXAgMjQgMTY6NDE6NDMgMjAwNyAtMDcwMAoKICAgIFBBVENIIC0gRml4IG9vYiBkYXRhIGNvcGllZCBpbnRvIHN1cHBsaWVkIGJ1ZmZlcgoKICAgIFRoaXMgcGF0Y2ggY29ycmVjdGx5IHNldHMgdGhlIG9vYmF2YWlsIHZhcmlhYmxlCiAgICBhbmQgZml4ZXMgYSBidWcgd2hlcmUgdGhlIG9vYiBkYXRhIHdhcyBub3QgdmFsaWQgd2hlbgogICAgdGhlcmUgd2hlcmUgbXVsdGlwbGUgZ3JvdXBzIGluIG9vYmZyZWUuCgogICAgRmlyc3Qgc2VnbWVudCBmaXhlcyBhIHR5cG8KICAgIFNlY29uZCBzZWdtZW50IGZpeGVzIGEgYnVnIHdoZXJlIG9vYiBkYXRhIG1heSBiZSBjb3BpZWQgaW5jb3JyZWN0bHkuCiAgICBUaGlyZCBzZWdtZW50IGFkZHMgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIGV4aXRpbmcgZHVlIHRvIHdyaXRlIHByb3RlY3QuCiAgICBGb3J0aCBzZWdtZW50IGZpeGVzIGEgYnVnIHdoZXJlIG9vYmF2YWlsIG1heSBiZSBzZXQgaW5jb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHJveSBLaXNreSA8dHJveS5raXNreUBib3VuZGFyeWRldmljZXMuY29tPgoKY29tbWl0IGUxZDA5NjgwZjY0YjQ1MmFkZGU4OWVkOWZlMjhhNzdjNTZiZWRjOWEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEFwciAxOCAxNzoyNDozMiAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBGaXggc3lzX2dldF9pbmZvKCkgZm9yIDQwNUdQKHIpCgogICAgVGhpcyBwYXRjaCBhc3NpZ25zIHRoZSBjb3JyZWN0IEVCQyBjbG9jayBmb3IgNDA1R1AocikgQ1BVcwogICAgdG8gUFBDNHh4X1NZU19JTkZPIHN0cnVjdHVyZS4gV2l0aG91dCB0aGlzIHBhdGNoIFUtQm9vdAogICAgdXNlcyBhbiB1bmluaXRpYWxpemVkIEVCQyBjbG9jayBpbiBpdHMgc3RhcnR1cCBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRjNzc0NmQ4NmQyYTNkZmUwMWFiOWE3MGNiNDI3ZjkyYWRjMzAzYzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXByIDIwIDE1OjM5OjM4IDIwMDggLTA3MDAKCiAgICBNYWtlZmlsZTogcmVtb3ZlIG5hbmRfc3BsL1N5c3RlbS5tYXAgd2hlbiBjbGVhbmluZyB1cC4KCmNvbW1pdCBkOWE0MmMwYWNlNGQ0ZjljYjA2MWQ2MmE3MjY1ZDE3ODBmOTA0NDdiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEFwciAyMCAxNTozNTo1MiAyMDA4IC0wNzAwCgogICAgTUFLRUFMTDogc29ydCBlbnRyaWVzIC8gbGlzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwODc4YWYxNjliMTgxODY4YTEwNWI1YzMzZjNhNjQyM2UyYzlmZDYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEFwciAxOCAxMToyOTowMSAyMDA4IC0wNTAwCgogICAgODV4eDogRml4IHNpemUgb2YgY3B1LXJlbGVhc2UtYWRkciBwcm9wZXJ0eQoKICAgIFRoZSBjcHUtcmVsZWFzZS1hZGRyIGlzIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIGEgNjQtYml0IHF1YW5pdHkgcmVnYXJkbGVzcwogICAgaWYgd2UgYXJlIHJ1bm5pbmcgb24gYSAzMi1iaXQgb3IgNjQtYml0IG1hY2hpbmUuCgpjb21taXQgODgzNTNhOTg1MTA5NTYyYTYzOWIyZjhhMGM5MGQ3NzAxMWJmZTM3NApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgNCAxMToxNTo1OCAyMDA4IC0wNTAwCgogICAgRml4IGNhbGN1bGF0aW9uIG9mIEkyQyBjbG9jayBmb3Igc29tZSA4NXh4IGNoaXBzCgogICAgU29tZSA4NXh4IGNoaXBzIHVzZSBDQ0IgYXMgdGhlIGJhc2UgY2xvY2sgZm9yIHRoZSBJMkMuICBTb21lIHVzZSBDQ0IvMiwgYW5kCiAgICBzb21lIHVzZSBDQ0IvMy4gIFRoZXJlIGlzIG5vIHBhdHRlcm4gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKICAgIGNoaXBzIHVzZSB3aGljaCBmcmVxdWVuY3ksIHNvIHRoZSBvbmx5IHdheSB0byBkZXRlcm1pbmUgaXMgdG8gbG9vayB1cCB0aGUKICAgIGFjdHVhbCBTT0MgZGVzaWduYXRpb24gYW5kIHVzZSB0aGUgcmlnaHQgdmFsdWUgZm9yIHRoYXQgU09DLgoKICAgIFVwZGF0ZSBpbW1hcF84NXh4LmggdG8gaW5jbHVkZSB0aGUgR1VUUyBQT1JERVZTUjIgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZTAxNDc3YWVhZjQwOWRkYjk3ZTI2MzNhYWI5Y2Y4YzljNjA2MTJlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAxMTo0NDoyNyAyMDA4IC0wNzAwCgogICAgRml4IGJ1aWxkIGJyZWFrYWdlIGNhc3VlZCBieSBjb21taXQgYzA1NTliZTM3MWIyCgoJQ2hhbmdlIGVudl9nZXRfY2hhciBmcm9tIGEgZ2xvYmFsIGZ1bmN0aW9uIHB0ciB0byBhIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMjY4YTgwNGQ3ZTJmYTA3YjY0MjExZmQyZjlhOTYxNWRiNDUzOWYyMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBcHIgMTggMTA6NTM6NDEgMjAwOCAtMDcwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTJiYWQyMGFkNzRiNzBhZGYzODM5ZGY5YTBhNDdjY2UwMDBhYzNkNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEFwciA4IDE0OjAwOjU3IDIwMDggLTA0MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdS1ib290IGluIHN2biBhbmQgbG9jYWx2ZXJzaW9uLSogZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDIzZmY2ODI3ZGVjZjEyMTQ2MWZiYzU2MjI2MTJmZDdlZmZlMjA3ZQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE3OjA0OjIyIDIwMDggKzAyMDAKCiAgICBNWDMxQURTIG5ldHdvcmsgYW5kIGZsYXNoIHVwZGF0ZXMKCiAgICBUaGlzIHBhdGNoIGFsbG93cyBVLUJvb3QgdG8gdXNlIGJ1ZmZlcmVkIHdyaXRlcyB0byB0aGUgU3BhbnNpb24gTk9SCiAgICBmbGFzaCBpbnN0YWxsZWQgb24gdGhpcyBib2FyZCwgYW5kIGVsaW1pbmF0ZXMgbG9uZyBkZWxheXMgaW4gbmV0d29yawogICAgdHJhbnNmZXJzIGFmdGVyIHRoZSBib2FyZCBzdGFydHVwLgoKICAgIEFsc28gbW9kaWZ5IGZsYXNoIGxheW91dCB0byBlbWJlZCBtYWluIGFuZCByZWR1bmRhbnQgZW52aXJvbm1lbnQKICAgIGJsb2NrcyBpbiB0aGUgVS1Cb290IGltYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBiNWRjOWIzMDRkMjg5ODMxZjI5MTg0M2ZmODhhNDVjYmRmMWE2MjkwCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglNb24gQXByIDE0IDEwOjUzOjEyIDIwMDggKzAyMDAKCiAgICBTdXBwb3J0IGZvciB0aGUgTVgzMUFEUyBldmFsdWF0aW9uIGJvYXJkIGZyb20gRnJlZXNjYWxlCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNWDMxQURTIGV2YWx1YXRpb24gYm9hcmQgZnJvbSBGcmVlc2NhbGUsCiAgICBpbml0aWFsaXphdGlvbiBjb2RlIGlzIGNvcGllZCBmcm9tIFJlZEJvb3Qgc291cmNlcywgYWxzbyBwcm92aWRlZCBieQogICAgRnJlZXNjYWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA0OTllNzgzMWUxYmFhYWM2YmZiOTU5MjEzZjE5NTBjMjE2ZmJjNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXByIDggMTA6MzM6MjkgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIENhbnlvbmxhbmRzIHRvIHN1cHBvcnQgYm9vdGluZyBmcm9tIDJrIHBhZ2UgTkFORCBkZXZpY2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVlMTgyZGNlMDRkNjhjYzk0NDA3YTFiMWZhMDkzMDdmMmJiOTY3MTkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgOCAxMDozMzoyOCAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBBZGp1c3QgQ2FueW9ubGFuZHMgZml4ZWQgRERSMiBzZXR1cCAoTkFORCBib290aW5nKSB0byA1MTJNQiBTT0RJTU0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmU3YzBkYjZiMmE5MDA0Zjk2YzJhMmQ0ZmZmMjg0OWUxOWMyZDgyNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciA4IDEwOjMzOjI3IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBHbGFjaWVyIE5BTkQgYm9vdGluZyB0YXJnZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDZmMzczODM4ZTM4NGE0YzIzZDEzNTgxYjFkZmE1YWNiNjZiNTgxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEFwciA4IDEwOjMxOjAwIDIwMDggKzAyMDAKCiAgICBuYW5kX3NwbDogVXBkYXRlIG5hbmRfc3BsIHRvIHN1cHBvcnQgMmsgcGFnZSBzaXplIE5BTkQgZGV2aWNlcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBib290aW5nIGZyb20gMmsgcGFnZSBzaXplZCBOQU5EIGRldmljZQogICAgKGUuZy4gTWljcm9uIDI5RjJHMDhBQUMpLgoKICAgIFRlc3RlZCBvbiBBTUNDIENhbnlvbmxhbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZTNkY2E1NzdiN2MxYmY1OGJkMmI0ODQ0OWIxOGI3ZTdkY2Q4ZTA0CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgQXByIDE3IDE4OjE4OjAwIDIwMDggKzAyMDAKCiAgICBGaXggY3Jhc2ggb24gc2VxdW9pYSBpbiBwcGNfNHh4X2V0aF9pbml0CgogICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIGluIHBwY180eHhfZXRoX2luaXQgb24gc2VxdW9pYQogICAgd2l0aCBjYWNoZSBlbmFibGVkIChUTEIgUGFyaXR5IGV4ZXB0aW9uKS4gVGhpcyBwYXRjaAogICAgZml4ZXMgdGhlIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGFjY2Y3MzU1NzY3ZGM3ZjZiODVkODhiYjFjNzVjOWQ5NWU4NGJhNWIKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMTcgMTg6MTU6MjcgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IGNyYXNoIG9uIHNlcXVvaWEgd2l0aCBjYWNoZSBlbmFibGVkCgogICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIG9uIHNlcXVvaWEgYm9hcmQgaW4gQ1BVIFBPU1QgaWYKICAgIGNhY2hlIGlzIGVuYWJsZWQgKENPTkZJR180eHhfRENBQ0hFIGRlZmluZWQpLiBUaGUgY2FjaGUKICAgIHdvbid0IGJlIGRpc2FibGVkIGJ5IGNoYW5nZV90bGIgYmVmb3JlIENQVSBQT1NUIGJlY2F1c2UKICAgIHRoZXJlIGlzIGFuIGluc3VmZmljaWVudCBhZHJlc3MgcmFuZ2UgY2hlY2sgc2luY2UKICAgIENGR19NRU1fVE9QX0hJREUgd2FzIGludHJvZHVjZWQuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4CiAgICB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDQzYzUwOTI1NGZhYjM3NWM0OTkzNjQ5OGRhOTQ0NjU4MTE3ZWQwN2MKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUaHUgQXByIDE3IDIzOjM1OjEzIDIwMDggKzA5MDAKCiAgICBVc2UganIgYXMgcmVnaXN0ZXIganVtcCBpbnN0cnVjdGlvbgoKICAgIEN1cnJlbnQgYXNzZW1ibGVyIGNvZGVzIGFyZSBpbmNvbnNpc3RlbnQgaW4gdGhlIHdheSBvZiByZWdpc3RlciBqdW1wCiAgICBpbnN0cnVjdGlvbiB1c2FnZTsgc29tZSB1c2UganIsIHNvbWUgdXNlIGouIE9mIGNvdXJzZSBHTlUgYXMgYWxsb3dzIGJvdGgKICAgIHVzYWdlcywgYnV0IGFzIGNhbiBiZSBleHBlY3RlZCBmcm9tIGBKdW1wIFJlZ2lzdGVyJyB0aGUgbW5lbW9uaWMgYGpyJyBpcwogICAgbW9yZSBpbnR1aXRpdmUgdGhhbiBgaicuIEZvciBleGFtcGxlLCBMaW51eCBkb2Vzbid0IGhhdmUgYGogPHJlZz4nIHVzYWdlCiAgICBhdCBhbGwuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA3Y2U2MzcwOTgyOGQzN2IwODg2NmU1MzczMzlhMTY5YmQwZGIyYmQzCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDE1IDE0OjE1OjMwIDIwMDggKzAyMDAKCiAgICBSVEMgZHJpdmVyIGZvciBNQzEzNzgzCgogICAgTUMxMzc4MyBpcyBhIG11bHRpZnVuY3Rpb24gSVMgd2l0aCBhbiBTUEkgaW50ZXJmYWNlIHRvIHRoZSBob3N0LiBUaGlzCiAgICBkcml2ZXIgaGFuZGxlcyB0aGUgUlRDIGNvbnRyb2xsZXIgaW4gdGhpcyBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCAzODI1NGY0NWIwYjQxMjMzMjcyNmM5MGQzMTg0YWQ0NzQ3OWZjZmZiCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUdWUgQXByIDE1IDE0OjE0OjI1IDIwMDggKzAyMDAKCiAgICBOZXcgaS5NWDMxIFNQSSBkcml2ZXIKCiAgICBUaGlzIGlzIGFuIFNQSSBkcml2ZXIgZm9yIGkuTVggYW5kIE1YQyBiYXNlZCBTb0NzIGZyb20gRnJlZXNjYWxlLiBTbyBmYXIKICAgIG9ubHkgaW1wbGVtZW50ZWQgYW5kIHRlc3RlZCBvbiBpLk1YMzEsIGNhbiB3aXRoIGEgbW9kaWZpZWQgcmVnaXN0ZXIgbGF5b3V0CiAgICBhbmQgZGVmaW5pdGlvbnMgYmUgdXNlZCBmb3IgaS5NWDI3LCBJIHRoaW5rLCBNWEMgQ1BVcyBoYXZlIHNpbWlsYXIgU1BJCiAgICBjb250cm9sbGVycyB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDcwNjQxMjJjMmVlZjkyZjAyYTAzZWYzN2ExYTFjMDdlNzBjZDRlMzgKQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+CkRhdGU6CVR1ZSBBcHIgMTUgMTk6MDk6MTAgMjAwOCArMDIwMAoKICAgIEZpeCBuYW1lIG9mIGkuTVgzMSBib2FyZHMgaW4gY29uZmlnIGZpbGUgaGVhZGVyCgogICAgQ29ycmVjdCB0aGUgbmFtZSBvZiB0aGUgaS5NWDMxIExpdGVraXQgYW5kIHBoeUNPUkUgYm9hcmRzIGluIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Cgpjb21taXQgYTQ5ODY0NTkzZTA4M2E1ZDA3NzlmYjljYTk4ZTVhMGYyMDUzMTgzZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEFwciAxMyAxOTo0MjoxOSAyMDA4IC0wNDAwCgogICAgYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgZ28gYmVoYXZpb3IKCiAgICBTcGxpdCB0aGUgYXJjaC1zcGVjaWZpYyBsb2dpYyBvdXQgb2YgdGhlIGNvbW1vbiBnbyBjb2RlIGFuZCBpbnRvIGEgZGVkaWNhdGVkCiAgICB3ZWFrIGZ1bmN0aW9uIGNhbGxlZCBkb19nb19leGVjKCkgdGhhdCBsaXZlcyBpbiBjcHUgZGlyZWN0b3JpZXMuICBUaGlzIHdpbGwKICAgIG5lZWQgcmV2aWV3IGZyb20gaTM4Ni9uaW9zIHBlb3BsZSB0byBtYWtlIHN1cmUgSSBkaWRuJ3QgYnJlYWsgdGhlbS4KCmNvbW1pdCAwMTdlOWI3OTI1Zjc0ODc4ZDBlOTQ3NTM4OGNjYTliZGE1ZWY5NDgyCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gQXByIDEzIDE5OjQyOjE4IDIwMDggLTA0MDAKCiAgICBhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmIGJlaGF2aW9yCgogICAgQ2hhbmdlIHRoZSBib290ZWxmIHNldHVwIGZ1bmN0aW9uIGludG8gYSBkZWRpY2F0ZWQgd2VhayBmdW5jdGlvbiBjYWxsZWQKICAgIGRvX2Jvb3RlbGZfZXhlYy4gIFRoaXMgd2F5IHBvcnRzIGNhbiBjb250cm9sIHRoZSBiZWhhdmlvciBob3dldmVyIHRoZXkKICAgIGxpa2UgYmVmb3JlL2FmdGVyIGNhbGxpbmcgdGhlIEVMRiBlbnRyeSBwb2ludC4KCmNvbW1pdCBhNGI0NmVkNmIzNTAyMzM1YzNmM2E1ZDY3MmFiZTBiY2I0NGYyMGI3CkF1dGhvcjogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTIgMjA6NTY6MDMgMjAwOCArMDIwMAoKICAgIFJlb3JkZXIgQVJNIGJvYXJkcyBpbiBNYWtlZmlsZQoKICAgIFJlYXJyYW5nZSBBUk0gYm9hcmRzIGluIE1ha2VmaWxlIHNvIHRoYXQgQVJNOTI2RUotUyBib2FyZHMKICAgIGFyZSBubyBsb25nZXIgdW5kZXIgQVJNOTJ4VCBoZWFkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CiAgICBBY2stQnkgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjM2E2MGNiM2JkNjdlMTIwZmM5OWI2YmE4OGQ5Mjk1YzNjMDdmNjg4CkF1dGhvcjogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTIgMjA6Mjk6NDQgMjAwOCArMDIwMAoKICAgIENsZWFuIHVwIGRhdGFmbGFzaCBwYXJ0aXRpb25pbmcKCiAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGJvYXJkIGRlcGVuZGVudCBwYXJ0cyBmcm9tCiAgICAiZHJpdmVycy9tdGQvZGF0YWZsYXNoLmMiLgogICAgRWFjaCBib2FyZCByZWx5aW5nIG9uIHRoaXMsIHdpbGwgaGF2ZSB0aGUgYXBwcm9wcmlhdGUKICAgIGNvZGUgaW4gYSBuZXcgZmlsZSwgInBhcnRpdGlvbi5jIiBpbiB0aGUgYm9hcmQgZGlyZWN0b3J5LgogICAgYm9hcmQgTWFrZWZpbGVzIHVwZGF0ZWQgdG8gdXNlIHRoZSBmaWxlLgoKICAgIFRoZSBkYXRhZmxhc2ggcGFydGl0aW9ucyBhcmUgYWxpZ25lZCBvbiBzZWN0b3IvcGFnZSBib3VuZGFyaWVzLgoKICAgIFRoZSBDT05GSUdfTkVXX0RGX1BBUlRJVElPTiB3YXMgdXNlZCB0byBjcmVhdGUgbmFtZWQgcGFydGl0aW9ucwogICAgVGhpcyBpcyBub3cgdGhlIGRlZmF1bHQgb3BlcmF0aW9uLCBhbmQgdGhlIENPTkZJRyB2YXJpYWJsZSBpcyByZW1vdmVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgoKY29tbWl0IDUxZWNkZTk0NmZlYzUxMWExNjM0NmU0OTgyMDRjYTEwYWQ3MTA4MGQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgQXByIDEyIDE0OjA4OjQ1IDIwMDggKzAyMDAKCiAgICBnaXRpZ25vcmU6IHVkcGF0ZSBzdGdpdCBnZW5lcmF0ZWQgYW5kIC5wYXRjaCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2NmUzOTgxOGU5NWY1MWVlMWMxZGQyMDk0NDA3YTg5Mjk1NDNmYTZkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxOCAwMDoxNTozNiAyMDA4IC0wNzAwCgogICAgR2V0IHJpZCBvZiByZWR1bmRhbnQgY29weSBvZiByZW5hbWVkIGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYzNhYWZkOGNmODE0ZTMzYTc3ZGU4MWMyZjIyYjhjNzcyMjE2YTNjYwpBdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgpEYXRlOglGcmkgQXByIDExIDIxOjIwOjE0IDIwMDggKzAzMDAKCiAgICBGaXggZGVwZW5kZW5jeSBnZW5lcmF0aW9uIGZvciBvbGRlciBnY2MgdmVyc2lvbnMKCiAgICAgV2l0aCBnY2MgMy4zLjMgYXQgbGVhc3QsIGNvbXBpbGF0aW9uIGZhaWxzIHdpdGgKCiAgICBHZW5lcmF0aW5nIGluY2x1ZGUvYXV0b2NvbmYubWsKICAgIGdjYzogY29tcGlsYXRpb24gb2YgaGVhZGVyIGZpbGUgcmVxdWVzdGVkCiAgICBtYWtlOiAqKiogW2luY2x1ZGUvYXV0b2NvbmYubWtdIEVycm9yIDEKCiAgICBzaW5jZSBjb21taXQgMTZmZTc3NzUyZWVlMDk5YjlmYjYxZWQ3MzQ2MGU1MWNjOTRiMzdiYS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCBjYjFjNDg5NjkwNWFiMjJmY2Q5ODJlNmE4YTUzOWYwMDMxOTQyZTcxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEFwciAxMSAxMTowNzo0OSAyMDA4ICswMjAwCgogICAgUmVzdG9yZSB0aGUgYWJpbGl0eSB0byBjb250aW51ZSBib290aW5nIGFmdGVyIGxlZ2FjeSBpbWFnZSBvdmVyd3JpdGUKCiAgICBCZWZvcmUgbmV3IHVJbWFnZSBjb2RlIHdhcyBtZXJnZWQsIGJvb3RtIGNvZGUgYWxsb3dlZCBmb3IgdGhlIGtlcm5lbCBpbWFnZSB0bwogICAgZ2V0IG92ZXJ3cml0dGVuIGR1cmluZyBkZWNvbXByZXNpb24uIG5ldyB1SW1hZ2UgaW50cm9kdWNlZCBhIGNoZWNrIGZvciBpbWFnZQogICAgb3ZlcndyaXRlcyBhbmQgcmVmdXNlZCB0byBib290IHRoZSBpbWFnZSB0aGF0IGdvdCBvdmVyd3JpdHRlbi4gVGhpcyBwYXRjaAogICAgcmVzdG9yZXMgdGhlIG9sZCBiZWhhdmlvci4gSXQgYWxzbyBhZGRzIGEgd2FybmluZyB3aGVuIHRoZSBpbWFnZSBvdmVyd3JpdGVuIGlzCiAgICBhIG11bHRpLWltYWdlIGZpbGUsIGJlY2F1c2UgaW4gc3VjaCBjYXNlIGFjY2Vzc2luZyBjb21wb25lbnRlcyBvdGhlciB0aGFuIHRoZQogICAgZmlyc3Qgb25lIHdpbGwgZmFpbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRlMmIzMjE2ZTZiNGYzYjJmZTkzNzU5YzA1YjE3NTA0ZjlkZmUwMzYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgQXByIDExIDExOjA3OjQzIDIwMDggKzAyMDAKCiAgICBwcGM6IEZpeCBmdGRfYmxvYiB2YXJpYWJsZSBpbml0IHdoZW4gcHJvY2Vzc2luZyByYXcgYmxvYgoKICAgIFNldCBmZHRfYmxvYiB2YXJpYWJsZSBiZWZvcmUgaXRzIHZhbHVlIGlzIHByaW50ZWQgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgM2QzNmJlMDMwMDQzY2Q4NDFhMjU1MWQwMGEzOTUxMzVlMzYzYTY0YgpBdXRob3I6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBBcHIgMTAgMTQ6MzA6MTYgMjAwOCAtMDUwMAoKICAgIFJlbW92ZSBhbGwgdGhlIHNlYXJjaCBwYXRocyBmcm9tIHRoZSAubGRzIGZpbGVzLgoKICAgIFRoZSBjcm9zcyBjb21waWxlciBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSBjb3JyZWN0IGxpYnJhcmllcwogICAgYW5kIHRoZSBsb2dpYyB0byBmaW5kIHRoZSBsaW5raW5nIGxpYnJhcmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDdkNzIxZTM0YWU2YmU3ZDdkYjYzZThkMDYwYTI0NjI3OGJiN2FlNTgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gQXByIDE0IDE1OjQ0OjE2IDIwMDggKzAyMDAKCiAgICBCb290LXJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCiAgICAtIGRvY3VtZW50ICdib290bV9sb3cnIGFuZCAnYm9vdG1fc2l6ZScgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAtIHVwZGF0ZSBpbmFjY3VyYXRlIENGR19CT09UTUFQU1ogZW50cnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGE2ZjBiZDlmMmIxOTcxZTJhNjFhYzBmZDFmYzJjOTZjYjdhNGI2N2EKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgOSAxNzozNDowOCAyMDA4ICswMjAwCgogICAgRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSBhIHR5cG8gaW4gIlRpZGllZCBvdGhlciBjcHUvYXJtOTIwdC9zdGFydC5TIGNvZGUiCgogICAgUmVzdG9yZSBsb2dpYyByZXZlcnRlZCBieSBjb21taXQKCiAgICBjb21taXQgODA3NjdhNmNlYWQ5OTkwZDllNzdlNjJiZTk0Nzg0M2MyYzcyZjQ2OQogICAgQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgogICAgRGF0ZTogICBXZWQgU2VwIDUgMTY6MDQ6NDEgMjAwNyArMDEwMAoKCUNoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKCVJlbW92ZWQgY29kZSB1c2luZyBkZXByZWNhdGVkIGlmZGVmIENPTkZJR19CT09UQklORlVOQwoJVGlkaWVkIG90aGVyIGNwdS9hcm05MjB0L3N0YXJ0LlMgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBlMjVjYjhkM2Y0ZmNjMjY1YTljZGY4ZTlkNTc3YjU5YmRiNjRiYmFmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgQXByIDggMTA6MjQ6MjQgMjAwOCAtMDQwMAoKICAgIFJlbW92ZSBjb25mbGljdGluZyBOQU5EIElECgogICAgVGhlcmUgYXJlIHR3byBOQU5EIGVudHJpZXMgd2l0aCBJRCAweERDIGFuZCB0aGlzIG9idmlvdXNseSBjYXVzZXMgcHJvYmxlbXMuCiAgICBJbiB0aGUga2VybmVsLCB0aGV5IHB1bnRlZCB0aGUgZmlyc3QgZW50cnksIHNvIHdlIHNob3VsZCBkbyB0aGUgc2FtZS4KCiAgICBTZWUgdGhpcyB1cHN0cmVhbSBlLW1haWwgZm9yIG1vcmUgaW5mbzoKICAgIGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL3BpcGVybWFpbC9saW51eC1tdGQvMjAwNy1KdWx5LzAxODc5NS5odG1sCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTg4ZTk0YzM3MDYyMTcwOGQxMzU0N2Q1OGRiYzZlZDNjNTYwMmFhOApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJVHVlIEFwciA4IDE2OjIwOjM1IDIwMDggKzA5MDAKCiAgICBjcHUvbWlwcy9jcHUuYzogRml4IGZsdXNoX2NhY2hlIGJ1ZwoKICAgIENhY2hlIG9wZXJhdGlvbnMgaGF2ZSB0byB0YWtlIGxpbmUgYWRkcmVzcyAoYWRkciksIG5vdCBzdGFydF9hZGRyLgogICAgSSBub3RpY2VkIHRoaXMgYnVnIHdoZW4gZGVidWdnaW5nIHBpbmcgZmFpbHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgOGYyYTY4YTA3YzA1OGZjYTFkNDEzZTU0ZjcxYzJlN2U3OGE3NGVkNApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgQXByIDMgMTQ6Mjk6MDEgMjAwOCArMDIwMAoKICAgIFRRTTUyMDA6IGZpeCBkZWZhdWx0IElERSByZXNldCBsZXZlbAoKICAgIEJlZm9yZSB0aGUgZmlyc3QgY2FsbCBvZiBpZGVfcmVzZXQoKSwgdGhlIGxldmVsIG9mIHRoZSBJREUgcmVzZXQKICAgIHNpZ25hbCBvbiB0aGUgVFFNNTIwMCBpcyBsb3cgKHJlc2V0IGFzc2VydGVkKS4gVGhpcyBwYXRjaCBzZXRzIHRoZQogICAgZGVmYXVsdCB2YWx1ZSB0byBoaWdoIChyZXNldCBub3QgYXNzZXJ0ZWQpLgoKICAgIEN1cnJlbnRseSB0aGlzIHBhdGNoIGZpeGVzIG5vIHJlYWwgcHJvYmxlbSwgYnV0IGl0IGlzIGNsZWFuZXIgdG8KICAgIGFzc2VydCB0aGUgcmVzZXQgc2lnbmFsIG9ubHkgb24gZGVtYW5kLCBhbmQgbm90IHBlcm1hbmVudGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGM2MWUwMzNkNmU4YWJiN2I0MDYwZWUzNjA2MDk2MWUxMzk5ZjYwNzkKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE0OjE4OjQ4IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2OiByZWFsaWduIENPTkZJR19FWFRSQV9FTlZfU0VUVElORwoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IGYzMDg1NzJlMTllYjdmZTYzYWEzZDQxZjIxNGNkZTRjMjNjOTgwMGYKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAzIDE0OjE4OjQ3IDIwMDggKzAyMDAKCiAgICBtZ2NvZ2UsIG1nc3V2OiByZW5hbWUgJ2FkZGNvbicgdG8gJ2FkZGNvbnMnCgogICAgVGhlIGxhdHRlciBuYW1lIHdpdGggMTMgdXNlcnMgaXMgYWxyZWFkeSBlc3RhYmxpc2hlZCwgc28gd2Ugd2lsbCB1c2UKICAgIHRoYXQuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgZTE3NWVhY2M4N2MzYTllNGRhZDA3OTlmZWUwZTk1NzMyNTIwYWZjNwpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgQXByIDMgMTM6Mzc6NTYgMjAwOCArMDIwMAoKICAgIElERTogZml4IGJ1ZyBpbiByZXNldCBzZXF1ZW5jZQoKICAgIEFjY29yZGluZyB0byB0aGUgYXRhIChhdGE1KSBzcGVjaWZpY2F0aW9uIHRoZSBSRVNFVC0gc2lnbmFsCiAgICBzaGFsbCBiZSBhc3NlcnRlZCBmb3IgYXQgbGVhc3QgMjUgdXMuIFdpdGhvdXQgdGhpcyBwYXRjaCwKICAgIHRoZSBSRVNFVC0gc2lnbmFsIGlzIGFzc2VydGVkIG9uIHNvbWUgYm9hcmRzIGZvciBvbmx5IDwgMSB1cwogICAgKGUuIGcuIG9uIHRoZSBUUU01MjAwKS4gVGhpcyBwYXRjaCBhZGRzIGEgZ2VuZXJhbCBkZWxheSBvZgogICAgMjUgdXMgdG8gdGhlIFJFU0VULSBzaWduYWwuCgogICAgV2l0aG91dCB0aGlzIHBhdGNoIGEgUGxhdGludW0gNCBHaUIgQ0YgY2FyZCBpcyBub3QgcmVjb2duaXNlZAogICAgcHJvcGVybHkgb24gYm9hcmRzIHdpdGggYSBUUU01MjAwIChTVEs1Mnh4LCBUQjUyMDApLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDgxM2JlYTk2YTk2MDkxNmM3MmI0YTNhN2RmODQwMTUxNTI5YzI2Y2UKQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KRGF0ZToJVGh1IEFwciAzIDE0OjQzOjExIDIwMDggKzAyMDAKCiAgICBsd21vbjU6IGRpc2FibGUgQ09ORklHX1pFUk9fQk9PVERFTEFZCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KCmNvbW1pdCA1M2VlYzZmMWQyNTkzMmU3NmQ2M2NjYjE0MDgyNzkyYjBiOTZiZjQxCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIEFwciAyIDA4OjAzOjU4IDIwMDggKzAyMDAKCiAgICBkczE3NHg6IEZpeCB3YXJuaW5nIG9uIHJldHVybiBpbiBydGNfZ2V0IGFuZCBydGNfc2V0IGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTI1M2IzOGJmNTBjODUyMjdjMzNjYTBmZWJjODcwZWU0OWQxNTg4ZQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBBcHIgMiAwODowMzo1NyAyMDA4ICswMjAwCgogICAgY21kX2xvZy5jOiBGaXggYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcwoKICAgIEluIGZ1bmN0aW9uICdsb2didWZmX2luaXRfcHRycyc6CiAgICBjbWRfbG9nLmM6Nzk6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA2YzBlOWE4ZjFjYzA5MGZiZmJjNmY4NmI2YjRmZDE3YTE2MjhmM2RmCkF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KRGF0ZToJV2VkIEFwciAyIDExOjA0OjQzIDIwMDggKzA1MzAKCiAgICBSZW1vdmUgZHVwbGljYXRlICN1bmRlZiBTSE9XX0lORk8gaW4gZHJpdmVycy91c2IvdXNiX29oY2kuYwoKICAgIFNpZ25lZC1vZmYtYnk6IGd1cnVyYWphIGhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCA0NzhkNWVjOWFlM2NiY2M2MDQwMjQxZDJkNzNkYmJjNjFmZTliNDlkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIEFwciAxIDE0OjA3OjEwIDIwMDggKzAyMDAKCiAgICBzM2M0NTEwYl9ldGg6IGZpeCAncGFja2VkJyBhdHRyaWJ1dGUgaWdub3JlZCBmb3IgZmllbGRzIG9mIE1BQ0ZyYW1lCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBjMDhmYjNlYTM2ZDE5YjE2NDBiNzkwNjI2NDU4MWU5MTA1NTM0Mzk5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CVR1ZSBBcHIgMTUgMTA6MjQ6MTQgMjAwOCArMDIwMAoKICAgIEFkZGl0aW9uYWwgUENJIElEcyBmb3IgSURFIGFuZCBuZXR3b3JrIGNvbnRyb2xsZXJzCgogICAgVGhlc2UgUENJIElEcyBhcmUgcmVxdWlyZWQgYnkgdGhlIExpbmtzdGF0aW9uIHBsYXRmb3Jtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCBjMDU1OWJlMzcxYjJhNjRiMWE4MTcwODhjMzMwODY4OGUyMTgyZjkzCkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8am9ha2ltLnRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CU1vbiBBcHIgMTQgMjM6MDE6NTAgMjAwOCArMDIwMAoKICAgIENoYW5nZSBlbnZfZ2V0X2NoYXIgZnJvbSBhIGdsb2JhbCBmdW5jdGlvbiBwdHIgdG8gYSBmdW5jdGlvbi4KCiAgICBUaGlzIGF2b2lkcyBhbiBlYXJseSBnbG9iYWwgZGF0YSByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgM2UwZjMzMWMwNWQ3MmYxNDA3MTVjMWU5ZmNhOTkxOTI3ZTQ0ZDQyMgpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIEFwciAyOSAxMjozNTowOCAyMDA4ICswMDAwCgogICAgQ2xlYW4gdXAgc21zYzkxMXggZHJpdmVyCgogICAgUmVwbGFjZSBkaXJlY3QgcmVnaXN0ZXIgYWRkcmVzcyBkZXJlZmVuY2luZyB3aXRoIGFjY2Vzc29yIGZ1bmN0aW9ucy4KICAgIFJlc3RyaWN0IGV4cGxpY2l0bHkgMzItYml0IGJ1cy13aWR0aCwgZXh0ZW5kIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zCiAgICByZXNwZWN0aXZlbHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBkZTFiNjg2Yjc2M2FhOGI4N2E4NmY2NzQ4Y2U5MTY5ZTdmYzBlNGNkCkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglUdWUgQXByIDE1IDAwOjA4OjIwIDIwMDggLTA0MDAKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgc21zYyBuZXR3b3JrIGNvbnRyb2xsZXJzOgogICAgTEFOOTExNQogICAgTEFOOTExNgogICAgTEFOOTExNwogICAgTEFOOTIxNQogICAgTEFOOTIxNgogICAgTEFOOTIxNwoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraTxsZ0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzZGZkNGFhYjkyOWNjY2RkYjYzZDllYTUwOTk2Nzg2MWUxMzMzYjUyCkF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+CkRhdGU6CVR1ZSBBcHIgMSAxNToxMzowMyAyMDA4ICswMjAwCgogICAgRml4IHdhdGNoZG9nIFBPU1QgZm9yIGx3bW9uNQoKICAgIElmIHRoZSBoYXJkd2FyZSB3YXRjaGRvZyBkZXRlY3RzIGEgdm9sdGFnZSBlcnJvciwgdGhlIHdhdGNoZG9nIHNldHMKICAgIEdQSU82MiB0byBsb3cuIFRoZSB3YXRjaGRvZyBQT1NUIGhhcyB0byBkZXRlY3QgdGhpcyBsb3cgbGV2ZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPGxlZ2xhczBAbGVncGMxODAubGVnLmxpZWJoZXJyLmk+Cgpjb21taXQgMjRiNDQ4NDQ4YTkxN2U1MjgwNmY4MjY2MGE1YzlkNDc2MDg4OTRmYgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEFwciAxIDE1OjIyOjExIDIwMDggKzA4MDAKCiAgICBhdGE6IHVwZGF0ZSB0aGUgbGliYXRhLmggZnJvbSBhdGEuaCBvZiBsaW51eCBrZXJuZWwKCiAgICBDdXJyZW50IGxpYmF0YS5oIG9mIHUtYm9vdCBpcyBvdXQgb2Ygc3luYyBmcm9tIGxpbnV4IGtlcm5lbCwKICAgIHRoaXMgcGF0Y2ggbWFrZSBpdCBiZSBjb25zaXN0ZW50IHdpdGggbGludXgga2VybmVsLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgoKY29tbWl0IGY4ZjlkYzk4ODgzZjY2ZjU5ZWIwNjAxZGE2NTgwOGU2YjEzOWM4N2MKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTWFyIDMxIDExOjU5OjI3IDIwMDggLTA1MDAKCiAgICBBbGxvdyB1c2Ugb2YgQVJDSD1wb3dlcnBjIHdoZW4gYnVpbGRpbmcKCiAgICBUaGUgbGludXgga2VybmVsIGlzIG5vdyBtb3N0bHkgQVJDSD1wb3dlcnBjLCBzbyB0byBtYWtlIGxpZmUgZWFzaWVyCiAgICBhbGxvdyB1c2UgdG8gdXNlIEFSQ0g9cG93ZXJwYyBhbmQgY29udmVydCBpdCB0byBBUkNIPXBwYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDhhZjY1N2QyYzZkMWNhNGYyZjc2OTczNTMxMzk0ZDQ1NzhiYTJlZjAKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIE1hciAzMSAxMDo0MDo1NCAyMDA4ICswOTAwCgogICAgQWRkIGFwb2xsb24gYm9hcmQgTUFJTlRBSU5FUlMgZW50cnkKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDc3ZTQ3NWNjMGVkMTgzMjE2MDAxN2QzNjRiZTMyYTBiZTlmZjAyYTkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIE1hciAzMSAxMDo0MDozNiAyMDA4ICswOTAwCgogICAgRml4IE9uZU5BTkQgcmVhZAoKICAgIEl0IHNob3VsZCBhY2Nlc3Mgd2l0aCAxNi1iaXQgaW5zdGVhZCBvZiA4LWJpdAoKICAgIE5vdyBpdCB1c2VzIHRoZSBnZW5lcmljIG1lbWNweSB3aXRoIDgtYml0IGFjY2Vzcy4gSXQgbWVhbnMgaXQgcmVhZHMgd3JvbmcgZGF0YSBmcm9tIE9uZU5BTkQuCgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCBhOWRhMmI0MTA3OWQyMzBkYjNhNTY0MTYyNTMxMTk4M2Y4NWNlMWZiCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBNYXIgMzEgMTA6NDA6MTkgMjAwOCArMDkwMAoKICAgIEZpeCBPbmVOQU5EIGVyYXNlIGNvbW1hbmQKCiAgICBJdCBtaXMtY2FsY3VsYXRlcyB0aGUgYmxvY2sgYWRkcmVzcy4KICAgIEFsc28gZml4IERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSIGluIGVudl9vbmVuYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgNjE1MjVmMmZmYTE1NjY2NWE2NjkwOGZkYTQ3ZGJmMjlkNjVlYTU3OQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgpEYXRlOglNb24gTWFyIDMxIDAxOjMyOjE1IDIwMDggKzAyMDAKCiAgICBTdXBwb3J0IGZvciBMaW5rU3RhdGlvbiAvIEt1cm9Cb3ggSEQgYW5kIEhHIFBQQyBtb2RlbHMKCiAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBwb3J0IGJ5IE1paGFpIEdlb3JnaWFuIChzZWUgbGlua3N0YXRpb24uYyBmb3IKICAgIENvcHlyaWdodCBpbmZvcm1hdGlvbikgYW5kIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgTGlua1N0YXRpb24gLyBLdXJvQm94IEhECiAgICBhbmQgSEcgUFBDIG1vZGVscyBmcm9tIEJ1ZmZhbG8gVGVjaG5vbG9neSwgd2hlcmVieSBIRCBpcyBkZWFjdGl2YXRlZCBhdAogICAgdGhlIG1vbWVudCwgcGVuZGluZyBuZXR3b3JrIGRyaXZlciBmaXhpbmcuCgogICAgTm90aWNlIHRvIHVzZXJzOiB0aGlzIGlzIHByZXR0eSBtdWNoIGEgYmFyZWJvbmUgcG9ydC4gU3VwcG9ydCBmb3IgbmV0d29yawogICAgb24gSEcgbW9kZWxzIGlzIGFscmVhZHkgaW4gdGhlIFUtQm9vdCBtYWlubGluZSwgYnV0IHlvdSBtaWdodCBhbHNvIHdhbnQKICAgIHBhdGNoZXMgdG8gc3dpdGNoIGZhbiAvIHBoeSBtb2RlcyBkZXBlbmRpbmcgb24gdGhlIG5lZ290aWF0ZWQgZXRoZXJuZXQKICAgIHBhcmFtZXRlcnMuIFRoaXMgcGF0Y2ggYWxzbyBkb2Vzbid0IHN1cHBvcnQgY29uc29sZSBzd2l0Y2hpbmcsIGJvb3RpbmcgRU0KICAgIG1vZGUsIEJ1ZmZhbG8gc3BlY2lmaWMgZXh0MiBtYWdpYyBudW1iZXIuIFNvLCBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mCiAgICB0aG9zZSwgeW91IG5lZWQgYWRkaXRpb25hbCBwYXRjaGVzLiBPdGhlcndpc2UgdGhpcyBwYXRjaGUgcHJvdmlkZXMgYSBmdWxseQogICAgZnVuY3Rpb25hbCB1LWJvb3Qgd2l0aCBhIG5ldHdvcmsgY29uc29sZSBvbiB5b3VyIHN5c3RlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMGYzYmE3ZTk3ODNmMzUyMzE4ZjE5N2EzMTQ4ZjZkNWNjM2Q3NWJlYQpBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMDE6MjI6MTMgMjAwOCAtMDUwMAoKICAgIEFkZCBDT05GSUdfTUlJX0lOSVQgc3VwcG9ydCB0byByZWxhdGVkIGJvYXJkcwoKICAgIFJlcGxhY2UgQ09ORklHXzh4eCBhbmQgQ09ORklHX01DRjUzMnggdG8gQ09ORklHX01JSV9JTklUIGluCiAgICBjbWRfaW5pdC5jLiBBZGQgQ09ORklHX01JSV9JTklUIHRvIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMKICAgIHRoYXQgdXNlIG1paV9pbml0KCkgaW4gY21kX2luaXQuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjMzZmNhMjJlNzZmMjBlNGU0NzkzODEwY2E3YTA2YTQ4MDVhNmNmNApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMDE6MTk6MDYgMjAwOCAtMDUwMAoKICAgIFVwZGF0ZSBDT05GSUdfUENJQVVUT19TS0lQX0hPU1RfQlJJREdFIHRvIHJlbGF0ZWQgYm9hcmRzCgogICAgUmVtb3ZlIHRlc3QgZm9yIENPTkZJR19NUEM1MjAwIGluIGRyaXZlcnMvcGNpL3BjaV9hdXRvLmMgYW5kIGRlZmluZQogICAgQ09ORklHX1BDSUFVVE9fU0tJUF9IT1NUX0JSSURHRSBpbiByZWxhdGVkIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOTljY2I0ODgxODFkMDEyMjQ4YzZiZTMwYjIwOTNlOTUwMzE5ZmM1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE1hciAyNyAxMTo0NjozOCAyMDA4IC0wNTAwCgogICAgSW50cm9kdWNlIHBoeXNfc2l6ZV90IGFuZCBtb3ZlIHBoeXNfYWRkcl90IGludG8gYXNtL3R5cGVzLmgKCiAgICBBbHNvIGFkZCBDT05GSUdfUEhZU182NEJJVCBvbiBwb3dlcnBjIHRvIGRlYWwgd2l0aCAzMi1iaXQgcHBjJ3MKICAgIHRoYXQgaGF2ZSBsYXJnZXIgcGh5c2ljYWwgYWRkcmVzc2VzIGxpa2UgNDR4LCA4NXh4LCBhbmQgODZ4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIwYTE0YTQyYTI1ZjcyZTM3OWYzODQ2MGI4YTg0ODQ2Njc1MzY3OTUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBcHIgMiAxNjoxOTowNyAyMDA4IC0wNTAwCgogICAgUmVuYW1lIGluY2x1ZGUvbWQ1LmggdG8gaW5jbHVkZS91LWJvb3QvbWQ1LmgKCiAgICBTb21lIHN5c3RlbXMgaGF2ZSBtZDUuaCBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlLy4gVGhpcyBpc24ndCB0aGUKICAgIGRlc2lyZWQgZmlsZSAod2Ugd2FudCB0aGUgb25lIGluIGluY2x1ZGUvbWQ1LmgpLiBUaGlzIHdpbGwgYXZvaWQgdGhlCiAgICBjb25mbGljdC4gVGhpcyBmaXhlcyB0aGUgaG9zdCB0b29scyBidWlsZGluZyBwcm9ibGVtIGJ5IGNyZWF0aW5nIGEgbmV3CiAgICBkaXJlY3RvcnkgZm9yIFUtQm9vdCBzcGVjaWZpYyBoZWFkZXIgZmlsZXMuCgogICAgW1BhdGNoIGJ5IEFuZHkgRmxlbWluZywgbW9kaWZpZWQgdG8gdXNlIHNlcGFyYXRlIGRpcmVjdG9yeSBieSBXb2xmZ2FuZwogICAgRGVua10KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjI5N2I3YTFlYzg3NDMzZjY2MzIwZDg5ZDk5M2UxYmM3MzhjNjZiOApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxODo1MToxNyAyMDA4ICswODAwCgogICAgZHJpdmVyczogY29kZSBjbGVhbiB1cAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGZmN2NiYTRhMmU1MWM5MDgyN2Y2ZDIxYTBiMjhiNGQ2NzEwOTU5NwpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxODo1MDo0MSAyMDA4ICswODAwCgogICAgZHJpdmVyczogY2xlYW4gdXAgdGhlIGF0YV9waWl4LmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU4ZjdiYTQwNGYxNDA5NjA2OTYyODE1ZWNjOTU1YTA2OTg0YjA4YjMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBNYXIgMjcgMTg6NDk6NTYgMjAwOCArMDgwMAoKICAgIGRvYzogZW5nbGlzaCBwb2xpc2hpbmcgZm9yIFJFQURNRS5zYXRhCgogICAgYWNjb3JkaW5nIHRvIGd2YidzIHN1Z2dlc3Rpb24sIHBvbGlzaGluZyBmb3IgdGhlIGRvYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZXJyeSBWYW4gQmFyZW4gPGdlcmFsZC52YW5iYXJlbkBnZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNlM2Y3NjZhNTI3NGQyMDQ3ODA0NjBlMTg3OTcyM2I1NjUyOTZkMzQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDE4OjUzOjI4IDIwMDggLTA1MDAKCiAgICBGaXggd2FybmluZ3MgaW50cm9kdWNlZCBieSBJMkMgYnVzIHNwZWVkIHNldHRpbmcgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNjNzM1ZTc0MzcxNTBlODYxNWYyNjkzMGM3ODE5ZGI4NTYzNDI3NmQKQXV0aG9yOiBlcmFuIGxpYmVydHkgPGVyYW4ubGliZXJ0eUBnbWFpbC5jb20+CkRhdGU6CVRodSBNYXIgMjcgMDA6NTA6NDkgMjAwOCArMDEwMAoKICAgIEFsdGVyYSBTdHJhdGl4IElJIHN1cHBvcnQKCiAgICBBZGRzIFN1cHBvcnQgZm9yIEFsdGVyYSdzIFN0cmF0aXggSUkuCgogICAgV2l0aGluIHlvdXIgYm9hcmQgc3BlY2lmaWMgaW5pdCBmaWxlIHlvdSB3aWxsIGhhdmUgdG8gY2FsbAoKICAgIDEuIGZwZ2FfaW5pdCAoLyogcmVsb2NhdGVkIGNvZGUgb2Zmc2V0LiB1c3VhbGx5ID0+ICovIGdkLT5yZWxvY19vZmYpOwogICAgMi4gZnBnYV9hZGQgKGZwZ2FfYWx0ZXJhLCAoQWx0ZXJhX2Rlc2MqKSZhbHRlcmFfZGVzYyk7CgogICAgQWx0ZXJhX2Rlc2MqIGNvbnRpbmVzIChmb3IgZXhhbXBsZSk6Cgl7CgkgQWx0ZXJhX1N0cmF0aXhJSSwJLyogcGFydCB0eXBlICovCgkgcGFzc2l2ZV9zZXJpYWwsCS8qIGludGVyZmFjZSB0eXBlICovCgkgMSwJCQkvKiBieXRlcyBvZiBkYXRhIHBhcnQgY2FuIGFjY2VwdCAqLwoJICh2b2lkICopKCZmdW5jcyksCS8qIGludGVyZmFjZSBmdW5jdGlvbiB0YWJsZSAqLwoJIDBMLAkJCS8qIGJhc2UgaW50ZXJmYWNlIGFkZHJlc3MgKi8KCSAwCQkJLyogaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY29va2llICovCgkgfQoKICAgIGZ1bmNzIGlzIHRoZSBpbnRlcmZhY2UuIEl0IGlzIG9mIHR5cGUgYWx0ZXJhX2JvYXJkX3NwZWNpZmljX2Z1bmMuCiAgICBJdCBsb29rcyBsaWtlIHRoaXM6CiAgICBhbHRlcmFfYm9hcmRfc3BlY2lmaWNfZnVuYyBmdW5jID0gewoJcHJlX2ZuLAoJY29uZmlnX2ZuLAoJc3RhdHVzX2ZuLAoJZG9uZV9mbiwKCWNsa19mbiwKCWRhdGFfZm4sCglhYm9ydF9mbiwKCXBvc3RfZm4sCiAgICB9OwoKICAgIHlvdSB3aWxsIGhhdmUgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucywgd2hpY2ggaXMgdXN1YWxseSBiaXQKICAgIGJhbmdpbmcgc29tZSBncGlvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVyYW4gTGliZXJ0eSA8bGliZXJ0eUBleHRyaWNvbS5jb20+Cgpjb21taXQgNWVjZTllYzlmNmNkNTI5NTBhYjg0OGUyZmU0MjJkYWNmMWQzYTMzNQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMTQ6MzI6NTQgMjAwOCAtMDcwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVhZDg2MjE2NmFhMjRkNjJhNjlhYTljNzA4ZjZiMmY1YzBkMjhmYjcKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NDE6MTcgMjAwOCArMDEwMAoKICAgIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQaHl0ZWMgUGh5Y29yZS1pLk1YMzEgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgY2FlYmM5NWJlM2I0MmU1MTQ3YjVmYWM3NjcyYWM0YjI2OTNlZjdlMQpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJV2VkIE1hciAyNiAyMDo0MTowOSAyMDA4ICswMTAwCgogICAgbXgzMSBsaXRla2l0IHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG14MzEgbGl0ZWtpdCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBjZGFjZTA2NjEyMDg3NTRhNTMwMTllYTBkYzdiODAzYTA0MGUwOTM5CkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglXZWQgTWFyIDI2IDIwOjQwOjQ5IDIwMDggKzAxMDAKCiAgICBhZGQgYW4gaTJjIGRyaXZlciBmb3IgbXgzMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBpMmMgZHJpdmVyIGZvciBGcmVlc2NhbGUgaS5NWCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDliNTZmNGYwMzA2ZjM5NDBiMGFhZmQ4MjNlZDZlY2ZjMmQ3NWQ2YzYKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NDA6NDIgMjAwOCArMDEwMAoKICAgIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgN2VjNjg4NjJhMjdjOGY2ZjZkNTY2MjI4ZGU4ZjY3MjRkOTY0YTkzOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMTQ6MTk6MjMgMjAwOCAtMDcwMAoKICAgIEZpeCBjb21waWxlIGVycm9yCgogICAgLi4uYXMgc3VnZ2VzdGVkIGJ5IFBldGVyIFBlYXJzZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTI1MmVkOTUyMDRiZGY1NWJlYzVhOTBlYTY5ODYwYmYyZjc4YzY0MwpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJV2VkIE1hciAyNiAyMDo0MDozNiAyMDA4ICswMTAwCgogICAgU2VwYXJhdGUgb21hcDI0eHggc3BlY2lmaWMgY29kZSBmcm9tIGFybTExMzYKCiAgICBNb3ZlIG9tYXAyNHh4IGNvZGUgdG8gY3B1L2FybTExMzYvb21hcDI0eHgsIHJlbmFtZSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm0xMTM2CiAgICB0byBjcHUvYXJtMTEzNi9vbWFwMjR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgMWYxZDg4ZGQ0MDgxNTMzMmRmMzI5ODJlNzM5ZjJkZGQyZGE2ZmUxYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEphbiAyOSAxODoyMTowNSAyMDA4IC0wNTAwCgogICAgZGlzYWJsZSBjYWNoZXMgYmVmb3JlIGJvb3RpbmcgYW4gYXBwIGZvciBCbGFja2ZpbiBhcHBzCgogICAgSXQgaXNuJ3QgZ2VuZXJhbGx5IHNhdmUgdG8gZXhlY3V0ZSBhcHBsaWNhdGlvbnMgb3V0c2lkZSBvZiBVLUJvb3Qgd2l0aCBjYWNoZXMKICAgIGVuYWJsZWQgZHVlIHRvIHRoZSB3YXkgdGhlIEJsYWNrZmluIHByb2Nlc3NvciBoYW5kbGVzIGNhY2hlcyAocmVxdWlyZXMKICAgIHNvZnR3YXJlIGFzc2lzdGFuY2UpLiAgVGhpcyBwYXRjaCBkaXNhYmxlcyBjYWNoZXMgYmVmb3JlIGJvb3RpbmcgYW4gRUxGIG9yCiAgICBqdXN0IGJvb3RpbmcgcmF3IGNvZGUuICBUaGUgcHJldmlvdXMgZGlzY3Vzc2lvbiBvbiB0aGUgcGF0Y2ggd2FzIHRoYXQgd2UKICAgIHdhbnRlZCB0byB1c2Ugd2Vha3MgaW5zdGVhZCwgYnV0IHRoYXQgcHJvdmVkIHRvIG5vdCBiZSBmZWFzaWJsZSB3aGVuIG11bHRpcGxlCiAgICBzeW1ib2xzIGFyZSBpbnZvbHZlZCwgd2hpY2ggcHV0cyB1cyBiYWNrIGF0IHRoZSBpZmRlZiBzb2x1dGlvbi4gIEkndmUKICAgIG1pbmltaXplZCB0aGUgdWdsaW5lc3MgYnkgbW92aW5nIHRoZSBzZXR1cCBzdGVwIG91dHNpZGUgb2YgdGhlIG1haW4gZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGU2ZGZlZDcwNWVmYTQ0ZWJmMDBkMjFiYjE1ODhjNmNjYzhmM2FkMzIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXByIDEzIDEwOjAzOjU0IDIwMDggLTA3MDAKCiAgICBwcGM6IEdldCByaWQgb2YgdW51c2VkIG1hY2hpbmUgdHlwZSBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWFlZWQ4ZDcxYWNiMzI5MGNmMjQ0NmYzMTZkNmJhNDM3ZTc4ODFjNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBcHIgMTMgMDk6NTk6MjYgMjAwOCAtMDcwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3NzU0ZjMzYzZmYjdhMmMwNTAzODhkMjBiZjM4NDcwMzg1NThiZGNmCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTEgMjAwOCAtMDUwMAoKICAgIExNNzMgYnVnIGZpeCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzIGFuZCBjbGVhbnVwCgogICAgV2hlbiB0aGUgTE03MyB0ZW1wZXJhdHVyZSBzZW5zb3IgbWVhc3VyZXMgYSB0ZW1wZXJhdHVyZSBiZWxvdyAwIEMsIHRoZQogICAgY3VycmVudCBkcml2ZXIgZG9lcyBub3QgcGVyZm9ybSBzaWduIGV4dGVuc2lvbiwgc28gdGhlIHJlc3VsdCByZXR1cm5lZCBpcwogICAgNTEyIEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLCBhbmQgZG9lcyBnZW5lcmFsIGNsZWFudXAKICAgIG9mIHRoZSBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDk2ZWY4MzFmNzEzMjg5YWZiYTE5ZGEwYzhmOTA1ZTk5ZGEyYjIzZTAKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVRodSBBcHIgMyAxMzozNjowMiAyMDA4ICswMjAwCgogICAgY2ZpX2ZsYXNoOiBTdXBwb3J0IGJ1ZmZlcmVkIHdyaXRlcyBvbiBub24tc3RhbmRhcmQgU3BhbnNpb24gTk9SIGZsYXNoCgogICAgU29tZSBOT1IgZmxhc2ggY2hpcCBmcm9tIFNwYW5zaW9uLCBmb3IgZXhhbXBsZSwgdGhlIHMyOXdzLW4gTWlycm9yQml0CiAgICBzZXJpZXMgcmVxdWlyZSBkaWZmZXJlbnQgYWRkcmVzc2VzIGZvciBidWZmZXJlZCB3cml0ZSBjb21tYW5kcy4gRGVmaW5lIGEKICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHN1cHBvcnQgYnVmZmVyZWQgd3JpdGVzIG9uIHRob3NlIGNoaXBzLiBBIG1vcmUKICAgIGVsZWdhbnQgc29sdXRpb24gd291bGQgYmUgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhvc2UgY2hpcHMgYnkgcGFyc2luZwogICAgdGhlaXIgQ0ZJIHJlY29yZHMsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgaW50cm9kdWN0aW9uIG9mIGEgZml4dXAgdGFibGUKICAgIGludG8gdGhlIGNmaV9mbGFzaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDNmOWM1NDJkM2Q2OWIxYTEwYTVlMTkzZTc3OTEzM2EwNDU0ZDFmNDQKQXV0aG9yOiBMZWUgTmlwcGVyIDxsZWUubmlwcGVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMTAgMDk6MzU6MDYgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IFVwZGF0ZSBESU1NIGRhdGEgYnVzIHdpZHRoIHRlc3QgdG8gc3VwcG9ydCA0MC1iaXQgd2lkdGgKCiAgICAzMi1iaXQgd2lkZSBFQ0MgbWVtb3J5IG1vZHVsZXMgcmVwb3J0IDQwLWJpdCB3aWR0aC4KICAgIENoYW5nZWQgdGhlIERJTU0gZGF0YSBidXMgd2lkdGggdGVzdCB0byAnbGVzcyB0aGFuIDY0JyBpbnN0ZWFkIG9mICdlcXVhbCAzMicuCgogICAgU2lnbmVkLW9mZi1ieTogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZmI1YTY4OWQ4MjJjYTYxZTgxNGJkNTIzZmM5MzBhZjMzNTI0MmZhCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDMxIDE3OjA1OjEyIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGJ1ZyBvZiBzZXJkZXMgaW5pdGlhbGl6YXRpb24KCiAgICBDdXJyZW50bHkgdGhlIHNlcmRlcyB3aWxsIG5vdCBiZSBpbml0aWFsaXphdGVkIGR1ZSB0byB0aGUKICAgIHBhcnRpZCdzIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIwMDA3ODQ4MThmMDQzZGI3Y2E2MGUyODQ2YTcyZDA5Nzc2NmI4OTQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMyAxNjoyODoyOSAyMDA4ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSBTQVRBIGNsb2NrIHNldHRpbmcgb2YgODM3eCB0YXJnZXRzCgogICAgQ3VycmVudGx5IHRoZSBTQVRBIGNvbnRyb2xsZXIgY2xvY2sgaXMgY29uZmlndXJlZCBhcyBDU0IgY2xvY2ssCiAgICB1c3VhbGx5IHRoZSBDU0IgY2xvY2sgaXMgNDAwLzMzMy8yNjZNSHouCgogICAgSG93ZXZlciwgVGhlIFNBVEEgSVAgYmxvY2sgaXMgb25seSBndWFyYW50ZWVkIHRvIG9wZXJhdGUgdXAgdG8KICAgIDIwMCBNSHogYXMgc3RhdGVkIGluIHRoZSBIVyBzcGVjLgoKICAgIFRoZSBidWcgaXMgcmVwb3J0ZWQgYnkgSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBTQVRBIGNsb2NrIGFzIGhhbGYgb2YgQ1NCIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhYzRmMzIwYmYwYjU5M2FhMGE3NDFmMmQ2NDlhOGVjZTg4Mzg2NzIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgQXByIDIgMTM6NDE6MjEgMjAwOCArMDIwMAoKICAgIG1wYzgzN3hlcmRiOiBGaXggd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2ZkdF9maXh1cF9kcl91c2InCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTdiM2VjYjU3NWE5MmZhMzRjMTc2NTIyOWRiYzA2ZjJiNjYyZjEzOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBBcHIgOSAwNDoyMDo1NyAyMDA4IC0wNTAwCgogICAgODV4eDogRml4IGRldGVjdGlvbiBvZiBNUCBjcHUgc3BpbiB1cAoKICAgIFdlIHdlcmUgbG9va2luZyBhdCB0aGUgd3JvbmcgbWVtb3J5IG9mZnNldCB0byBkZXRlcm1pbmUgb2YgYSBzZWNvbmRhcnkKICAgIGNwdSBoYWQgYmVlbiBzcHVuIHVwIG9yIG5vdC4gIEFsc28gYWRkZWQgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlCiAgICBhbGwgdGhlIHNlY29uZGFyeSBjcHVzIHdlIGV4cGVjdCBkb24ndCBzcGluIHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjNlMDRiZGMzZjM2MGM2NjgwMWE5MDQ4OTU2ZTYxZTQxYTE2ZWRiYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBBcHIgOCAxMDo0NTo1MCAyMDA4IC0wNTAwCgogICAgODV4eDogVXNlIFNWUl9TT0NfVkVSIGluc3RlYWQgb2YgU1ZSX1ZFUgoKICAgIFRoZSByZWNlbnQgY2hhbmdlIGludHJvZHVjZWQgYnkgJ1VwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCcKICAgIG5vdyByZXF1aXJlcyB0aGF0IHdlIHVzZSBTVlJfU09DX1ZFUiBpbnN0ZWFkIG9mIFNWUl9WRVIgaWYgd2Ugd2FudAogICAgdG8gY29tcGFyZSBhZ2FpbnN0IGEgcGFydGljdWxhciBwcm9jZXNzb3IgaWQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1YjIwNTJlNWY1ZmNjZTVkYmQ0ZDI3NTBhMjljMGU0NWJjZTgwNmU3CkF1dGhvcjogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KRGF0ZToJRnJpIEFwciAxMSAxMDowMDozNSAyMDA4IC0wNDAwCgogICAgcHBjNHh4OiBGaXggcG93ZXIgbWd0IGRlZmluaXRpb25zIGZvciBQUEM0NDAKCiAgICBDb3JyZWN0ZWQgRENSIGFkZHJlc3NlcyBvZiBQUEM0NDBFUCBwb3dlciBtYW5hZ2VtZW50IHJlZ2lzdGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgoKY29tbWl0IDk1MGEzOTI0NjRlNjE2YjQ1OTBiYzQ1MDFiZTQ2ZTJkN2QxNjJkZWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgQXByIDExIDE1OjExOjI2IDIwMDggKzAyMDAKCiAgICBSZXZlcnQgbWVyZ2Ugb2YgZ2l0Oi8vd3d3LmRlbnguZGUvZ2l0L3UtYm9vdC1hcm0sIGNvbW1pdCA2MjQ3OWIxODoKCiAgICBSZXZlcnRpbmcgYmVjYW1lIG5lY2Vzc2FyeSBhZnRlciBpdCB0dXJuZWQgb3V0IHRoYXQgdGhlIHBhdGNoZXMgaW4KICAgIHRoZSB1LWJvb3QtYXJtIHJlcG8gd2VyZSBtb2RpZmllZCwgYW5kIGluIHNvbWUgY2FzZXMgY29ycnVwdGVkLgoKICAgIFRoaXMgcmV2ZXJ0cyB0aGUgZm9sbG93aW5nIGNvbW1pdHM6CgoJMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQoJN2E4MzdiNzMxMDE2NmFlOGZjOGI4ZDY2ZDdlZjAxYjYwYTgwZjlkNgoJYzg4YWUyMDU4MGIyYjAxNDg3YjRjZGNjOGIyYTExM2Y1NTFhZWUzNgoJYTE0N2U1NmYwMzg3MWJiYTRmMDUwNThkNWUwNGNlN2RlYjAxMGIwNAoJZDY2NzRlMGUyYTZhMWYwMzM5NDVmNzg4Mzg1NjYyMTBkM2YyOGM5NQoJOGM4NDYzY2NlNDRkODQ5ZTM3NzQ0NzQ5YjMyZDM4ZTFkZmIxMmU1MAoJYzk4YjQ3YWQyNGIyZDkxZjQxYzA5YTNkNjJkN2Y3MGFkODRmNGI3ZAoJOGJmNjlkODE3ODI2MTkxODc5MzNhNjA1ZjFhOTVlZTFkMDY5NDc4ZAoJOGMxNmNiMGQzYjk3MWY0NmZiZTc3YzA3MjY2NGMwZjJkY2Q0NDcxZAoJYTU3NGE3Mzg1MmE1Mjc3NzkyMzRlNzNlMTdlNzU5N2ZkODEyODg4MgoJMTM3N2I1NTgzYTQ4MDIxZDk4M2UxZmQ1NjVmN2Q0MGM4OWU4NGQ2MwoJMTcwNGRjMjA5MTdiNGY3MWUzNzNlMmM4ODg0OTdlZTY2NmQ0MDM4MAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjRlNTQxZjRjMWI0MTNkZDg0YzdlNDA5ZjVjMmJmMzI4ZGIyYWMxMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAxMSAwNzowMjoyOSAyMDA4ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgS2lsYXVlYSBkZWZjb25maWcgdG8gdXNlIGRldmljZS10cmVlIGJvb3RpbmcgYXMgZGVmYXVsdAoKICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBvbiBLaWxhdWVhL0hhbGVha2FsYS4gTm93CiAgICAibmV0X25mcyIgZm9yIGV4bWFwbGUgdXNlcyB0aGUgZGV2aWNlLXRyZWUgc3R5bGUgYm9vdGluZyBmb3JtZXJseSBrbm93CiAgICBhcyAibmV0X25mc19mZHQiLiBBbHNvIHRoZSBhZGRyZXNzZXMgaW4gUkFNIHdlcmUgY2hhbmdlZCBiZWNhdXNlIG9mIHRoZQogICAgbmV3IGltYWdlIGJvb3Rpbmcgc3VwcG9ydCwgd2hpY2ggY2hlY2sgZm9yIGltYWdlIG92ZXJ3cml0aW5nLiBTbyB0aGUKICAgIGFkZHJlc3NlcyBuZWVkZWQgdG9nZWV0IGFkanVzdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTZmNWRhY2RhMzgxMGIwOTRiOTRiY2NlZmZkM2NlNmM3ZmY5YTI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDkgMTE6NTg6MDIgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGRlZmF1bHQgZW52aXJvbm1lbnQgdG8gd29yayB3aXRoIG5ldyBpbWFnZSBzdXBwb3J0CgogICAgU2luY2UgdGhlIG5ldyBpbWFnZSBzdXBwb3J0IGNoZWNrcyBmb3IgaW1hZ2Ugb3ZlcndyaXRpbmcsIHRoZSBkZWZhdWx0CiAgICBlbnZpcm9ubWVudCBuZWVkcyB0byBnZXQgYWRqdXN0ZWQgdG8gdXNlIGNvcnJlY3QgYWRkcmVzc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZmM2YzdiNjQ3ZGJhN2FiODY3NDk2MTZmMGU5ZTU3NDBkZWVkNDIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDkgMTE6NTQ6MTEgMjAwOCArMDIwMAoKICAgIHBwYzogUmV2ZXJ0IHBhdGNoIDcwNDMxZThhIHRoYXQgdXNlZCBfc3RhcnQgaW5zdGVhZCBvZiBDRkdfTU9OSVRPUl9CQVNFCgogICAgVGhlIHBhdGNoIDcwNDMxZThhNzM5M2I2Yjc5M2Y3Nzk1N2Y5NWI5OTlmYzlhMjY5YjggKE1ha2UgTVBDODN4eCBvbmUgc3RlcAogICAgY2xvc2VyIHRvIGZ1bGwgcmVsb2NhdGlvbi4pIGRvZXNuJ3QgdXNlIENGR19NT05JVE9SX0JBU0UgYW55bW9yZS4gQnV0CiAgICBvbiA0eHggc3lzdGVtcyBfc3RhcnQgY3VycmVudGx5IGNhbm5vdCBiZSB1c2VkIGZvciB0aGlzIGNhbGN1bGF0aW9uLgogICAgU28gcmV2ZXJ0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gZm9yIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjkxMzc0ZjY1ZWFlOGI0MmNhYzMyOWUwNmJhMWM1NDcyODI3OGVmYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMjo0OTo1MiAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogU29ydCBtaWNyb2JsYXplIGJvYXJkcyBpbiBNQUtFQUxMIHNjcmlwdAoKY29tbWl0IDYyMDMyZGViNzIxNGM2ZDliNDM5NjI5N2UyYWFhNTU5YmMyZjg0OTUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6NTg6NDUgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IGNsZWFuIG1pY3JvYmxhemVfY29uZmlnLm1rCgogICAgRkxBR1MgYXJlIGdlbmVyYXRlZCBieSBVLUJPT1QgZ2VuZXJhdG9yLgogICAgQm9hcmQgc3BlY2lmaWMgRkxBR1MgYXJlIGluIGJvYXJkIGRpcmVjdG9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCBjZjVjNjc5Y2EwNGE2YjU0YmY1M2E1NWI4YjljMjkzMzViMzg3Mjg3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQ3OjE5IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiB4dXB2MnAgZml4IGNvbmZpZyBmaWxlIGZvciBzdXBwb3J0aW5nIEZEVAoKY29tbWl0IDE4OGRjMTZiMTg5MTQzNTczYjFlZDkwZTU4NGJmODY2ZDc1Y2RkMTIKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6NTM6MDIgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IG1sNDAxIGZpeCBjb25maWcgZmlsZSBmb3Igc3VwcG9ydGluZyBGRFQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgNGM2YTZmMDJlMjM5MjM2MjYxMzMzNzU5OTk3ZWVhZjg2YjMwYjU0YwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMToyMjo0OCAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogbWw0MDEgLSBhZGQgaWZkZWYgZm9yIEdQSU8KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgYWY3YWUxYTQxMWM2N2VlOWQxN2E2NmQxN2NlNTBiMzc0ZjNkZDRlNwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMjoxMzowMyAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogY2xlYW4gdWFydDE2NTUwIGFuZCB1YXJ0bGl0ZSBoYW5kbGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCAwYjIwZjI1MDg3NzQ0MTQ2MGZiNzlkNzIxOTI5NTRhYmU4NDk4ODM0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDExOjA4OjMxIDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBBZGQgRW1hY2xpdGUgZHJpdmVyIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDg2OGNkZTUzMTBmODgyMzRiNzc0ODc4ZTRmMDZlNzlkZjEwYTg4YjMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTE6MDg6MDEgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IEFkZCBFbWFjIGRyaXZlciB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KCmNvbW1pdCA2Zjk2MWI0ZjQ2MWY2Y2JiODNhNDY3ZDQ2OGEwMmU2MDc4YzJiMzI3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQyOjI5IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBhZGQgRW1hYyBldGhlcm5ldCBkcml2ZXIKCmNvbW1pdCA4OWM1Mzg5MWIxOGNiYWZkMjlhYjg5MzFiNDBlMjdhZDIzMWI2MDg1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDI4IDEyOjQxOjU2IDIwMDggKzAxMDAKCiAgICBtaWNyb2JsYXplOiBhZGQgRW1hY2xpdGUgZXRoZXJuZXQgZHJpdmVyCgpjb21taXQgZTU4NDVlMjEyMjRkYmUyZmU0N2IxMWYxY2RmOTVkZTdmODRiZTdjYgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMTowNDowMSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogTUw0MDEgYW5kIFhVUFYyUCByZW1vdmUgZW1hYyBhbmQgZW1hY2xpdGUgcmVmZXJlbmNlCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IDZiZjNlOTgyYWVmZGIxZGFmOWY1NDYyZDQ4MmM4ZjlkMWNjOTBhNTcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CUZyaSBNYXIgMjggMTA6NTk6MzIgMjAwOCArMDEwMAoKICAgIG1pY3JvYmxhemU6IHJlbW92ZSBvbGQgc2V0dGluZyBmb3IgZW1hYyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Cgpjb21taXQgY2QyYjc1ZWZiOWNjMDM3Yzc0ZWNlZTliMzU4NmY5YmY5ZTFkNGU1NwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAyOCAxMDo1ODoxNSAyMDA4ICswMTAwCgogICAgbWljcm9ibGF6ZTogQ2xlYW4gTWFrZWZpbGUgZnJvbSBhbmNpZW50IGVtYWMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGFiNjhmOTIxZDljNzQxODMwZjcyMWMzZDg3OWMxM2EwYzU1OTcxODMKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MjA6NDMgMjAwOCArMDEwMAoKICAgIFNQQVJDL0xFT04yOiBhZGRlZCBzdXBwb3J0IGZvciBHYWlzbGVyIHNpbXVsYXRvciBHUlNJTS9UU0lNIGZvciBTUEFSQy9MRU9OMiB0YXJnZXRzLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgNmVkOGE0M2ExOWJiMDI3NTUwMWJjMjg2MDA3ZGFhZmE5MjM1NTJjZgpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMzozODo0OCAyMDA4ICswMTAwCgogICAgU1BBUkMvTEVPTjM6IGFkZGVkIHN1cHBvcnQgZm9yIEdSLUNQQ0ktQVgyMDAwIEZQR0EgQVggYm9hcmQuIFRoZSBGUEdBIGlzIGV4Y2hhbmdlYWJsZSBidXQgYSBzdGFuZGFyZCBMRU9OMyBkZXNpZ24gaXMgYXNzdW1lZC4gU2VlIHd3dy5nYWlzbGVyLmNvbSBmb3IgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IDY5NDAzODNkOWVjMWJmZTJmMTNlMzM5ZTZmNzIzZThkMzRhZjJiMTIKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjM6MzQ6NDcgMjAwOCArMDEwMAoKICAgIFNQQVJDL0xFT04zOiBhZGRlZCBzdXBwb3J0IGZvciBBbHRlcmEgTklPUyBEZXZlbG9wbWVudCBraXQgKFNUUkFUSVggSUkgRWRpdGlvbikgd2l0aCBHUkxJQiB0ZW1wbGF0ZSBkZXNpZ24uIFNlZSB3d3cuZ2Fpc2xlci5jb20gZm9yIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCA4MjNlZGQ4YTY2ZWQ1MGFmNWFhYmEwYzc5NTY3ZjY3MDYxZTRkNzlhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDEwOjA2OjUyIDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgR2Fpc2xlciBHUlNJTS9UU0lNMiBTUEFSQy9MRU9OMyBzaW11bGF0b3JuLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgNzFkN2U0YzA0ODllNWVkOGZjNjkzODIyMzZhYWEyYTFlNTEwYzEzNQpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMzoyNjo0OCAyMDA4ICswMTAwCgogICAgU1BBUkMvTEVPTjM6IGFkZGVkIHN1cHBvcnQgZm9yIEdSLVhDM1MtMTUwMCBib2FyZCB3aXRoIEdSTElCIHRlbXBsYXRlIGRlc2lnbi4gU2VlIHd3dy5nYWlzbGVyLmNvbSBmb3IgYm9hcmQgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IGIzMzA5OTBjMmYzNmVlNGE4YmIzMTgzNjBlMWM4YmE5NjUyNjlhYjYKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MDA6MzMgMjAwOCArMDEwMAoKICAgIFNQQVJDOiBBZGRlZCBzdXBwb3J0IGZvciBTUEFSQyBMRU9OMiBTT0MgUHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCAyYTJmYTc5N2U2M2IxZTNjZDRkNTcwMzE4Y2E1ZmJmODcyM2VmNTNhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIzOjAwOjM4IDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogQWRkZWQgQU1CQSBCdXMgUGx1ZyZQbGF5IGluZm9ybWF0aW9uIHByaW50IGNvbW1hbmQgKGFtYmFwcCkuIEl0IGNhbiBwcmludCBhdmFpbGFibGUgY29yZXMgKHR5cGU6IEFIQiBNYXN0ZXIsIEFIQiBTbGF2ZSwgQVBCIFNsYXZlKSwgdGhlaXIgYWRkcmVzcyByYW5nZXMsIElSUSBudW1iZXIgYW5kIHZlcnNpb24uCgogICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgoKY29tbWl0IDFlOWExNjRlMjI5NzY5MzMwMDJjNWU0YjBiNzliMDlmY2VkZTljZDQKQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTE6MjkgMjAwOCArMDEwMAoKICAgIFNQQVJDOiBBZGRlZCBzdXBwb3J0IGZvciBTUEFSQyBMRU9OMyBTT0MgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCBiZjNkOGIzMTE2OTU0NmZjZGRiNDczNzM5MWUxODkzZmIxMmQwMzNhCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDA4OjI5OjI2IDIwMDggKzAxMDAKCiAgICBTUEFSQzogYWRkZWQgU1BBUkMgc3VwcG9ydCBmb3IgbmV3IHVpbWFnZSBpbiBjb21tb24gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgMDBhYjMyYzg1NDA1YTRmZTY1ZmQ0MTI4MjQzMDg2MjEwZmM5MGEyMQpBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjozNjowMyAyMDA4ICswMTAwCgogICAgU1BBUkM6IGFkZGVkIFNQQVJDIGJvYXJkIGluZm9ybWF0aW9uIHRvIHRoZSBjb21tYW5kIGJkaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Cgpjb21taXQgYzJmMDJkYTIxYTNmMzdmMDg3ODU1NGVlYmM3ODVlMDRmZGM0ZTEyOApBdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAwOTo0NzowMCAyMDA4ICswMTAwCgogICAgU1BBUkM6IEFkZGVkIGdlbmVyaWMgc3VwcG9ydCBmb3IgU1BBUkMgYXJjaGl0ZWN0dXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCBlNTRlYzBmMDE2ODAzZTRkOTUyNGZmNzFmNzk3MWJkYTBjNTFiMjg3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXByIDMgMTQ6NTA6MzQgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogRml4IDR4eCBlbmV0IGRyaXZlciB0byBzdXBwb3J0IDQ2MEdUIEVNQUMyKzMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIHRoZSBSR01JSSBzZXR1cCBvZiB0aGUgNDYwR1QuIFRoZSA0NjBHVAogICAgaGFzIDIgUkdNSUkgaW5zdGFuY2VzIGFuZCB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgMm5kIFJHTUlJIGluc3RhbmNlCiAgICBmb3IgdGhlIEVNQUMyKzMgY2hhbm5lbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMyYTU0NWNlMzNiMjZkODAzMzdmODBiNTMzODI4ODM5MjQ5ZmIxYzkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglXZWQgQXByIDIgMDg6MDM6NTYgMjAwOCArMDIwMAoKICAgIE1QQzh4eDogRml4IGxpYmZkdCBzdXBwb3J0IGludHJvZHVjZWQgaW4gY29tbWl0IDc3ZmY3Yjc0CgogICAgZmR0LmM6IEluIGZ1bmN0aW9uICdmdF9jcHVfc2V0dXAnOgogICAgZmR0LmM6MzM6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdkb19maXh1cF9ieV9wcm9wX3UzMicKICAgIGZkdC5jOjM5OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZG9fZml4dXBfYnlfY29tcGF0X3UzMicKICAgIGZkdC5jOjQzOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZmR0X2ZpeHVwX2V0aGVybmV0JwogICAgZmR0LmM6NDU6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdmZHRfZml4dXBfbWVtb3J5JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNGFiZDg0NGQ4ZWIxMDg3MzZlMWNmOGZiZjNkYmY2MWYyZDVmYzExYgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzMSAyMDo0NTo1NiAyMDA4IC0wNTAwCgogICAgRml4IGZkdCBzZXQgY29tbWFuZCB0byBjb25mb3JtIHRvIGR0cyBzcGVjCgogICAgVGhlIGZkdCBzZXQgY29tbWFuZCB3YXMgdHJlYXRpbmcgcHJvcGVydGllcyBzcGVjaWZpZWQgYXMgPDAwPiBhbmQgPDAwMTE+CiAgICBhcyBieXRlIHN0cmVhbXMsIHJhdGhlciB0aGFuIGFzIGFuIGFycmF5IG9mIGNlbGxzLglBcyB3ZSBhbHJlYWR5IGhhdmUKICAgIHN5bnRheCBmb3IgZXhwcmVzc2luZyB0aGUgZGVzaXJlIGZvciBhIHN0cmVhbSBvZiBieXRlcyAoWyB4eCB4eCAuLi5dKSwKICAgIHdlIHNob3VsZCB1c2UgdGhlIDw+IHN5bnRheCB0byBkZXNjcmliZSBhcnJheXMgb2YgY2VsbHMsIHdoaWNoIGFyZSBhbHdheXMKICAgIDMyLWJpdHMgcGVyIGVsZW1lbnQuICBJZiB3ZSBpbWFnaW5lIHRoaXMgbGlrZWx5IChJTUhPKSBzY2VuYXJpbzoKCiAgICA+IGZkdCBzZXQgL2V0aGVybmV0LXBoeUAxIHJlZyA8MT4KCiAgICBXaXRoIHRoZSBvbGQgY29kZSwgdGhpcyB3b3VsZCBjcmVhdGUgYSBiYWQgZmR0LCBzaW5jZSB0aGUgcmVnIGNlbGwgd291bGQgYmUKICAgIG1hZGUgdG8gYmUgb25lIGJ5dGUgaW4gbGVuZ3RoLiAgQnV0IHRoZSBjZWxsIG11c3QgYmUgNCBieXRlcywgc28gdGhpcyB3b3VsZAogICAgYnJlYWsgbXlzdGVyaW91c2x5LgoKICAgIEFsc28sIHRoZSBkdHMgc3BlYyBjYWxscyBmb3IgY29uc3RhbnRzIGluc2lkZSB0aGUgYW5nbGUgYnJhY2tldHMgKDw+KQogICAgdG8gY29uZm9ybSB0byBDIGNvbnN0YW50IHN0YW5kYXJkcyBhcyB0aGV5IHBlcnRhaW4gdG8gYmFzZS4KICAgIFRha2UgdGhpcyBzY2VuYXJpbzoKCiAgICA+IGZkdCBzZXQgL2V0aGVybmV0QGYwMCByZWcgPDB4ZTI1MDAwMFwgMHgxMDAwPgoKICAgIFRoZSBvbGQgZmR0IGNvbW1hbmQgd291bGQgY29tcGxhaW4gdGhhdCBpdCBjb3VsZG4ndCBwYXJzZSB0aGF0LiAgT3IsIGlmIHlvdQogICAgd2FudGVkIHRvIHNwZWNpZnkgdGhhdCBhIGNlcnRhaW4gY2xvY2sgcmFuIGF0IDMzIE1IeiwgeW91J2QgYmUgcmVxdWlyZWQgdG8KICAgIGRvIHRoaXM6CgogICAgPiBmZHQgc2V0IC9teWRldiBjbG9jayA8MWY3OGE0MD4KCiAgICBXaGVyZWFzIHRoZSBuZXcgY29kZSB3aWxsIGFjY2VwdCBkZWNpbWFsIG51bWJlcnMuCgogICAgV2hpbGUgSSB3YXMgaW4gdGhlcmUsIEkgZXh0ZW5kZWQgdGhlIGZkdCBjb21tYW5kIHBhcnNlciB0byBoYW5kbGUgcHJvcGVydHkKICAgIHN0cmluZ3Mgd2hpY2ggYXJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBhcmd1bWVudHM6CgogICAgPiBmZHQgc2V0IC9ldGhlcm5ldEBmMDAgaW50ZXJydXB0cyA8IDMzIDIgMzQgMiAzNiAyID4KICAgID4gZmR0IHAgL2V0aGVybmV0QGYwMAogICAgZXRoZXJuZXRAZjAwIHsKCWludGVycnVwdHMgPSA8MHgyMSAweDIgMHgyMiAweDIgMHgyNCAweDI+OwogICAgfTsKCiAgICBMYXN0bHksIHRoZSBmZHQgcHJpbnQgY29kZSB3YXMgcmVhcnJhbmdlZCBzbGlnaHRseSB0byBwcmludCBhcnJheXMgb2YgY2VsbHMKICAgIGlmIHRoZSBsZW5ndGggb2YgdGhlIHByb3BlcnR5IGlzIGEgbXVsdGlwbGUgb2YgNCBieXRlcywgYW5kIHRvIG5vdCBwcmludAogICAgbGVhZGluZyB6ZXJvcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWMyOTI2YWJkZDdkYjg5Mjk2YThjYzdmMjI0ZGQ5ZDVkNGUzN2E1NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAyIDA4OjM5OjMzIDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENhbnlvbmxhbmRzOiBJbml0IFNBVEEvUENJZSBwb3J0IGNvcnJlY3RseQoKICAgIENhbnlvbmxhbmRzICg0NjBFWCkgc2hhcmVzIHRoZSBmaXJzdCBQQ0llIGludGVyZmFjZSB3aXRoIHRoZSBTb0MgU0FUQQogICAgaW50ZXJmYWNlLiBUaGlzIHVzYWdlIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIGp1bXBlciBKNi4gVGhpcyBwYXRjaAogICAgY29ycmVjdGx5IGNvbmZpZ3VyZXMgdGhlIFNBVEEvUENJZSBQSFkgZm9yIFNBVEEgdXNhZ2Ugd2hlbiB0aGlzIGp1bXBlcgogICAgaXMgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZmUyOTQ2ZjE5ODQ4MTI1NGE2ZWU5NjAwZDc0NTZiODMxNmE0MDgzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxNzozNzo0OSAyMDA4IC0wNTAwCgogICAgcmVtb3ZlIHJlbWFpbmluZyBDT05GSUdfT0ZfSEFTX3tVQk9PVF9FTlYsQkRfVH0gY29kZQoKICAgIGZpbmlzaCBvZmYgd2hhdCBjb21taXQgNDNkZGQ5YzgyMGZlYzQ0ODE2MTg4ZjUzMzQ2YjQ2NGUyMGIzMTQyZCwKICAgICJSZW1vdmUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfSEFTX1VCT09UX0VOViBhbmQgQ09ORklHX09GX0hBU19CRF9UIgogICAgc3RhcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1ODczZjE3MzJiOTJhMjU2OTBlMTUxM2I5MGRmYjBkNjQ0ZjY2OTcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgQXByIDEgMDc6MzA6NTEgMjAwOCArMDIwMAoKICAgIGRhdGFmbGFzaDogTW92ZSBDT05GSUdfSEFTX0RBVEFGTEFTSCB0byBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMmQ5MzRlYTUxZjI3NjUyMmI1MzJmODcwYTgyMGU4NDRmZjQ4MGI1YgpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTU6Mjk6NDUgMjAwOCArMDEwMAoKICAgIEFkZCBWaXRlc3NlIDg2MDEgc3VwcG9ydCB0byBUU0VDIGRyaXZlcgoKICAgIEFkZCBwaHlfaW5mbyBmb3IgVml0ZXNzZSBWU0M4NjAxLgogICAgQWRkIGNvbmZpZyBvcHRpb24sIENGR19WU0M4NjAxX1NLRVdGSVgsIHRvIGVuYWJsZSBSR01JSSBza2V3IHRpbWluZyBjb21wZW5zYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KICAgIFJldmlld2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCAzZWFjNjQwMmE1MDhiMGY2OGEyMWNjOWNiYzJjYzQ5MzQ3ZGUwYzMxCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglNb24gTWFyIDMxIDE0OjI1OjAwIDIwMDggKzAwMDAKCiAgICBTUEFSQzogYWRkZWQgU01DOTExMTEgZHJpdmVyIGluIGFuZCBvdXQgbWFjcm9zIGZvciBMRU9OIHByb2Nlc3NvcnMuCgogICAgVGhpcyBwYXRjaCBtYWtlcyBTUEFSQy9MRU9OIHByb2Nlc3NvcnMgYWJsZSB0byByZWFkIGFuZCB3cml0ZQogICAgdG8gdGhlIFNNQzkxMTExIGNoaXAgdXNpbmcgdGhlIGNoaXAgZXh0ZXJuYWwgSS9PIGJ1cyBvZiB0aGUgbWVtb3J5CiAgICBjb250cm9sbGVyLiBUaGlzIHBhdGNocyBkZWZpbmVzIHRoZSBzdGFuZGFyZCBpbiBhbmQgb3V0IG1hY3JvcwogICAgZXhwZWN0ZWQgYnkgdGhlIFNNQzkxMTEgZHJpdmVyLgoKICAgIFRvIGFjY2VzcyB0aGF0IEkvTyBidXMgb25lIG11c3Qgc2V0IHVwIHRoZSBtZW1vcnkgY29udHJvbGxlcgogICAgKE1DVFJMIG9yIEZUTUNUUkwpIGNvcnJlY3RseS4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1c2VyIHNldHMKICAgIHVwIHRoaXMgY29ycmVjdGx5IHdoZW4gdGhlIG90aGVyIE1DVFJMIHBhcmFtZXRlcnMgYXJlIHNldCB1cC4gSXQKICAgIGNhbiBiZSBzZXQgdXAgZnJvbSB0aGUgYm9hcmQgY29uZmlndXJhdGlvbiBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDNjYTdjNTU4ZWJhMzYzMzI1NTZiYzQ3MGQ0NWUyZjVkNDJiZDBjYTYKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE4OjUyOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgbWFpbnRhaW5lcnNoaXAgaW5mb3JtYXRpb24gZm9yIEFUOTFDQVA5QURLIGFuZCBBVDkxU0FNOTI2MEVLIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgNGUwM2RkZTg0ZGQyYzkxZTMyN2NkYzIzYWUxMTlkNDMyNTU5YTdhMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBNYXIgMzEgMjE6MzE6MDQgMjAwOCArMDIwMAoKICAgIEFUOTFTQU05MjYwRUs6IE1vdmUgQ09ORklHX0NNRF9OQU5EIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwMTc2ZDQzZTc1OWE2ZTAwY2FjYzg1ZWZmMjZmZDYwZjc0YjRmNmI3CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAxODo1MjozMyAyMDA4ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIEFUOTFTQU05MjYwRUsKCiAgICBTdXBwb3J0IGZvciBib290aW5nIGZyb20gaW50ZXJuYWwgRGF0YUZsYXNoLCBleHRlcm5hbCBEYXRhRmxhc2ggY2FyZAogICAgb3IgTkFORCBmbGFzaCBpcyBhdmFpbGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCAxNzYyZjEzYjRhYWI4OGI2ODViMTcyMmYxN2RhZGEyNDc5NDU2MjRiCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIE1hciAzMSAyMToyMDo0OSAyMDA4ICswMjAwCgogICAgQVQ5MVNBTTk6IE1vdmUgQ09ORklHX0hBU19EQVRBRkxBU0ggdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDc2MTcxMjE4OGIzNTM0OTRkZWZiMmI2NDQ0OTFmZjczZDBkYWFhNmYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gTWFyIDMxIDIxOjEyOjE3IDIwMDggKzAyMDAKCiAgICBBVDkxQ0FQOUFESzogTW92ZSBDT05GSUdfQ01EX05BTkQgdG8gTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk4M2MxZGIwNGMxZGQwZjkyZTAyZjA2ZDI5ZjBjNjVhM2Q5YTI2ODcKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDIwOjUyOjMyIDIwMDggKzAxMDAKCiAgICBQb3J0IEFUOTFDQVA5IHRvIHRoZSBuZXcgaGVhZGVycwoKICAgIEFkYXB0IHRoZSBleGlzdGluZyBBVDkxQ0FQOSBjb2RlIHRvIHRoZSBuZXcgaGVhZGVycyBhbmQgQVBJcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDE3N2U4YTVhYzgxYmJjNTMxYTFkNTRhYmRiNDdmMjg2MDI2NmMzYWEKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE5OjUyOjMxIDIwMDggKzAxMDAKCiAgICBGaW5pc2ggaGVhZGVyIGZpbGVzIHJld29ya2luZwoKICAgIFJlcGxhY2UgQVQ5MUNBUDkuaCBmaWxlIHdpdGggc2V2ZXJhbCBzcGxpdHRlZCBoZWFkZXIgZmlsZXMgY29taW5nCiAgICBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCgogICAgVGhpcyBpcyBwYXJ0IDIgb2YgdGhlIHJlcGxhY2VtZW50OiBtb3JlIGhlYWRlciBpbXBvcnRzIGFuZCBlZGl0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDZkMWRiYmJmOWZkZjcyNzM4NDAwMmU1NTNlNjE1YzE1ZDhiOTY3ZjQKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglXZWQgTWFyIDI2IDE5OjUyOjMwIDIwMDggKzAxMDAKCiAgICBJbXBvcnQgc2V2ZXJhbCBoZWFkZXIgZmlsZXMgZnJvbSBMaW51eAoKICAgIFJlcGxhY2UgQVQ5MUNBUDkuaCBmaWxlIHdpdGggc2V2ZXJhbCBzcGxpdHRlZCBoZWFkZXIgZmlsZXMgY29taW5nCiAgICBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCgogICAgVGhpcyBpcyBwYXJ0IDEgb2YgdGhlIHJlcGxhY2VtZW50OiBwcmlzdGluZSBoZWFkZXIgZmlsZXMgaW1wb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgYThhNzhmMmQ5OWRjMWJkMzBkYzM1OTVkYTExODUzOWI1MDZjNjExOApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVdlZCBNYXIgMjYgMjA6NTI6MjggMjAwOCArMDEwMAoKICAgIE1vdmUgYXQ5MWNhcDkgc3BlY2lmaWMgZmlsZXMgdG8gYXQ5MXNhbTkgZGlyZWN0b3J5CgogICAgQVQ5MUNBUDkgYW5kIEFUOTFTQU05IFNvQ3MgYXJlIHZlcnkgY2xvc2UgaGFyZHdhcmUgd2lzZSwgc28gYQogICAgY29tbW9uIGluZnJhc3RydWN0dXJlIGNhbiBiZSB1c2VkLiBMZXQgdGhpcyBpbmZyYXN0cnVjdHVyZSBiZQogICAgbmFtZWQgYWZ0ZXIgdGhlIEFUOTFTQU05IGZhbWlseSwgYW5kIG1vdmUgdGhlIGV4aXN0aW5nIEFUOTFDQVA5CiAgICBmaWxlcyB0byB0aGUgbmV3IHBsYWNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgNjExMDZhNTY1ODcwZmY1MDNmOTJiMjUxYjk0YmQ3YWZlZjg4OWEwNApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVdlZCBNYXIgMjYgMjE6NTI6MjcgMjAwOCArMDEwMAoKICAgIFVzZSB0aW1lcl9pbml0KCkgaW5zdGVhZCBvZiBib2FyZCBzdXBwbGllZCBpbnRlcnJ1cHRfaW5pdCgpCgogICAgVGhlIHRpbWVyIG9uIEFUOTFDQVA5L0FUOTFTQU05IGlzIHN1cHBsaWVkIGJ5IHRoZSBTb0MsIGFuZCBub3QgYnkKICAgIHRoZSBib2FyZCwgc28gdXNlIHRpbWVyX2luaXQoKSBpbnN0ZWFkIG9mIGludGVycnVwdF9pbml0KCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA1NjA0ZTIxNzhjNTIxOGZiZmRiYTJlNDI5M2NhNzY1MmU4MjlhYzI1CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAyMTo1MjozNiAyMDA4ICswMTAwCgogICAgQ2xlYW51cCBEYXRhRmxhc2ggcGFydGl0aW9uIGhhbmRsaW5nCgogICAgRGF0YUZsYXNoIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBoYXMgYmVjb21lIGEgbWVzcy4gVGhpcyBwYXRjaAogICAgZGVmaW5lcyBhIHNpbmdsZSBwYXJ0aXRpb24gc2NoZW1lIGZvciBBdG1lbCBEYXRhRmxhc2hlcy4gVGhpcyBwYXJ0aXRpb24KICAgIHNjaGVtZSB3aWxsIGJlIHVzZWQgYnkgYWxsIEFUOTFDQVA5IGFuZCBBVDkxU0FNOSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5YjQ2NDMyZmM2NWNlMGYwODI2YjMyZTRmMTVjMTViMzNjY2I4ZDQyCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAwODo0Nzo0NSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBhbGlnbm1lbnQgaXNzdWUgYWZ0ZXIgQ09ORklHX0lERU5UX1NUUklORyBpbiBzdGFydC5TCgogICAgV2hlbiB0aGUgdmVyc2lvbl9zdHJpbmcgZnVuY3Rpb24gaW4gc3RhcnQuUyBpcyBub3QgNC1ieXRlIGFsaWduLAogICAgaXQgd2lsbCBjYXVzZSB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzICJ1bmFsaWduZWQgb3Bjb2RlcyBkZXRlY3RlZAogICAgaW4gZXhlY3V0YWJsZSBzZWdtZW50Ii4gVGhpcyBpc3N1ZSBhZmZlY3RzIGFsbCBDb2xkRmlyZSBDUFVzLgogICAgQnkgYWRkaW5nIC5hbGlnbiA0IGFmdGVyIENPTkZJR19JREVOVF9TVFJJTkcsIGl0IHdpbGwgcGFkIDAncyBpZgogICAgaXQgaXMgbm90IGFsaWduZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYWU2MWVlZmUxNWI0ZDQ1NDA2MGE3MTQwZTQ5YWU1ODMyMmJlODAzCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciAyNSAxNTo0MToxNSAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBkc3BpIGFuZCBzZXJpYWwgZmxhc2ggc3VwcG9ydCBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4ZWFkN2E3YTkyMmZjZWFmNDk0ZTM1MmFiZmFiODIxNmE0MWI0MTcKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDE4IDE3OjM3OjAxIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogUmVtb3ZlIFI1MjAwIGJvYXJkCgogICAgVGhpcyBib2FyZCBuZXZlciB3ZW50IGludG8gcHJvZHVjdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFphY2hhcnkgUC4gTGFuZGF1IDx6YWNoYXJ5LmxhbmRhdUBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KICAgIEFja2VkLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU0NWM4ZTBhN2NkM2NhOWQzODQ2NjY4ZjY5YjBkMjAxMjUwYWJlYTgKQXV0aG9yOiBNYXR0aGV3IEZldHRrZSA8W21hdHRoZXcuZmV0dGtlQGdtYWlsLmNvbV0+CkRhdGU6CVRodSBKYW4gMjQgMTQ6MDI6MzIgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGRlZCBNNTI3NUVWQiBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgRmV0dGtlIDxtZmV0dGtlQHZpZGVvbi1jZW50cmFsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjcxZDlkOTFhMmNkOWMzMGIyYjYzNjlmMTVjMWE0NmMxMTUzN2MyYgpBdXRob3I6IE1hdHRoZXcgRmV0dGtlIDxbbWF0dGhldy5mZXR0a2VAZ21haWwuY29tXT4KRGF0ZToJTW9uIEZlYiA0IDE1OjM4OjIwIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkZWQgTUNGNTI3NSBjcHUgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEZldHRrZSA8bWZldHRrZUB2aWRlb24tY2VudHJhbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0ZTViOWVkYWIwNzdhYmE2ZTliODQ5YWZhNGI3ZmJkOGZkN2IwMmIKQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDEyOjE0OjExIDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRGVmaW5lIGJvb3RkZWxheSBpbiBjb25maWd1cmF0aW9uIGZpbGUgZm9yIE01MjI3N0VWQgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHQgV2FkZWwgPE1hdHQuV2FkZGVsQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3Nzg3OGYxNmNlZGVlMTcxNjFmZjIzMzY5OTA5NzBmZmZjNmNlYTM1CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAxNyAxMjowOTowNyAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IEZpeCBzZWNvbmQgbWVtb3J5IENoaXBzZWxlY3QgZm9yIE01NDc1RVZCCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0M2Q2MDY0MjM5NWE1NTA5NTZjYjIxZDI4N2M4Y2ZhNTYzOTEzZDI4CkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAxMyAxNDoyNjozMiAyMDA4IC0wNTAwCgogICAgQ29sZEZpcmU6IFVwZGF0ZSBjb3JyZWN0IEZMQVNIQkFSIGFuZCBSQU1CQVIxIGZvciBNQ0Y1MjgyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYjE0ZWJlODEzYTBjYjVkNDc5MDUyMjhkYTQ0NmE1YWQ2OTI0NzNiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVN1biBNYXIgMzAgMjA6MzM6MDQgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogQWRkIENGR19NRU1fVE9QX0hJREUgdG8gRGVuYWxpIFNQRC1iYXNlZCBTRFJBTSBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDAyZTM4OTIwMjExMTJmMjEwNjdkOWVkMWQwNGFlNDE4MjcyNWJhNTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMzEgMTI6MjA6NDggMjAwOCArMDIwMAoKICAgIHBwYzR4eDogU21hbGwgd2hpdGVzcGFjZSBmaXggb2YgZXNkIHBhdGNoZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDM0Mzk0YWJiNTI0Nzg1MDQ3YzgxNWYwMGRkZThjZGJkYzE1OTNjNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gTWFyIDMwIDE4OjUyOjQ0IDIwMDggKzAyMDAKCiAgICBwcGM0eHg6IENsZWFudXAgUE1DNDQwIGJvYXJkIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBhNmNjNmMzNzE4OGQ4NWMyNWQxNjdhNDUxNWRhODZmNDhkOWE1ODNlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTg6NTI6MDYgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogQWRkIHB0bSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgUE1DNDQwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBwdG0xbGEsIHB0bTFtcywgcHRtMmxhIGFuZCBwdG0ybXMKICAgIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCiAgICBDbGVhbnVwIHBjaV90YXJnZXRfaW5pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3YzkxZjUxYTJmZTI5NjkwOTE0N2YxNjQ2YTE0MTI3MjlkZDEwYjFkCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTg6MDE6MTUgMjAwOCArMDIwMAoKICAgIHBwYzR4eDogTWlub3IgdXBkYXRlcyBmb3IgRFU0NDAgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDViZmZlYjg2OGQ2YjRkNDYyZjU1OGRhYzQzMDExMDI3YjY2NDRiNwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEZlYiAxOSAwMDo1NDoyMCAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IGNsZWFudXAgYW5kIG92ZXJoYXVsIGNvbW1vbiBib2FyZCBpbml0IGZ1bmN0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiODZiMzQxNmY4NzQzNThhY2FmMDc1MTllNzYyMGNkYjIxNDVmNzViCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjUwOjU4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogY2xlYW51cCBsaWJfYmxhY2tmaW4vY2FjaGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA5MTcxZmM4MTcyMmMyMGZkYjVhODI5YTU4YjE3YzllYWFkZDVmYjQ0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTdW4gTWFyIDMwIDE1OjQ2OjEzIDIwMDggLTA0MDAKCiAgICBCbGFja2ZpbjogdW5pZnkgY3B1IGFuZCBib290IG1vZGVzCgogICAgQWxsIG9mIHRoZSBkdXBsaWNhdGVkIGNvZGUgZm9yIEJsYWNrZmluIHByb2Nlc3NvcnMgYW5kIGJvb3QgbW9kZXMgaGF2ZSBiZWVuCiAgICB1bmlmaWVkLiAgQWZ0ZXIgYWxsLCB0aGUgY29yZSBpcyB0aGUgc2FtZSBmb3IgYWxsIHByb2Nlc3NvcnMsIGp1c3QgdGhlCiAgICBwZXJpcGhlcmFsIHNldCBkaWZmZXJzICh3aGljaCBnZXRzIGhhbmRsZWQgaW4gdGhlIGRyaXZlcnMpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ODBjYzQzODFlYTgzNjAyNDhjZGRjZGY4N2E2NDU2Njc0NWE1NzI0CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJV2VkIE1hciAyNiAyMjo1MjozNSAyMDA4ICswMTAwCgogICAgRml4IENGR19OT19GTEFTSCBjb21waWxhdGlvbi4KCiAgICBNYW55IEF0bWVsIGJvYXJkcyBoYXZlIG5vICJyZWFsIiAoTk9SKSBmbGFzaCBvbiBib2FyZCwgYW5kIHJlbHkgb25seQogICAgb24gRGF0YUZsYXNoIGFuZCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoIGVuYWJsZXMgQ0ZHX05PX0ZMQVNIIHRvCiAgICBiZSBwcmVzZW50IGluIGEgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLCB3aGlsZSBzdGlsbCBlbmFibGluZyBmbGFzaAogICAgY29tbWFuZHMgbGlrZSAnZmxpbmZvJywgJ3Byb3RlY3QnLCBldGMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCA5Y2U3ZTUzYWJkMDM5ZGVjZWExYWY2N2FlYzgxYmJkNWRmN2EyNTkzCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjU4OjEzIDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogQkY1Mzctc3RhbXA6IGNsZWFudXAgc3BpIGZsYXNoIGRyaXZlcgoKICAgIFRoaXMgcHVudHMgdGhlIG9sZCBzcGkgZmxhc2ggZHJpdmVyIGZvciBhIG5ldy9nZW5lcmFsaXplZCBvbmUgdW50aWwgdGhlCiAgICBjb21tb24gb25lIGNhbiBiZSBpbnRlZ3JhdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiYjhlM2NmMjViYzBiMDQ5MzZjMGMxYTA3NTk4NWRkODcwMGEyNDRiCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMTozNDozNCAyMDA4IC0wNDAwCgogICAgRml4IG1hY3JvIHR5cG8gaW4gY29tbW9uL2NtZF9taWkuYwoKICAgIFRoaXMgdHlwbyB3YXMgaW50cm9kdWNlZCBpbiBjb21taXQgMjMzYThiY2Q5NDk5N2YzZjM0NTgzM2EzYjgyZTgzNjIyMmYyYTIwNi4gIEkKICAgIGFjdHVhbGx5IGFwcGxpZWQgdGhlIHdyb25nIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjFiOTg1ZjJkNzI0Y2NhYTRkM2RlZjA3OTE3ZjBjYWFmMThmYTc3ZApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTY6Mzk6NTMgMjAwOCArMDIwMAoKICAgIHVzZSBjb3JyZWN0IGF0OTFybTkyMDAgcmVnaXN0ZXIgbmFtZSBpbiBtNTAxc2sgYm9hcmQKCiAgICBUaGlzIGZpeGVzIGEgbmFtaW5nIGJ1ZyBmb3IgYXQ5MXJtOTIwMCBsb3dsZXZlbCBpbml0IGNvZGU6CiAgICBOT1IgYm9vdCBmbGFzaCBpcyBvbiBjaGlwc2VsZWN0IDAsIG5vdCBjaGlwc2VsZWN0IDIuICBUaGlzCiAgICBtYWtlcyBjb2RlIHVzZSB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIGNoaXAgZGF0YXNoZWV0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDQ4MGVkMWRlYTEwM2ExYzhmNDU5MWFmYzc3ZDJkZTNjNzg2OGQ5ODMKQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGF2aWQtYkBwYWNiZWxsLm5ldD4KRGF0ZToJRnJpIEphbiAxOCAxMjo1NTowMCAyMDA4IC0wODAwCgogICAgdXNlIGNvcnJlY3QgYXQ5MXJtOTIwMCByZWdpc3RlciBuYW1lCgogICAgVGhpcyBmaXhlcyBhIG5hbWluZyBidWcgZm9yIGF0OTFybTkyMDAgbG93bGV2ZWwgaW5pdCBjb2RlOgogICAgTk9SIGJvb3QgZmxhc2ggaXMgb24gY2hpcHNlbGVjdCAwLCBub3QgY2hpcHNlbGVjdCAyLiAgVGhpcwogICAgbWFrZXMgY29kZSB1c2UgdGhlIHJlZ2lzdGVyIG5hbWUgZnJvbSBjaGlwIGRhdGFzaGVldHMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgYTM1NDNkNmRjNTJiMGJhOWM2NDAxNjY4N2NmMzJkNjAwYjMxYTQ3NgpBdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgpEYXRlOglGcmkgSmFuIDE4IDEyOjQ1OjQ1IDIwMDggLTA4MDAKCiAgICBhZGQgbWlzc2luZyBBUk0gYm9hcmRzIHRvIE1BS0VBTEwKCiAgICBBZGQgc29tZSBtaXNzaW5nIEFSTSBib2FyZHMgdG8gTUFLRUFMTC4gIFRoZXNlIGJ1aWxkIGNvcnJlY3RseSwKICAgIHVubGlrZSBzZXZlcmFsIG9mIHRoZSBib2FyZHMgYWxyZWFkeSBsaXN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cgpjb21taXQgMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzQ6MDkgMjAwOCArMDEwMAoKICAgIEJyYWNrZXQgUkVBRF9USU1FUiBtYWNybyBpbiBjcHUvYXJtMTEzNi9vbWFwMjR4eC9pbnRlcnJ1cHRzLmMKICAgIHRvIHByZXZlbnQgY29tcGlsYXRpb24gZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KCmNvbW1pdCA3YTgzN2I3MzEwMTY2YWU4ZmM4YjhkNjZkN2VmMDFiNjBhODBmOWQ2CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxbbGdAZGVueC5kZV0+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzI6MzAgMjAwOCArMDEwMAoKICAgIFN1cHBvcnQgZm9yIHRoZSBNWDMxQURTIGV2YWx1YXRpb24gYm9hcmQgZnJvbSBGcmVlc2NhbGUKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1YMzFBRFMgZXZhbHVhdGlvbiBib2FyZCBmcm9tIEZyZWVzY2FsZSwKICAgIGluaXRpYWxpemF0aW9uIGNvZGUgaXMgY29waWVkIGZyb20gUmVkQm9vdCBzb3VyY2VzLCBhbHNvIHByb3ZpZGVkIGJ5IEZyZWVzY2FsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgYzg4YWUyMDU4MGIyYjAxNDg3YjRjZGNjOGIyYTExM2Y1NTFhZWUzNgpBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJU3VuIE1hciAzMCAxMTozMjoyNyAyMDA4ICswMTAwCgogICAgUGh5dGVjIFBoeWNvcmUtaS5NWDMxIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCBhMTQ3ZTU2ZjAzODcxYmJhNGYwNTA1OGQ1ZTA0Y2U3ZGViMDEwYjA0CkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglTdW4gTWFyIDMwIDExOjMyOjI0IDIwMDggKzAxMDAKCiAgICBteDMxIGxpdGVraXQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgbXgzMSBsaXRla2l0IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IGQ2Njc0ZTBlMmE2YTFmMDMzOTQ1Zjc4ODM4NTY2MjEwZDNmMjhjOTUKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzI6MjEgMjAwOCArMDEwMAoKICAgIGFkZCBTTVNDIExBTjl4MXggTmV0d29yayBkcml2ZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgc21zYyBuZXR3b3JrIGNvbnRyb2xsZXJzOgogICAgTEFOOTExNQogICAgTEFOOTExNgogICAgTEFOOTExNwogICAgTEFOOTIxNQogICAgTEFOOTIxNgogICAgTEFOOTIxNwoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA4Yzg0NjNjY2U0NGQ4NDllMzc3NDQ3NDliMzJkMzhlMWRmYjEyZTUwCkF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpEYXRlOglTdW4gTWFyIDMwIDExOjMyOjE2IDIwMDggKzAxMDAKCiAgICBhZGQgYW4gaTJjIGRyaXZlciBmb3IgbXgzMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBpMmMgZHJpdmVyIGZvciBGcmVlc2NhbGUgaS5NWCBwcm9jZXNzb3JzCgogICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IGM5OGI0N2FkMjRiMmQ5MWY0MWMwOWEzZDYyZDdmNzBhZDg0ZjRiN2QKQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVN1biBNYXIgMzAgMTE6MzA6NDMgMjAwOCArMDEwMAoKICAgIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgOGJmNjlkODE3ODI2MTkxODc5MzNhNjA1ZjFhOTVlZTFkMDY5NDc4ZApBdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KRGF0ZToJU3VuIE1hciAzMCAxMToyODo0NiAyMDA4ICswMTAwCgogICAgU2VwYXJhdGUgb21hcDI0eHggc3BlY2lmaWMgY29kZSBmcm9tIGFybTExMzYKCiAgICBNb3ZlIG9tYXAyNHh4IGNvZGUgdG8gY3B1L2FybTExMzYvb21hcDI0eHgsIHJlbmFtZSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm0xMTM2IHRvIGNwdS9hcm0xMTM2L29tYXAyNHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KCmNvbW1pdCA4YzE2Y2IwZDNiOTcxZjQ2ZmJlNzdjMDcyNjY0YzBmMmRjZDQ0NzFkCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMToyMzowNSAyMDA4ICswMTAwCgogICAgQWRkIHBtZHJhIGludG8gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Cgpjb21taXQgYTU3NGE3Mzg1MmE1Mjc3NzkyMzRlNzNlMTdlNzU5N2ZkODEyODg4MgpBdXRob3I6IFBpZXRlciBWb29ydGh1aWpzZW4gPFtwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sXT4KRGF0ZToJU3VuIE1hciAzMCAxMToyMTo1OCAyMDA4ICswMTAwCgogICAgQWRkcyBzdXBwb3J0IGZvciB0aGUgUHJvZHJpdmUgUE1EUkEgYm9hcmQsIGJhc2VkIG9uIGEgRE02NDQxCgogICAgU2lnbmVkLW9mZi1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cHZAcHJvZHJpdmUubmw+Cgpjb21taXQgMTM3N2I1NTgzYTQ4MDIxZDk4M2UxZmQ1NjVmN2Q0MGM4OWU4NGQ2MwpBdXRob3I6IFBpZXRlciBWb29ydGh1aWpzZW4gPFtwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sXT4KRGF0ZToJU3VuIE1hciAzMCAxMToxMTozNCAyMDA4ICswMTAwCgogICAgUmVtb3ZlcyBhbGwgYm9hcmQgc3BlY2lmaWMgY29kZSBmcm9tIHRoZSBhcmNoLiBwYXJ0IGZvciBETTY0NHggKERhVmluY2kpIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgoKY29tbWl0IDE3MDRkYzIwOTE3YjRmNzFlMzczZTJjODg4NDk3ZWU2NjZkNDAzODAKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KRGF0ZToJU3VuIE1hciAzMCAxMTowOTowMSAyMDA4ICswMTAwCgogICAgLSBSZW1vdmUgKl9tYXNrZWQoKSBmdW5jdGlvbnMgYXMgbm90ZWQgYnkgV29sZmdhbmcKICAgIC0gQWRhcHQgcmVnaXN0ZXIgbmFtaW5nIHRvIHJlY2VudCBUSSBzcGVjIChzcHJ1ZTI2LCBNYXJjaCAyMDA3KQogICAgLSBGaXggcmVzZXRfdGltZXIoKSBoYW5kbGluZwogICAgLSBBcyByZXBvcnRlZCBieSBQaWV0ZXIgWzFdIHRoZSBvdmVyZmxvdyBmaXggaW50cm9kdWNlZCBhCiAgICBkZWxheSBvZiBmYWN0b3IgMTYgKGUuZyAyIHNlY29uZHMgYmVjYW1lIDMyKS4gV2hpbGUgdGhlCiAgICBvdmVyZmxvdyBmaXggaXMgYmFzaWNhbGx5IG9rYXksIGl0IG1pc3NlZCB0byBkaXZpZGUgdWRlbGF5IGJ5CiAgICAxNiwgdG9vLiBGaXggdGhpcy4KICAgIFsxXSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5ib290LWxvYWRlcnMudS1ib290LzM4MTc5CiAgICAtIFJlbW92ZSBzb2Z0d2FyZSBkaXZpc2lvbiBvZiB0aW1lciBjb3VudCB2YWx1ZSAoRElWKHgpCiAgICBtYWNybykgYW5kIGRvIGl0IGluIGhhcmR3YXJlIChUSU1fQ0xLX0RJVikuCiAgICBNYW55IHRoYW5rcyB0byBUcm95IEtpc2t5IDx0cm95Lmtpc2t5QGJvdW5kYXJ5ZGV2aWNlcy5jb20+CiAgICBhbmQgUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4gZm9yCiAgICB0aGUgaGludHMgJiB0ZXN0aW5nIQoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKICAgIEFja2VkLWJ5OiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sPgoKY29tbWl0IGFjMzMxNWMyNmUxNDNjMzE2ODA3NTBjOWMxM2YwMjdlZmJjYzg4N2UKQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CVRodSBNYXIgNiAxNjo0NTo0NCAyMDA4ICswMTAwCgogICAgbmV3IFBIWSBAIGUxMDAwIC0gMm5kIHRyeQoKICAgIEFkZCA4MjU0MUVSIGRldmljZSB3aXRoIGxhdGVzdCBpbnRlZ3JhdGVkIElHUDIgUEhZLgogICAgSW50cm9kdWNlZCBDT05GSUdfRTEwMDBfRkFMTEJBQ0tfTUFDIGZvciBOSUMgYnJpbmctdXAgd2l0aCBlbXB0eSBlZXByb20uCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBjMmI3ZGE1NTIyOTNiNTBjOWM5ZTQ2ZWQ3MTI2N2IwMmMyZGU5ZWE4CkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIwOjIyOjUzIDIwMDggKzAxMDAKCiAgICBTUEFSQy9MRU9OMzogQWRkZWQgR1JFVEggRXRoZXJuZXQgMTAvMTAwLzEwMDAgZHJpdmVyLgoKICAgIEdSRVRIIGlzIGFuIEV0aGVybmV0IDEwLzEwMCBvciAxMC8xMDAvMTAwMCBNQUMgd2l0aCBvdXQgd2l0aG91dAogICAgYSBkZWJ1ZyBsaW5rIChFRENMKS4gVGhlIEdSRVRIIGNvcmUgaXMgZG9jdW1lbnRlZCBpbiBHUklQLnBkZgogICAgYXZhaWxhYmxlIGF0IHd3dy5nYWlzbGVyLmNvbS4KCiAgICBJZiB0aGUgR1JFVEggaGFzIEdpZ2FCaXQgc3VwcG9ydCAoR0JJVCwgU2NhdHRlciBnYXRoZXIsIGNoZWNrc3VtCiAgICBvZmZsb2FkaW5nIGV0Yy4pIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGEgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgogICAgVGhlIEdCSVQgTUFDIGlzIHN1cHBvcnRlZCBieSBvcGVyYXRpbmcgaW4gR1JURUggMTAvMTAwIGxlZ2FjeSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMjMzYThiY2Q5NDk5N2YzZjM0NTgzM2EzYjgyZTgzNjIyMmYyYTIwNgpBdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDE3OjA4OjIyIDIwMDggLTA1MDAKCiAgICBBZGQgQ09ORklHX01JSV9JTklUIGluIGNtZF9taWkuYwoKICAgIFByb3ZpZGUgY29tbW9uIGNvbmZpZ3VyYXRpb24gaW4gZG9fbWlpKCkgdG8gZXhlY3V0ZSBtaWlfaW5pdCgpCiAgICBmb3IgYWxsIGNwdSBhcmNoaXRlY3R1cmVzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjYwNTQ3OWRlMmRlYjExZTgzNGYzMWRmZGIwYWYxMDdjODZhY2VkNgpBdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTWFyIDE3IDE3OjA4OjE2IDIwMDggLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IEZFQyB0cmFuc21pdCBpc3N1ZSBmb3IgTUNGNTI3NQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGQ5YTJmNDE2ZDZhYzYwNThjZDc4NDUwMzNhZTRkYzMyZWYxYzA3NDYKQXV0aG9yOiBBcmFzIFZhaWNoYXMgPGFyYXN2QG1hZ3RlY2guY29tLmF1PgpEYXRlOglXZWQgTWFyIDI2IDA5OjQzOjU3IDIwMDggKzExMDAKCiAgICBESENQIHJlcXVlc3QgZml4IGZvciBXaW5kb3dzIFNlcnZlciAyMDAzCgogICAgQWRkZWQgb3B0aW9uIENPTkZJR19CT09UUF9ESENQX1JFUVVFU1RfREVMQVkuIFRoaXMgcHJvdmlkZXMgYW4gb3B0aW9uYWwKICAgIGRlbGF5IGJlZm9yZSBzZW5kaW5nICJESENQIFJlcXVlc3QiIGluIG5ldC9ib290cC5jLiBSZXF1aXJlZCB0byBvdmVyY29tZQogICAgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcyB3aXRoIFdpbmRvd3MgU2VydmVyIDIwMHggREhDUCBzZXJ2ZXIgd2hlbiBVLUJvb3QKICAgIGNsaWVudCByZXNwb25kcyB0b28gZmFzdCBmb3Igc2VydmVyIHRvIGhhbmRsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBcmFzIFZhaWNoYXMgPGFyYXN2QG1hZ3RlY2guY29tLmF1PgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5N2JmODVkNzg0ZmJlZDQ4NWU2NTJlYjkwNzU4OWFkMGQ1Y2I3MjYyCkF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgpEYXRlOglGcmkgTWFyIDI4IDIwOjQwOjE5IDIwMDggKzAxMDAKCiAgICBNVEQvQ0ZJOiBmbGFzaF9yZWFkNjQgaXMgZGVmaW5lZCBhIHdlYWsgZnVuY3Rpb24gKGZvciBTUEFSQykKCiAgICBTUEFSQyBoYXMgaW1wbGVtZW50ZWQgX19yYXdfcmVhZHEsIGl0IHJlYWRzIDY0LWJpdCBmcm9tIGFueSAzMi1iaXQgYWRkcmVzcy4KICAgIFNQQVJDIENQVXMgaW1wbGVtZW50IGZsYXNoX3JlYWQ2NCB3aGljaCBjYWxscyBfX3Jhd19yZWFkcS4KCiAgICBGb3IgY3VycmVudCBTUEFSQyBhcmNoaXRlY3R1cmVzIChMRU9OMiBhbmQgTEVPTjMpIGVhY2ggcmVhZCBmcm9tIHRoZQogICAgRkxBU0ggbXVzdCBsZWFkIHRvIGEgY2FjaGUgbWlzcy4gVGhpcyBpcyBiZWNhdXNlIEZMQVNIIGNhbiBub3QgYmUgc2V0CiAgICBub24tY2FjaGVhYmxlIHNpbmNlIHByb2dyYW0gY29kZSByZXNpZGVzIHRoZXJlLCBhbmQgYWx0ZXJuYXRpdmVseSBkaXNhYmxpbmcKICAgIGNhY2hlIGlzIHBvb3IgZnJvbSBwZXJmb3JtYW5jZSB2aWV3LCBvciBkb2luZyBhIGNhY2hlIGZsdXNoIGJldHdlZW4gZWFjaAogICAgcmVhZCBpcyBldmVuIHBvb3Jlci4KCiAgICBGb3JjaW5nIGEgY2FjaGUgbWlzcyBvbiBhIFNQQVJDIGlzIGRvbmUgYnkgYSBzcGVjaWFsIGluc3RydWN0aW9uICJsZGEiIC0KICAgIGxvYWQgYWx0ZXJuYXRpdmUgc3BhY2UsIHRoZSBhbHRlcm5hdGl2ZSBzcGFjZSBudW1iZXIgKEFTSSkgaXMgcHJvY2Vzc29yCiAgICBpbXBsZW1lbnRhdGlvbiBzcGNpZmljIGFuZCBjYW4gYmUgZm91bmQgYnkgaW5jbHVkaW5nIDxhc20vcHJvY2Vzc29yLmg+LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KCmNvbW1pdCA3MDQzMWU4YTczOTNiNmI3OTNmNzc5NTdmOTViOTk5ZmM5YTI2OWI4CkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CUZyaSBNYXIgMjggMTU6NDE6MjUgMjAwOCArMDEwMAoKICAgIE1ha2UgTVBDODN4eCBvbmUgc3RlcCBjbG9zZXIgdG8gZnVsbCByZWxvY2F0aW9uLgoKICAgIFJlbW92ZSBhIGZldyBhYnNvbHV0ZSByZWZlcmVuY2VzIHRvIENGR19NT05JVE9SX0JBU0UgZm9yIHBwYy9tcGM4M3h4CiAgICBhbmQgdXNlIEdPVCByZWxhdGl2ZSByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDViMjc5M2EzZjNkZTM0ZDQzOTIzMmIwNWFjYzhhZjY3YTAyOGZkMzUKQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxNDozNDo0MyAyMDA4IC0wNDAwCgogICAgbXBjODMyM2VyZGI6IGZpeCBFRVBST00gcGFnZSBzaXplIGFuZCBnZXQgTUFDIGZyb20gRUVQUk9NCgogICAgVGhpcyBwYXRjaCBmaXhlcyBlZXByb20gcGFnZSBzaXplIHNvIHRoYXQgeW91IGNhbiBub3cgd3JpdGUgbW9yZSB0aGFuCiAgICA2NCBieXRlcyBhdCBhIHRpbWUuCgogICAgSXQgYWxzbyBtYWtlcyB0aGUgYm9hcmQgdGFrZSBNQUMgYWRkcmVzc2VzLCBpZiBmb3VuZCwgZnJvbSBFRVBST00uCgogICAgVXNlciBzaG91bGQgcGxhY2UgdXAgdG8gNCBhZGRyZXNzZXMgYXQgb2Zmc2V0IDB4N2YwMCwgZm9yCiAgICBldGh7LDEsMiwzfWFkZHIuICBBbnkgdW51c2VkIGFkZHJlc3NlcyBzaG91bGQgYmUgemVyby4gIFRoaXMgZ3JvdXAgb2YKICAgIGZvdXIgc2l4LWJ5dGUgdmFsdWVzIHNob3VsZCBoYXZlIGl0J3MgQ1JDIGF0IHRoZSBlbmQuICBjcmMzMiBhbmQKICAgIGVlcHJvbSBjb21tYW5kcyBjYW4gYmUgdXNlZCB0byBhY2NvbXBsaXNoIHRoaXMuCgogICAgSWYgQ1JDIGZhaWxzLCBNQUMgYWRkcmVzc2VzIGNvbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBJZiBDUkMKICAgIHN1Y2NlZWRzLCB0aGUgZW52aXJvbm1lbnQgaXMgb3ZlcndyaXR0ZW4gYXQgc3RhcnR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGYzMjVjZmYzMWY2ZTc0NWU2NTQwMDE0YjEzMWI5YTk3ZjYxOTQ0YwpBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI4IDE1OjE1OjM4IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogZGVmaW5lIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRQoKICAgIENvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyIGJyb2tlIHRoZSBvbmJvYXJkIFVTQgogICAgY29udHJvbGxlciBvbiB0aGUgUENJIGJ1cyBpbiBMaW51eCBvbiB0aGUgTVBDODMyM0VSREIuCgogICAgVGhpcyBmaXhlcyBpdCBieSBkZWZpbmluZyBDT05GSUdfUENJX1NLSVBfSE9TVF9CUklER0UgaW4gdGhlIGJvYXJkJ3MKICAgIGNvbmZpZyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNWM0YWRlNGRiMWUxNmQzZTVkNGE3ODg3ZjM0ZTEwZTUxNmVkM2E5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMDoxOTowNyAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogY2xlYW51cCBTeXN0ZW0gUGFydCBhbmQgUmV2aXNpb24gSUQgUmVnaXN0ZXIgKFNQUklEUikgY29kZQoKICAgIGluIHRoZSBzcGlyaXQgb2YgY29tbWl0IDFjZWQxMjE2MDBiMjA2MGFiMmZmOWYwZmRkZDk0MjFmZDcwYTBkYzYsCiAgICA4NXh4J3MgIlVwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCIsIHNpbXBsaWZ5IFNQUklEUiBwcm9jZXNzaW5nCiAgICBhbmQgcHJvY2Vzc29yIElEIGRpc3BsYXkuICBBZGQgUkVWSURfe01BSixNSU59T1IgbWFjcm9zIHRvIG1ha2UKICAgIFJFVklEIGRlcGVuZGVudCBjb2RlIHNpbXBsZXIuICBBbHNvIGFkZGVkIFBBUlRJRF9OT19FIGFuZCBJU19FX1BST0NFU1NPUgogICAgY29udmVuaWVuY2UgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODFmZDUyYzZjOGZkMTlmMGI3ODU2Yjk4MjE3Y2UzN2M0NmM1MjFhZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXIgMjggMTA6MTg6NTMgMjAwOCAtMDUwMAoKICAgIG1wYzgzeHg6IGRpc3BsYXkgZGRyIGZyZXF1ZW5jeSBpbiBib2FyZF9hZGRfcmFtX2luZm8gYmFubmVyCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNWNmMTU1YzVlYzFjZWFiMjg0OWZhNWI2YWEzZDlhM2U5ZTZmNDgyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMDoxODo0MCAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogdW5yZWludmVudCBtZW1fY2xrCgogICAgZGVsZXRlIGRkcl9jbGsgYW5kIHVzZSBtZW1fY2xrIGluc3RlYWQuICBSZW5hbWUgb3RoZXIgZGRyXypfY2xrIHRvCiAgICBtZW1fKl9jbGsgZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczMGU3OTI5MjZjYTNmZTRkZDFiNzM0YTNiZjQ0ZTU1YWZhNmY1MzYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDI4IDE0OjMxOjIzIDIwMDggLTA1MDAKCiAgICBtcGM4M3h4OiBlbmFibGUgdGhlIFNBVEEgaW50ZXJmYWNlIG9uIG1wYzgzMTUgcmRiIGFuZCBtcGM4Mzd4IHJkYiBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJlZWIzZTRmYzU0ZWYyZjVkNTc0ZGFmZDQyYzZjZTkzYWZhMzAzOTMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTc6MTkgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IGVuYWJsZSB0aGUgU0FUQSBpbnRlcmZhY2Ugb24gbXBjODM3eGVtZHMgYm9hcmQKCiAgICBFbmFibGUgdGhlIGZpcnN0IHR3byBTQVRBIGludGVyZmFjZXMgb24gTVBDODM3eEVNRFMgYm9hcmQsCiAgICBUaGUgdHdvIFNBVEEgcG9ydHMgYXJlIG9uIExZTlgxLiAoU0FUQTAvMSBvbiBKNC81KQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmOGM4NWU4ZDE4NjU3MzBjMTU4ZDllZjVhMDZjNzBjM2ExMDYwMGEKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTY6MzYgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IGluaXRpYWxpemUgc2VyZGVzIGZvciBNUEM4Mzd4RU1EUyBib2FyZHMKCiAgICBUaGlzIHBhdGNoIGlzIHN0b2xlbiBmcm9tIEFudG9uIFZvcm9udHNvdidzIHBhdGNoCiAgICBmb3IgbXBjODM3eGVyZGIgYm9hcmRzLgoKICAgIFRoZSByZWZlcmVuY2UgY2xrIGFuZCB4Y29yZXZkZCB2b2x0YWdlIG9mIHNlcmRlczEvMgogICAgaXMgc2FtZSBiZXR3ZWVuIG1wYzgzN3hlbWRzIGFuZCBtcGM4Mzd4ZXJkYi4KCiAgICA4Mzc3RTogTFlOWDEtIDIgU0FUQQlMWU5YMi0gMiBQQ0lFCiAgICA4Mzc4RTogTFlOWDEtIDIgU0dNSUkJTFlOWDItIDIgUENJRQogICAgODM3OUU6IExZTlgxLSAyIFNBVEEJTFlOWDItIDIgU0FUQQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNjOGU4MzlhYmM4MDg4N2FlODMyNzY3YjU5MzBkNDBlZGQ2ZDdlYjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgMjggMTQ6MDk6MDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IFByaW50IFNBVEEvUENJZSBjb25maWd1cmF0aW9uIGFuZCBib2FyZCByZXZpc2lvbgoKICAgIENhbnlvbmxhbmRzICg0NjBFWCkgc2hhcmVzIHRoZSBmaXJzdCBQQ0llIGludGVyZmFjZSB3aXRoIHRoZSBTb0MgU0FUQQogICAgaW50ZXJmYWNlLiBUaGlzIHVzYWdlIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIGp1bXBlciBKNi4gVGhpcyBwYXRjaAogICAgZGlzcGxheXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB1cG9uIGJvb3R1cCBhbmQgY2hhbmdlcyB0aGUgUENJZQogICAgaW5pdCBsb29wLCB0byBvbmx5IGluaXRpYWxpemUgdGhlIGF2YWlsYWJlbCBQQ0llIHNsb3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MDQ0N2VjYmJhYzg1NzI0NTdiNmQ4OTAzMDczYWMzZjEyMDk5NWJhCkF1dGhvcjogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KRGF0ZToJRnJpIE1hciAyOCAxMToyOToxMCAyMDA4ICswMTAwCgogICAgTVREL0NGSTogQWRkIHN1cHBvcnQgZm9yIDE2Yml0IGxlZ2FjeSBBTUQgZmxhc2gKCiAgICBBZGQgZW50cnkgZm9yIDUxMkt4MTYgQU1EIGZsYXNoIHRvIGplZGVjX3RhYmxlLgogICAgUmVhZCBvdXQgMTZiaXQgZGV2aWNlIGlkIGlmIGNoaXB3aWR0aCBpcyAxNmJpdC4KICAgIEZpeGVkIGNvZGluZyBzdHlsZSBhZnRlciBTdGVmYW5zIGZlZWRiYWNrCgogICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KCmNvbW1pdCA1ZTEyZTc1ZDE3YzRiMTVhMzEwYTQ1Y2Q3OGZlNzFiNzY5OGE4YThlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTWFyIDI4IDExOjAyOjUzIDIwMDggKzAxMDAKCiAgICBwcGM6IFNtYWxsIGNoYW5nZSB0byBDRkdfTUVNX1RPUF9ISURFIGRlc2NyaXB0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4MGRmNTlhOGQ2MmM2ZTc0YzI4MWIxY2I3ZTIwNTJkZjRkNmNiMDAKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBNYXIgMjcgMTU6NDQ6MTIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBzdGF0IHN0cnVjdHVyZSBhbmQgc3RhdC5oCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDRiZTllYjc4OWU3MmI4NDVkNjY5M2NjMzZiNzBhMGIzNTI5YjNmMDkKQXV0aG9yOiBNYXJrIEpvbmFzIDx0b2VydGVsQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciAyMiAxOToyNzo1MiAyMDA4ICswMTAwCgogICAgc2g6IFJlbW92ZWQgd2FybmluZyB3aGVuIGNvbXBpbGluZyBkcml2ZXJzL3NlcmlhbC9zZXJpYWxfc2guYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEpvbmFzIDxtYXJrLmpvbmFzQGRlLmJvc2NoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmMzA5ZmEzODkyOWZmYmE3MTIzMGMwMjMzMGZmYTQyZjRiYmE2MzMzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglXZWQgTWFyIDEyIDE4OjAyOjU3IDIwMDggKzA5MDAKCiAgICBzaDogUmVtb3ZlIGRpc2FibGVfY3RybGMgZnVuY3Rpb24gZnJvbSBSNzc4ME1QCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZmNGIyNjZmZjJhNGZjYzJiZmY5ODVkNmEyMTc4NTI0NjlhZmRkYjMKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBNYXIgMTIgMTc6NTU6MTUgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgbWFpbnRhaW5lciBvZiBSNzc4ME1QIHRvIE1BSU5UQUlORVIgZmlsZQoKICAgIFVwZGF0ZSBNQUlOVEFJTkVSIGVudHJ5IGZvciBSNzc4ME1QLiBBbmQgZml4IG1haW50YWluZXIncyBuYW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmNWUyNDY2ZjdiYWE4ODdhN2RmMGM1MzYzMzNlZWE4MjMxMzMzNDk3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgTWFyIDI1IDE3OjExOjI0IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTb2x1dGlvbnMgUjJEIHBsdXMgYm9hcmQKCiAgICBSMkQgcGx1cyBpcyBTSCByZWZlcmVuY2UgYm9hcmQgdXNlZCB3aXRoIFNINzc1MVIuCiAgICBUaGlzIGJvYXJkIGhhcyAyNjZNaHogQ1BVLCA2NE1CIFNEUkFNLCBDYXJkYnVzLCBDRiBpbnRlcmZhY2UsCiAgICBvbmUgUENJIGJ1cywgVkdBLCBhbmQgdHdvIEV0aGVybmV0IGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGU5MmM5NTE4MGJiNWJjNWZkNDA1MTU5OGE5ZDYwYmVhYmE0ODk4OGQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBNYXIgMTIgMTI6MTU6MjkgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBTSDQgY2FjaGUgY29udHJvbAoKICAgIEFkZCBzdXBwb3J0IFNINCBjYWNoZSBjb250cm9sIGFuZCBmbGFzaF9jYWNoZSBmdW5jdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAyOGU1ZWZkZTRkOTI1ZmNiMzQ5MDFkMDAzMGQwNjQ4ZGUyZGE3ZTg5CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gTWFyIDI0IDAxOjUzOjAxIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUENJIGhvc3QgZHJpdmVyIGZvciBTSDc3NTEvU0g3NzUxUgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhYjhmNGQ0MGQwNjljZDNjYmU3NTYzZGRmZTNlNWYwM2IwYzdjNzIxCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglNb24gTWFyIDI0IDAyOjExOjI2IDIwMDggKzA5MDAKCiAgICBzaDogTW92ZSBTdXBlckggUENJIGRyaXZlciBmcm9tIGNwdS9zaDQgdG8gZHJpdmVycy9wY2kKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNTY2OTMzMjc4MTAxYzE0NGQ3NTM2MWVhNjgyNjc4YTMyNmMxMjkwZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIE1hciAxMiAxMjoxMDoyOCAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFN1cGVySCBTSDc3NTEvU0g3NzUxUgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzMzEzZTBlMjYyMjRmYzlhMGM0NDUxMjRmMzQ1NTA1OGM2OTZkZjg0CkF1dGhvcjogTWFyayBKb25hcyA8dG9lcnRlbEBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTAgMTE6Mzc6MTAgMjAwOCArMDEwMAoKICAgIHNoOiBBZGRlZCBzdXBwb3J0IGZvciBTSDc3MjAgYmFzZWQgYm9hcmQgTVBSMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEpvbmFzIDxtYXJrLmpvbmFzQGRlLmJvc2NoLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAzZWNmZjFkNzBhZTkzZTYyOGZlNjViM2ZlMWZjN2M5Yzc2Y2RmOTlmCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUaHUgTWFyIDYgMTQ6MDU6NTMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggcmVjZWl2ZSBGSUZPIGxldmVsIHJlZ2lzdGVyIG9mIFNINEEKCiAgICBSZWNlaXZlIEZJRk8gbGV2ZWwgcmVnaXN0ZXIgaXMgZGlmZmVyZW50IGluIFNINEEuCiAgICBCZWNhdXNlIHJlZ2lzdGVyIGlzIGRpZmZlcmVudCwgY2Fubm90IG9jY2FzaW9uYWxseSByZWNlaXZlIGRhdGEuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGMxMzNjMWZiMGI1OTA2NjIyMDZiMGViYTcwZjQ0NzhlZTAzMDBhOWEKQXV0aG9yOiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CkRhdGU6CVR1ZSBNYXIgMTEgMTI6NTU6MTIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIFNvbHV0aW9ucyBSNzc4ME1QCgogICAgUmVuZXNhcyBTb2x1dGlvbnMgUjc3ODBNUCBpcyBhIHJlZmVyZW5jZSBib2FyZCBvbiBTSDc3ODAuCiAgICBUaGlzIGJvYXJkIGhhcyBzZXJpYWwsIDEwLzEwMCBiYXNlIEV0aGVybmV0IGRlaXZpY2UsIENGIHNsb3QKICAgIGFuZCBWR0EgZGV2aWNlcy4gVGhpcyBib2FyZCBjYW4gc2V0IGV4dGVuc2lvbiBib2FyZC4KICAgIEV4dGVuc2lvbiBib2FyZCBoYXMgMTAvMTAwLzEwMDAgYmFzZSBFdGhlcm5ldCBkZXZpY2UsIFBDSSBzbG90LAogICAgUy1BVEEsIGlEVlIgc2xvdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMWEyMzM0YTRlYjYzODZkN2NkMzVkOWRlNWZhMzlhZjJjNzY0YWQyOApBdXRob3I6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE0OjMwOjAyIDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgUENJIG9mIFN1cGVySCBhbmQgU0g3NzgwCgogICAgVGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBQQ0kgb2YgU3VwZXJIIGJhc2UgY29kZSBhbmQgU0g3NzgwIHNwZWNpZmljIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGI1NTUyM2VmZmYyYWUxMWYwYjlhZTNjYzQwNTg5M2MzMmViNzgxNTYKQXV0aG9yOiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CkRhdGU6CVdlZCBNYXIgNSAxNDoyMzoyNiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFNINzc4MAoKICAgIFNINzc4MCBpcyBDUFUgb2YgUmVuZXNhcyBUZWNobm9sb2d5LgogICAgVGhpcyBDUFUgaGFzCiAgICAgLSBDUFUgY2xvY2sgNDAwTUh6CiAgICAgLSBQQ0kgc3VwcG9ydAogICAgIC0gRERSLVNEUkFNIGNvbnRyb2xsZXIKICAgICAtIGV0YyAuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzIwNDJmNTk1MmE2ODZjNDE0MDMxMzA5YjhmMjQ0NTEzYmY1NzhmMApBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJRnJpIEphbiAyNSAyMDo0NjozNiAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IFJlbmVzYXMgU29sdXRpb25zIE1pZ28tUiBib2FyZAoKICAgIE1pZ28tUiBpcyBhIGJvYXJkIGJhc2VkIG9uIFNINzcyMiBhbmQgaGFzIG1heSBkZXZpY2VzLgogICAgSW4gdGhpcyBwYXRjaCwgc3VwcG9ydGVkIFNDSUYsIE5PUiBmbGFzaCBhbmQgRXRoZXJuZXQuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDc0ZDFlNjZkMjJkYWM5MTM4OGJjNTM4YjJmZTE5ZjczNWVkYzViODIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDI3IDE1OjA2OjQwIDIwMDggKzAxMDAKCiAgICBGaXggaG9zdCB0b29sIGJ1aWxkIGJyZWFrYWdlLCB0YWtlIHR3bwoKICAgIFJldmVydCBjb21taXQgODdjODQzMWYgYW5kIGZpeCBidWlsZCBicmVha2FnZSBzbyB0aGF0IHRoZSBidWlsZCBjb250aW51ZXMKICAgIHRvIHdvcmsgb24gRkMgc3lzdGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdlNGEwZDI1ZWQxOGY2NDM3YmRmNTllYmZhNDliYjBlZGMyZjI0ZTYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMTkgMDk6MzY6NDcgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRW5hYmxlIEVDQyBvbiBMV01PTjUKCiAgICBTaW5jZSBhbGwgRUNDIHJlbGF0ZWQgcHJvYmxlbXMgc2VlbSB0byBiZSByZXNvbHZlZCBvbiBMV01PTjUsIHRoaXMgcGF0Y2gKICAgIG5vdyBlbmFibGVzIEVDQyBzdXBwb3J0LgoKICAgIFdlIGhhdmUgdG8gd3JpdGUgdGhlIEVDQyBieXRlcyBieSB6ZXJvaW5nIGFuZCBmbHVzaGluZyBpbiBzbWFsbGVyCiAgICBzdGVwcywgc2luY2UgdGhlIHdob2xlIDI1Nk1CeXRlIHRha2VzIHRvbyBsb25nIGZvciB0aGUgZXh0ZXJuYWwKICAgIHdhdGNoZG9nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2NDMzZmEyMDJhOTFhNjU5NGRkNDhmMDY4MDdhYzM4YmEyN2ZhMGJiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CU1vbiBNYXIgMTcgMTE6MTA6MzUgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogVXBkYXRlcyB0byBLb3JhdC1zcGVjaWZpYyBjb2RlCgogICAgVGhpcyBwYXRjaCBjb250YWlucyB1cGRhdGVzIGZvciBjaGFuZ2VzIGZvciB0aGUgS29yYXQgUFBDNDQwRVB4IGJvYXJkLgogICAgVGhlc2UgY2hhbmdlcyBpbmNsdWRlOgoKICAgICgxKSBTdXBwb3J0IGZvciAicGVybWFuZW50IiBhbmQgInVwZ3JhZGFibGUiIGNvcGllcyBvZiBVLUJvb3QsIGFzCiAgICBkZXNjcmliZWQgaW4gdGhlIG5ldyAiZG9jL1JFQURNRS5rb3JhdCIgZmlsZTsKCiAgICAoMikgYSBuZXcgbWVtb3J5IG1hcCBmb3IgdGhlIHJlZ2lzdGVycyBpbiB0aGUgYm9hcmQncyBDUExEOwoKICAgICgzKSBhIHJldmlzZWQgZm9ybWF0IGZvciBtYW51ZmFjdHVyZXIncyBkYXRhIGluIHNlcmlhbCBFRVBST007IGFuZAoKICAgICg0KSBjaGFuZ2VzIHRvIHRyYWNrIHVwZGF0ZXMgdG8gVS1Cb290IGZvciB0aGUgU2VxdW9pYSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBmNzY2Y2RmODliM2EyYTc2MzRiOGM1ODY5ZjYwNjE1MGUzMzIwMzZjCkF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdtYWlsLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAxMDo0NjoyNSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBQUEM0MDVFUCBTZXQgRU1BQyBub2lzZSBmaWx0ZXIgYml0cwoKICAgIFRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIHdpdGggY29tbWl0IGFlZTc0N2YxOWI0NjBhMGU5ZGEyMGZmMjFlOTBmZGFhYzFjZWMzNTkKICAgIHdoaWNoIGVuYWJsZWQgQ0ZHXzR4eF9HUElPX1RBQkxFIGZvciBQUEM0MDUgYW5kIHVuaW50ZW50aW9uYWxseQogICAgZGlzYWJsZWQgdGhlIHNldHRpbmcgb2YgdGhlIGVtYWMgbm9pc2UgZmlsdGVyIGJpdHMgZm9yIFBQQzQwNUVQIHdoZW4gQ0ZHXzR4eF9HUElPX1RBQkxFIGlzIHNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgQnJ1bm5lciA8c3VwZXIuZmlyZXR3aXN0ZXJAZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2NmUyYzhiMjVjMDRiNzllNWZiMzg1YmM4OTg5YzJkZTdmNjM5OTEKQXV0aG9yOiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KRGF0ZToJV2VkIEZlYiAyMCAxMTo1NDoyMCAyMDA4IC0wNTAwCgogICAgcHBjNHh4OiBSZWNvbmZpZ3VyZSBQTEwgZm9yIDY2N01IeiBwcm9jZXNzb3IgZm9yIFBQQzQ0MEVQeAoKICAgIE9uIFBQQzQ0MEVQeCB3aXRob3V0IGEgYm9vdHN0cmFwIEkyQyBFRVBST00sIHRoZSBQTEwgY2FuIGJlIHJlY29uZmlndXJlZAogICAgYWZ0ZXIgc3RhcnR1cCB0byBjaGFuZ2UgdGhlIHNwZWVkIG9mIHRoZSBjbG9ja3MuIFRoaXMgcGF0Y2ggYWRkcyB0aGUKICAgIG9wdGlvbiBDRkdfUExMX1JFQ09ORklHLiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gNjY3LCB0aGUgQ1BVCiAgICBpbml0aWFsaXphdGlvbiBjb2RlIHdpbGwgcmVjb25maWd1cmUgdGhlIFBMTCB0byBydW4gdGhlIHN5c3RlbSB3aXRoIGEgQ1BVCiAgICBmcmVxdWVuY3kgb2YgNjY3TUh6IGFuZCBQTEIgZnJlcXVlbmN5IG9mIDE2Nk1Ieiwgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4KICAgIGV4dGVybmFsIEVFUFJPTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODdjODQzMWZlMjRkNDgxMjFmMDUzZmU2N2NmZjRjY2ZlMDk3ZDRkMQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE1hciAyNyAwOToxMjo0MCAyMDA4ICswMTAwCgogICAgbmV3LWltYWdlOiBGaXggaG9zdCB0b29sIGJ1aWxkIGJyZWFrYWdlCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDZmYjRiNjQwNTYyYTEwZGFmZjBkYmU1Mzc2MzhkNTExYjViNDg2NTAKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjcgMTA6MjQ6MDMgMjAwOCArMDEwMAoKICAgIHBwYzogU2V0IENGR19NRU1fVE9QX0hJREUgdG8gMCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk0NjI3MzJhM2VjNTUxYzExODYyNDUwOTAyY2Q4ZWUxYmVkZWE2ZDkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMTkgMTA6MjM6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IHRvIFByb2RyaXZlIGFscHIKCiAgICBTaW5jZSB0aGlzIGJvYXJkIHdpbGwgcHJvYmFibHkgYmUgcG9ydGVkIHRvIGFyY2gvcG93ZXJwYyBpbiB0aGUKICAgIG5lYXIgZnV0dXJlLCB3ZSBhZGQgZGV2aWNlIHRyZWUgc3VwcG9ydCBub3cuIFRoaXMgd2F5IHdlIGFyZQogICAgInJlYWR5IiBmb3IgYXJjaC9wb3dlcnBjIGZyb20gbm93IG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MTFlNGY5ZTdmN2I2NzE5ZTRkOTFkN2YwZmM4OTQxMmIxM2I1MTUwCkF1dGhvcjogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBwcm9kcml2ZS5ubD4KRGF0ZToJTW9uIE1hciAxNyAwOToyNzo1NiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBFbmFibGUgY2FjaGUgc3VwcG9ydCBvbiB0aGUgQUxQUiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgoKY29tbWl0IDE0ZjczY2E2NzlmNmZkYjQ0Y2ZmMGI3MzA0ZDQxOWRiNDFhMGFiNjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMTA6MTQ6MTEgMjAwOCArMDEwMAoKICAgIHBwYzogQWRkIENGR19NRU1fVE9QX0hJREUgb3B0aW9uIHRvIGhpZGUgbWVtb3J5IGFyZWEgdGhhdCBkb2Vzbid0IGdldCAidG91Y2hlZCIKCiAgICBJZiBDRkdfTUVNX1RPUF9ISURFIGlzIGRlZmluZWQgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIsIHRoaXMgc3BlY2lmaWVkCiAgICBtZW1vcnkgYXJlYSB3aWxsIGdldCBzdWJ0cmFjdGVkIGZyb20gdGhlIHRvcCAoZW5kKSBvZiByYW0gYW5kIHdvbid0IGdldAogICAgInRvdWNoZWQiIGF0IGFsbCBieSBVLUJvb3QuIEJ5IGZpeGluZyB1cCBnZC0+cmFtX3NpemUgdGhlIExpbnV4IGtlcm5lbAogICAgc2hvdWxkIGdldHMgcGFzc2VkIHRoZSBub3cgImNvcnJlY3RlZCIgbWVtb3J5IHNpemUgYW5kIHdvbid0IHRvdWNoIGl0CiAgICBlaXRoZXIuIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFyY2gvcHBjIGFuZCBhcmNoL3Bvd2VycGMuIE9ubHkgTGludXggYm9hcmQKICAgIHBvcnRzIGluIGFyY2gvcG93ZXJwYyB3aXRoIGJvb3R3cmFwcGVyIHN1cHBvcnQsIHdoaWNoIHJlY2FsY3VsYXRlIHRoZQogICAgbWVtb3J5IHNpemUgZnJvbSB0aGUgU0RSQU0gY29udHJvbGxlciBzZXR1cCwgd2lsbCBoYXZlIHRvIGdldCBmaXhlZAogICAgaW4gTGludXggYWRkaXRpb25hbGx5LgoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGlzIGNvbmZpZyBvcHRpb24gb24gc29tZSBQUEM0NDBFUHggYm9hcmRzIGFzIGEgd29ya2Fyb3VuZAogICAgZm9yIHRoZSBDSElQIDExIGVycmF0YS4gSGVyZSB0aGUgZGVzY3JpcHRpb24gZnJvbSB0aGUgQU1DQyBkb2N1bWVudGF0aW9uOgoKICAgIENISVBfMTE6IEVuZCBvZiBtZW1vcnkgcmFuZ2UgYXJlYSByZXN0cmljdGVkIGFjY2Vzcy4KICAgIENhdGVnb3J5OiAzCgogICAgT3ZlcnZpZXc6CiAgICBUaGUgNDQwRVB4IEREUiBjb250cm9sbGVyIGRvZXMgbm90IGFja25vd2xlZGdlIGFueQogICAgdHJhbnNhY3Rpb24gd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSBjcm9zc2luZyBvdmVyIHRoZQogICAgZW5kLW9mLW1lbW9yeS1yYW5nZSBib3VuZGFyeSwgZXZlbiBpZiB0aGUgc3RhcnRpbmcgYWRkcmVzcyBpcwogICAgd2l0aGluIHZhbGlkIG1lbW9yeSBzcGFjZS4gQW55IHN1Y2ggdHJhbnNhY3Rpb24gZnJvbSBhbnkgUExCNAogICAgbWFzdGVyIHdpbGwgcmVzdWx0IGluIGEgUExCIHRpbWUtb3V0IG9uIFBMQjQgYnVzLgoKICAgIEltcGFjdDoKICAgIEluIGNhc2Ugb2Ygc3VjaCBtaXNhbGlnbmVkIGJ1cnN0cywgUExCNCBtYXN0ZXJzIHdpbGwgbm90CiAgICByZXRyaWV2ZSBhbnkgZGF0YSBhdCBhbGwsIGp1c3QgdGhlIGF2YWlsYWJsZSBkYXRhIHVwIHRvIHRoZQogICAgZW5kIG9mIG1lbW9yeSwgZXNwZWNpYWxseSB0aGUgNDQwIENQVS4gRm9yIGV4YW1wbGUsIGlmIGEgQ1BVCiAgICBpbnN0cnVjdGlvbiByZXF1aXJlZCBhbiBvcGVyYW5kIGxvY2F0ZWQgaW4gbWVtb3J5IHdpdGhpbiB0aGUKICAgIGxhc3QgNyB3b3JkcyBvZiBtZW1vcnksIHRoZSBEQ1UgbWFzdGVyIHdvdWxkIGJ1cnN0IHJlYWQgOAogICAgd29yZHMgdG8gdXBkYXRlIHRoZSBkYXRhIGNhY2hlIGFuZCBjcm9zcyBvdmVyIHRoZQogICAgZW5kLW9mLW1lbW9yeS1yYW5nZSBib3VuZGFyeS4gU3VjaCBhIERDVSByZWFkIHdvdWxkIG5vdCBiZQogICAgYW5zd2VyZWQgYnkgdGhlIEREUiBjb250cm9sbGVyLCByZXN1bHRpbmcgaW4gYSBQTEI0IHRpbWUtb3V0CiAgICBhbmQgdWx0aW1hdGVseSBpbiBhIE1hY2hpbmUgQ2hlY2sgaW50ZXJydXB0LiBUaGUgZGF0YSB3b3VsZAogICAgYmUgaW5hY2Nlc3NpYmxlIHRvIHRoZSBDUFUuCgogICAgV29ya2Fyb3VuZDoKICAgIEZvcmJpZCBhbnkgYXBwbGljYXRpb24gdG8gYWNjZXNzIHRoZSBsYXN0IDI1NiBieXRlcyBvZiBERFIKICAgIG1lbW9yeS4gRm9yIGV4YW1wbGUsIG1ha2UgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGJlbGlldmUgdGhhdAogICAgdGhlIGxhc3QgMjU2IGJ5dGVzIG9mIEREUiBtZW1vcnkgYXJlIGFic2VudC4gQU1DQyBoYXMgYSBwYXRjaAogICAgdGhhdCBkb2VzIHRoaXMsIGF2YWlsYWJsZSBmb3IgTGludXguCgogICAgVGhpcyBwYXRjaCBzZXRzIENGR19NRU1fVE9QX0hJREUgZm9yIHRoZSBmb2xsb3dpbmcgNDQwRVB4IGJvYXJkczoKICAgIGx3bW9uNSwga29yYXQsIHNlcXVvaWEKCiAgICBUaGUgb3RoZXIgcmVtYWluaW5nIDQ0MEVQeCBib2FyZCB3ZXJlIGludGVudGlvbmFsbHkgbm90IGluY2x1ZGVkCiAgICBzaW5jZSBpdCBpcyBub3QgY2xlYXIgdG8gbWUsIGlmIHRoZXkgdXNlIHRoZSBlbmQgb2YgcmFtIGZvciBzb21lCiAgICBvdGhlciBwdXJwb3NlLiBUaGlzIGlzIHVuY2xlYXIsIHNpbmNlIHRoZXNlIGJvYXJkcyBoYXZlIENPTkZJR19QUkFNCiAgICBkZWZpbmVkIGFuZCBldmVuIGNvbW1lbnRzIGxpa2UgdGhpczoKCiAgICBQTUM0NDAuaDoKICAgIC8qIGVzZCBleHBlY3RzIHByYW0gYXQgZW5kIG9mIHBoeXNpY2FsIG1lbW9yeS4KICAgICAqIFNvIG5vIGxvZ2J1ZmZlciBhdCB0aGUgbW9tZW50LgogICAgICovCgogICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gbm90IHVzZSB0aGUgbGFzdCAyNTYgYnl0ZXMgb24gdGhvc2UKICAgIGJvYXJkcyB0b28uIFBhdGNoZXMgZnJvbSB0aGUgYm9hcmQgbWFpbnRhaW5lcnMgYXJlIHdlbGNvbWUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM2NjRiZjhjM2M5YmI5ZTIzNjg5MWYwZDhkZmRhODgzZTg2ZDE1OWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjcgMTA6MDk6MDUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGxpbmtlciBzY3JpcHQgKHJlbW92ZSBib2d1cyBBU1NFUlQpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ1NmEzY2UxNzk2ODhjZGU2MTA3M2EzNjkwZTIxNzAzZDY4ZmFmZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMjUgMTc6NTE6MTMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ29ycmVjdGx5IHBhc3MgcGh5aXNjYWwgRkxBU0ggYmFzZSBhZGRyZXNzIGludG8gZHRiCgogICAgVGhlIHJvdXRpbmUgZnRfYm9hcmRfc2V0dXAoKSBjb25maWd1cmVzIHRoZSBFQkMgTk9SIG1hcHBpbmdzIGZvciB0aGUKICAgIExpbnV4IHBoeXNtYXBfb2YgZHJpdmVyLiBTaW5jZSBvbiA0NjBFWC9HVCB3ZSByZW1hcCB0aGUgRkxBU0ggZnJvbQogICAgMHg0LmZjMDAuMDAwMCB0byAweDQuY2MwMC4wMDAwIGJlY2F1c2Ugb2YgdGhlIG1heC4gMTZNQnl0ZSBib290LUNTCiAgICBwcm9ibGVtLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIGNvcnJlY3RlZCBhZGRyZXNzIGhlcmUgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5YWQzMTk4OWRlMTJjZTVjNjdiMDdjNDg2N2VhZDQ3NDY1NjU1YzRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDE5IDE2OjM1OjEyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eF9lbmV0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGM5ZTg1NTczNGM1MjM5MDAzMjJhN2MzY2RkOTA5OWI0ZjUxYjUxZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAxOSAxNjoyMDo0OSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQU1DQyBHbGFjaWVyIDQwNkdUIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQU1DQyBHbGFjaWVyIDQ2MEdUIGV2YWwgYm9hcmQuCiAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIHRvIHRoZSBDYW55b25sYW5kcyBib2FyZCBhcmUgbGlzdGVkIGhlcmU6CgogICAgLSA0IGV0aGVybmV0IHBvcnRzIGluc3RlYWQgb2YgMgogICAgLSBubyBTQVRBIHBvcnQKICAgIC0gbm8gVVNCIHBvcnQKCiAgICBDdXJyZW50bHkgRU1BQzIrMyBhcmUgbm90IHdvcmtpbmcuIFRoaXMgd2lsbCBiZSBmaXhlZCBpbiBhIGxhdGVyCiAgICByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkOGJkNjQzMTQxYWY0NzEwZDdmMWI2OWJiYWI2Yjc2MGRlMGFmMGExCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDI3IDA4OjQ3OjI2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1hc2sgJ3ZlYycgd2l0aCAweDFmIGluIHVpY19pbnRlcnJ1cHQoKSBmb3IgYml0IHNldC9jbGVhcgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiOTY3MGRkODViZTZlMDQ5NmVmMmUyMzEwNDNjMjNjYWQ5YjFkOTAzCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDIxOjA1OjQzIDIwMDggKzAxMDAKCiAgICBGaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcgaXNzdWUKCiAgICBDdXJyZW50bHkgVS1Cb290IGJ1aWxkaW5nIGluIHNvbWUgZXh0ZXJuYWwgZGlyZWN0b3J5CiAgICBkb2Vzbid0IHdvcmsuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBkNGVlNzExZDhhNWMzNjZlZTNmODU3YzI2YjkyN2QxMmU2NjYxNGZmCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE4OjEzOjMzIDIwMDggKzAxMDAKCiAgICBSRUFETUU6IHVwZGF0ZSBkb2N1bWVudGF0aW9uIChhdmFpbGFiaWxpdHksIGxpbmtzLCBldGMuKQoKICAgIEZpeCB0eXBvIGluIFJFQURNRQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCBlODEzZWFlM2JmZWJhOWMwYmRhOWQxYmY5ZmMzZDA4MWY3OTA5NzJmCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE3OjQ3OjQ0IDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgaW4gY21kX3VzYi5jCgogICAgVGhpcyBwYXRjaCBmaXhlcyBjb21waWxhdGlvbiBlcnJvcgogICAgY21kX3VzYi5jOiBJbiBmdW5jdGlvbiAnZG9fdXNiJzoKICAgIGNtZF91c2IuYzo1NTI6IGVycm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGQ4YzgyZGI0ODJkNmI1MzVkMTJiNDE5ZDY0NDBiODhiZjcwOTFjOWIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDE0IDE3OjQ1OjI5IDIwMDggLTA1MDAKCiAgICBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgSTJDIGJ1cyBzcGVlZCBpbiBmc2xfaTJjLmMKCiAgICBBZGQgc3VwcG9ydCB0byB0aGUgRnJlZXNjYWxlIEkyQyBkcml2ZXIgKGZzbF9pMmMuYykgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nCiAgICB0aGUgSTJDIGJ1cyBzcGVlZC4JQ3VycmVudCA4WzM1Nl14eCBib2FyZHMgZGVmaW5lIHRoZSBDRkdfSTJDX1NQRUVEIG1hY3JvLAogICAgYnV0IGZzbF9pMmMuYyBpZ25vcmVzIGl0IGFuZCB1c2VzIGNvbnNlcnZhdGl2ZSB2YWx1ZSB3aGVuIHByb2dyYW1taW5nIHRoZQogICAgSTJDIGJ1cyBzcGVlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMDQ5Y2M3ZjcxYzBkODc1ZThmNTA5OWQxZWQyMzY2NmE4MmI4ZjhlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAyNyAwMDowMzo1NyAyMDA4ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZkMGIxZmUzYzM4OGE3N2U4ZmUwMGNkZDkzMGNhMzE3YTkxMTk4ZDQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTU6MzIgMjAwOCArMDgwMAoKICAgIGRyaXZlcnM6IGFkZCB0aGUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIFNBVEEgY29udHJvbGxlcgoKICAgIEFkZCB0aGUgRnJlZXNjYWxlIG9uLWNoaXAgU0FUQSBjb250cm9sbGVyIGRyaXZlciB0byB1LWJvb3QsCiAgICBUaGUgU0FUQSBjb250cm9sbGVyIGlzIHVzZWQgb24gdGhlIDgzN3ggYW5kIDgzMTUgdGFyZ2V0cywKICAgIFRoZSBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gbG9hZCBrZXJuZWwsIGZzIGFuZCBkdGIuCgogICAgVGhlIGZlYXR1cmVzIGxpc3Q6CiAgICAtIDEuNS8zIEdicHMgbGluayBzcGVlZAogICAgLSBMQkE0OCwgTEJBMjggc3VwcG9ydAogICAgLSBETUEgYW5kIEZQRE1BIHN1cHBvcnQKICAgIC0gVHdvIHBvcnRzIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJlZGU4N2Y0Yzg3YzNjY2Q4NjhjYzYwZWJmNzkyZTA1NjBjNmQwMjQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTQ6NDQgMjAwOCArMDgwMAoKICAgIGF0YTogYWRkIHRoZSByZWFkbWUgZm9yIFNBVEEgY29tbWFuZCBsaW5lCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDU0MDgxY2Q0NzllNTQyZmMzOTliOGE0MDY1MWZmMTFhMWFkODQ5CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjUzOjI0IDIwMDggKzA4MDAKCiAgICBhdGE6IGVuYWJsZSB0aGUgc2F0YSBpbml0aWFsaXplIG9uIGJvb3QgdXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY5Mzg2MzgzYzVjMmIzMjNjNjY0OTViMGIwY2VmNmE5NzE0ZDgzYmYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgMjYgMjI6NTI6MzYgMjAwOCArMDgwMAoKICAgIGF0YTogYWRkIHRoZSBmaXMgc3RydWN0IGZvciBTQVRBCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZmM2NjRlODBkZmIyZTE3ZGUwZGY1YWQzOWU5MWEwMmU5YzM2MWJjCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjUxOjQ0IDIwMDggKzA4MDAKCiAgICBhdGE6IGFkZCB0aGUgbGliYXRhIHN1cHBvcnQKCiAgICBhZGQgc2ltcGxlIGxpYmF0YSBzdXBwb3J0IGluIHUtYm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGU5YmI0MzQyOWU1MGRmNTVmYTQxOTMyY2JlNjU4NDFmZjU3OTIyMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo1MDo0NSAyMDA4ICswODAwCgogICAgYXRhOiBtYWtlIHRoZSBhdGFfcGlpeCBkcml2ZXIgdXNpbmcgbmV3IFNBVEEgZnJhbWV3b3JrCgogICAgb3JpZ2luYWwgYXRhX3BpaXggZHJpdmVyIGlzIHVzaW5nIElERSBmcmFtZXdvcmssIG5vdCByZWFsCiAgICBTQVRBIGZyYW1ld29yay4gRm9yIG5vdywgdGhlIGF0YV9waWl4IGRyaXZlciBpcyBvbmx5IHVzZWQKICAgIGJ5IHg4NiBzYzUyMF9jZHAgYm9hcmQuIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGF0YV9waWl4IGRyaXZlcgogICAgdXNlIHRoZSBuZXcgU0FUQSBmcmFtZXdvcmssIHNvCgogICAgLSByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29tbWFuZCBzdHVmZgogICAgLSByZW1vdmUgdGhlIENPTkZJR19DTURfSURFIGRlZmluZSBpbiB0aGUgc2M1MjBfY2RwLmgKICAgIC0gYWRkIHRoZSBDT05GSUdfQ01EX1NBVEEgZGVmaW5lIHRvIHNjNTIwX2NkcC5oCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNzA1N2I1MjljM2MzY2I5YzBhYzkwNjA2ODZhNDA2OGYxNDkxYmJlCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDI2IDIyOjQ5OjQ0IDIwMDggKzA4MDAKCiAgICBhdGE6IGFkZCB0aGUgc3VwcG9ydCBmb3IgU0FUQSBmcmFtZXdvcmsKCiAgICAtIGFkZCB0aGUgU0FUQSBmcmFtZXdvcmsKICAgIC0gYWRkIHRoZSBTQVRBIGNvbW1hbmQgbGluZQoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODNjN2Y0NzBhNGNlOTRmMzM2MDBmMTFhZTg1Y2U0ZGNmMDBhYTkwYwpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo0ODoxOCAyMDA4ICswODAwCgogICAgYXRhOiBtZXJnZSB0aGUgaGVhZGVyIG9mIGF0YV9waWl4IGRyaXZlcgoKICAgIG1vdmUgdGhlIHNhdGEuaCBmcm9tIGluY2x1ZGUvIHRvIGRyaXZlcnMvYmxvY2svYXRhX3BpaXguaAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWVlZjYyODA0ZDk2OTU0MjViMjRjODdiNDZhNjFhN2ZhNzRhZmVlMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAyNiAyMjo0NzowNiAyMDA4ICswODAwCgogICAgYXRhOiBtZXJnZSB0aGUgYXRhX3BpaXggZHJpdmVyCgogICAgbW92ZSB0aGUgY21kX3NhdGEuYyBmcm9tIGNvbW1vbi8gdG8gZHJpdmVycy9hdGFfcGlpeC5jLAogICAgdGhlIGNtZF9zYXRhLmMgaGF2ZSBzb21lIHBhcnQgb2YgYXRhX3BpaXggY29udHJvbGxlciBkcml2ZXJzLgogICAgY29uc29saWRhdGUgdGhlIGRyaXZlciB0byBoYXZlIGJldHRlciBmcmFtZXdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiOWU3NDllOTUzNTRmMzNlYjVkYzY2NTNjNmRiN2Q1MDJhZGI5NWZlCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNiAxODoyNjo0MyAyMDA4ICswMTAwCgogICAgVVNCLCBTdG9yYWdlOiBmaXggYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQKICAgIGY2YjQ0ZTBlNGQxOGZlNTA3ODMzYTBmNzZkMjRhOWFhNzJjMTIzZjEgdGhhdCB3aWxsIGNhdXNlIHVzYl9zdG9yX2luZm8KICAgIHRvIG9ubHkgcHJpbnQgb25seSBpbmZvcm1hdGlvbiBvbiBvbmUgc3RvcmFnZSBkZXZpY2UsIGJ1dCBub3QgZm9yCiAgICBtdWx0aXBsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDg0MWU1ZWRkMTYyM2YzZmVjYjZiZmZjNWMyZjkzOGVkN2E5NDczNjAKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMTc6NDc6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxhdGlvbiBlcnJvciBpbiBjbWRfdXNiLmMKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGNvbXBpbGF0aW9uIGVycm9yCiAgICBjbWRfdXNiLmM6IEluIGZ1bmN0aW9uICdkb191c2InOgogICAgY21kX3VzYi5jOjU1MjogZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IGRkNmM5MTBhYWRmMjdjODIyZjE3Yjg3ZWFlMWE5YmQwYjJlM2FhMTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDA4OjUzOjUzIDIwMDggLTA1MDAKCiAgICA4NXh4OiBBZGQgY3B1X21wX2xtYl9yZXNlcnZlIGhlbHBlciB0byByZXNlcnZlIGJvb3QgcGFnZQoKICAgIFByb3ZpZGUgYSBib2FyZF9sbWJfcmVzZXJ2ZSBoZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHdlIHJlc2VydmUKICAgIHRoZSBwYWdlIG9mIG1lbW9yeSB3ZSBhcmUgdXNpbmcgZm9yIHRoZSBib290IHBhZ2UgdHJhbnNsYXRpb24gY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc5Njc5ZDgwMDIxYWIwOTVlNjM5ZTI1MGNhNDcyZmU1MjZkYTAyZTIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTWFyIDI2IDA4OjM0OjI1IDIwMDggLTA1MDAKCiAgICA4NXh4OiBVcGRhdGUgbXVsdGljb3JlIGJvb3QgbWVjaGFuaXNtIHRvIGVQQVBSIHYwLjgxIHNwZWMKCiAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIG5lZWRlZCB0byBiZSBpbmxpbmUgd2l0aCBlUEFQUiB2MC44MToKCiAgICAqIHI0LCByNSBhbmQgbm93IGFsd2F5cyBzZXQgdG8gMCBvbiBib290IHJlbGVhc2UKICAgICogcjcgaXMgdXNlZCB0byBwYXNzIHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIG1hcCBhcmVhIChJTUEpCiAgICAqIEVQQVBSX01BR0lDIHZhbHVlIGNoYW5nZWQgZm9yIGJvb2stZSBwcm9jZXNzb3JzCiAgICAqIGNoYW5nZXMgaW4gdGhlIHNwaW4gdGFibGUgbGF5b3V0CiAgICAqIHNwaW4gdGFibGUgc3VwcG9ydHMgYSA2NC1iaXQgcGh5c2ljYWwgcmVsZWFzZSBhZGRyZXNzCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyNWVlZGIyYzE5NThhMTMxMTBjN2RlMWZjODA5YjYyNDA1M2NjNjljCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciAxOSAxNTowMjowNyAyMDA4IC0wNTAwCgogICAgRlNMOiBDbGVhbiB1cCBib2FyZC9mcmVlc2NhbGUvY29tbW9uL01ha2VmaWxlCgogICAgRWFjaCBmaWxlIHRoYXQgY2FuIGJlIGJ1aWx0IGhlcmUgbm93IGZvbGxvd3Mgc29tZQogICAgQ09ORklHXyBvcHRpb24gc28gdGhhdCB0aGV5IGFyZSBhcHByb3ByaWF0ZWx5IGJ1aWx0CiAgICBvciBub3QsIGFzIG5lZWRlZC4JQW5kIENPTkZJR18gZGVmaW5lcyB3ZXJlIGFkZGVkCiAgICB0byB2YXJpb3VzIGJvYXJkIGNvbmZpZyBmaWxlcyB0byBtYWtlIHN1cmUgdGhhdCBoYXBwZW5zLgoKICAgIFRoZSBvdGhlciBib2FyZC9mcmVlc2NhbGUvKi9NYWtlZmlsZXMgbm8gbG9uZ2VyIG5lZWQKICAgIHRvIHJlYWNoIHVwIGFuZCBvdmVyIGludG8gLi4vY29tbW9uIHRvIGJ1aWxkIHRoZWlyCiAgICBpbmRpdmlkdWFsbHkgbmVlZGVkIGZpbGVzIGFueSBtb3JlLgoKICAgIEJvYXJkcyB0aGF0IGFyZSBDRFMgc3BlY2lmaWMgd2VyZSByZW5hbWVkIHdpdGggY2RzXyBwcmVmaXguCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNWFmNGIzNThhN2NhYTljMGFhMzc0ZDRkODk0YmY3NjJlYzM3NjY5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMjowMDoyNyAyMDA4IC0wNjAwCgogICAgODV4eDogRml4IG1lcmdlIGR1cGxpY2F0aW9uCgogICAgZnRfZml4dXBfY3B1KCkgZ290IGR1cGxpY2F0ZWQgaW4gc29tZSBtZXJnZSBzbmFmdS4JUmVtb3ZlIHRoZSBkdXBsaWNhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA1ODkzYjNkMGE0MDg0Zjg3YTA2YTVkM2RjMDNkYjkxMjA2ODE4OTQxCkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDEyIDE2OjM1OjA3IDIwMDggLTA2MDAKCiAgICA4NXh4OiBFeHBhbmQgQ0NTUiBzcGFjZSB3aXRoIG1vcmUgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzZTc3ZmE1MzU5YjNmOWY1OWU0ZTk0NmI0NmQ1N2E1MzA1N2NjODUKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxODowNTowOCAyMDA4IC0wNjAwCgogICAgODV4eDogU3BlZWQgdXAgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpCgogICAgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpIHVzZWQgZ2V0X3N5c19pbmZvKCkgZWFjaCB0aW1lIHRoZXkgd2VyZQogICAgY2FsbGVkLiAgSG93ZXZlciwgZ2V0X3N5c19pbmZvKCkgcmVjYWxjdWxhdGVzIGV4dHJhbmVvdXMgaW5mb3JtYXRpb24gd2hlbgogICAgY2FsbGVkIGVhY2ggdGltZS4gIEhhdmUgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpIHJldHVybiBtZW1vaXplZAogICAgdmFsdWVzIGZyb20gZ2xvYmFsX2RhdGEgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU5ZWE2Nzk5MThmYmM5YTUzZmEyZjJhOTA0YWFjODc0ZWE3MzYwMzYKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxNjo0NjoyNyAyMDA4IC0wNjAwCgogICAgODV4eDogU2hvdyBERFIgbWVtb3J5IGRhdGEgcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbWVtb3J5IGNsb2NrIGZyZXF1ZW5jeS4KCiAgICBTaG93IHRoZSBERFIgbWVtb3J5IGRhdGEgcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbWVtb3J5IGNsb2NrCiAgICBmcmVxdWVuY3kuCUZvciBERFIvRERSMiBtZW1vcmllcyB0aGUgbWVtb3J5IGRhdGEgcmF0ZSBpcyAyeCB0aGUKICAgIG1lbW9yeSBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDU5MTkzM2NhNmVhYmM0NDBlNmVkNjk2NzIzM2FhZjU2ZmNlNDY0YTMKQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxNjo0NDo1MyAyMDA4IC0wNjAwCgogICAgODV4eDogZ2V0X3RiY2xrKCkgc3BlZWQgdXAgYW5kIHJvdW5kaW5nIGZpeAoKICAgIFNwZWVkIHVwIGdldF90YmNsaygpIGJ5IHJlZmVyZW5jaW5nIHByZS1jb21wdXRlZCBidXMgY2xvY2sKICAgIGZyZXF1ZW5jeSB2YWx1ZSBmcm9tIGdsb2JhbCBkYXRhIGluc3RlYWQgb2Ygc3lzX2luZm9fdC4gIEZpeAogICAgcm91bmRpbmcgb2YgcmVzdWx0IHRvIG5lYXJlc3Q7IHByZXZpb3VzbHkgaXQgd2FzIHJvdW5kaW5nCiAgICB1cHdhcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMWNlZDEyMTYwMGIyMDYwYWIyZmY5ZjBmZGRkOTQyMWZkNzBhMGRjNgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiA2IDAxOjE5OjQwIDIwMDggLTA2MDAKCiAgICBVcGRhdGUgU1ZSIG51bWJlcnMgdG8gZXhwYW5kIHN1cHBvcnQKCiAgICBGU0wgaGFzIHRha2VuIHRvIHVzaW5nIFNWUlsxNjoyM10gYXMgYW4gU09DIHN1Yi12ZXJzaW9uIGZpZWxkLiAgVGhpcwogICAgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBjZXJ0YWluIHZhcmlhbnRzIHdpdGhpbiBhbiBTT0MgZmFtaWx5LiAgVG8KICAgIGFjY291bnQgZm9yIHRoaXMsIHdlIGFkZCB0aGUgU1ZSX1NPQ19WRVIoKSBtYWNybywgYW5kIHVwZGF0ZSB0aGUgU1ZSXyoKICAgIGNvbnN0YW50cyB0byByZWZsZWN0IHRoZSBsYXJnZXIgdmFsdWUuICBXZSBhbHNvIGFkZCBTVlIgbnVtYmVycyBmb3IgYWxsCiAgICBvZiB0aGUgY3VycmVudCB2YXJpYW50cy4gIEZpbmFsbHksIHRvIG1ha2UgdGhpbmdzIG5lYXRlciwgcmF0aGVyIHRoYW4KICAgIHVzZSBhbiBlbm9ybW91cyBzd2l0Y2ggc3RhdGVtZW50IHRvIHByaW50IG91dCB0aGUgQ1BVIHR5cGUsIHdlIGNyZWF0ZQogICAgYW5kIGFycmF5IG9mIFNWUi9uYW1lIHBhaXJzICh1c2luZyBhIG1hY3JvKSwgYW5kIHByaW50IG91dCB0aGUgQ1BVIG5hbWUKICAgIHRoYXQgbWF0Y2hlcyB0aGUgU1ZSIFNPQyB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiODNlZWY0NDBjZjNjZWY4MTYxNzJjY2JiNTg5N2NjZDhlNDAzY2YzCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDYgMDE6MTI6NTcgMjAwOCAtMDYwMAoKICAgIEFkZCB0aGUgRnJlZXNjYWxlIFBDSSBkZXZpY2UgSURzCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdhZmYwYzA1MWFkMDYxMzE3MWNmMmI5OTQxZWU0ODY3NWM2MmU3Y2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgRmViIDE0IDExOjA0OjIzIDIwMDggLTA2MDAKCiAgICA4NXh4OiBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aWNvcmUgYm9vdCBtZWNoYW5pc20KCiAgICBBZGRlZCB0aGUgY3B1IGNvbW1hbmQgdGhhdCBwcm92aWRlcyBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIGdldCBzdGF0dXMsCiAgICByZXNldCwgYW5kIHJlbGVhc2Ugc2Vjb25kYXJ5IGNvcmVzIGluIG11bHRpY29yZSBwcm9jZXNzb3JzLgoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBlUEFQUiBkZWZpbmVkIHNwaW4tdGFibGUgbWVjaGFuaXNtIG9uIDg1eHguCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYzJiNzRmZmQzNmYwMmM2MTIzNzI1ZTdjMjUzM2RkMmRlYWY0YjY0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAxNjo0ODozMyAyMDA4IC0wNjAwCgogICAgODV4eDogQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGljb3JlIGJvb3QgbWVjaGFuaXNtCgogICAgQWRkZWQgdGhlIGNwdSBjb21tYW5kIHRoYXQgcHJvdmlkZXMgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBnZXQgc3RhdHVzLAogICAgcmVzZXQsIGFuZCByZWxlYXNlIHNlY29uZGFyeSBjb3JlcyBpbiBtdWx0aWNvcmUgcHJvY2Vzc29ycy4KCiAgICBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyB0aGUgZVBBUFIgZGVmaW5lZCBzcGluLXRhYmxlIG1lY2hhbmlzbSBvbiA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjY5NzY2ZTRiNWQ0N2VjZDNhYTU4Njc3YThkYTg3NTY5NGYzNjRmMgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMzAgMTQ6NTU6MTQgMjAwOCAtMDYwMAoKICAgIDg1eHg6IEFkZCB0aGUgY29uY2VwdCBvZiBDRkdfQ0NTUkJBUl9QSFlTCgogICAgV2hlbiB3ZSBnbyB0byAzNi1iaXQgcGh5c2ljYWwgYWRkcmVzc2VzIHdlIG5lZWQgdG8ga2VlcCB0aGUgY29uY2VwdCBvZgogICAgdGhlIHBoeXNpY2FsIENDU1JCQVIgYWRkcmVzcyBzZXBlcmF0ZSBmcm9tIHRoZSB2aXJ0dWFsIG9uZS4KCiAgICBGb3IgdGhlIG1ham9yaXR5IG9mIGJvYXJkcyBDRkdfQ0NTQkFSX1BIWVMgPT0gQ0ZHX0NDU1JCQVIKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDViNWViOWNhNWI3NzhmNzYzYmNmMzMyNjk3YjM1Y2MxZTc0NzYyNmUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDE1OjM4OjQ3IDIwMDggKzAxMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRhODgwOGRmN2E5Y2VmNWEzZDJlZTI4NmVmOWViZjlkZTE3ODA2NjAKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJV2VkIE1hciAyNiAxMzowMjoxMyAyMDA4ICswMTAwCgogICAgQWRkIENGR19SVENfRFMxMzM3X05PT1NDIHRvIHR1cm4gb2ZmIE9TQyBvdXRwdXQKCiAgICBUaGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgUlRDIERTMTMzNyBrZWVwcyB0aGUgT1NDCiAgICBvdXRwdXQsIDMyLDc2OCBIeiwgb24uIFRoaXMgYWRkIENGR19SVENfRFMxMzM3X05PT1NDIHRvCiAgICB0dXJuIGl0IG9mZi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KCmNvbW1pdCA0MzhhNGMxMTI2MGI0ZWE5ODA1MDM5YjBiNGY5MmY5ZGY1MzA2YjAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyNiAxMTo0ODo0NiAyMDA4ICswMTAwCgogICAgQ2xlYW51cCBjb2Rpbmcgc3R5bGUsIHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDIxOGNhNzI0YzA4Y2E4YTY0OWYwOTE3Y2YyMDFjZjIzZDRiMzNmMzkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDI2IDEwOjQwOjEyIDIwMDggKzAxMDAKCiAgICBSRUFETUU6IHVwZGF0ZSBkb2N1bWVudGF0aW9uIChhdmFpbGFiaWxpdHksIGxpbmtzLCBldGMuKQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjZiNDRlMGU0ZDE4ZmU1MDc4MzNhMGY3NmQyNGE5YWE3MmMxMjNmMQpBdXRob3I6IEFyYXMgVmFpY2hhcyA8YXJhc3ZAbWFndGVjaC5jb20uYXU+CkRhdGU6CVR1ZSBNYXIgMjUgMTI6MDk6MDcgMjAwOCArMTEwMAoKICAgIFVTQiBTdG9yYWdlLCBhZGQgbWVhbmluZ2Z1bCByZXR1cm4gdmFsdWUKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlICJ1c2Igc3RvcmFnZSIgY29tbWFuZCB0byByZXR1cm4gc3VjY2VzcyBpZiBpdAogICAgZmluZHMgYSBVU0Igc3RvcmFnZSBkZXZpY2UsIG90aGVyd2lzZSBpdCByZXR1cm5zIGVycm9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMThlNjlhMzVlZmJiMDc4NDAzZGIwYzAwNjM5ODY0NzBkYWQ3ZDA4MgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDE0IDIzOjIwOjE4IDIwMDggKzAzMDAKCiAgICA4M3h4L2ZkdF9zdXBwb3J0OiBsZXQgdXNlciBzcGVjaWZpeSBGU0wgVVNCIER1YWwtUm9sZSBjb250cm9sbGVyIHJvbGUKCiAgICBMaW51eCB1bmRlcnN0YW5kcyAiaG9zdCIgKGRlZmF1bHQpLCAicGVyaXBoZXJhbCIgYW5kICJvdGciIChicm9rZW4pLgogICAgVGhvdWdoLCBVLUJvb3QgZG9lc24ndCByZXN0cmljdCBkcl9tb2RlIHZhcmlhYmxlIHRvIHRoZXNlIHZhbHVlcyAodGhpbmsKICAgIG9mIHJlbmFtZXMgaW4gZnV0dXJlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzc2MDQ3ODNiMjM2ZTM2OGYyMjVlZmI3YjNlZmI0MThmZTIwYjQwNApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglGcmkgTWFyIDE0IDIzOjIwOjMwIDIwMDggKzAzMDAKCiAgICB0c2VjOiBmaXggbGluayBkZXRlY3Rpb24gZm9yIHRoZSBSVEw4MjExQiBQSFkKCiAgICBSVEw4MjExQiBzZXRzIGxpbmsgc3RhdGUgcmVnaXN0ZXIgYWZ0ZXIgYXV0b25lZ290aWF0aW9uIGNvbXBsZXRlLAogICAgc28gd2l0aCBib290ZGVsYXk9MCBSVEw4MjExQiB3aWxsIHJlcG9ydCBsYWNrIG9mIHRoZSBsaW5rLgoKICAgIFRvIGZpeCB0aGlzLCB3ZSBzaG91bGQgd2FpdCBmb3IgYW5lZyB0byBjb21wbGV0ZSwgZXZlbiBpZiB0aGUKICAgIGxpbmsgaXMgY3VycmVudGx5IGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmYTljYmIwMGRjODNmY2YxNzUwNDJiNmYyMGMyYzliY2U5YTE1ZjQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NzowOSAyMDA4ICswMzAwCgogICAgbXBjODN4eDogYWRkICJmc2wsc29jIiBhbmQgImZzbCxpbW1yIiBjb21wYXRpYmxlIGZpeHVwcwoKICAgIGRldmljZV90eXBlID0gInNvYyIgaXMgYmVpbmcgZGVwcmVjYXRlZCwgbmV3ZXIgZGV2aWNlIHRyZWVzIHdpbGwgdXNlCiAgICAiZnNsLHNvYyIgYW5kL29yICJmc2wsaW1tciIgZm9yIHRoZSBzb2Mgbm9kZXMuCgogICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgY2xvY2stZnJlcXVlbmN5IHByb3BlcnR5IGZvciBzb2Mgbm9kZXMgKHRoZSBzYW1lCiAgICB2YWx1ZSBhcyBidXMtZnJlcXVlbmN5KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA1MDdlMmQ3OWM5MTQ0MWEwYmIyY2QzZDBjMzFjOGJmZTNmOGNlYzA3CkF1dGhvcjogSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxMzowMDo1OSAyMDA4IC0wNDAwCgogICAgTW9kaWZpZWQgdGhlIEREUiBTRFJBTSBjbG9jayBjb250cm9sIHJlZ2lzdGVyIHRvIGRlbGF5IE1DSy9NQ0tfQiAzLzQgY2xvY2sKCiAgICBXaXRoIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiAxLzIgY2xvY2sgY3ljbGUgZGVsYXksIHRoZSBzeXN0ZW0gcmFuIHJlbGF0aXZlbHkKICAgIHN0YWJsZSBleGNlcHQgd2hlbiB3ZSBydW4gYmVuY2htYXJrcyB0aGF0IGFyZSBpbnRlbnNpdmUgdXNlcnMgb2YgbWVtb3J5LgogICAgV2hlbiBJIHJ1biBzYW1iYSBjb25uZWN0ZWQgZGlzayB3aXRoIGEgSERCRU5DSCB0ZXN0LCB0aGUgc3lzdGVtIGxvY2tzLXVwCiAgICBvciByZWJvb3RzIHNwb3JhZGljYWxseS4KCiAgICBTaWduZWQtb2ZmIGJ5OiBKb2UgRCdBYmJyYWNjaW8gPEpvZS5EJ2FiYnJhY2Npb0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE3YmEzMmQ0ODBhODZkYjVkYjhkY2Q4Y2E2NmIyMWI0Y2FkZGE5MjMKQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxMjo0NDoxMyAyMDA4IC0wNTAwCgogICAgbXBjODN4eDogU2V0IFBDSSBJL08gYnVzLWFkZHJlc3MgYmFzZSB0byB6ZXJvLgoKICAgIFRoZSBkZXZpY2UgdHJlZXMgZm9yIHRoZXNlIGJvYXJkcyBkZXNjcmliZSBQQ0kgSS9PIGFzIHN0YXJ0aW5nIGZyb20KICAgIGFkZHJlc3MgemVybyBmcm9tIHRoZSBkZXZpY2UncyBwZXJzcGVjdGl2ZS4KCiAgICBQbGFjaW5nIEkvTyBlbHNld2hlcmUgbWF5IGNhdXNlIHByb2JsZW1zIHdpdGggY2VydGFpbiBQQ0kgYm9hcmRzLCBhbmQgbWF5CiAgICBjYXVzZSBwcm9ibGVtcyB3aXRoIExpbnV4LgoKICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY3MDBlN2RmN2ZlY2YyZDM3NjVhZTU2OGNlNzdjZTc4OGNkZTRmM2UKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NzowNSAyMDA4ICswMzAwCgogICAgbXBjODN4eDogTVBDODM2MEUtUkRLOiB1c2UgMzMuMygzKU1IeiBDTEtJTi9TWVNfQ0xLCgogICAgQXQgbGVhc3Qgb24gdGhlICIzM01IeiBQaWxvdCIgYm9hcmQgY3J5c3RhbCBpcyBhY3R1YWxseSAzMy4zTUh6LgogICAgVGhpcyBwYXRjaCBmaXhlcyAic3lzdGVtIHRpbWUgZHJpZnRpbmciIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgM2EwY2ZkZDU3NmRjOWIxNmQxNDY4ZDM3MzM5MTgyNjA3YzY5N2ZiNwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ3OjAyIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGRlZmluZSBDT05GSUdfT0ZfU1RET1VUX1ZJQV9BTElBUwoKICAgIFRoaXMgaXMgbmVlZGVkIHRvIHVwZGF0ZSAvY2hvb3Nlbi9saW51eCxzdGRvdXQtcGF0aCBwcm9wZXJseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAzNDE5ZWI2MmYwODhkN2EyMmYxZDJhM2NlYmY3NmI3N2U0MDhiNWI5CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDc6MDAgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IE1QQzgzNjBFLVJESzogYWRkIGRoY3AgY29tbWFuZAoKICAgIFBsdXMgbW9kaWZ5IGVudmlyb25tZW50IHRvIHVzZSBpdCBhbmQgcmVtb3ZlIGJvb3RmaWxlIGVudiB2YXJpYWJsZSwKICAgIGl0IGlzIGludGVybmFsIGFuZCBDT05GSUdfQk9PVEZJTEUgaXMgdXNlZCBmb3IgdGhlc2UgcHVycG9zZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgZDg5MmIyZGJiNDA4N2EyNjc3OGJmZDQyNDcwYzNlYTdkMGUyYjZhYQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjU3IDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IHJld29yayBkZHIgc2V0dXAsIGVuYWJsZSBlY2MKCiAgICBDdXJyZW50IEREUiBzZXR1cCBlYXNpbHkgY2F1c2VzIG1lbW9yeSBjb3JydXB0aW9uLCB0aGlzIHBhdGNoIGZpeGVzIGl0LgoKICAgIEFsc28gZml4IFRJTUlOR19DRkcwX01SU19DWUMgZGVmaW5pdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBkNDdkNDljYzM3YTM4ZjI3MTlhM2UxYjliYmUwOGFjODEwY2YyZDlhCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6NTMgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IE1QQzgzNjBFLVJESzogY29uZmlndXJlIHBhcmlvIHBpbnMgZm9yIEFENzg0MyBhbmQgRkhDSQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBxZSBwYXJpbyBwaW5zIGNvbmZpZ3VyYXRpb24gZm9yIEFENzg0MyBBREMvVG91Y2hzY3JlZW4KICAgIGNvbnRyb2xsZXIgYW5kIEZIQ0kgKFFFIFVTQikuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgN2FkOTU5NDkwOTYyZTY4NDI2NDhkODdkNGJkNzk1ZWE2Y2RjY2U2NwpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjUxIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGFkZCBzdXBwb3J0IGZvciBOQU5ECgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgOWEzZTgzMmFlYjQ5MTg2MWQwMjk5OTEyNDE1NzJlYmRmNGI1YjYxYgpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDIwOjQ2OjQ2IDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IHVzZSBSR01JSV9SWElEIGludGVyZmFjZSBtb2RlCgogICAgVGhpcyBpcyBuZWVkZWQgZm9yIEJDTSBQSFlzIHRvIHdvcmsgb24gdGhpcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAzMDA2MTVkYzVkOWIwYTIwMjJmYmM2YWYwYzEzMTU5ZTMzZmQ3NTJlCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6MzQgMjAwOCArMDMwMAoKICAgIHVlYzogYWRkIHN1cHBvcnQgZm9yIEJyb2FkY29tIEJDTTU0ODEgR2lnYWJpdCBQSFkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgQnJvYWRjb20gQkNNNTQ4MSBQSFkuCgogICAgUlhELVJYQyBkZWxheSBxdWlyayBjb21lcyBmcm9tIE1QQzgzNjBFLVJESyBCU1Agc291cmNlLCBhdXRob3IgaXMKICAgIFBldGVyIEJhcmFkYSA8cGV0ZXJiQGxvZ2ljcGQuY29tPi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA2YTYwMGMzYTE4NzZiYzIwMzQ0NWRmNGYwZmQ2YjEyNjQ4MjU5NjY2CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMjA6NDY6MjggMjAwOCArMDMwMAoKICAgIHVlYzogYWRkIHN1cHBvcnQgZm9yIFJHTUlJX1JYSUQgaW50ZXJmYWNlIG1vZGUKCiAgICBQSFkgZHJpdmVycyB3aWxsIHVzZSBpdCB0byBzZXR1cCBzb2Z0d2FyZSBkZWxheSBiZXR3ZWVuIFJYRCBhbmQgUlhDCiAgICBzaWduYWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDkxY2RhYTNhOWQ3NTYyYjg2OWQ5Njc3NGU5YzlkZGYxNDJjMDg0OGQKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAyMDo0NjoyNCAyMDA4ICswMzAwCgogICAgdWVjOiBhZGQgc3VwcG9ydCBmb3IgZ2JpdCBtaWkgc3RhdHVzIHJlYWRpbmdzCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Cgpjb21taXQgYWFiY2U3ZmI1MDVmZmU1NWViZjNiZjRkY2FmZGFlOTdhNTgxNTU4ZApBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gTWFyIDI0IDE3OjQwOjQ3IDIwMDggKzAzMDAKCiAgICA4M3h4OiBkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMgZm9yIHRoZSBNUEM4MzdYRVJEQiBib2FyZHMKCiAgICBUaGlzIGlzIHByaW1hcmlseSBmb3IgdGhlIGVhcmx5IGNvbnNvbGUgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCAyYmQ3NDYwZTkyODNlYzk4NTY1MTg5YjNjZGJjZmIyYmNkY2RkNjM1CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTc6NDA6NDMgMjAwOCArMDMwMAoKICAgIDgzeHg6IGluaXRpYWxpemUgc2VyZGVzIGZvciBNUEM4MzdYUkRCIGJvYXJkcwoKICAgIE9uIHRoZSBNUEM4Mzc3RVJEQjogMiBTQVRBIGFuZCAyIFBDSS1FLgogICAgT24gdGhlIE1QQzgzNzhFUkRCOiAyIFBDSS1FCiAgICBPbiB0aGUgTVBDODM3OUVSREI6IDQgU0FUQQoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQ1MzMxNmEyYTE5NjQyZDhhZmNiY2E3NDUyZTQwYTZiNDRhMTk3YjEKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxNzo0MDozMiAyMDA4ICswMzAwCgogICAgODN4eDogc2VyZGVzIHNldHVwIHJvdXRpbmVzCgogICAgVGhpcyBwYXRjaCBhZGRzIGZldyByb3V0aW5lcyB0byBjb25maWd1cmUgc2VyZGVzIG9uIDgzN3ggdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBhNzk2Y2RmOWMzNzdjYjRlNWQ2MWQxMDc5YTI5NjYwOGY4ZmJkOTAzCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTc6NDA6MjcgMjAwOCArMDMwMAoKICAgIDgzeHg6IHNwbGl0IENPQkpTIG9udG8gc2VwYXJhdGUgbGluZXMKCiAgICAuLnBsdXMgZ2V0IHJpZCBvZiBzb21lICNpZmRlZnMgaW4gdGhlIC5jIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDQ2YTNhZWVhNzNjMTNhYjA0ZWJmN2E4NzM5YWZiODdhYzVkYTk0YTMKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJTW9uIE1hciAyNCAxNzo0MDoyMyAyMDA4ICswMzAwCgogICAgODN4eDogbmFuZCBzdXBwb3J0IGZvciBNUEM4MzdYUkRCIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDgyZTQ1YTIwNDE5MDU5M2U4NjEzMTQ1YTkyOGY5OThmYjhjOTA5YzQKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgMTggMjE6NDQ6NDEgMjAwOCAtMDQwMAoKICAgIEVuYWJsZSBDT05GSUdfRkxBU0hfU0hPV19QUk9HUkVTUyBvbiB0aGUgTVBDODM2MEVNRFMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGZhN2ExYjQ3MTllMzI1ZmNlMzMyNjg5ZmI4NzU0ZWMxNjYxOTFmZgpBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWFyIDIwIDEzOjE1OjM5IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogcmVtb3ZlIFJUQyBhbmQgYWRkIEVFUFJPTQoKICAgIFRoZXJlJ3Mgbm8gb24tYm9hcmQgUlRDIG9uIHRoZSBNUEM4MzIzRVJEQiwgYnV0IHRoZXJlIGlzIGFuIEVFUFJPTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDViYmVlYTg2ZWI2YWZiODcyMzc0Y2QyMzIxN2NiM2MxMDE4NDQzZWQKQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxMzoxNTozNCAyMDA4IC0wNDAwCgogICAgbXBjODMyM2VyZGI6IEltcHJvdmUgdGhlIHN5c3RlbSBwZXJmb3JtYW5jZQoKICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBhcmUgYmFzZWQgb24ga2VybmVsIFVDQyBldGhlcm5ldCBwZXJmb3JtYW5jZToKCiAgICAxLglNYWtlIHRoZSBDU0IgYnVzIHBpcGVsaW5lIGRlcHRoIGFzIDQsIGFuZCBlbmFibGUgdGhlIHJlcGVhdCBtb2RlCiAgICAyLglPcHRpbWl6ZSB0cmFuc2FjdGlvbnMgYmV0d2VlbiBRRSBhbmQgQ1NCLiAgQWRkZWQgQ0ZHX1NQQ1JfT1BUCglzd2l0Y2ggdG8gZW5hYmxlIHRoaXMgc2V0dGluZy4KCiAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIGJhc2VkIG9uIHRoZSBBcHAgTm90ZSBBTjMzNjkgYW5kCiAgICB2ZXJpZmllZCB0byBpbXByb3ZlIG1lbW9yeSBsYXRlbmN5IHVzaW5nIExNYmVuY2g6CgogICAgMy4JQ1MwX0NPTkZJR1tBUF9uX0VOXSBpcyBjaGFuZ2VkIGZyb20gMSB0byAwCiAgICA0LglDUzBfQ09ORklHW09EVF9XUl9DT05GSUddIHNldCB0byAxLiAgV2FzIGEgcmVzZXJ2ZWQgc2V0dGluZwoJcHJldmlvdXNseS4KICAgIDUuCVRJTUlOR19DRkdfMVtXUlJFQ10gaXMgY2hhbmdlZCBmcm9tIDNjbGtzIHRvIDJjbGtzICAoYmFzZWQgb24KCVR3cj0xNW5zLCBhbmQgdGhpcyB3YXMgYWxyZWFkeSB0aGUgc2V0dGluZyBpbiBERFJfTU9ERSkKICAgIDYuCVRJTUlOR19DRkdfMVtQUkVUT0FDVF0gaXMgY2hhbmdlZCBmcm9tIDNjbGtzIHRvIDJjbGtzLiAoYmFzZWQgb24KCVRycD0xNW5zKQogICAgNy4JVElNSU5HX0NGR18xW0FDVFRPUFJFXSBpcyBjaGFuZ2VkIGZyb20gOWNsa3MgdG8gNmNsa3MuIChiYXNlZCBvbgoJVHJhcz00MG5zKQogICAgOC4JVElNSU5HX0NGR18xW0FDVFRPUlddIGlzIGNoYW5nZWQgZnJvbSAzY2xrcyB0byAyY2xrcy4gKGJhc2VkIG9uCglUcmNkPTE1bnMpCiAgICA5LglUSU1JTkdfQ0ZHXzFbUkVGUkVDXSBjaGFuZ2VkIGZyb20gMjEgY2xrcyB0byAxMWNsa3MuICAoYmFzZWQgb24KCVRyZmM9NzVucykKICAgIDEwLiBUSU1JTkdfQ0ZHXzJbRk9VUl9BQ1RdIGlzIGNoYW5nZWQgZnJvbSAxMCBjbGtzIHRvIDdjbGtzLiAgKGJhc2VkCglvbiBUZmF3PTUwbnMpCiAgICAxMS4gVElNSU5HX0NGR18yW0FERF9MQVRdIGFuZCBERFJfTU9ERVtBTF0gY2hhbmdlZCBmcm9tIDAgdG8gMSAoYmFzZWQKCW9uIENMPTMgYW5kIFdMPTIpLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmM1NDljODcxZjQzOTMzMzk2YTViM2UyMWQ4OTcwMjNkNGIzMWI4ZApBdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWFyIDIwIDEzOjE1OjI4IDIwMDggLTA0MDAKCiAgICBtcGM4MzIzZXJkYjogdXNlIHJlYWRhYmxlIEREUiBjb25maWcgbWFjcm9zCgogICAgVXNlIGF2YWlsYWJsZSBzaGlmdC9tYXNrIG1hY3JvcyB0byBkZWZpbmUgRERSIGNvbmZpZ3VyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OWM3Nzg0ZWQ5MGJhNTAzMDFlZWM1MjExNDRmOTUxMTFlNDcyOTA2CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiA4IDEzOjE1OjU1IDIwMDggLTA2MDAKCiAgICA4M3h4OiBBZGQgVml0ZXNzZSBWU0M3Mzg1IGZpcm13YXJlIHVwbG9hZGluZwoKICAgIFVwZGF0ZSB0aGUgTVBDODM0OUUtbUlUWCwgTVBDODMxM0UtUkRCLCBhbmQgTVBDODM3WEUtUkRCIGJvYXJkIGZpbGVzIHRvIHVwbG9hZAogICAgdGhlIFZpdGVzc2UgVlNDNzM4NSBmaXJtd2FyZS4gIENoYW5nZWQgQ09ORklHX1ZTQzczODUgdG8gQ09ORklHX1ZTQzczODVfRU5FVC4KICAgIENsZWFuZWQgdXAgdGhlIGJvYXJkIGhlYWRlciBmaWxlcyB0byBtYWtlIHNlbGVjdGluZyB0aGUgVlNDNzM4NSBlYXNpZXIgdG8KICAgIGNvbnRyb2wuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjU1ZDk4YzZkNWI4Njk0ZTU2MGEwZTcyN2IxNGNiNjkyMWQ3Y2ZjYwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgOCAxMzoxNTo1NCAyMDA4IC0wNjAwCgogICAgTkVUOiBBZGQgVml0ZXNzZSBWU0M3Mzg1IGZpcm13YXJlIHVwbG9hZGluZwoKICAgIFRoZSBWaXRlc3NlIFZTQzczODUgaXMgYSA1LXBvcnQgc3dpdGNoIGZvdW5kIG9uIHRoZSBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWAogICAgYW5kIG90aGVyIGJvYXJkcy4gIEEgc21hbGwgZmlyd21hcmUgbXVzdCBiZSB1cGxvYWRlZCB0byBpdHMgb24tYm9hcmQgbWVtb3J5CiAgICBiZWZvcmUgaXQgY2FuIGJlIGVuYWJsZWQuICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUgd2hpY2ggdXBsb2FkcyBmaXJtd2FyZQogICAgKGJ1dCBub3QgdGhlIGZpcm13YXJlIGl0c2VsZikuCgogICAgUHJldmlvdXNseSwgdGhpcyBmZWF0dXJlIHdhcyBwcm92aWRlZCBieSBhIFUtQm9vdCBhcHBsaWNhdGlvbiB0aGF0IHdhcwogICAgbWFkZSBhdmFpbGFibGUgb25seSBvbiBGcmVlc2NhbGUgQlNQcy4gIFRoZSBWU0M3Mzg1IGZpcm13YXJlIG11c3Qgc3RpbGwKICAgIGJlIG9idGFpbmVkIHNlcGFyYXRlbHksIGJ1dCBhdCBsZWFzdCB0aGVyZSBpcyBubyBsb25nZXIgYSBuZWVkIGZvciBhIHNlcGFyYXRlCiAgICBhcHBsaWNhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYWE2ZjZkMTcxYTFmOWY0NmVlNGYwM2FkNmFjYjk3YTZiZmI3MTg1NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjYgMDA6NTI6MTAgMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnlwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0M2RkZDljODIwZmVjNDQ4MTYxODhmNTMzNDZiNDY0ZTIwYjMxNDJkCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglTYXQgTWFyIDIyIDE0OjIzOjQ5IDIwMDggLTA0MDAKCiAgICBSZW1vdmUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfSEFTX1VCT09UX0VOViBhbmQgQ09ORklHX09GX0hBU19CRF9UCgogICAgVGhlc2UgZGVmaW5lcyBlbWJlZGRlZCB0aGUgdS1ib290IGVudiB2YXJpYWJsZXMgYW5kL29yIHRoZSBiZF90IHN0cnVjdHVyZQogICAgaW4gdGhlIGZkdCBibG9iLiAgVGhlIGNvbmNsdXNpb24gb2YgZGlzY3Vzc2lvbiBvbiB0aGUgdS1ib290IGVtYWlsIGxpc3QKICAgIHdhcyB0aGF0IGVtYmVkZGluZyB0aGVzZSBpbiB0aGUgZmR0IGJsb2IgaXMgbm90IHVzZWZ1bDogdGhlcmUgYXJlIGJldHRlcgogICAgd2F5cyBvZiBwYXNzaW5nIHRoZSBkYXRhIChpbiBmYWN0LCB0aGUgZmR0IGJsb2IgaXRzZWxmIHJlcGxhY2VzIHRoZQogICAgYmRfdCBzdHJ1Y3QpLgoKICAgIFRoZSBvbmx5IGJvYXJkIHRoYXQgZW5hYmxlcyB0aGVzZSBpcyB0aGUgc3R4eHRjIGFuZCB0aGV5IGRvbid0IGFwcGVhcgogICAgdG8gYmUgdXNlZCBieSBsaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjJlZDIyODU3NDMzNTlmZDFmZTczZTQxMWRmZjkxNGIyMjU2ZTY4ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAxNyAxMDo0OToyNSAyMDA4ICswMTAwCgogICAgcnRjOiBSZW1vdmUgMm5kIHJlZmVyZW5jZSB0byBtYXg2OTAwLm8gaW4gZHJpdmVycy9ydGMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWJiNzA3YzM5YTA4MzNlOTFkOWY3OTdkZDg2MmFhYWFmNGFmMjY0ZApBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglNb24gTWFyIDE3IDA4OjU0OjA2IDIwMDggKzA5MDAKCiAgICBBZGQgRmxleC1PbmVOQU5EIGJvb3Rpbmcgc3VwcG9ydAoKICAgIEZsZXgtT25lTkFORCBpcyBhIG1vbm9saXRoaWMgaW50ZWdyYXRlZCBjaXJjdWl0IHdpdGggYSBOQU5EIEZsYXNoIGFycmF5CiAgICB1c2luZyBhIE5PUiBGbGFzaCBpbnRlcmZhY2UuIFRoaXMgb24tY2hpcCBpbnRlZ3JhdGlvbiBlbmFibGVzIHN5c3RlbSBkZXNpZ25lcnMKICAgIHRvIHJlZHVjZSBleHRlcm5hbCBzeXN0ZW0gbG9naWMgYW5kIHVzZSBoaWdoLWRlbnNpdHkgTkFORCBGbGFzaAogICAgaW4gYXBwbGljYXRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gdXNlIG1vcmUgTk9SIGNvbXBvbmVudHMuCgogICAgRmxleC1PbmVOQU5EIGVuYWJsZXMgdXNlcnMgdG8gY29uZmlndXJlIHRvIHBhcnRpdGlvbiBpdCBpbnRvIFNMQyBhbmQgTUxDIGFyZWFzCiAgICBpbiBtb3JlIGZsZXhpYmxlIHdheS4gV2hpbGUgTUxDIGFyZWEgb2YgRmxleC1PbmVOQU5EIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEKICAgIHRoYXQgcmVxdWlyZSBsb3cgcmVsaWFiaWxpdHkgYW5kIGhpZ2ggZGVuc2l0eSwgU0xDIGFyZWEgb2YgRmxleC1PbmVOQU5ECiAgICB0byBzdG9yZSBkYXRhIHRoYXQgbmVlZCBoaWdoIHJlbGlhYmlsaXR5IGFuZCBoaWdoIHBlcmZvcm1hbmNlLiBGbGV4LU9uZU5BTkQKICAgIGNhbiBsZXQgdXNlcnMgdGFrZSBhZHZhbnRhZ2Ugb2Ygc3RvcmluZyB0aGVzZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEKICAgIGludG8gb25lIGNoaXAsIHdoaWNoIGlzIG1ha2luZyBGbGV4LU9uZU5BTkQgbW9yZSBjb3N0LSBhbmQgc3BhY2UtZWZmZWN0aXZlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYzUxMjM4OWNjNGExMDI1MzI0OTI3MWZmNmM4ODdjNmRhYjFmMGRiMgpBdXRob3I6IEFuZHLDqSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+CkRhdGU6CVRodSBNYXIgMTMgMTM6NTA6NTIgMjAwOCArMDEwMAoKICAgIE1QQzUyMDA6IHN1cHBvcnQgc2V0dXAgd2l0aG91dCBGRUMKCiAgICBJbmNsdWRlIEZFQyBzcGVjaWZpYyBub2RlcyBpbiBmdF9jcHVfc2V0dXAgb25seSBpZiBDT05GSUdfTVBDNXh4eF9GRUMgaXMKICAgIGRlZmluZWQuIFN5c3RlbXMgd2l0aG91dCBGRUMsIGkuZS4gbm8gRkVDIG5vZGUgaW4gRFRCLCBzaG91bGQgYmUgcG9zc2libGUuCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgogICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBhYTM1MTFlNDIyOTQ2MDQxZWY2MjZmODBhMDVhZTVlOGJmYzcwMGU2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE4OjA1OjQ2IDIwMDggLTA2MDAKCiAgICBGU0w6IE1vdmUgYm9hcmQvbXBjODI2NmFkcyB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmMWQ4NDZlNWM1NzU0NDQ5YzI4NjU4N2QwOTlkODUyNDYwNjI3NzIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTg6MDU6NDcgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM3NDQ4aHBjMiB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI3ZTI0ZDI4M2UzNDcyN2MyYTZjZGZkYWMyZTA5YTQyNmM1NzliNzMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTg6MDU6NDUgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjYwYWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmE4YTVkYzQ3NTk4NjdjNDVhYTk1NTgwZGViOGJmMjY2NjlhNWQ5NwpBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE3OjA4OjMzIDIwMDggKzA5MDAKCiAgICBuZXQ6IEFkZCBzdXBwb3J0IEFYODg3OTZMIGV0aGVybmV0IGRldmljZQoKICAgIEFYODg3OTZMIGlzIGRldmljZSBvZiBORTIwMDAgY29tcGF0aWJsZS4KICAgIFRoaXMgcGF0Y2ggc3VwcG9ydCBBWDg4Nzk2TCBldGhlcm5ldCBkZXZpY2UuCgogICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBlMGE2MTQwZGQzODFlMWVlZDFhZGEyMjkxMTY2ZWYyNjE2ZDg4MjJiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAyNSAyMjo1MDo0MSAyMDA4ICswMTAwCgogICAgbmUyMDAwIGRyaXZlcjogY2hhbmdlICNpZmRlZiB0byBNYWtlZmlsZSBjb25kaXRpb25hbCBjb21waWxhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTcxMDE4NWFhZTkwYzY0ZDM5YzJkNDUzZTQwZTU4Y2VlZmU0ZjI1MApBdXRob3I6IGdvZGEueXVzdWtlIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KRGF0ZToJV2VkIE1hciA1IDE3OjA4OjIwIDIwMDggKzA5MDAKCiAgICBuZXQ6IERpdmlkZWQgY29kZSBvZiBORTIwMDAgZXRoZXJuZXQgZHJpdmVyCgogICAgVGhlcmUgYXJlIG1vcmUgZGV2aWNlcyBvZiB0aGUgTkUyMDAwIGJhc2UuCiAgICBBIHByZXNlbnQgY29kZSBpcyBkaWZmaWN1bHQgZm9yIHVzIHRvIHN1cHBvcnQgbW9yZSBkZXZpY2VzLgogICAgVG8gc3VwcG9ydCBtb3JlIE5FMjAwMCBjbG9uZSBkZXZpY2VzLCBzZXBhcmF0ZWQgdGhlIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgMzk1YmNlNGY1OWE1MDdhNjBhNDc1ZjdlZTQ2YmVkNDdkZTk0ODJkZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEZlYiAyNCAyMzo1ODoxMyAyMDA4IC0wNTAwCgogICAgbmV0L0JsYWNrZmluOiBtb3ZlIG9uLWNoaXAgTUFDIGRyaXZlciBpbnRvIGRyaXZlcnMvbmV0LwoKICAgIFRoZSBCbGFja2ZpbiBvbi1jaGlwIE1BQyBkcml2ZXIgd2FzIGJlaW5nIG1hbmFnZWQgaW4gdGhlIEJGNTM3LVNUQU1QIGJvYXJkCiAgICBkaXJlY3RvcnksIGJ1dCBpdCBpcyBub3QgYm9hcmQgc3BlY2lmaWMsIHNvIHJlbG9jYXRlIGl0IHRvIHRoZSBkcml2ZXJzIGRpcgogICAgc28gdGhhdCBvdGhlciBCbGFja2ZpbiBwb3J0cyBjYW4gdXRpbGl6ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGEzMGI0NzAwOTQyZjM3NDk1ZDJlNjdmNTk5OGNkZmZiNmUzYmE4YQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU3VuIEZlYiAyNCAyMzo1MjozNSAyMDA4IC0wNTAwCgogICAgc21jOTExMTE6IHVzZSBTU1lOQygpIHJhdGhlciB0aGFuIGFzbShzc3luYykgZm9yIEJsYWNrZmluCgogICAgU2luY2UgdGhlICJzc3luYyIgaW5zdHJ1Y3Rpb24gbWF5IGhhdmUgaGFyZHdhcmUgYW5vbWFsaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgaXQsIGhhdmUgdGhlIHNtYzkxMTExIGRyaXZlciB1c2UgdGhlIFNTWU5DIG1hY3JvIHJhdGhlciB0aGFuIGludm9raW5nIGl0CiAgICBkaXJlY3RseS4gIFdlIHdvcmthcm91bmQgYWxsIHRoZSBhbm9tYWxpZXMgdmlhIHRoaXMgbWFjcm8uCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDc3ZmY3Yjc0NDRjZWI4MDIyYjQ2MTE0ZjNkMGI2ZDE4ZTJmZDExMzgKQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+CkRhdGU6CVN1biBGZWIgMTcgMjI6NTc6NDcgMjAwOCArMDAwMAoKICAgIDh4eDogVXBkYXRlIE9GIHN1cHBvcnQgb24gOHh4CgogICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgc2hpZnRpbmcgYXJvdW5kIG9mIE9GIHN1cHBvcnQgb24gOHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KCmNvbW1pdCA5YzY2NmE3ZGIwYjIyODVhMjcwYzY4ODEwODg5Y2U3ZDVkYmEzMDRiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIEZlYiAxNSAxNToxNjoxOCAyMDA4IC0wNjAwCgogICAgcHBjOiBBbGxvdyBib2FyZHMgdG8gc3BlY2lmeSBob3cgbXVjaCBtZW1vcnkgdGhleSBjYW4gbWFwCgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYmxlIG9mIGRvaW5nIHVwIHRvIDJHKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGE2ZjVmMzE3Y2QwNzRiYmJmYTJhYWI0ZmNhMDU5MDRjODExYzE5ZmIKQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+CkRhdGU6CUZyaSBGZWIgMTUgMDE6MDU6NTggMjAwOCArMDAwMAoKICAgIDh4eCA6IEFkZCBPRiBzdXBwb3J0IHRvIEFkZGVyODc1IGJvYXJkIHBvcnQgLSByZXN1Ym1pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KCmNvbW1pdCBkMDU4Njk4ZmQyZDlmNzY5ZmYzOGFjNTNjODcwOGIzZmRkMzE0ZjJkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEZlYiAxNCAyMDo0NDo0MiAyMDA4IC0wNjAwCgogICAgQWRkIHNldGV4cHIgY29tbWFuZAoKICAgIEFkZCBhIHNpbXBsZSBleHByIHN0eWxlIGNvbW1hbmQgdGhhdCB3aWxsIHNldCBhbiBlbnYgdmFyaWFibGUgYXMgdGhlIHJlc3VsdAogICAgb2YgdGhlIGNvbW1hbmQuICBUaGlzIGFsbG93cyB1cyB0byBkbyBzaW1wbGUgbWF0aCBpbiBzaGVsbC4gIFRoZSBmb2xsb3dpbmcKICAgIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZDogJiwgfCwgXiwgKywgLSwgKiwgLy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDNmMTA1ZmFhNjRiOTgyNmUwODg3MTFmZGZjYWE3MGNiMTIzMDM5N2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTc6Mjc6NDggMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM3NDQ4aHBjMiB1bmRlciBib2FyZC9mcmVlc2NhbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0OWM3MDMzNzRhODg2ODQ1MzQyNWUxNWRhN2UyZjc2MjIxYjcyZTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTWFyIDUgMTc6MjE6NDMgMjAwOCAtMDYwMAoKICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjY2YWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTg2MzU3Nzk4OWFkNjg5NDI3YmI3NTAxMDdlOWE3NWYxYzE2NDVkMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXIgNSAxNjo0MTo0MSAyMDA4IC0wNjAwCgogICAgRlNMOiBNb3ZlIGJvYXJkL21wYzgyNjBhZHMgdW5kZXIgYm9hcmQvZnJlZXNjYWxlCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YTc3Mzk4Mzk1N2VlNmM0YWEzNDQ0NjliNzQyZjI5YzdkMjZhZmJkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowOCAyMDA4ICswOTAwCgogICAgW01JUFNdIE1vdmUgZ3RoMl9jb25maWcgZnJvbSBBUk0gc2VjdGlvbiB0byBNSVBTCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAzNzNiMTZmYzBjNWFlMzRkMjhiOTAyN2Y4MDlhZTNjYmY0NWNkZDE1CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIEV4dGVuZCBNSVBTX01BWF9DQUNIRV9TSVpFIHVwdG8gNjRrQgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZDk4ZTM0OGUyZWQ1YWFiOGY3YTY0NzFmZjYyOGFiMDY4OGI4YTQ1OQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDcgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBGaXggZGNhY2hlX3N0YXR1cygpCgogICAgWW91IGNhbid0IGp1ZGdlIFVOQ0FDSEVEIGJ5IENvbmZpZy5LMCBMU0IuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBiMGM2NmFmNTNlYzkzODVhYzJkMWNjMmU1ZDdkMWVjZGM4MWNhZjM0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIEludHJvZHVjZSBfbWFjaGluZV9yZXN0YXJ0CgogICAgSGFuZGxlcyBtYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9ucyBieSB1c2luZyB3ZWFrIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGRlY2FiYTZmNWNmMzg2ZDU2OWFjMzk5N2JlYmI4NzFiOTY2YzZiMTgKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gQ2xlYW51cCBDUDAgU3RhdHVzIGluaXRpYWxpemF0aW9uCgogICAgQWRkIHNldHVwX2MwX3N0YXR1cyBmcm9tIExpbnV4LiBGb3IgdGhlIG1vbWVudCB3ZSBkaXNhYmxlIGludGVycnVwdHMsIHNldAogICAgQ1UwLCBtYXJrIHRoZSBrZXJuZWwgbW9kZSwgYW5kIGNsZWFyIEVSTCBhbmQgRVhMLiBUaGlzIGlzIGdvb2QgZW5vdWdoIGZvcgogICAgcmVzZXQtdGltZSBjb25maWd1cmF0aW9uIGFuZCB3aWxsIHdvcmsgd2VsbCBhY3Jvc3MgbW9zdCBwcm9jZXNzb3JzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZDQzZDQzZWYyODQ1YWYzMDljMjVhNjRiYjljMmM1ZmIzMjYxYmMyMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDcgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBJbml0aWFsaXplIENQMCBDYXVzZSBiZWZvcmUgc2V0dGluZyB1cCBDUDAgU3RhdHVzIHJlZ2lzdGVyCgogICAgV2l0aG91dCB0aGlzIGNoYW5nZSwgd2UnbGwgYmUgc3VmZmVyaW5nIGZyb20gZGVmZmVyZWQgV0FUQ0ggZXhjZXB0aW9uCiAgICBvbmNlIFN0YXR1cy5FWEwgaXMgY2xlYXJlZC4gTWFrZSBzdXJlIENhdXNlLldQIGlzIGNsZWFyZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyNjEzODYyMzIzMGNhMmJhZDNjNzhlMDVhNjU1MjdlYTcwYzhiNjg4CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNyAyMDA4ICswOTAwCgogICAgW01JUFNdIElOQ0EtSVA6IE1vdmUgd2F0Y2hkb2cgaW5pdCBjb2RlIGZyb20gc3RhcnQuUyB0byBsb3dsZXZlbF9pbml0KCkKCiAgICBNb3ZlIHRoaW5ncyB0byBhcHByb3ByaWF0ZSBwbGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGNjZjhmODI0ZWY2N2RmMDI4ZGVkYjI5ZjhlYTVkNzFhNWE4OGQ4OTUKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA2IDIwMDggKzA5MDAKCiAgICBbTUlQU10gSW1wbGVtZW50IGZsdXNoX2NhY2hlKCkKCiAgICBXZSBkbyBIaXRfV3JpdGViYWNrX0ludl9EIGFuZCBIaXRfSW52YWxpZGF0ZV9JLiBZb3UgbWlnaHQgdGhpbmsgdGhhdCB5b3UKICAgIGRvbid0IG5lZWQgdG8gZG8gSGl0X0ludmFsaWRhdGVfSSwgYnV0IGZsdXNoX2NhY2hlKCkgbmVlZHMgaXQgc2luY2UgdGhpcwogICAgZnVuY3Rpb24gaXMgdXNlZCBub3Qgb25seSBpbiBVLUJvb3Qgc3BlY2ZpYyBwcm9ncmFtcyBidXQgYWxzbyBhdCBsb2FkaW5nCiAgICB0YXJnZXQgYmluYXJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyZTBlNTI3MWFhYzkxNzgxMmE3NmM3MjAzMGEyYjJjNmYxZDMzODdkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNiAyMDA4ICswOTAwCgogICAgW01JUFNdIEZpeCBJLS9ELWNhY2hlIGluaXRpYWxpemF0aW9uIGxvb3BzCgogICAgQ3VycmVudGx5IHdlIGRvIDEpIEluZGV4X1N0b3JlX1RhZ19JLCAyKSBGaWxsIGFuZCAzKSBJbmRleF9TdG9yZV9UYWdfSQogICAgYWdhaW4gcGVyIGEgbG9vcCBmb3IgSS1jYWNoZSBpbml0aWFsaXphdGlvbi4gQnV0IGFjY29yZGluZyB0byAnU2VlIE1JUFMKICAgIFJ1bicsIHdlJ3JlIGVuY291cmFnZWQgdG8gdXNlIHRocmVlIHNlcGFyYXRlIGxvb3BzIHJhdGhlciB0aGFuIGNvbWJpbmluZwogICAgdGhlbSAqZm9yIGJvdGggSS0gYW5kIEQtY2FjaGUqLiBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGlzLgoKICAgIEluIGFjY29yZGFuY2Ugd2l0aCBmaXhpbmcgYWJvdmUsIG1pcHNfaW5pdF9baWRdY2FjaGUgYXJlIHNlcGFyYXRlZCBmcm9tCiAgICBtaXBzX2NhY2hlX3Jlc2V0KCksIGFuZCByZXdyaXRlIGNhY2hlIGxvb3BzIGFyZSBjb21wbGV0ZWx5IHJld3JpdHRlbiB3aXRoCiAgICB1c2VmdWwgbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTg5ODg0MDc5N2M3ZjUwNzk5Mzc3YmQ1YjI4NWE4YTkzYTgyYzQxOQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDYgMjAwOCArMDkwMAoKICAgIFtNSVBTXSBSZXBsYWNlIG1lbW9yeSBjbGVhcmFuY2UgY29kZSB3aXRoIGZfZmlsbDY0CgogICAgVGhpcyByb3V0aW5lIGZpbGxzIG1lbW9yeSB3aXRoIHplcm8gYnkgNjQgYnl0ZXMsIGFuZCBpcyA2NC1iaXQgY2FwYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDJmNWQ0MTRjY2I0MDI0ZGQwOTkyZmY2YjIyNTYxNzMyZGJjNzM1OTAKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA2IDIwMDggKzA5MDAKCiAgICBbTUlQU10gY3B1L21pcHMvY2FjaGUuUzogSW50cm9kdWNlIE5FU1RFRC9MRUFGL0VORCBtYWNyb3MKCiAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGggTkVTVEVELCBMRUFGCiAgICBhbmQgRU5EIG1hY3JvLiBUaGV5IHNwZWNpZnkgc29tZSBtb3JlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICBmdW5jdGlvbjsgYW4gYWxpZ25tZW50IG9mIHN5bWJvbCwgdHlwZSBvZiBzeW1ib2wsIHN0YWNrIGZyYW1lIHVzYWdlLCBldGMuCiAgICBUaGVzZSBpbmZvcm1hdGlvbiBleHBsaWNpdGx5IHRlbGxzIHRoZSBhc3NlbWJsZXIgYW5kIHRoZSBkZWJ1Z2dlciBhYm91dAogICAgdGhlIHR5cGVzIG9mIGNvZGUgd2Ugd2FudCB0byBnZW5lcmF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDI4MjIyM2E2MDdjNjExNDI1ZmEzM2Y1NDI4ZjhlYWU2NjM2OTcyYmIKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglUdWUgTWFyIDI1IDExOjQzOjE3IDIwMDggKzA5MDAKCiAgICBbTUlQU10gYXNtIGhlYWRlcnMnIHVwZGF0ZXMKCiAgICBNYWtlIHNvbWUgYXNtIGhlYWRlcnMgYWRqdXN0ZWQgdG8gdGhlIGxhdGVzdCBMaW51eCBrZXJuZWwuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCBlMTM5MDgwMWEzYzFhMmI2ZDEyZmE5MGJlMzY4ZWZjMTlmNWI5YmZkCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJVHVlIE1hciAyNSAxMTozOToyOSAyMDA4ICswOTAwCgogICAgW01JUFNdIFJlcXVlc3QgZm9yIHRoZSAnbWlwc19jYWNoZV9sb2NrKCknIHJlbW92YWwKCiAgICBUaGUgaW5pdGlhbCBpbnRlbnNpb24gb2YgaGF2aW5nIG1pcHNfY2FjaGVfbG9jaygpIHdhcyB0byB1c2UgdGhlIGNhY2hlCiAgICBhcyBtZW1vcnkgZm9yIHRlbXBvcmFyeSBzdGFjayB1c2Ugc28gdGhhdCBhIEMgZW52aXJvbm1lbnQgY2FuIGJlIHNldCB1cAogICAgYXMgZWFybHkgYXMgcG9zc2libGUuCgogICAgQnV0IG5vdyBtaXBzX2NhY2hlX2xvY2soKSBmb2xsb3cgbG93bGV2ZWxfaW5pdCgpLiBXZSd2ZSBhbHJlYWR5IGhhdmUgdGhlCiAgICByZWFsIG1lbW9yeSBpbml0aWxhaXplZCBhdCB0aGlzIHBvaW50LCB0aGVyZWZvcmUgd2UgY291bGQvc2hvdWxkIHVzZSBpdC4KICAgIE5vIHJlYXNvbiB0byBsb2NrIGF0IGFsbC4KCiAgICBPdGhlciBwcm9ibGVtczoKCiAgICBDYWNoZSBsb2NraW5nIGlzIG5vdCBjb25zaXN0ZW50IGFjcm9zcyBNSVBTIGltcGxlbWVudGFpb25zLiBTb21lIGltcGxlLQogICAgbWVudGF0aW9ucyBkb24ndCBzdXBwb3J0IGxvY2tpbmcgYXQgYWxsLiBUaGUgc3R5bGUgb2YgbG9ja2luZyB2YXJpZXMgLQogICAgc29tZSBzdXBwb3J0IHBlciBsaW5lIGxvY2tpbmcsIG90aGVycyBwZXIgd2F5LCBldGMuIFNvbWUgcGFydHMgdXNlIGJpdHMKICAgIGluIHN0YXR1cyByZWdpc3RlcnMgaW5zdGVhZCBvZiBjYWNoZSBvcHMuIEN1cnJlbnQgbWlwc19jYWNoZV9sb2NrKCkgaXMKICAgIG5vdCBuZWNlc3NhcmlseSBnZW5lcmFsLXB1cnBvc2UuCgogICAgQW5kIHRoaXMgaXMgd29ydGh5IG9mIHNwZWNpYWwgbWVudGlvbjsgb25jZSBVLUJvb3QvTUlQUyBsb2NrcyB0aGUgbGluZXMsCiAgICB0aGV5IGFyZSBuZXZlciBnZXQgdW5sb2NrZWQsIHNvIHRoZSBjb2RlIHJlbGllcyBvbiB3aGF0ZXZlciBnZXRzIGxvYWRlZAogICAgYWZ0ZXIgVS1Cb290IHRvIHJlLWluaXRpYWxpemUgdGhlIGNhY2hlIGFuZCBjbGVhciB0aGUgbG9ja3MuIFdlJ3JlIHN1cC0KICAgIHBvc2VkIHRvIGhhdmUgQ0ZHX0lOSVRfUkFNX0xPQ0sgYW5kIHVubG9ja19yYW1faW5fY2FjaGUoKSBpbXBsZW1lbnRlZCwKICAgIGJ1dCBsZWF2ZSB0aGUgc2l0dWF0aW9uIGFzIGl0IGlzIGZvciBhIGxvbmcgdGltZS4KCiAgICBGb3IgdGhlc2UgcmVhc29ucywgSSBwcm9wb3NlZCB0aGUgcmVtb3ZhbCBvZiBtaXBzX2NhY2hlX2xvY2soKSBmcm9tIHRoZQogICAgZ2xvYmFsIHN0YXJ0LXVwIGNvZGUuCgogICAgVGhpcyBwYXRjaCBhZGRzIENGR19JTklUX1JBTV9MT0NLX01JUFMgdG8gbWFrZSBleGlzdGluZyB1c2VycyBhd2FyZSB0aGF0CiAgICAqdGhpbmdzIGhhdmUgY2hhbmdlZCouIElmIGhlIHdhbnRzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZSwgaGUgbmVlZHMKICAgIHRvIGhhdmUgQ0ZHX0lOSVRfUkFNX0xPQ0tfTUlQUyBpbiBoaXMgY29uZmlnIGZpbGUuCgogICAgSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcmVncmVzc2lvbiByZXBvcnQgdGhyb3VnaCBzZXZlcmFsIHJlbGVhc2VzLCB0aGVuCiAgICB3ZSdsbCByZW1vdmUgY29kZXMgZW50aXJlbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KICAgIEFja2VkLWJ5OiBBbmRyZXcgRHllciA8YW1keWVyQGdtYWlsLmNvbT4KCmNvbW1pdCAwZDQ4OTI2Yzg3ZWM5NmY5NzRhNmFjNDAzNGY0YTJmMmVhYjMyNTVmCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglNb24gTWFyIDI0IDExOjMwOjU0IDIwMDggKzAxMDAKCiAgICBsd21vbjUgU1lTTU9OIFBPU1Q6IGZpeCBiYWNrbGlnaHQgY29udHJvbAoKICAgIElmIHRoZSBMV01PTjUgY29uZmlnIGhhcyBTWVNNT04gUE9TVCBhbW9uZyBDT05GSUdfUE9TVHMgd2hpY2ggbWF5IGJlCiAgICBydW4gb24gdGhlIGJvYXJkLCB0aGVuIHRoZSBTWVNNT04gUE9TVCBjb250cm9scyB0aGUgZGlzcGxheSBiYWNrbGlnaHQKICAgIChkb2Vzbid0IHN3aXRjaCBiYWNrbGlnaHQgT04gaWYgUE9TVCBGQUlMRUQsIGFuZCBkb2VzIHN3aXRjaCB0aGUKICAgIGJhY2tsaWdodCBPTiBpZiBQQVNTRUQpLgoKICAgIElmIG5vdCwgdGhlbiB0aGUgdmlkZW8gZHJpdmVyIGNvbnRyb2xzIHRoZSBkaXNwbGF5IGJhY2tsaWdodCAoanVzdAogICAgc3dpdGNoIE9OIHRoZSBiYWNrbGlnaHQgdXBvbiBpbml0aWFsaXphdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGZmMmJkZmIyYzFlMDczZjY1YzA2NTAxMWYxZTE4ZDBhMTMwYmQzZDgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CkRhdGU6CU1vbiBNYXIgMjQgMTE6Mjk6MTQgMjAwOCArMDEwMAoKICAgIGx3bW9uNSBTWVNNT04gUE9TVDogZml4IGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRlbXBlcmF0dXJlcwoKICAgIEZpeCBlcnJvcnMgaW4gdGhlIExXTU9ONSBTeXNtb24gUE9TVCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgTWFyIDcgMTY6MDQ6MjUgMjAwOCArMDkwMAoKICAgIHBjaTogQWRkIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBjb25maWcgb3B0aW9uCgogICAgSW4gY3VycmVudCBzb3VyY2UgY29kZSwgd2hlbiB0aGUgZGV2aWNlIG51bWJlciBvZiBQQ0kgaXMgMCwgcHJvY2VzcyBQQ0kKICAgIGJyaWRnZSB3aXRob3V0IGZhaWwuIEhvd2V2ZXIsIHdoZW4gdGhlIGRldmljZSBudW1iZXIgaXMgMCwgaXQgaXMgbm90IFBDSQogICAgYWx3YXlzIGJyaWRnZS4gVGhlcmUgYXJlIHRpbWVzIHdoZW4gZGV2aWNlIG9mIFBDSSBhbGxvY2F0ZXMuCgogICAgV2hlbiBDT05GSUdfUENJX1NLSVBfSE9TVF9CUklER0UgaXMgZW5hYmxlLCB0aGlzIHByb2JsZW0gaXMgc29sdmVkIHdoZW4KICAgIHVzZSB0aGlzIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODZhZWEzZWFlZmEyNDhmZmI5MzI4ZTJiNTBjNjQ3MjA0ODljZGJlYgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIE1hciAyMSAwOToxODo0MCAyMDA4ICswMTAwCgogICAgTFdNT041OiBmaXggZHNQSUMgUE9TVAoKICAgIEFkZCB0ZXN0IGZvciBEUElDX1NZU19FUlJPUl9SRUcgdG8gYmUgemVybyBpbiB0aGUgTFdNT041IGRzUElDIFBPU1QuCgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPiAtLS0KCmNvbW1pdCAzODhiODJmZGRjN2MwNTU5NmYzZjYxNWYxOTBkYTA0NDgyMjdkYzgyCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAyMzoyMzoxMyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEVuYWJsZSBuZXcgdUltYWdlIHN1cHBvcnQgZm9yIHRoZSBwY3M0NDBlcCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDk1ZjRlYzJiOWM5MTBjNzI2MWU2ZjA2MGVhNTMwZDU4YjAzOTY5MmQKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDIwIDIzOjIzOjEzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRG8gbm90IGNvbXBpbGUgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBieSBkZWZhdWx0CgogICAgRGlzYWJsZSBkZWZhdWx0IGJ1aWxkaW5nIG9mIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgaW4gcHJlcGFyYXRpb24KICAgIGZvciBtZXJnZSB3aXRoIHRoZSBtYXN0ZXIuIFN1cHBvcnQgZm9yIG5ldyBmb3JtYXQgY2FuIGJlIGVuYWJsZWQgb24KICAgIGEgcGVyLWJvYXJkIGJhc2lzLCBieSBkZWZpbmluZyB0aGUgZm9sbG93aW5nIGluIHRoZSBib2FyZCdzIGNvbmZpZyBmaWxlOgoKICAgICNkZWZpbmUgQ09ORklHX0ZJVAkJICAgMQogICAgI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCSAgIDEKCiAgICBUaGlzIGNhbiBiZSBvcHRpb25hbGx5IGRlZmluZWQgdG8gZ2l2ZSBtb3JlIHZlcmJvc2Ugb3V0cHV0OgoKICAgICNkZWZpbmUgQ09ORklHX0ZJVF9WRVJCT1NFCSAgIDEgLyogZW5hYmxlIGZpdF9mb3JtYXRfe2Vycm9yLHdhcm5pbmd9KCkgKi8KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRhZmFlZGU4YTQ2YzcxNTkzMTAyMzllMDM2YzkzZTMxYzYzNzQ0ODcKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTWFyIDIwIDIzOjIwOjMxIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRGlzYWJsZSBkZWJ1Z2luZyBvdXRwdXQgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdlIHdpdGggbWFzdGVyCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmYmU3YTE1NTAyN2JlYWNlYmFlZTliMzJlMWFkYTc4MWZlOTI0YmNhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxOTozODo0NSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENvbXBpbGF0aW9uIGFuZCBuZXcgdUltYWdlIGhhbmRsaW5nIGZpeGVzIGZvciBpbXh0cmFjdAoKICAgIEZpeCBpbXh0cmFjdCBjb21tYW5kIG5vdCBiZWluZyBjb21waWxlZC1pbiBkZXNwaXRlIENPTkZJR19DTURfWElNRyBiZWluZyBpbgogICAgaW5jbHVkZS9jb25maWdfY21kX2RlZmF1bHQuaC4gRml4IGZldyB3YXJuaW5ncyBhbmQgaGFuZGxpbmcgb2YgbmV3IGZvcm1hdAogICAgaW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMzZjYzhjYmIzMzc5ZDUxNjZmODgyNjQxMTIzNTIxNzM1YzQ2OWY5MgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBNYXIgMjAgMjM6MTA6MTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYXV0b3NjciBjb21tYW5kIHVzZWQgd2l0aCBuZXcgdUltYWdlIGZvcm1hdAoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgNDMxNDJlODE3ZjA1OTdiZTQxMmU3Y2JlMTk0MTNmNTUzMmVhZmE1ZApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBNYXIgMjAgMjM6MTA6MTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggKi5pdHMgZmlsZXMgbG9jYXRpb24gaW4gZG9jdW1lbnRhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgODFhMGFjNjJlYTI5ZjgyNTJkMGE3MTQ3MDlkMGVjZmRiYmEyYTE1ZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMjAgMjI6MDE6MzggMjAwOCArMDEwMAoKICAgIGx3bW9uNSBQT1NUOiByZW1vdmUgdW5yZWFjaGFibGUgY29kZQoKICAgIHBsdXMgc29tZSBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjczYTE5ZTE2MDlkMGY3MDVjYmFiODAxNGNhMTdhZWZlODllNGM3NgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IE1hciAyMCAxNzo1NjowNCAyMDA4ICswMzAwCgogICAgTFdNT041OiBQT1NUIFJUQyBmaXgKCiAgICBNb2RpZnkgdGhlIFJUQyBBUEkgdG8gcHJvdmlkZSBvbmUgYSBzdGF0dXMgZm9yIHRoZSB0aW1lIHJlcG9ydGVkIGJ5CiAgICB0aGUgcnRjX2dldCgpIGZ1bmN0aW9uOgogICAgICAwIC0gYSByZWxpYWJsZSB0aW1lIGlzIGd1YXJhbnRlZWQsCiAgICA8IDAgLSBhIHJlbGlhYmxlIHRpbWUgaXNuJ3QgZ3VhcmFudGVlZCAocG93ZXIgZmF1bHQsIGNsb2NrIGlzc3VlcywKCSAgYW5kIHNvIG9uKS4KCiAgICBUaGUgUlRDIGNoaXAgZHJpdmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB0aGlzIGluZm8gaWYgdGhlCiAgICBjb3JyZXNwb25kaW5nIGNoaXAgc3VwcG9ydHMgc3VjaCBmdW5jdGlvbmFsaXR5LiBJZiBub3QgLSBhbHdheXMKICAgIHJlcG9ydCB0aGF0IHRoZSB0aW1lIGlzIHJlbGlhYmxlLgoKICAgIFRoZSBQT1NUIFJUQyB0ZXN0IHdhcyBtb2RpZmllZCB0byBkZXRlY3QgdGhlIFJUQyBmYXVsdHMgdXRpbGl6aW5nCiAgICB0aGlzIG5ldyBydGNfZ2V0KCkgZmVhdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYTVjYzU1NTVjY2VlNTk2OTA4YTdkOGNmMjJhMTA0ZjZiOTkzYmZkNQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgTWFyIDE5IDE0OjI1OjE0IDIwMDggKzAxMDAKCiAgICBUUU01MjAwQjogdXBkYXRlIE1URCBwYXJ0aXRpb24gbGF5b3V0CgogICAgLSBpbnNlcnQgcGFydGl0aW9uIGZvciBkdGIgYmxvYiB0byBUUU01MjAwQiBNVEQgbGF5b3V0CiAgICAtIHNldCBlbnYgdmFyaWFibGVzIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJlZCBib2FyZAogICAgICAoVFFNNTIwMCBvciBUUU01MjAwQikKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmMDEwNTcyN2QxMzJmNTZhMjFmYTNlZDhiMTYyMzA5Y2NhNmNhYzQ0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDE5IDA3OjA5OjI2IDIwMDggKzAxMDAKCiAgICBDRkk6IFNtYWxsIGNsZWFudXAgZm9yIEZMQVNIX1NIT1dfUFJPR1JFU1MKCiAgICBXaXRoIHRoaXMgcGF0Y2ggd2UgZG9uJ3QgbmVlZCB0aGF0IG1hbnkgI2lmZGVmJ3MgaW4gdGhlIGNvZGUuIEl0IG1vdmVzCiAgICB0aGUgc3VidHJhY3Rpb24gaW50byB0aGUgbWFjcm8gYW5kIGRlZmluZXMgYSBOT1AtbWFjcm8gd2hlbgogICAgQ09ORklHX0ZMQVNIX1NIT1dfUFJPR1JFU1MgaXMgbm90IGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgOWEwNDJlOWNhNTEyYmVhYWEyY2I0NTAyNzQzMTNmYzQ3NzE0MTI0MQpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciA4IDEzOjQ4OjAxIDIwMDggLTA1MDAKCiAgICBGbGFzaCBwcm9ncmFtbWluZyBwcm9ncmVzcyBjb3VudGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA1ZTMzOWZkOWVkNTM5YTdkN2ZlYzU5Y2ZjODhmMDg1N2FiMjZhNTNmCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxOSAxMDowMDowNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBzdHlsZSBpc3N1ZSBzcG90dGVkIGJ5IFdvbGZnYW5nIERlbmsgPHdkQGRlbngub3JnPgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMTFhYmU0NWM0OGVjMzQ4NWE2YzFhNTE2OGNlOGQ3OWMzMjg4YWRjMQpBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglNb24gRmViIDE4IDE4OjA5OjA0IDIwMDggKzExMDAKCiAgICBsaWJmZHQ6IFJlbW92ZSBubyBsb25nZXIgdXNlZCBjb2RlIGZyb20gZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoKQoKICAgIFNpbmNlIGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlKCkgd2FzIGNvbnZlcnRlZCB0byB0aGUgbmV3CiAgICBmZHRfbmV4dF9ub2RlKCkgaXRlcmF0b3IsIGEgY2h1bmsgb2YgaW5pdGlhbGl6YXRpb24gY29kZSBiZWNhbWUKICAgIHJlZHVuZGFudCwgYnV0IHdhcyBub3QgcmVtb3ZlZCBieSBvdmVyc2lnaHQuICBUaGlzIHBhdGNoIGNsZWFucyBpdCB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBkMGNjYjliMTQwYjQ3MjAzOTczMmRlMTAyZmMxNDU5N2VlZGIxNGRmCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CU1vbiBGZWIgMTggMTg6MDY6MzEgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogVHJpdmlhbCBjbGVhbnVwIGZvciBDSEVDS19IRUFERVIpCgogICAgQ3VycmVudGx5IHRoZSBDSEVDS19IRUFERVIoKSBtYWNybyBpcyBkZWZpbmVkIGxvY2FsIHRvIGZkdF9yby5jLgogICAgSG93ZXZlciwgdGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBmdW5jdGlvbnMgKGZkdF9tb3ZlLCByd19jaGVja19oZWFkZXIsCiAgICBmZHRfb3Blbl9pbnRvKSBmcm9tIG90aGVyIGZpbGVzIHdoaWNoIGNvdWxkIGFsc28gdXNlIGl0IChjdXJyZW50bHkKICAgIHRoZXkgb3Blbi1jb2RlIHNvbWV0aGluZyBtb3JlLW9yLWxlc3MgaWRlbnRpY2FsKS4gIFRoZXJlZm9yZSwgdGhpcwogICAgcGF0Y2ggbW92ZXMgQ0hFQ0tfSEVBREVSKCkgdG8gbGliZmR0X2ludGVybmFsLmggYW5kIHVzZXMgaXQgaW4gdGhvc2UKICAgIHBsYWNlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBmZTMwYTM1NGNkYmI4MDhiNWYxNTM2NmE5MzViMTUxYTRjY2VlNzRmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyMCAxNDozMjozNiAyMDA4IC0wNjAwCgogICAgRml4IGZkdCBib2FyZHNldHVwIGNvbW1hbmQgcGFyc2luZwoKICAgIFRoZSBpbnRyb2R1Y2l0b24gb2YgdGhlICdmZHQgYm9vdGNwdScgYnJva2UgcGFyc2luZyBmb3IgJ2ZkdCBib2FyZHNldHVwJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgwNDg4N2U2MDAxZTJmMDBiZWExMTQzMWJmMzRkNmQ0NzI1MTJjZGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRmViIDE1IDAzOjM0OjM2IDIwMDggLTA2MDAKCiAgICBBZGQgc3ViLWNvbW1hbmRzIHRvIGZkdAoKICAgIGZkdCBoZWFkZXIJCQkJLSBEaXNwbGF5IGhlYWRlciBpbmZvCiAgICBmZHQgYm9vdGNwdSA8aWQ+CQkJLSBTZXQgYm9vdCBjcHVpZAogICAgZmR0IG1lbW9yeSA8YWRkcj4gPHNpemU+CQktIEFkZC9VcGRhdGUgbWVtb3J5IG5vZGUKICAgIGZkdCByc3ZtZW0gcHJpbnQJCQktIFNob3cgY3VycmVudCBtZW0gcmVzZXJ2ZXMKICAgIGZkdCByc3ZtZW0gYWRkIDxhZGRyPiA8c2l6ZT4JLSBBZGQgYSBtZW0gcmVzZXJ2ZQogICAgZmR0IHJzdm1lbSBkZWxldGUgPGluZGV4PgkJLSBEZWxldGUgYSBtZW0gcmVzZXJ2ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY4NGQ2NWY5YjA4NWZmYmVkNDY0ZDFkNThlOGFhYThmNWEyZWZjMDcKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJVGh1IEZlYiAxNCAxNjo1MDozNCAyMDA4ICsxMTAwCgogICAgbGliZmR0OiBGaXggTk9QIGhhbmRsaW5nIGJ1ZyBpbiBmZHRfYWRkX3N1Ym5vZGVfbmFtZWxlbigpCgogICAgZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKSBoYXMgYSBidWcgaWYgYXNrZWQgdG8gYWRkIGEgc3Vibm9kZSB0byBhCiAgICBub2RlIHdoaWNoIGhhcyBOT1AgdGFncyBpbnRlcnNwZXJzZWQgd2l0aCBpdHMgcHJvcGVydGllcy4gIEluIHRoaXMKICAgIGNhc2UgZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKSB3aWxsIHB1dCB0aGUgbmV3IHN1Ym5vZGUgYmVmb3JlIHRoZQogICAgZmlyc3QgTk9QIHRhZywgZXZlbiBpZiB0aGVyZSBhcmUgcHJvcGVydGllcyBhZnRlciBpdCwgd2hpY2ggd2lsbAogICAgcmVzdWx0IGluIGFuIGludmFsaWQgYmxvYi4KCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWcsIGFuZCBhZGRzIGEgdGVzdGNhc2UgZm9yIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IGFlMGI1OTA4ZGUzYjk4NTVmODkzMWJjOWIzMmM5ZmM0OTYyZGY1YTkKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJVHVlIEZlYiAxMiAxMTo1ODozMSAyMDA4ICsxMTAwCgogICAgbGliZmR0OiBBZGQgYW5kIHVzZSBhIG5vZGUgaXRlcmF0aW9uIGhlbHBlciBmdW5jdGlvbi4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYW4gZmR0X25leHRfbm9kZSgpIGZ1bmN0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvCiAgICBpdGVyYXRlIHRocm91Z2ggbm9kZXMgb2YgdGhlIHRyZWUgd2hpbGUga2VlcGluZyB0cmFjayBvZiBkZXB0aC4gIFRoaXMKICAgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGl0ZXJhdGlvbiBjb2RlIGluIGEgbG90IG9mIG90aGVyCiAgICBmdW5jdGlvbnMsIGFuZCBpcyBhbHNvIGV4cG9ydGVkIGZvciB1c2UgYnkgbGlicmFyeSB1c2Vycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCA5ZWFlYjA3YTcxODVkODUyYzdhYTEwNzM1ZWNkNGU5ZWRmMjRmYjVkCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CUZyaSBKYW4gMTEgMTQ6NTU6MDUgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogQWRkIGZkdF9zZXRfbmFtZSgpIGZ1bmN0aW9uCgogICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9zZXRfbmFtZSgpIGZ1bmN0aW9uIHRvIGxpYmZkdCwgbWlycm9yaW5nCiAgICBmZHRfZ2V0X25hbWUoKS4gIFRoaXMgaXMgYSByL3cgZnVuY3Rpb24gd2hpY2ggYWx0ZXJzIHRoZSBuYW1lIG9mIGEKICAgIGdpdmVuIGRldmljZSB0cmVlIG5vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgMjNlMjBhYTY0ODhlNmMwNjIyNDk2NTQ5ODYxYmZkYzc0MTA4ZGViZQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxMzozMzozMCAyMDA4ICswMTAwCgogICAgbHdtb241OiBGaXggcmVnaXN0ZXIgdGVzdCBsb2dpYyB0byBtYXRjaCB0aGUgc3BlY2lmaWMgR0RDIGgvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCA0NmJjMGE5Mzg3NzlhYTFkNjY0Yjg0N2QzNmIwOGFhMDBmMjJlNTM5CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgTWFyIDE4IDEzOjI3OjU3IDIwMDggKzAxMDAKCiAgICBGaXggYmFja2xpZ2h0IGluIHRoZSBsd21vbjUgUE9TVC4KCiAgICBCYWNrbGlnaHQgd2FzIHN3aXRjaGVkIG9uIGV2ZW4gd2hlbiB0ZW1wZXJhdHVyZSB3YXMgdG9vIGxvdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzZDYxMDE4NjQzYTJjZDM4YzE0NWFhNmRkZTUzZjNmNWYxYTBlOWNmCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgRmViIDYgMTg6NDg6MzYgMjAwOCArMDEwMAoKICAgIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBhbHRlcm5hdGl2ZSBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2cgYnVmZmVyIGZvciB0aGUgbHdtb241IGJvYXJkOiB0aGUgc3RvcmFnZSBmb3IgdGhlIGxvZy1idWZmZXIgaXRzZWxmIGlzIE9DTShvbi1jaGlwIG1lbW9yeSksIHRoZSBsb2ctYnVmZmVyIGhlYWRlciBpcyBtb3ZlZCB0byBzaXggR1BUIHJlZ2lzdGVycyAoUFBDNDQwRVBYX0dQVDBfQ09NUDEsIC4uLiwgUFBDNDQwRVBYX0dQVDBfQ09NUDUpLgoKICAgICBUbyBlbmFibGUgdGhpcywgYWx0ZXJuYXRpdmUsIGNvbmZpZ3VyYXRpb24gdGhlIFUtQm9vdCBib2FyZCBjb25maWd1cmF0aW9uCiAgICBmaWxlIGZvciBsd21vbjUgaW5jbHVkZXMgdGhlIGRlZmluaXRpb25zIG9mIGFsdGVybmF0aXZlIGFkZHJlc3NlcyBmb3IgaGVhZGVyCiAgICAoQ09ORklHX0FMVF9MSF9BRERSKSBhbmQgYnVmZmVyIChDT05GSUdfQUxUX0xCX0FERFIpLgoKICAgICBUaGUgTGludXggc2hhbGwgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBDT05GSUdfQUxUX0xCX0xPQ0FUSU9OIG9wdGlvbiBzZXQsCiAgICBhbmQgaGFzIHRoZSBCT0FSRF9BTFRfTEhfQUREUiBhbmQgQk9BUkRfQUxUX0xCX0FERFIgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlCiAgICBsd21vbjUgYm9hcmQtc3BlY2lmaWMgaGVhZGVyIChhcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L2x3bW9uNS5oKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMGYwMDlmNzgxYjViODhmMjU3NjllMTU0ZWE0ZDQyZGIxM2JhZjBjNgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE3OjExOjUzIDIwMDggKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGx3bW9uNSBib2FyZCByZXNldCB2aWEgR1BJTzU4LgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IGY2OTRlMzJmOTM1NjVlYzFmYThkMDIyNmM1ODRkNmI4OWU5MzFlZDkKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNzowOTo1NSAyMDA4ICswMTAwCgogICAgU29tZSBmaXhlcyB0byBkc3BpYywgZnBnYSwgYW5kIGdkYyBwb3N0IHRlc3RzIGZvciBsd21vbjUuIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYjQyOGY2YThjNjVjNTMwM2U1Zjk2ZGI4ZDI0ZjJmNjk5ZDk0YTk4YwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjExOjAzIDIwMDggKzAxMDAKCiAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdCBtYXJrZWQgYXMgUE9TVF9DUklUSUNBTCBmYWlscyB0aGVuIHRoZSBhbHRlcm5hdGl2ZSwgcG9zdF9jcml0aWNhbCwgYm9vdC1jb21tYW5kIGlzIHVzZWQuIElmIHRoaXMgY29tbWFuZCBpcyBub3QgZGVmaW5lZCB0aGVuIFUtQm9vdCBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDhmMTVkNGFkZGQ0OWM5NTY0MTJlMWUzYmZjNzY0YTBjOGIxZjMxODQKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDo0MiAyMDA4ICswMTAwCgogICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuIFRoZXNlIGFyZToKCiAgICAqIEV4dGVybmFsIFdhdGNoZG9nIHRlc3Q7CiAgICAqIGRzUElDIHRlc3RzOwogICAgKiBGUEdBIHRlc3Q7CiAgICAqIEdEQyB0ZXN0OwogICAgKiBTeXNtb24gdGVzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYzJlZDMzZWZiZmZmNTc2N2JjYTIzNjgyOGUwMjFjNTVmZDU0N2I2YwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjEwOjAxIDIwMDggKzAxMDAKCiAgICBFbmFibGUgQ09ERUMgUE9TVCB3aXRoIENGR19QT1NUX0NPREVDIHJhdGhlciB0aGFuIHdpdGggQ0ZHX1BPU1RfRFNQLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgoKY29tbWl0IDNhNWQxZTdmMTMwOTk5ODc5MTcwMmIyYTU1OWUzMTI2NzgxNzQ2YjkKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTggMTM6MzM6MzAgMjAwOCArMDEwMAoKICAgIGx3bW9uNTogRml4IHJlZ2lzdGVyIHRlc3QgbG9naWMgdG8gbWF0Y2ggdGhlIHNwZWNpZmljIEdEQyBoL3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMGY4NTVhMWYwNTZhOGMyMjExNmEyMTAzYTM5MDBjYmZiNjY5ZGYwYgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxMzoyNzo1NyAyMDA4ICswMTAwCgogICAgRml4IGJhY2tsaWdodCBpbiB0aGUgbHdtb241IFBPU1QuCgogICAgQmFja2xpZ2h0IHdhcyBzd2l0Y2VoZCBvbiBldmVuIHdoZW4gdGVtcGVyYXR1cmUgd2FzIHRvbyBsb3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgMmQ5OTE5NThiMWU0MjBmYmZlMTdiMTI4YmQyNmFkZTc0YmU1ZWZjYwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEZlYiA2IDE4OjQ4OjM2IDIwMDggKzAxMDAKCiAgICAgVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFsdGVybmF0aXZlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxvZyBidWZmZXIgZm9yCiAgICB0aGUgbHdtb241IGJvYXJkOiB0aGUgc3RvcmFnZSBmb3IgdGhlIGxvZy1idWZmZXIgaXRzZWxmIGlzIE9DTShvbi1jaGlwIG1lbW9yeSksCiAgICB0aGUgbG9nLWJ1ZmZlciBoZWFkZXIgaXMgbW92ZWQgdG8gc2l4IEdQVCByZWdpc3RlcnMgKFBQQzQ0MEVQWF9HUFQwX0NPTVAxLCAuLi4sCiAgICBQUEM0NDBFUFhfR1BUMF9DT01QNSkuCgogICAgIFRvIGVuYWJsZSB0aGlzLCBhbHRlcm5hdGl2ZSwgY29uZmlndXJhdGlvbiB0aGUgVS1Cb290IGJvYXJkIGNvbmZpZ3VyYXRpb24KICAgIGZpbGUgZm9yIGx3bW9uNSBpbmNsdWRlcyB0aGUgZGVmaW5pdGlvbnMgb2YgYWx0ZXJuYXRpdmUgYWRkcmVzc2VzIGZvciBoZWFkZXIKICAgIChDT05GSUdfQUxUX0xIX0FERFIpIGFuZCBidWZmZXIgKENPTkZJR19BTFRfTEJfQUREUikuCgogICAgIFRoZSBMaW51eCBzaGFsbCBiZSBjb25maWd1cmVkIHdpdGggdGhlIENPTkZJR19BTFRfTEJfTE9DQVRJT04gb3B0aW9uIHNldCwKICAgIGFuZCBoYXMgdGhlIEJPQVJEX0FMVF9MSF9BRERSIGFuZCBCT0FSRF9BTFRfTEJfQUREUiBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUKICAgIGx3bW9uNSBib2FyZC1zcGVjaWZpYyBoZWFkZXIgKGFyY2gvcHBjL3BsYXRmb3Jtcy80eHgvbHdtb241LmgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KCmNvbW1pdCBmZjgxOGIyMWIwNjlmNGJjOWNiNzMzNzNjYzVhMTYwMTRiZTEwMWI3CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gRmViIDQgMTc6MTE6NTMgMjAwOCArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgbHdtb241IGJvYXJkIHJlc2V0IHZpYSBHUElPNTguCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgNjAzZjE5NGU1YWQ4MWJiMmVmNDJkNmQ4YWFhNzRkZTE3NWJjYjQxMQpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE3OjA5OjU1IDIwMDggKzAxMDAKCiAgICBTb21lIGZpeGVzIHRvIGRzcGljLCBmcGdhLCBhbmQgZ2RjIHBvc3QgdGVzdHMgZm9yIGx3bW9uNS4KICAgIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgZTI2MmVmZTM1NzQyYzFhZDRiMDk2NmZmNTAxZWZjMjZmMzRhMGFlYwpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiA0IDE0OjExOjAzIDIwMDggKzAxMDAKCiAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdAogICAgbWFya2VkIGFzIFBPU1RfQ1JJVElDQUwgZmFpbHMgdGhlbiB0aGUgYWx0ZXJuYXRpdmUsIHBvc3RfY3JpdGljYWwsCiAgICBib290LWNvbW1hbmQgaXMgdXNlZC4gSWYgdGhpcyBjb21tYW5kIGlzIG5vdCBkZWZpbmVkIHRoZW4gVS1Cb290CiAgICBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDY1YjIwZGNlZmM4OTYxODE5M2ZhNTE5NDc5NjhkYWRhOTFlNGM3NzgKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDo0MiAyMDA4ICswMTAwCgogICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuCiAgICBUaGVzZSBhcmU6CgogICAgKiBFeHRlcm5hbCBXYXRjaGRvZyB0ZXN0OwogICAgKiBkc1BJQyB0ZXN0czsKICAgICogRlBHQSB0ZXN0OwogICAgKiBHREMgdGVzdDsKICAgICogU3lzbW9uIHRlc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgoKY29tbWl0IDhkYzNiMjMwM2QyYjU3Yzc3NGI2MDljYTBlNzA0M2VkOGY5Yjg4YzEKQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBGZWIgNCAxNDoxMDowMSAyMDA4ICswMTAwCgogICAgRW5hYmxlIENPREVDIFBPU1Qgd2l0aCBDRkdfUE9TVF9DT0RFQyByYXRoZXIgdGhhbiB3aXRoIENGR19QT1NUX0RTUC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KCmNvbW1pdCAzNTE1ZmQxOGQ0ZThlNDRmODYzYWM3MTQyYjU1ZTIyYjEwOWU5YWYyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxOCAxNzozNTo1MSAyMDA4ICswMTAwCgogICAgSE1JMTAwMTogZml4IGNvbXBpbGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDFmMmE5OTcwMTA5Y2ViZjc0NDZlMDUwM2IxMGI3MWY4NjczMDQ1ZWUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDU6MzI6MzAgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiBCRjUzNy1zdGFtcDogZHJvcCBib2FyZC1zcGVjaWZpYyBmbGFzaCBkcml2ZXIgZm9yIENGSQoKICAgIFRoZSBwYXJhbGxlbCBmbGFzaCBvbiB0aGUgQkY1MzctU1RBTVAgaXMgQ0ZJIGNvbXBsaWFudCwgc28gdGhlcmUgaXMgbm8gbmVlZAogICAgZm9yIHRoZSBib2FyZCBzcGVjaWZpYyBkcml2ZXIgYXQgYWxsLiAgSnVzdCB1c2UgdGhlIGNvbW1vbiBDRkkgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA1YjIyMTYzZmVmODY1YWYyYjZiZmI2Yjc1ZjFiN2JmNDQzY2UxNzBjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglUdWUgRmViIDE5IDAwOjM2OjE0IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogYWRkIHByb3BlciBFTEYgbWFya2luZ3MgdG8gc29tZSBhc3NlbWJseSBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgY2Y2NzVkM2IyYjljMzUxMWMxZDk5YmM4ZjhmMzhmZDJmMDhiZmNhZgpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIEZlYiAxOSAwMDozNToxNyAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG5ldyBjcGxiaW5mbyBjb21tYW5kIGZvciB2aWV3aW5nIGNwbGIgdGFibGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGFhZGI3MjUwM2NkMTYwMjM0OWE1ZmU1MzM1NmQ1ZjU1ZWNjMWI5MDAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDU6Mzc6NTEgMjAwOCAtMDUwMAoKICAgIEJsYWNrZmluOiB1cGRhdGUgTUFJTlRBSU5FUlMgbGlzdAoKICAgIEFkZCBtYWludGFpbmVyIGluZm9ybWF0aW9uIGZvciB0aGUgQmxhY2tmaW4gYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmN2NlMTJjYjY1YTMwYzZlMTUyZWVjZjI2ZjAzMDRiN2Q3OGNmMzlkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDE4IDA1OjI2OjQ4IDIwMDggLTA1MDAKCiAgICBCbGFja2ZpbjogY29udmVydCBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUKCiAgICBTdG9wIHR5aW5nIHRoaW5ncyB0byB0aGUgcHJvY2Vzc29yIHRoYXQgc2hvdWxkIGJlIHRpZWQgdG8gb3RoZXIgZGVmaW5lcyBhbmQKICAgIGNoYW5nZSBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgYnVpbGQKICAgIHN5c3RlbSB0byBzZWxlY3QgdGhlIC1tY3B1IG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgODZhMjBmYjkyMGJkMTk4MTA1YWNmN2IxMTkxMTE3ZjU2NmQ2MzdlZApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJU2F0IEZlYiAxNiAwNzo0MDozNiAyMDA4IC0wNTAwCgogICAgQmxhY2tmaW46IG1vdmUgYm9vdGxkciBjb21tYW5kIHRvIGNvbW1vbiBjb2RlCgogICAgVGhpcyBtb3ZlcyB0aGUgQmxhY2tmaW4tY29tbW9uIGJvb3RsZHIgY29tbWFuZCBvdXQgb2YgdGhlIEJGNTM3LVNUQU1QCiAgICBzcGVjaWZpYyBib2FyZCBkaXJlY3RvcnkgYW5kIGludG8gdGhlIGNvbW1vbiBkaXJlY3Rvcnkgc28gdGhhdCBhbGwgQmxhY2tmaW4KICAgIGJvYXJkcyBtYXkgdXRpbGl6ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZGVjYmUwMjliMmE5ZDMzMzNkMDJjNDMzMzg5YjFjODIxZWVhOTZkNwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgTWFyIDE0IDExOjA1OjIwIDIwMDggKzAxMDAKCiAgICBtZ2NvZ2U6IHVwZGF0ZSBjb25maWd1cmF0aW9uCgogICAgRml4IGNvbmZpZ3VyYXRpb24gZm9yIG1nY29nZSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGMxMzY3MjRjZGEwMjE5YzQ5ZjFkNGIzNDZmMDBkYTI5YjE0ZmRmMTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDE2IDAxOjIyOjU5IDIwMDggKzAxMDAKCiAgICBkcml2ZXJzL3J0Yy9NYWtlZmlsZToga2VlcCBsaXN0IHNvcnRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOTUzNmRmY2NlMDNlN2JlNGNjYmNlYjQ3YTA4ZDliYTA3YWRhMzYyZgpBdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+CkRhdGU6CVNhdCBNYXIgMTUgMTU6NDA6MjYgMjAwOCArMDEwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBJbnRlcnNpbCBpc2wxMjA4IFJUQwoKICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Cgpjb21taXQgMDIxMGNmZjNkMDc5ZDk3YjIxNTZiMTM2ODVlZThkZTM2OGU2OGExYQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXIgMTUgMTc6MzY6NDEgMjAwOCArMDEwMAoKICAgIGNyYW1mczogRml4IGlmZGVmCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYjhmMmEyNzg2MWE5ZmQwNmViNTVhMzRmODU1ZWM5YzUxMDJhYWI0CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAxNiAwMToxMjo1OCAyMDA4ICswMTAwCgogICAgQ29uZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0MTcxMmI0ZThjOTVkZmYyMzM1NGJjZDYyMGUxZjk0NzcxNjBjMTkwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDUgMTI6MzE6NTMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIFVTQiBPSENJIHN1cHBvcnQgdG8gQU1DQyBDYW55b25sYW5kcyA0NjBFWCBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIFVTQiBPSENJIHN1cHBvcnQgdG8gdGhlIENhbnlvbmxhbmRzIGJvYXJkIHBvcnQuIEl0IGFsc28KICAgIGVuYWJsZXMgRVhUMiBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNTk2ZjViOWQzNTNmZjNlNDM4N2EzMzI1ZDA1NzQwZjE2OTU4MDM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDUgMTI6Mjk6MzIgMjAwOCArMDEwMAoKICAgIHVzYjogQWRkIENGR19PSENJX1VTRV9OUFMgdG8gY29tbW9uIFVTQi1PSENJIGRyaXZlcgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBDRkdfT0hDSV9VU0VfTlBTIHRvIHRoZSBjb21tb24gVVNCLU9IQ0kgZHJpdmVyLiBUaGlzCiAgICB3YXkgYSBib2FyZCBqdXN0IG5lZWRzIHRvIGRlZmluZSB0aGlzIG5ldyBvcHRpb24gdG8gZW5hYmxlIHRoZSAiZm9yY2UKICAgIE5vUG93ZXJTd2l0Y2hpbmcgbW9kZSIgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IENQVS9hcmNoaXRlY3R1cmUgZGVmaW5lcwogICAgdG8gdGhlIFVTQiBzb3VyY2UgaXRzZWxmLgoKICAgIFRoaXMgbmV3IG9wdGlvbiB3aWxsIGJlIHVzZWQgZmlyc3Qgd2l0aCB0aGUgbmV3IEFNQ0MgNDYwRVggQ2FueW9ubGFuZHMKICAgIGJvYXJkIHBvcnQsIHdoaWNoIHdpbGwgYmUgcG9zdGVkIGluIGEgZmV3IGRheXMuCgogICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgc21hbGwgY29tcGlsYXRpb24gcHJvYmxlbSB3aGVuIERFQlVHIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcxNjY1ZWJmODg0MDhmZjJhY2I3NjJhZjQ3OTg5ZmQ0MzY1YjMyMWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBNYXIgMyAxNzoyNzowMiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQ2FueW9ubGFuZHMgTkFORCBib290aW5nIHN1cHBvcnQKCiAgICA0NjBFWCBkb2Vzbid0IHN1cHBvcnQgYSBmaXhlZCBib290c3RyYXAgb3B0aW9uIHRvIGJvb3QgZnJvbSA1MTIgYnl0ZSBwYWdlCiAgICBOQU5EIGRldmljZXMuIFRoZSBvbmx5IGJvb3RzdHJhcCBvcHRpb24gZm9yIE5BTkQgYm9vdGluZyBpcyBvcHRpb24gRiBmb3IKICAgIDJrIHBhZ2UgZGV2aWNlcy4gU28gdG8gYm9vdCBmcm9tIGEgNTEyIGJ5cGUgcGFnZSBkZXZpY2UsIHRoZSBJMkMgYm9vdHN0cmFwCiAgICBFRVBST00gbmVlZHMgdG8gYmUgcHJvZ3JhbW1lZCBhY2NvcmRpbmdseS4KCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgTkFORCBib290aW5nIHN1cHBvcnQgZm9yIHRoZSBBTUNDIENhbnlvbmxhbmRzIGF2YWwKICAgIGJvYXJkIGFuZCBhbHNvIGFkZHMgc3VwcG9ydCB0byB0aGUgImJvb3RzdHJhcCIgY29tbWFuZCwgdG8gZW5hYmxlIE5BTkQKICAgIGJvb3RpbmcgSTJDIHNldHRpbmcuCgogICAgVGVzdGVkIHdpdGggNTEyIGJ5dGUgcGFnZSBOQU5EIGRldmljZSAoMzJNQnl0ZSkgb24gQ2FueW9ubGFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM4MTNmMWY4MzVhN2VkZmRiOTI5ZjI4NDNiMDlkYjcyY2Q1Y2QyZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTY6NTM6MDAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIEFNQ0MgQ2FueW9ubGFuZHMgc3VwcG9ydCAoNDYwRVgpICgzLzMpCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBTUNDIENhbnlvbmxhbmRzIDQ2MEVYIGV2YWx1YXRpb24KICAgIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2OTgzZmUyMWY3NzRhOTI0ZDNhZGIyNjNhMjcwYmMyZjMwMWYyYWEyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDExIDE2OjUyOjI0IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBBTUNDIENhbnlvbmxhbmRzIHN1cHBvcnQgKDQ2MEVYKSAoMi8zKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQU1DQyBDYW55b25sYW5kcyA0NjBFWCBldmFsdWF0aW9uCiAgICBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGUxYTNmZTU0NWJiY2ZjZWFmZTE4MzM0NGViYzlmMWFkMDM4MTljMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1hciAxMSAxNjo1MToxNyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgQU1DQyBDYW55b25sYW5kcyBzdXBwb3J0ICg0NjBFWCkgKDEvMykKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDYwRVggZXZhbHVhdGlvbgogICAgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQzYzYwOTkyY2RmNzI0OTZlN2VhYWEzZmJkMzdlYmJlNzU4MzVmNjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MTE6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDUvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmMmViM2YzZDhlYTJkYmIyMjRkMGRhNWExMjAzODY5M2JhYjk5NDUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MTE6MTggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDQvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk5OWVjZDVhY2EzODE5ODRkOGViYmViMjA3ZWNlODJhMWMyNzU1NzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDc6MTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDMvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI4MDFiMmQyYTk5MDZmMjA2YWI5ZWU4ZDBiNmU3NDZkMmI3ZmUwNWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDU6NTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDIvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhhYzQxZTNlMzdjMzA4MGM2YjFkOTQ2MWQ2NTQxNjFjZmUyYWE0OTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTU6MDU6MjYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDEvNSkKCiAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU2ZTQxMDE3ODM3NWQ5ZjIwYmUyNWZiMjRlMTgwOTc0ZjBhZTEyMGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTkgMjI6MDc6NTcgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogaW50ZXJydXB0LmMgcmV3b3JrZWQKCiAgICBUaGlzIHBhdGNoIGlzIGEgcmV3b3JrIG9mIHRoZSA0eHggaW50ZXJydXB0IGhhbmRsaW5nIGRvbmUgd2hpbGUKICAgIGFkZGluZyB0aGUgNDYwRVgvR1Qgc3VwcG9ydC4gSW50ZXJydXB0cyBhcmUgbmVlZGVkIG9uIDR4eCBmb3IgdGhlCiAgICBFTUFDIGRyaXZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODRhOTk5YjZjZGQwYjAyZGM3ZGUyY2FjYzMwNmVhYTg0YWZlMmI0NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAxOSAyMjowMTo1NyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBwcm9ncmFtX3RsYiBub3cgdXNlcyA2NGJpdCBwaHlzaWNhbCBhZGRlc3MKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHBoeXNpY2FsIGFkZGVzcyBwYXJhbWV0ZXIgZnJvbSAzMmJpdCB0byA2NGJpdC4KICAgIFRoaXMgaXMgbmVlZGVkIGZvciAzNmJpdCA0eHggcGxhdGZvcm1zIHRvIGFjY2VzcyBhcmVhcyBsb2NhdGVkCiAgICBiZXlvbmQgdGhlIDRHQiBib3JkZXIsIGxpa2UgU29DIHBlcmlwaGVyYWxzIChFQkMgZXRjLikuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGMzMzA3ZmExODZhZjg1NzcxOTI0YzQzNDk5NzA4OWI4MTA0YzBhNDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMTkgMjE6NTg6MjUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogbWlpcGh5LmMgcmV3b3JrZWQKCiAgICBXaGlsZSBhZGRpbmcgdGhlIDQ2MEVYL0dUIHN1cHBvcnQgSSByZXdvcmtlZCB0aGUgNHh4IG1paXBoeSBjb2RlLiBJdAogICAgYmFkbHkgbmVlZGUgc29tZSBjbGVhbnVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4OGFmZjYyZGYzOWMwNzU2MjQxZWE5ZjliNWE3YjNhZGUyNmNiODJiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDE5IDE2OjIxOjQ5IDIwMDggKzAxMDAKCiAgICBydGM6IEFkZCBNNDFUNjIgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBTVE0gTTQxVDYyIFJUQy4gSXQgaXMgdXNlZCBhbmQgdGVzdGVkCiAgICBvbiB0aGUgQU1DQyBDYW55b25sYW5kcyA0MDZFWCBwbGF0Zm9ybS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjE3ZDM4M2UyMDFhZGM3ZjIyNzExNDVhZTM0NWVhNWVhZTJiNzE3MApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDMgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZCBzcGVjaWZpYyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNzVhNjZkY2RiMzgzODYzYWQzM2YwNTM0Y2ZjMjdiN2E4Njk0N2RhZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDIgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZCBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYjA1ZjM1NDM2YjczM2EyNDA1NTllNzdlNDZiZWQ4NDM5NjY1ZWNjNQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDEgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZC4gR2xvYmFsIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCAxNGMyN2IzNWFjODEyYTcxYWJjZTZlM2UyZjQxMjlkNWU5MzEzNjYwCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJTW9uIEZlYiAyNSAxODozNzowMiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBIQ1U0LzUuIHJlbW92ZSBvYnNvbGV0ZSBoY3VfZmxhc2guYwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYTA3OTQ5NDg1M2NjMmJmZWRkYjI2NjczMjE5ZGIwYjRiMmIzMTU2NgpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMTg6Mzc6MDEgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogSENVNC81LiBVc2UgRkxBU0hfQ0ZJX0xFR0FDWQoKICAgIENsZWFudXA6IFJlbW92ZSBjdXN0b20gZmxhc2ggZHJpdmVyIGZvciA4IGJpdCBib290LWVwcm9tIGFuZCByZXBsYWNlIGl0IHdpdGgKICAgIHRoZSBGTEFTSF9DRklfTEVHQUNZIGV0IGFsLiBjb25maWcgb3B0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IGU0MTcwZTVhNTBjODExMGY3OTJiYzM3NDcyODMzYWU2NjlkNjk5NTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTEgMTM6NTI6MjUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IGNvbW1lbnQgaW4gNDA1RVggRERSMiBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzY2NTI5ZmNjYzg2MGVjYjllOTU1YjQyMzlkZmY2OWNkOWU0ZWEwOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBNYXIgMTQgMTY6MjI6MzQgMjAwOCArMDEwMAoKICAgIEFkZCBNRDUgc3VwcG9ydCB0byB0aGUgbmV3IHVJbWFnZSBmb3JtYXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBlZGUwYzM4MzUzMGE0MThjZjk4YmU5MTIyMzcxYTg2NTczY2QwZGIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgTWFyIDE0IDE2OjIyOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgdGhlIE1ENSBhbGdvcml0aG0KCiAgICBNRDUgc3Vwb3BydCBpcyB0dXJuZWQgb24gYnkgZGVmaW5pbmcgQ09ORklHX01ENSwgdGhlIGRpZ2VzdCBjYW4gYmUgdGhlbgogICAgY2FsY3VsYXRlZCB1c2luZyB0aGUgbWQ1KCkgZnVuY3Rpb24gLS0gc2VlIGluY2x1ZGUvbWQ1LmggZm9yIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiOGFhNTdiNWQ0ZDY5ZThmMDgxMGE1ZTYzMmMwY2U0MWMwZjQ2ZWUwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1hciAxNCAxNjowNDo1NCAyMDA4ICswMTAwCgogICAgdG9vbHMvc2V0bG9jYWx2ZXJzaW9uOiB1c2UgYSBnaXQtZGVzY3JpYmUtaXNoIGZvcm1hdAoKICAgIENoYW5nZSB0aGUgYXV0b21hdGljIGxvY2FsIHZlcnNpb24gdG8gaGF2ZSB0aGUgZm9ybSAtbm5ubm4tZ1NIQTFTVU1JRCwKICAgIHdoZXJlICdubm5ubicgaXMgdGhlIG51bWJlciBvZiBjb21taXRzIHNpbmNlIHRoZSBsYXN0IHRhZyAoaS5lLiwKICAgIDEuMy4yLXJjMykuICBUaGlzIG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIHJlY29nbml6ZSAibmV3ZXIiIHZlcnNpb25zCiAgICBhbmQgdG8gc2VlIGhvdyBtdWNoIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgdGhlIHJlZmVyZW5jZWQgdGFnLgoKICAgIFN0b2xlbiBmcm9tIExpbnV4IGtlcm5lbCdzIHNjcmlwdHMvc2V0bG9jYWx2ZXJzaW8sIHNlZSBjb21taXQgZDg4MjQyMWYuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNmRjMjFjODRkZTBmMTU5YTE3NTJjNWViZDMzY2ZmODQzZjYzNjA5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMyAxNDozMjowMyAyMDA4ICswMTAwCgogICAgSE1JMTAwMTogYWRkIHN1cHBvcnQgZm9yIE1QQzUyMDAgUmV2LiBCIHByb2Nlc3NvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5MGYxM2RjZTdhN2E5YTg0ZDU3MzA1NzZjOWEyNGQwZGJiMDdjYjNhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxMyAxNDoyOTo0OSAyMDA4ICswMTAwCgogICAgVFFNNTIwMDogcmVtb3ZlIGRlYWQgY29kZQoKICAgIFRoaXMgYm9hcmQgbmV2ZXIgdXNlZCBhIE1HVDUxMDAgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWZlNDVjODdlM2M1ZDc3YmFkNzZiMWE1N2RjY2QyMDc2NGQ0NWI1ZApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTI6MTQ6MTUgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYnVpbGQgaXNzdWUgb24gQVJNCgogICAgQVJNIHBsYXRmb3JtcyBkb24ndCBoYXZlIGEgYmQtPmJpX21lbXNpemUgc28gdXNlIGJkLT5iaV9kcmFtWzBdLnNpemUgaW5zdGVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzMTBjNTQ5YTczYTk0OTQzMGJmZGE5MDg3NmRmNzU1MmExZGFiMGMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEyOjEzOjEzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzCgogICAgQ3JlYXRlIGRvYy91SW1hZ2UuRklUIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHdpdGggdGhlIGZvbGxvd2luZyBmaWxlczoKICAgIC0gY29tbWFuZF9zeW50YXhfZXh0ZW5zaW9ucy50eHQgOiBleHRlbmRlZCBjb21tYW5kIHN5bnRheCBkZXNjcmlwdGlvbgogICAgLSBob3d0by50eHQJCQkgICAgOiBzaG9ydCB1c2FnZSBob3d0bwogICAgLSBzb3VyY2VfZmlsZV9mb3JtYXQudHh0CSAgICA6IGludGVybmFsIG5ldyB1SW1hZ2UgZm9ybWF0IGRlc2NyaXB0aW9uCgogICAgQWRkIGV4YW1wbGUgaW1hZ2Ugc291cmNlIGZpbGVzOgogICAgLSBrZXJuZWwuaXRzCiAgICAtIGtlcm5lbF9mZHQuaXRzCiAgICAtIG11bHRpLml0cwoKICAgIFVwZGF0ZSBSRUFETUUgYXBwcm9wcmlhdGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxZWM3Mzc2MWQyZTI0NzA3OGY0NTIwYTI2NWQ0NjNlOGI3MzM5MWEyCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozNTo1MiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBkZWZpbml0aW9uIG9mIGNvbW1vbiBib290bV9oZWFkZXJzX3QgZmllbGRzCgogICAgdmVyaWZ5LCBhdXRvc3RhcnQgYW5kIGxtYiBmaWVsZHMgYXJlIHVzZWQgcmVnYXJkbGVzcyBvZiBDT05GSUdfRklUCiAgICBzZXR0aW5nLCBtb3ZlIHRoZWlyIGRlZmluaXRpb25zIHRvIGNvbW1vbiBzZWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWQxY2I0MjcwZWRjNmE5OTI3NjgzNDA2NDA2OTcxN2Y5NzgyYzQ5MQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzU6NTEgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggYnVpbGQgcHJvYmxlbXMgb24gdHJhYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZjc3M2JlYThlMTFmNGExMWMzODhkY2VlOTU2YjI0NDQyMDNlNmI2NQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzU6NDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgcHJvcGVyIHJhbWRpc2svRkRUIGhhbmRsaW5nIHdoZW4gRklUIGNvbmZpZ3VyYXRpb24gaXMgdXNlZAoKICAgIFNhdmUgRklUIGNvbmZpZ3VyYXRpb24gcHJvdmllZCBpbiB0aGUgZmlyc3QgYm9vdG0gYXJndW1lbnQgYW5kIHVzZSBpdAogICAgd2hlbiB0byBnZXQgcmFtZGlzay9GRFQgc3ViaW1hZ2VzIHdoZW4gc2Vjb25kIGFuZCB0aGlyZCAocmFtZGlzay9GRFQpCiAgICBhcmd1bWVudHMgYXJlIG5vdCBzcGVjaWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyNjgyY2U4YTQyMjVmMjNkNzJiYjdmZWQwNjllOTI4ZGQzOWQzNGFlCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIE1vcmUgdmVyYm9zZSBrZXJuZWwgaW1hZ2UgdW5jb21wcmVzcyBlcnJvciBtZXNzYWdlCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxMzcyY2NlMmI5MDQwZmI2NDBlNTAzMmI4NGUzYTAzM2EyMmQ2ZmYwCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFVzZSBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBmb3IgbmV3IHVJbWFnZSBmb3JtYXQKCiAgICBUaGlzIHBhdGNoIGFsbG9jYXRlcyBhIHNldCBvZiBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBJRHMgZm9yIG5ldyB1SW1hZ2UgZm9ybWF0CiAgICBhbmQgYWRkcyBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSBjYWxscyBpbiBuZXcgdUltYWdlIGZvcm1hdCBoYW5kbGluZyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYzI4YzRkMTkzZGJmYjIwYjJkZDNhNTQ0NzY0MGZkNmRlN2ZkMDcyMApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDEgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmcm9tYXQgc3VwcG9ydCB0byBmcGdhIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDA5NDc1Zjc1Mjc0NjBlNDI2YzBlMDYyOGZjNWI4ZjM3NTRmYmFhMjMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAxIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIHRvIG90aGVyIGJvb3RtIHJlbGF0ZWQgY29tbWFuZHMKCiAgICBVcGRhdGVkIGNvbW1hbmRzOgoKICAgIGRvY2Jvb3QgIC0gY21kX2RvYy5jCiAgICBmZGNib290ICAtIGNtZF9mZGMuYwogICAgZGlza2Jvb3QgLSBjbWRfaWRlLmMKICAgIG5ib290ICAgIC0gY21kX25hbmQuYwogICAgc2NzaWJvb3QgLSBjbWRfc2NzaS5jCiAgICB1c2Jib290ICAtIGNtZF91c2IuYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWI3ODk3ZjI4ZDQ5YTgwZDc4ZDc2MGVjNmY2ZjExZGMwZjkxNDMzOApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDAgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBpbWdleHRyYWN0IGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDQyNGM0YWJkZDE3NWQyYzQ3MDUxMGRmOGNlMGUzMmQzZjQ2M2VjMTYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgdG8gYXV0b3NjcmlwdCByb3V0aW5lCgogICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgaXMgdXBkYXRlZCB0byBhY2NlcHQgc2Vjb25kIGFyZ3VtZW50LCB3aGljaAogICAgaXMgb25seSB1c2VkIGZvciBGSVQgaW1hZ2VzIGFuZCBwcm92aWRlcyBhIEZJVCBzdWJpbWFnZSB1bml0IG5hbWUuCgogICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgY2FsbGVycyBtdXN0IG5vdyBwYXNzIHR3byBhcmd1bWVudHMuIEZvcgogICAgbm9uLWludGVyYWN0aXZlIHVzZSAobGlrZSBpbiBjbWRfbG9hZC5jLCBjbWRfbmV0LmMpLCBuZXcgZW52aXJvbm1lbnQKICAgIHZhcmlhYmxlICdhdXRvc2NyaXB0X3VuYW1lJyBpcyBpbnRyb2R1Y2VkIGFuZCB1c2VkIGFzIGEgRklUCiAgICBzdWJpbWFnZSB1bml0IG5hbWUgc291cmNlLgoKICAgIGF1dG9zY3JpcHQgY29tbWFuZCBhY2NlcHRzIGV4dGVuZGVkIHN5bnRheCBvZiB0aGUgYWRkciBhcmd1bWVudDoKICAgIGFkZHI6PHN1YmltZ191bmFtZT4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGNkN2M1OTZlOWY1NjFkYmJjMTdiNzE3Mjc3NDM4YWVlNzhjZGUxNGYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgdG8gYXJjaCBzcGVjaWZpYyBkb19ib290bV9saW51eCgpIHJvdXRpbmVzCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YKICAgIGRvX2Jvb3RtX2xpbnV4KCkgYWRkaW5nIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIGZvcgogICAgb3BlcmF0aW9ucyBsaWtlIGdldCBrZXJuZWwgZW50cnkgcG9pbnQgYWRkcmVzcywgZ2V0IGtlcm5lbAogICAgaW1hZ2UgZGF0YSBzdGFydCBhZGRyZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgM2RmZTExMDE0OTMxMTQyNTkxOWU2ZDZhMTRiNTYxYjQyMDc0OThmMQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MzI6NTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbm9kZSBvZmZzZXRzIGZvciBGSVQgaW1hZ2VzIGxpc3RlZCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgbm9kZSBvZmZzZXQgZmllbGRzIHRvIHN0cnVjdCBib290bV9oZWFkZXJzCiAgICBhbmQgdXBkYXRlcyBib290bV9oZWFkZXJzIHByb2Nlc3NpbmcgY29kZSB0byBtYWtlIHVzZSBvZiB0aGVtLgogICAgU2F2ZWQgbm9kZSBvZmZzZXRzIGFsbG93IHRvIGF2b2lkIHJlcGVhdGluZyBmaXRfaW1hZ2VfZ2V0X25vZGUoKSBjYWxscy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGJjOGVkNDg2YjEyNTQ1MmJhM2JkODM0NGYwNTJmNDM3MzI5MTUwYzUKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTWFyIDEyIDEwOjMyOjUzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gcHBjOiBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBGRFQgaGFuZGxpbmcgcm91dGluZXMKCiAgICBTdXBwb3J0IGZvciBuZXcgKEZJVCkgZm9ybWF0IHVJbWFnZXMgaXMgYWRkZWQgdG8gcG93ZXJwYyBzcGVjaWZpYwogICAgYm9vdF9nZXRfZmR0KCkgcm91dGluZSB3aGljaCBub3cgcmVjb2duaXplcywgc2FuaXR5IGNoZWNrcyBGSVQgaW1hZ2UKICAgIGFuZCBpcyBhYmxlIHRvIGFjY2VzcyBkYXRhIHNlY3Rpb25zIG9mIHRoZSByZXF1ZXN0ZWQgY29tcG9uZW50IGltYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYTQ0YTI2OWE5MDVmOTI0YjQyMDAyMDUwNmE0ZDdkN2VlZGNjMGVhZgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MTQ6NTcgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZS1lbmFibGUgaW50ZXJydXB0cyBmb3Igbm9uIGF1dG9tYXRpYyBib290aW5nCgogICAgUmUtZW5hYmxlIGludGVycnVwdHMgaWYgd2UgcmV0dXJuIGZyb20gZG9fYm9vdG1fPG9zPiBhbmQgJ2F1dG9zdGFydCcKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgdG8gJ3llcycuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkOTg1Yzg0OThjNGU0NzA5NTgyMGRhOTdhYTcyMjM4MWQzOTE3MmM1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDoxNDozOCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbW92ZSB1bm5lY2Vzc2FyeSBhcmd1bWVudHMgcGFzc2VkIHRvIHJhbWRpc2sgcm91dGluZXMKCiAgICBib290X2dldF9yYW1kaXNrKCkgYW5kIGltYWdlX2dldF9yYW1kaXNrKCkgZG8gbm90IG5lZWQgYWxsCiAgICBjbWR0cCwgZmxhZywgYXJnYyBhbmQgYXJndiBhcmd1bWVudHMuIFNpbXBsaWZ5IHJvdXRpbmVzIGRlZmluaXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjODc3OTY0ODNiYzdjMjkwMDQ3MGRjNzQ3YzM2N2Y2MDI1Nzc2MDhkCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE1hciAxMiAxMDoxMjozNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IGZvciByYW1kaXNrIGhhbmRsaW5nCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIGJvb3RfZ2V0X3JhbWRpc2soKSByb3V0aW5lIGFkZGluZyBmb3JtYXQKICAgIHZlcmlmaWNhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIG5ldyAoRklUKSB1SW1hZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNjk4NmEzODU2NzE3NDllY2IzZjYwY2Y5OWU5Y2JhZThlNDdiYjUwZQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBNYXIgMTIgMTA6MDE6MDUgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3Iga2VybmVsIGJvb3RpbmcKCiAgICBOZXcgZm9ybWF0IHVJbWFnZXMgYXJlIHJlY29nbml6ZWQgYnkgdGhlIGJvb3RtIGNvbW1hbmQsCiAgICB2YWxpZGl0eSBvZiBzcGVjaWZpZWQga2VybmVsIGNvbXBvbmVudCBpbWFnZSBpcyBjaGVja2VkIGFuZAogICAgaXRzIGRhdGEgc2VjdGlvbiBsb2NhdGVkIGFuZCB1c2VkIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcKICAgICh1bmNvbXByZXNzLCBsb2FkLCBldGMuKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZTMyZmVhNmFkYjYyMGVjZjJiZDcwYWNmMmRkMzdlNTNkZjlkMTU0NwpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBNYXIgMTEgMTI6MzU6MjAgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3IgaW1scyBhbmQgaW1pbmZvIGNvbW1hbmRzCgogICAgaW1scyBhbmQgaW1pbmZvIGNhbiBub3cgcmVjb2duaXplIG5hZCBwcmludCBvdXQgY29udGVudHMgb2YgdGhlIG5ldyAoRklUKQogICAgZm9ybWF0IHVJbWFnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5ZDI1NDM4ZmU3ZDcwY2YzNWE4YTI5M2VhNWUzOTJmZWZjNjcyNjEzCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1hciAxMSAxMjozNDo0NyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCB0byBta2ltYWdlIHRvb2wKCiAgICBTdXBwb3J0IGZvciB0aGUgbmV3IHVJbWFnZSBmb3JtYXQgKEZJVCkgaXMgYWRkZWQgdG8gbWtpbWFnZSB0b29sLgogICAgQ29tbWFuZGxpbmUgc3ludGF4IGlzIGFwcHJvcHJpYXRlbHkgZXh0ZW5kZWQ6CgogICAgbWtpbWFnZSBbLUQgZHRjX29wdGlvbnNdIC1mIGZpdC1pbWFnZS5pdHMgZml0LWltYWdlCgogICAgbWtpbWFnZSAodG9nZXRoZXIgd2l0aCBkdGMpIHRha2VzIGZpdC1pbWFnZS5pdHMgYW5kIHJlZmVyZW5jZWQgdGhlcmVpbgogICAgYmluYXJpZXMgKGxpa2Ugdm1saW51eC5iaW4uZ3opIGFzIGlucHV0cywgYW5kIHByb2R1Y2VzIGZpdC1pbWFnZSBmaWxlIC0tIHRoZQogICAgZmluYWwgaW1hZ2UgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHRhcmdldCAoZS5nLiwgdmlhIHRmdHApIGFuZCB0aGVuCiAgICBib290ZWQgdXNpbmcgdGhlIGJvb3RtIGNvbW1hbmQgaW4gVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZWI2MTc1ZWRkNmMxMjBkOGI4OTY3ODI0M2U1YTJiZTM2MmVlOGU0MApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CU1vbiBNYXIgMTAgMTc6NTM6NDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNYWtlIG5vZGUgdW5pdCBuYW1lcyBjb25zdCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNWRmYjUyMTM4Njg4Y2NiZjAxNDZmNjI2ODNmZTYyMTdiM2NlMWIwNQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMjE6MjQ6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBOZXcgdUltYWdlIGxvdy1sZXZlbCBBUEkKCiAgICBBZGQgRkRULWJhc2VkIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgbmV3IGZvcm1hdCBjb21wb25lbnQgaW1hZ2VzLAogICAgY29uZmlndXJhdGlvbnMsIG5vZGUgb3BlcmF0aW9ucywgcHJvcGVydHkgZ2V0L3NldCwgZXRjLgoKICAgIGZpdF8JLSByb3V0aW5lcyBoYW5kbGluZyBnbG9iYWwgbmV3IGZvcm1hdCB1SW1hZ2Ugb3BlcmF0aW9ucwoJCSAgbGlrZSBnZXQvc2V0IHRvcCBsZXZlbCBwcm9wZXJ0eSwgcHJvY2VzcyBhbGwgbm9kZXMsIGV0Yy4KICAgIGZpdF9pbWFnZV8JLSByb3V0aW5lcyBoYW5kbGluZyBjb21wb25lbnQgaW1hZ2VzIHN1Ym5vZGVzCiAgICBmaXRfY29uZl8JLSByb3V0aW5lcyBoYW5kbGluZyBjb25maWd1cmF0aW9ucyBub2RlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMzBmMTgwNmY2MDk3OGQ3MDdiMGNmZjJkN2JmODlkMTQxZmMyNDI5MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXIgOSAxNjoyMDowMiAyMDA4ICswMTAwCgogICAgUmVsZWFzZSB2MS4zLjIKCiAgICBVcGRhdGUgQ0hBTkdFTE9HIGZvciByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNWI0NjRjMjg5YmE3MTVkMDk3OWI2ZTFmOTQ5NDdiYjhmMTA2OGQxNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBNYXIgOSAxNDo1MjoxMSAyMDA4ICswMTAwCgogICAgU0NNOiBmaXggJ3BhY2tlZCcgYXR0cmlidXRlIGlnbm9yZWQgZm9yIGZpZWxkIG9mIHR5cGUgJ2Nhbl9tc2dfdCcgd2FybmluZ3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkYjY5NWI3ODUxNWRkYjg4YTJkNGYzMzU3YzEyMDM0NWVmYmY1OWVjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE1hciA5IDEwOjQ0OjAxIDIwMDggKzAxMDAKCiAgICBzY2I5MzI4OiBGaXggZmxhc2ggd2FybmluZzogdHlwZSBxdWFsaWZpZXJzIGlnbm9yZWQgb24gZnVuY3Rpb24gcmV0dXJuIHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDJiM2U3ZTYxZDZhNzJmMTZhZWU5M2Y4NzBiYzZhZjY3ZjMwNzU4YzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDkgMTA6NTA6NDEgMjAwOCArMDEwMAoKICAgIGVzZC9jb21tb24vZnBnYS5jOiBmaXggaW5kZW50YXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjYzM4NDNlMzY0NTNlMmI4ZGI2NWQ3ZTU2ZGU5MzhiYTA0NTAxNmEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDEwOjMzOjMxIDIwMDggKzAxMDAKCiAgICBjb21tb24va2dkYi5jOiBmaXggJ2RlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcicgd2FybmluZwoKICAgIGFuZCBnZXQgcmlkIG9mIGEgY291cGxlIG9mIHVubmVlZGVkIGNhc3RzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGQ0ZjRhODM4ZDdkYzdjZjRkZTE3ZTNlOWE2N2UyZjIyMmI2YTFjOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBNYXIgOSAxMDowOTo1MyAyMDA4ICswMTAwCgogICAgZXNkL2NvbW1vbi9mcGdhLmM6IGZpeCAnYXNzaWdubWVudCBvZiByZWFkLW9ubHkgbG9jYXRpb24nIGVycm9yCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjNmZlNGRhYmFjMDY2ZTg3NTgzNDVkMjQ5MDMyNzY4NDk2OTgzYTNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDAyOjEzOjE5IDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogbWFrZSBidWlsZCBzaWxlbnRseSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDc2YmFiYzg2NTc2ZjA5MjU3MzU5OTMzNGM4NWVjNTQzZmRiYzYwMTUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTWFyIDkgMDI6MDc6NDkgMjAwOCArMDEwMAoKICAgIG01MDFzazogRml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyMTBlZDIwMDRlMDYyZmRkMDNmMjVhYjQ5MjU5OThhYTFiZDA4YTA3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciA5IDAwOjA2OjA5IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBmaXggb3V0IG9mIHRyZWUgYnVpbGQKCiAgICBhbmQgc2ltcGxpZnkgTWFrZWZpbGUgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0NmNiNTA3NGEzZjc0ZGU2NGViZDk3ZGQwYzRlYzdlYjNkNzY4YjkzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1hciA4IDIyOjM1OjMxIDIwMDggKzAxMDAKCiAgICBSZWxlYXNlIHYxLjMuMgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzhhOTBmODI3ZGY3NDUyMGU5MzljNzk0ZmM3NDEzZGFjZTIxYzRkYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgOCAyMjozNTowNCAyMDA4ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNThmM2M1N2M2MDA4YjQyZTAxZjU1MWQzYmU2ZWZkODhjMTRhYzg3ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBNYXIgOCAyMTozMDowNCAyMDA4ICswMTAwCgogICAgZXNkOiBGaXggd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdmcGdhX2Jvb3QnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBkNzU0NjlkNDhjMDU3OTUxNDRmNGI4YmE3NmFkZGJiNDkyMGE3YmJhCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTYXQgTWFyIDggMDk6MjU6NDkgMjAwOCArMDkwMAoKICAgIG5ldDogcnRsODE2OTogQWRkIHByb2Nlc3Npbmcgd2hlbiBPV05iaXQgZGlkJ3QgZW5hYmxlIGluIHJ0bF9yZWN2KCkKCiAgICBXaGVuIHJ0bF9yZWN2KCkgb2YgcnRsODE2OSBpcyBjYWxsZWQsIE9XTmJpdCBvZiBzdGF0dXMgcmVnaXN0ZXIKICAgIGlzIG5vdCBlbmFibGUgb2NjYXNpb25hbGx5LgogICAgcnRsX3JlY3YoKSBkb2Vzbid0IHdvcmsgbm9ybWFsbHkgd2hlbiB0aGUgZHJpdmVyIGRvZXNuJ3QgZG8KICAgIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcuCiAgICBUaGlzIHBhdGNoIGZpeCB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDgyYWZhYmZlYjhhZTZhMjdjN2IzOTYwMTFlYTk5ZjQ3MTJhYTczZmEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIE1hciA3IDA4OjE1OjI4IDIwMDggKzAxMDAKCiAgICBtZ3N1dmQ6IHVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uCgogICAgaW5pdGlhbGl6ZSB0aGUgVVBJT3ggY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBlNDkyYzkwYzI2MjE1ZTQ1OWFlYzBmZGYwZjhlZjFmZDIwNDk4OGY1CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgNyAwODoxMzo0MSAyMDA4ICswMTAwCgogICAgbWdjb2dlOiB1cGRhdGUgYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIGFkZCBzdXBwb3J0IGZvciB0aGUgY29uZmlnIEZsYXNoLgogICAgaW5pdGlhbGl6ZSB0aGUgVVBJT3ggY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyNzBmZTI2MWI3ZjkyOTI4MDBiMmIzZDFiZjE5YWU3Y2JjODgwMjU4CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1hciA3IDEyOjI3OjMxIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBtYWtlIGR0YiBiYXNlbmFtZSBmaWxlIHJlZmVyZW5jZXMgZXF1YWwgdGhvc2Ugb2YgbGludXgKCiAgICB0aGUgZHRzIGZpbGUgYmFzZW5hbWVzIHdlcmUgdXBkYXRlZCBpbiBsaW51eCAtIHRoaXMgaGVscHMgYXZvaWQKICAgIGluYWR2ZXJ0ZW50bHkgbG9hZGluZyBhbnkgb2xkIGR0YnMgbGF5aW5nIGFyb3VuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGYzMGI2MTU0ZjE2ZjVmZmE0YTlmNWJmY2E1ZTExNGQ3MmI2ZWY2NzUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDI3IDE2OjA4OjIyIDIwMDggLTA2MDAKCiAgICBuZXQ6IHVlY19waHk6IGFjdHVhbGx5IGluY3JlbWVudCB0aGUgdGltZW91dCBjb3VudGVyCgogICAgYWxsb3cgdS1ib290IHRvIHJlY292ZXIgKGFuZCwgZS5nLiwgc3dpdGNoIHRvIGFub3RoZXIgaW50ZXJmYWNlKSBpbiB0aGUKICAgIGNhc2Ugd2hlcmUgYSBQSFkgZG9lcyBub3QgcmVwb3J0IGF1dG9uZWdvdGlhdGlvbiBpcyBjb21wbGV0ZSB3aXRoaW4gaXRzCiAgICB0d28gc2Vjb25kIHRpbWVvdXQgdmFsdWUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NzIwMDNlNDM5NTdlZTBjODk1YWJlZDdjZDgyY2JlNzI4MjBjYmI4CkF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdvb2dsZW1haWwuY29tPgpEYXRlOglXZWQgTWFyIDUgMjE6Mzg6MTIgMjAwOCArMDEwMAoKICAgIGZpeCB0YWlodSBzb2Z0IHNwaV9yZWFkCgogICAgVGhlIHRhaWh1IGJvYXJkIHVzZWQgZ3Bpb19yZWFkX291dF9iaXQgd2hpY2ggcmVhZHMgdGhlIG91dHB1dCByZWdpc3RlciBhbmQgbm90CiAgICB0aGUgcGluIHN0YXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBCcnVubmVyIDxzdXBlci5maXJldHdpc3RlckBnbWFpbC5jb20+Cgpjb21taXQgZmM4NGE4NDk1YWM3NTBmNmI0YWRhZTgxZjhjNGYxMDBmNjViNjM0MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE1hciA3IDA4OjAxOjQzIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFNlcXVvaWE6IEFkZCBkZXZpY2UgdHJlZSAoZmR0KSBMaW51eCBib290aW5nIGRlZmF1bHQgZW52IHZhcmlhYmxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiZDQ0NThjYjQ3YWJlY2FiZDQwNmIxMjEwNDU3YmU5NmM2OWZjNDlkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWFyIDQgMTY6NTk6MjIgMjAwOCArMDgwMAoKICAgIDgzN3hFTURTOiBJbXByb3ZlIHRoZSBzeXN0ZW0gcGVyZm9ybWFuY2UKCiAgICAxLiBNYWtlIHRoZSBDU0IgYnVzIHBpcGVsaW5lIGRlcHRoIGFzIDQsIGFuZCBlbmFibGUKICAgICAgIHRoZSByZXBlYXQgbW9kZTsKICAgIDIuIFJhaXNlIHRoZSBlVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHk7CiAgICAzLiBVc2UgdGhlIGhpZ2hlc3QgSVAgYmxvY2tzIGNsb2NrLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDhhYjU4YjIxMjQ4MWIxYzU3OTQ3ZWEyMWFhOTZjNGNlODAwZDBiNApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDYgMTY6NDU6NTMgMjAwOCArMDEwMAoKICAgIFJlcGxhY2UgInJ1biBsb2FkOyBydW4gdXBkYXRlIiB3aXRoIGNvbmRpdGlvbmFsaXplZCAicnVuIGxvYWQgdXBkYXRlIi4KCiAgICBUaGUgbGF0dGVyIHZlcnNpb24gc3RvcHMgd2hlbiAicnVuIGxvYWQiIGZhaWxzIGZvciB3aGF0ZXZlciByZWFzb25zCiAgICByZW5kZXJpbmcgdGhlIGNvbWJpbmF0aW9uICphIGxvdCogbW9yZSBzZWN1cmUuCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgNmJjMTEzODg2ZDdkMzE2ZGYxYTRlNDU5YmVjOGJhZjAyNzUxODU1MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1hciA0IDE3OjQwOjQxIDIwMDggKzAxMDAKCiAgICBuZXQ6IFByaW50IGVycm9yIG1lc3NhZ2UgdXBvbiBuZXQgdXNhZ2Ugd2hlbiBubyBldGhlcm5ldC1pbnRlcmZhY2UgaXMgZm91bmQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzZWVuIG9uIFBQQzR4eCBib2FyZHMsIHdoZW4gbm8gTUFDIGFkZHJlc3MgaXMKICAgIGRlZmluZWQuIFRoZW4gbm8gZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBidXQgYSBzaW1wbGUgInRmdHAiCiAgICBjb21tYW5kIHdpbGwgcmV0dXJuIHdpdGhvdXQgYW55IGVycm9yIG1lc3NhZ2Ugd2hpY2ggaXMgcXVpdGUgY29uZnVzaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMzBhNTQ5YTM1NTMwMzJkODA5ZTAzNTYzMDZiNjJkZTBiMTI1OTAxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1hciA0IDEwOjAzOjAzIDIwMDggLTA2MDAKCiAgICBSZW1vdmUgZXJyb25lb3VzIG9yIGV4dHJhIHNwZC5oICNpbmNsdWRlcnMuCgogICAgTWFueSBvZiB0aGUgc3BkLmggI2luY2x1ZGVycyBkb24ndCBuZWVkIGl0LAogICAgYW5kIHdhbnRlZCB0byBoYXZlIHNwZF9zZHJhbSgpIGRlY2xhcmVkIGluc3RlYWQuCiAgICBTaW5jZSB0aGV5IGRpZG4ndCBnZXQgdGhhdCwgc29tZSBhbHNvIGhhZCBvcGVuCiAgICBjb2RlZCBleHRlcm4gZGVjbGFyYXRpb25zIG9mIGl0IGluc3RlYWQgb3IgYXMgd2VsbC4KICAgIEZpeCBpdCBhbGwgdXAgYnkgdXNpbmcgc3BkX3NkcmFtLmggd2hlcmUgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTQ0NzUzODZjZWYxNGFmM2ZkODhmMDUxOGI2ODhlNzU1NjY5NDg2ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgNCAxNzo0MToyOCAyMDA4ICswMTAwCgogICAgUENTNDQwRVA6IGZpeCBidWlsZCBwcm9ibGVtcyAocmVkdW5kYW50ICNkZWZpbmUpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlODVlMmZhODVlYzA5YTZmYWMyODQ2ZDFkODgxZDg3MzdlMmJiZGE5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTc6Mzk6MjUgMjAwOCArMDEwMAoKICAgIG5ldDogUHJpbnQgZXJyb3IgbWVzc2FnZSB1cG9uIG5ldCB1c2FnZSB3aGVuIG5vIGV0aGVybmV0LWludGVyZmFjZSBpcyBmb3VuZAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNlZW4gb24gUFBDNHh4IGJvYXJkcywgd2hlbiBubyBNQUMgYWRkcmVzcyBpcwogICAgZGVmaW5lZC4gVGhlbiBubyBldGhlcm5ldCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIGJ1dCBhIHNpbXBsZSAidGZ0cCIKICAgIGNvbW1hbmQgd2lsbCByZXR1cm4gd2l0aG91dCBhbnkgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBxdWl0ZSBjb25mdXNpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM4NGZhYWFmYjk5OWNhZTNjZTQ0N2M5M2UyOGEwYjdlMmU1ZmVmNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTc6Mzg6NTAgMjAwOCArMDEwMAoKICAgIFc3T0xNQy9XN09MTUc6IGZpeCBidWlsZCBwcm9ibGVtcyAocmVkdW5kYW50ICNkZWZpbmUpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmOTMwMWUxY2RhMjk2MjQ1YmEwNTJkN2IwODMyMTE5OWMzZDBhZjlkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1hciA0IDE0OjU4OjMxIDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogZml4IHByb2JsZW0gd2l0aCBvdXQtb2YtdHJlZSBidWlsZHMgaW50cm9kdWNlZCBieSA1MDEzYzA5ZgoKICAgIENvbW1pdCA1MDEzYzA5ZiAoTWFrZWZpbGU6IGNsZWFudXAgImNsZWFuIiB0YXJnZXQpIGludHJvZHVjZWQgYQogICAgcHJvYmxlbSBmb3Igb3V0LW9mLXRyZWUgYnVpbGRzIHdoaWNoIGNhdXNlZCAibWFrZSBjbGVhbiIgdG8gZmFpbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGRmZWNlOTUwMDU1NmJlZDVkODI0NGIxYzE1ZDk3M2NlYzdjMjViZmUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDQgMTE6NTg6MjYgMjAwOCArMDEwMAoKICAgIGV4YW1wbGVzL01ha2VmaWxlOiBidWlsZCAiaGVsbG9fd29ybGQiIG9uIDh4eCwgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzRlYjAyMjI1OTRmZDIzYWFmZGYxNjhlNjBlODcyODE0ZWVhOGI2MgpBdXRob3I6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgpEYXRlOglNb24gTWFyIDMgMTU6Mjc6MDUgMjAwOCAtMDUwMAoKICAgIFBQQzR4eCAoU2VxdW9pYSk6IEZpeCBFdGhlcm5ldCAicmVtb3RlIGZhdWx0IiBwcm9ibGVtcwoKICAgIEV2ZXJ5IG5vdyBhbmQgdGhlbiBhIFNlcXVvaWEgYm9hcmQgKG9yIGVxdWl2YWxlbnQgaGFyZHdhcmUpIGhhZAogICAgcHJvYmxlbXMgY29ubmVjdGluZyB0byBhIEdpZ2FiaXQgY2FwYWJsZSBuZXR3b3JrIGludGVyZmFjZS4KCiAgICBUaGVyZSB3ZXJlIGRpZmZlcmVuY2VzIGluIHRoZSBQSFkgc2V0dXAgYmV0d2VlbiBMaW51eCBhbmQgVS1Cb290LgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uIEFwcGFyZW50bHkgInJlbW90ZSBmYXVsdCIgaXMgYmVpbmcgc2V0LAogICAgd2hpY2ggc2lnbmFscyB0byBzb21lIGRldmljZXMgKG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNhYmxlKSB0aGF0IGEKICAgIGZhdWx0IGhhcyBvY2N1cnJlZCwgd2hpbGUgb3RoZXIgZGV2aWNlcyBpZ25vcmUgaXQuIEkgYmVsaWV2ZSB0aGUgUkYgYml0CiAgICB3YXMgY2F1c2luZyB0aGUgaXNzdWUsIGJ1dCBJIHJlbW92ZWQgVDQgYWxzbywgdG8gbWF0Y2ggdXAgd2l0aCBMaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KCmNvbW1pdCA0OTFmYjZkZWE5ZjUyZmRiOWNiNTk5NmU4ZTk3OGI5ZTk2ODUxNzlmCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIE1hciAzIDA5OjU4OjUyIDIwMDggLTA2MDAKCiAgICBmaXggUUUgZmlybXdhcmUgdXBsb2FkaW5nIGxpbWl0CgogICAgRml4IGEgdHlwbyBpbiBxZV91cGxvYWRfZmlybXdhcmUoKSB0aGF0IHByZXZlbnRlZCB1cGxvYWRpbmcgZmlybXdhcmUgb24KICAgIHN5c3RlbXMgd2l0aCBtb3JlIHRoYW4gb25lIFJJU0MgY29yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQyYmE1OGUwYzMwMmIzMzlhM2MyZmFhNjAwNmEwMTNjNmYxODZiN2EKQXV0aG9yOiBCZXJuaGFyZCBOZW1lYyA8Ym5lbWVjQGdhbnNzbG9zZXIuY29tPgpEYXRlOglNb24gTWFyIDMgMTE6NTc6MjMgMjAwOCArMDAwMAoKICAgIEZpeCBlbmRpYW5lc3MgcHJvYmxlbSBpbiBjcmFtZnMgY29kZSAoY3JhbWZzIGlzIGFsd2F5cyBob3N0LWVuZGlhbiBpbiBMaW51eCkKCiAgICBPcmlnaW5hbGx5IHBvaW50ZWQgb3V0IGJ5IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAdGJveC5iaXo+LAogICAgc2VlIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC8yMjg0NgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlcm5oYXJkIE5lbWVjIDxibmVtZWMgPGF0PiBnYW5zc2xvc2VyLmNvbT4KCmNvbW1pdCA4NGQwYzJmMWUzOWNhZmY1OGJmNzY1YTdhYjdjNzJkYTIzYzI1ZWM4CkF1dGhvcjogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgpEYXRlOglNb24gTWFyIDMgMTA6Mzk6MTMgMjAwOCArMDIwMAoKICAgIGZpeCBjb3B5IGZyb20gcmFtIHRvIGRhdGFmbGFzaAoKICAgIElmIEkgdHJ5IHRvICJjcC5iIDxyYW0+IDxkYXRhZmxhc2g+IiwgdS1ib290IHNlbGVjdHMgbm9ybWFsIGZsYXNoCiAgICByb3V0aW5lcyBpbnN0ZWFkIG9mIGRhdGFmbGFzaC4gVGhpcyBpcyBiZWNhdXNlIGl0IGNoZWNrcyAiaWYgc291cmNlCiAgICBhZGRyZXNzIGlzIG5vdCBkYXRhZmxhc2giIGluc3RlYWQgb2YgdGFyZ2V0IGFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgoKY29tbWl0IDMyYmYzZDE0M2E4ODhmOGRlYWNmZGNjOTdlODk4ZjZjMDZkMGFlYTQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWFyIDMgMTI6MTY6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBxdW90aW5nIHByb2JsZW0gKHByZWJvb3Qgc2V0dGluZykgaW4gbWFueSBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YjBiMmI2ZmM5ZmUyMmUzODY0YzJhNTczMTZkOTFhMjUwN2VjMjE1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAzIDEyOjM2OjQ5IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBGaXggZGVmYXVsdCBlbnZpcm9ubWVudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDkxYzgyMDc2YWU0OTJiYjFmOWQ5YzQ3YTQ4MTMxNDYzMWQzMmRjOGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTWFyIDIgMTY6MTI6MzEgMjAwOCArMDEwMAoKICAgIE1ha2VmaWxlOiBGaXggbWlzc2luZyB1bmNvbmZpZyBhbmQgbWtjb25maWcgdXNlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4Y2U0ZTVjMmMwMmNiN2U4YWRkZGY3YjY1MWQzMDUwZDgxY2U0YzFkCkF1dGhvcjogbWljaGFlbCA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+CkRhdGU6CVN1biBNYXIgMiAyMzozMzo0NiAyMDA4ICswMTAwCgogICAgRml4IGNoZWNraW5nIGZhdDMyIGNsdXN0ZXIgc2l6ZS4KCiAgICBUaGlzIGZpeGVzIHRoZSBjbHVzdGVyIHNpemUgdGVzdHMgaW4gdGhlIEZBVDMyIGZpbGUgc3lzdGVtLgogICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgVkZBVCBzdXBwb3J0IGRvZXNuJ3Qgd29yayBpZiB0aGUKICAgIHJlZmVycmVkIGNsdXN0ZXIgaGFzIGFuIG9mZnNldCA+IDE2Yml0IHJlcHJlc2VudGF0aW9uLCBjYXVzaW5nCiAgICAiZmF0bG9hZCIgYW5kICJmYXRscyIgY29tbWFuZHMgZXRjLiB0byBmYWlsLgoKICAgIFNpZ25lZC1vZmYtYnk6IG1pY2hhZWwgdHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KCmNvbW1pdCA2NjFiYWQ2M2EwNzZhOTZjMzljNjRmMTM2OTE1ZjE0NjcyNWFmOTJiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyIDIyOjU3OjIzIDIwMDggKzAxMDAKCiAgICBQcmVwYXJlIHYxLjMuMi1yYzIgcmVsZWFzZSBjYW5kaWRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDc2OTU3Y2IzZDYyMWJmNjY0MzExOTA4ZTU5NjJlMTUxYzYzM2MyODUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgMSAxMjoxMTo0MCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBFTUFDOiBGaXggNDA1RVogZmlmbyBzaXplIHNldHVwIGluIEVNQUNfTVIxCgogICAgVGhlIDQwNUVaIG9ubHkgc3VwcG9ydHMgNTEyIGJ5dGVzIG9mIHJ4LS90eC1maWZvIEVNQUMgc2l6ZXMuIEJ1dAogICAgY3VycmVudGx5IDRrLzJrIGlzIGNvbmZpZ3VyZWQuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZS4KCiAgICBUaGFua3MgdG8gVGhvbWFzIEtpbmRsZXIgPHRraW5kbGVyQGxlbm9yZC5kZT4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMTg5NzhjOGViNDM4MDNlMjc5NDIzMzkyMmRmNDI0OWZhMjc4YjgzCkF1dGhvcjogV29vZHJ1ZmYsIFJpY2hhcmQgPHItd29vZHJ1ZmYyQHRpLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxNzozNDozNSAyMDA4IC0wNjAwCgogICAgRml4IGFsaWdubWVudCBlcnJvciBvbiBBUk0gZm9yIG1vZHVsZXMKCiAgICBGaXggYWxpZ25tZW50IGZhdWx0IG9uIEFSTSB3aGVuIHJ1bm5pbmcgbW9kdWxlcy4gIFdpdGggb3V0IGFuIGV4cGxpY2l0CiAgICBsaW5rZXIgZmlsZSBnY2M0LjIuMSB3aWxsIGhhbGYgd29yZCBhbGlnbiBfX2Jzc19zdGFydCdzIHZhbHVlLiAgVGhlIHdvcmQKICAgIGRlcmVmZXJlbmNlIHdpbGwgY3Jhc2ggaGVsbG9fd29ybGQuCgogICAgc2lnbmVkLW9mZi1ieSBSaWNoYXJkIFdvb2RydWZmIDxyLXdvb2RydWZmMkB0aS5jb20+Cgpjb21taXQgY2UxMTIwZGQ3MDNlNmYxMmM1OWU0ZWJhOTk2MjM1NmEwMzAwYjgzMgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxNzo0NTozMSAyMDA4ICswODAwCgogICAgZnM6IEZpeCBleHQyIHJlYWQgaXNzdWUKCiAgICBUaGUgZXh0MiBhbGlnbmVkIHByb2Nlc3Mgd2lsbCBjb3JydXB0IHRoZSBrZXkKICAgIGRhdGEgc3RydWN0LCB0aGUgcGF0Y2ggZml4IHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1MDEzYzA5ZjdhNTY3NTk1MmEzY2E4OGI2YmM2YzkyNGU2M2FmMzNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE1hciAyIDIyOjQ1OjMzIDIwMDggKzAxMDAKCiAgICBNYWtlZmlsZTogY2xlYW51cCAiY2xlYW4iIHRhcmdldAoKICAgIE1ha2Ugc3VyZSBDRFBBVEggc2V0dGluZ3MgY2Fubm90IGludGVyZmVyZS4KICAgIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmZmRhNTg2ZmMxMzczMjQzYzk3OTRiYWJkZTY5NTAwZjYyOTNhOGQ4CkF1dGhvcjogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAxMTo0NjowNSAyMDA4ICswODAwCgogICAgYWRkIGNzY29wZSBidWlsZCB0YXJnZXQKCiAgICBBZGQgY3Njb3BlIGJ1aWxkIHRhcmdldCB0byBnZW5lcmF0ZSBjc2NvcGUgZGF0YWJhc2UgZm9yIGNvZGUgYnJvd3NpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNjU1YWRlZjY1ZTRjZjZiOTI5MDU0YjA0OWVlMTlhZTliNWNjYmUyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxNTowNjozOSAyMDA4IC0wNjAwCgogICAgbmV0OiB1ZWNfcGh5OiBoYW5kbGUgODhlMTExMSByZXYuQjIgZXJyYXR1bSA1LjYKCiAgICBlcnJhdHVtIDUuNiBzdGF0ZXMgdGhlIGF1dG9uZWcgY29tcGxldGlvbiBiaXQgaXMgZnVuY3Rpb25hbCBvbmx5IGlmIHRoZQogICAgYXV0b25lZyBiaXQgaXMgYXNzZXJ0ZWQuCgogICAgVGhpcyBmaXhlcyBhbnkgc2Vjb25kYXJpbHktaXNzdWVkIG5ldHdvcmtpbmcgY29tbWFuZHMgb24gbm9uLWdpZ2FiaXQKICAgIGxpbmtzIG9uIHRoZSBtcGM4MzYwIG1kcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVmOTFkYjdmNTgyY2ExN2IxZjE5ZjEwMTg5YzAyNTY5NmYzMzNkMmUKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAyNiAwOTozODoxNCAyMDA4IC0wNzAwCgogICAgTVBDNTEyMWUgQURTIFBDSSBzdXBwb3J0IHRha2UgMwoKICAgIEFkZHMgUENJIHN1cHBvcnQgZm9yIE1QQzUxMjEKCiAgICBUZXN0ZWQgd2l0aCBkcml2ZXJzL25ldC9ydGw4MTM5LmMKCiAgICBTdXBwb3J0IGlzIGNvbmRpdGlvbmFsIHNpbmNlIFBDSSBvbiBvbGQgc2lsaWNvbiBkb2VzIG5vdCB3b3JrLgoKICAgIGFkczUxMjFfUENJX2NvbmZpZyB0dXJucyBvbiBQQ0kKCiAgICBJbiB0aGlzIHZlcnNpb24sIGNvbmRpdGlvbiBjb21waWxhdGlvbiBvZiBQQ0kgY29kZSBoYXMgYmVlbiBtb3ZlZAogICAgZnJvbSBpZmRlZiBpbiBib2FyZC9hZHM1MTIxL3BjaS5jIHRvIGJvYXJkL2FkczUxMjEvTWFrZWZpbGUgYXMKICAgIHN1Z2dlc3RlZCBieSBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ0YjRkYmVkNDEzM2Y2NTc3MDViN2M1MTkzMjA5ZGE5OTc4MjQzYTcKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMjUgMjM6NTM6MDcgMjAwOCArMDEwMAoKICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxhdGlvbiBvZiBwb3N0L2RyaXZlcnMvbWVtb3J5LmMKCiAgICBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsYXRpb24gd2l0aCBuZXcgZ2NjIGluIGVsZGstNC4yCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IDRmYWUzNWE1M2IzZTk1ODI1NGQ2NTc0YTFjYzdlMTA4MTFmYzY3MjYKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMjUgMjA6NTQ6MDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogRml4IHByb2JsZW0gaW4gNHh4X2VuZXQuYyBkcml2ZXIKCiAgICBVLUJvb3QgY3Jhc2hlcyBpbiB0aGUgbmV0IGxvb3AgaWYgQ09ORklHXzR4eF9EQ0FDSEUgaXMKICAgIGVuYWJsZWQuIFRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSBlbnN1cmUgdGhhdCAnZXRocm90YXRlJwogICAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXNuJ3Qgc2V0IHRvICJubyIgYW5kIHRoZW4gcnVuCiAgICAidGZ0cCAyMDAwMDAgbm90X2V4aXN0ZW50X2ZpbGUiLgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBmaXggdGhlIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA2MGVjNjU0YzVlYjgwZDBmZTBjMzhhM2JkNDIxNDAyMTViYzA2NDg0CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglNb24gRmViIDI1IDIwOjA0OjIwIDIwMDggKzAxMDAKCiAgICBQT1NUOiBEaXNhYmxlIGNhY2hlIHdoaWxlIFNQUiBQT1NUCgogICAgQ3VycmVudGx5IChzaW5jZSBjb21taXQgYjJlMjE0MmMpIHUtYm9vdCBjcmFzaGVzIG9uCiAgICBzZXF1b2lhIGJvYXJkIHdoaWxlIFNQUiB0ZXN0IGlmIENPTkZJR180eHhfRENBQ0hFIGlzCiAgICBlbmFibGVkLiBUaGlzIHBhdGNoIGRpc2FibGVzIHRoZSBjYWNoZSB3aGlsZSBTUFIgdGVzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgYzMxM2IyYzZjNTU1ZTdkODllYzU5YmQ1MWM1OWFiMTY0YWQwMTA1ZApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglNb24gRmViIDI1IDE3OjUyOjQwIDIwMDggKzAxMDAKCiAgICBUUU01MjAwOiB1c2UgYXV0b21hdGljIGZkdCBtZW1vcnkgZml4dXAgKHBhcnQgMikKCiAgICBDYWxsIGZkdF9maXh1cF9tZW1vcnkoKSBvbiB0aGUgYm9hcmRzIFRRTTUyMDAsIFRRTTUyMDBfQiwgVFFNNTIwMFMsCiAgICBUQjUyMDAgYW5kIFRCNTIwMF9CIHRvIGZpeHVwIHRoZSAvbWVtb3J5IG5vZGUgd2l0aCB0aGUgbWVtb3J5IHZhbHVlcwogICAgZGV0ZWN0ZWQgYnkgVS1Cb290LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDQ0Y2VlYzI1M2VhOTQxYjMwMWFiZjRiMDc5ZDUyMzI0ZGVmNjlkOTIKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIEZlYiAyNSAxNToxNzowNSAyMDA4ICswMTAwCgogICAgVFFNNTIwMDogdXNlIGF1dG9tYXRpYyBmZHQgbWVtb3J5IGZpeHVwCgogICAgQ2FsbCBmZHRfZml4dXBfbWVtb3J5KCkgb24gdGhlIGJvYXJkcyBUUU01MjAwLCBUUU01MjAwX0IsIFRRTTUyMDBTLAogICAgVEI1MjAwIGFuZCBUQjUyMDBfQiB0byBmaXh1cCB0aGUgL21lbW9yeSBub2RlIHdpdGggdGhlIG1lbW9yeSB2YWx1ZXMKICAgIGRldGVjdGVkIGJ5IFUtQm9vdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmM2EzMjlhY2IyNjAxN2Q4ZTEwZTljOTNlMWU3MjZjMmE1YWM2MzRhCkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CU1vbiBGZWIgMjUgMTM6Mjc6NTIgMjAwOCArMDEwMAoKICAgIFRRTTUyMDA6IGZpeCBidWcgaW4gU0RSQU0gaW5pdGlhbGl6YXRpb24gY29kZQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZQogICAgVFFNNTIwMC4gVGhlIGhpX2FkZHIgYml0IGlzIG5vdyBzZXQgY29ycmVjdGx5LiBXaXRob3V0IHRoaXMgcGF0Y2gKICAgIHRoZSBoaV9hZGRyIGJpdCBpcyBhbHdheXMgc2V0IHRvIDEsIGlmIHRoZSBzZWNvbmQgU0RSQU0gYmFuayBpcwogICAgbm90IHBvcHVsYXRlZC4KCiAgICBGb3Igb3RoZXIgTVBDNTIwMCBib2FyZHMgYSBjb3JyZXNwb25kaWcgcGF0Y2ggaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkCiAgICBzb21lIHRpbWUgYWdvLCBzZWUgY29tbWl0IGE2MzEwOTI4MWFkNDFiMGZiNDg5ZmRjYjkwMTE3MWY3NmJjZGJjMmMuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICAtLQogICAgRm9yZ2V0IHRoZSBmaXJzdCBwYXRjaCBwbGVhc2UuIEkgY29uZnVzZWQgZmxhc2ggd2l0aCBTRFJBTSBpbgogICAgdGhlIGNvbW1lbnQgLi4uCgpjb21taXQgMjE3YmY2YjZhMzEzZDljY2I2MTlhNGRiYzA5ZjczZjc3Y2Q0OGRmMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTIgMjAwOCArMDEwMAoKICAgIG14MWZzMi9mbGFzaDogRml4IG11bHRpcGxlIGNvbXBpbGVyIHdhcm5pbmdzCgogICAgInBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzIgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTU5OWMyOGNlZjU1YmU0MmE4Y2E2ZmE4MDg2YjFhNDRlNTZhODVkMgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTEgMjAwOCArMDEwMAoKICAgIGFybS1pbXg6IEZpeCByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIFN5bmMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgd2l0aCBsaW51eAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYzliY2Y3NWZlY2M1ODg4NmFmNzdkMmE1NzFjZmYyZWFiMzllYWI2ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTAgMjAwOCArMDEwMAoKICAgIGFjdHVhMS9hY3R1YTIvYWN0dWEzOiBGaXggbXVsdGlwbGUgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmdzCgogICAgLSBhY3R1YTE6CglhY3R1eDEuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgxLmM6OTI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCgogICAgLSBhY3R1YTI6CglhY3R1eDIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgyLmM6MTAwOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3MnCglhY3R1eDIuYzo5OTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAncmVzZXRfcGh5JzoKCWFjdHV4Mi5jOjEzMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpJwoKICAgIC0gYWN0dWEzOgoJYWN0dXgzLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKCWFjdHV4My5jOjExNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGY4ZmE2MzY4YTZhMGMwMjE2NGRhOGUyZjUyZjE4ZDQ1N2M2OTc3YmQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTdW4gRmViIDI0IDExOjQ0OjI5IDIwMDggKzA5MDAKCiAgICBSZW1vdmUgdGhlIF9fU1RSSUNUX0FOU0lfXyBjaGVjayBmcm9tIHRoZSBfX3U2NC9fX3M2NCBkZWNsYXJhdGlvbiBvbiAzMmJpdCB0YXJnZXRzLgoKICAgIFRoZSBwcmV2aW91cyBwYXRjaCB3YXMgbGFja2luZyBvZiBpMzg2LCBtaWNyb2JsYXplLCBuaW9zIGFuZCBuaW9zMi4gVGhpcwogICAgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZW0uCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwNWUwN2IxZWEyMjg0NGU5NDZjZmNmN2Q1ZThhMDE5OWQxOGQyYTk1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEZlYiAyOSAyMjoyMjo0NiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBGRFQgYmxvYiB0b3RhbHNpemUgY2FsY3VsYXRpb24gaW4gYm9vdF9yZWxvY2F0ZV9mZHQoKQoKICAgIERvIG5vdCB1c2UgZ2xvYmFsIGZkdCBibG9iIHBvaW50ZXIsIGNhbGN1bGF0ZSBibG9iIHNpemUgZnJvbSByb3V0aW5lCiAgICBhcmd1bWVudCBibG9iIHBvaW50ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkMWNjNTI4NzljODk2NjUwN2RhZDlmYjU3NTQ4MWU2ZDM5ODVlNjRlCkF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkRhdGU6CVR1ZSBGZWIgMTIgMDA6NTg6MzEgMjAwOCArMTEwMAoKICAgIGxpYmZkdDogQWRkIGFuZCB1c2UgYSBub2RlIGl0ZXJhdGlvbiBoZWxwZXIgZnVuY3Rpb24uCgogICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9uZXh0X25vZGUoKSBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0bwogICAgaXRlcmF0ZSB0aHJvdWdoIG5vZGVzIG9mIHRoZSB0cmVlIHdoaWxlIGtlZXBpbmcgdHJhY2sgb2YgZGVwdGguICBUaGlzCiAgICBmdW5jdGlvbiBpcyB1c2VkIHRvIHNpbXBsaWZ5IHRoZSBpdGVyYXRpb24gY29kZSBpbiBhIGxvdCBvZiBvdGhlcgogICAgZnVuY3Rpb25zLCBhbmQgaXMgYWxzbyBleHBvcnRlZCBmb3IgdXNlIGJ5IGxpYnJhcnkgdXNlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cgpjb21taXQgOGNmMzA4MDlhODI5MDJhNDcxODY2ZDJmMDc3MjVjZTNiOGEyMjI5MQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MjQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgbGliZmR0IHN1cHBvcnQgdG8gbWtpbWFnZQoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTZlNTMwZjAwZDMxYTg0OTRhMDQyMjc5OWIyYjlhNjkyYTljMGViOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MjMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgc2hhMS5vIG9iamVjdCB0byBta2ltYWdlIGJpbmFyeSBidWlsZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgZGY2ZjFiODk1Yzk5Nzk3OGYwM2FmZTA0NTAyZWU3NmI3YmEzNGFiOQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggY29tcG9uZW50IGhhbmRsaW5nIGZvciBsZWdhY3kgbXVsdGkgY29tcG9uZW50IGltYWdlcwoKICAgIFVzZSB1aW50MzJfdCB3aGVuIGFjY2Vzc2luZyBzaXplIHRhYmxlIGluIGltYWdlX211bHRpX2NvdW50KCkgYW5kCiAgICBpbWFnZV9tdWx0aV9nZXRpbWcoKSBmb3IgbXVsdGkgY29tcG9uZW50IGltYWdlcy4KCiAgICBBZGQgbWlzc2luZyB1aW1hZ2VfdG9fY3B1KCkgZW5kaWFubmVzcyBjb252ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNTcwYWJiMGFkMTIwZjYwMDJiY2FhM2NmNmYzMmJkNGNhMmUxYjI0OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTU6NTk6NTkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBTaGFyZSBjb21tb24gdUltYWdlIGNvZGUgYmV0d2VlbiBta2ltYWdlIGFuZCBVLWJvb3QKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBjb21tb24gcm91dGluZXM6CgogICAgMSkgRGVkaWNhdGVkIG1raW1hZ2UgcHJpbnRfaGVhZGVyKCkgaXMgcmVwbGFjZWQgd2l0aCBjb21tb24KICAgIGltYWdlX3ByaW50X2NvbnRlbnRzKCkKICAgIGltYWdlX3ByaW50X2NvbnRlbnRzX25vaW5kZW50KCkKCiAgICAyKSBDb21tb24gb3MvYXJjaC90eXBlL2NvbXAgZmllbGRzIG5hbWUgPC0tPiBpZCB0cmFuc2xhdGlvbiByb3V0aW5lcwogICAgZ2VuaW1nX2dldF9vc19uYW1lKCkKICAgIGdlbmltZ19nZXRfYXJjaF9uYW1lKCkKICAgIGdlbmltZ19nZXRfdHlwZV9uYW1lKCkKICAgIGdlbmltZ19nZXRfY29tcF9uYW1lKCkKICAgIGdlbmltZ19nZXRfb3NfaWQoKQogICAgZ2VuaW1nX2dldF9hcmNoX2lkKCkKICAgIGdlbmltZ19nZXRfdHlwZV9pZCgpCiAgICBnZW5pbWdfZ2V0X2NvbXBfaWQoKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOWE0ZGFhZDBhMzVlYjUxNDMwMzdlZWE5Zjc4NmEzZTlkNjcyYmRkNgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBGZWIgMjkgMTQ6NTg6MzQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBVcGRhdGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIGJvb3RtL3VJbWFnZSByZWxhdGVkIGNvZGUKCiAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGZvbGxvd2luZyBwcmVmaXggY29udmVudGlvbiBmb3IgdGhlCiAgICBpbWFnZSBmb3JtYXQgaGFuZGxpbmcgYW5kIGJvb3RtIHJlbGF0ZWQgY29kZToKCiAgICBnZW5pbWdfCQktIGR1YWwgZm9ybWF0IHNoYXJlZCBjb2RlCiAgICBpbWFnZV8JCS0gbGVnYWN5IHVJbWFnZSBmb3JtYXQgc3BlY2lmaWMgY29kZQogICAgZml0XwkJLSBuZXcgdUltYWdlIGZvcm1hdCBzcGVjaWZpYyBjb2RlCiAgICBib290XwkJLSBib290aW5nIHByb2Nlc3MgcmVsYXRlZCBjb2RlCgogICAgUmVsYXRlZCByb3V0aW5lcyBhcmUgcmVuYW1lZCBhbmQgYSBmZXcgcGllY2VzIG9mIGNvZGUgYXJlIG1vdmVkIGFyb3VuZCBhbmQKICAgIHJlLWdyb3VwZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3NWZhMDAyYzQ3MTcxYjczZmI0YzFmMmMyZmU0ZDYzOTFjMTM2Mjc2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo1MSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIFJlc3BlY3QgYXV0b3N0YXJ0IHNldHRpbmcgaW4gbGludXggYm9vdG0KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZDNmMmZhMGQyNzg0NjdiMjIzMmU0ZWIyMzcyZjkwNWMzZmViZmJlYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NTAgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBQcm92aWRlIGFiaWxpdHkgdG8gcmVzdHJpY3QgcmVnaW9uIHVzZWQgZm9yIGJvb3QgaW1hZ2VzCgogICAgQWxsb3cgdGhlIHVzZXIgdG8gc2V0ICdib290bV9sb3cnIGFuZCAnYm9vdG1fc2l6ZScgZW52IHZhcnMgYXMgYSB3YXkKICAgIHRvIHJlc3RyaWN0IHdoYXQgbWVtb3J5IHJhbmdlIGlzIHVzZWQgZm9yIGJvb3RtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBlODIyZDdmYzRkZDQ3NTVkNGQwYTIyZjA1ZTMzZjMzZDFhMDQ4MWRhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0OSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIFVzZSBsbWIgZm9yIGJvb3RtIGFsbG9jYXRpb25zCgogICAgQ29udmVydCBnZW5lcmljIHJhbWRpc2tfaGlnaCgpLCBnZXRfYm9vdF9jbWRsaW5lKCksIGdldF9ib290X2tiZCgpCiAgICBmdW5jdGlvbnMgb3ZlciB0byB1c2luZyBsbWIgZm9yIGFsbG9jYXRpb24gb2YgdGhlIHJhbWRpc2ssIGNvbW1hbmQgbGluZQogICAgYW5kIGtlcm5lbCBiZCBpbmZvLgoKICAgIENvbnZlcnQgUFBDIHNwZWNpZmljIGZkdF9yZWxvY2F0ZSgpIHRvIHVzZSBsbWIgZm9yIGFsbG9jYXRpb24gb2YgdGhlIGRldmljZQogICAgdHJlZS4KCiAgICBQcm92aWRlZCBhIHdlYWsgZnVuY3Rpb24gdGhhdCBib2FyZCBjb2RlIGNhbiBjYWxsIHRvIGRvIGFkZGl0aW9uYWwKICAgIGxtYiByZXNlcnZlcyBpZiBuZWVkZWQuCgogICAgQWxzbyBpbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYm9vdG1hcF9iYXNlIHRvIHNwZWNpZnkgdGhlIG9mZnNldCBpbgogICAgcGh5c2ljYWwgbWVtb3J5IHRoYXQgdGhlIGJvb3RtYXAgaXMgbG9jYXRlZCBhdC4gIFRoaXMgaXMgdXNlZCBmb3IKICAgIGFsbG9jYXRpb25zIG9mIHRoZSBjbWRsaW5lLCBrZXJuZWwgYmQsIGFuZCBkZXZpY2UgdHJlZSBhcyB0aGV5IHNob3VsZAogICAgYmUgY29udGFpbmVkIHdpdGhpbiBib290bWFwX2Jhc2UgYW5kIGJvb3RtYXBfYmFzZSArIENGR19CT09UTUFQU1ouCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNTYxNGU3OTI2ODYzYmYwMjI1ZWM4NjBkOWIzMTk3NDFhOWM0MDA0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0OCAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBhdXRvc3RhcnQgZmxhZyB0byBib290bV9oZWFkZXJzIHN0cnVjdHVyZQoKICAgIFRoZSBhdXRvc3RhcnQgZW52IHZhcmlhYmxlIHdhcyBkcm9wcGVkIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgbmV3IHVJbWFnZQogICAgY2xlYW51cC4gIEFkZCBpdCBiYWNrIGhlcmUgc28gdGhlIGFyY2ggc3BlY2lmaWMgY29kZSBjYW4gZGVjaWRlIGlmIGl0CiAgICB3YW50cyB0byByZWFsbHkgYm9vdCBvciBub3QuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRlZDY1NTJmNzE1OTgzYmZjN2QyMTJjMTE5OWExZjc5NmYxMTQ0YWQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ3IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gSW50cm9kdWNlIGxtYiBmcm9tIGxpbnV4IGtlcm5lbCBmb3IgbWVtb3J5IG1nbXQgb2YgYm9vdCBpbWFnZXMKCiAgICBJbnRyb2R1Y2UgdGhlIExNQiBsaWIgdXNlZCBvbiBQUEMgaW4gdGhlIGtlcm5lbCBhcyBhIGNsZWFuIHdheSB0byBtYW5hZ2UKICAgIHRoZSBtZW1vcnkgc3BhY2VzIHVzZWQgYnkgdmFyaW91cyBib290IGltYWdlcyBhbmQgc3RydWN0dXJlcy4gIFRoaXMgY29kZQogICAgd2lsbCBhbGxvdyB1cyB0byBzaW1wbGlmeSB0aGUgY29kZSBpbiBib290bSBhbmQgaXRzIHN1cHBvcnQgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDY0OGMyZTdhMTczYjBkN2YxN2JlZjRhZGFhMDYyMzA5MGM5ZTkwNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBGZWIgMTkgMjI6MDM6NDcgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBwcGM6IEFsbG93IGJvYXJkcyB0byBzcGVjaWZ5IGVmZmVjdGl2ZSBhbW91bnQgb2YgbWVtb3J5CgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYWJsZSBvZiBkb2luZyB1cCB0byAyRykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDI3NGNlYTJiZGRiY2ExMGNkYWQ3ZGFhNTE4OTUxYjc1YzQ0ZWY2YmMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ2IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gcmV3b3JrIGVycm9yIGhhbmRsaW5nIHNvIGNvbW1vbiBmdW5jdGlvbnMgZG9uJ3QgcmVzZXQKCiAgICBDaGFuZ2VkIGltYWdlX2dldF9yYW1kaXNrKCkgdG8ganVzdCByZXR1cm4gTlVMTCBvbiBlcnJvciBhbmQgaGF2ZQogICAgZ2V0X3JhbWRpc2soKSBwcm9wb2dhdGUgdGhhdCBlcnJvciB0byB0aGUgY2FsbGVyLiAgSXQncyBsZWZ0IHRvIHRoZQogICAgY2FsbGVyIHRvIGNhbGwgZG9fcmVzZXQoKSBpZiBpdCB3YW50cyB0by4KCiAgICBBbHNvIG1vdmVkIGNhbGxpbmcgZG9fcmVzZXQoKSBpbiBnZXRfZmR0KCkgYW5kIGZkdF9yZWxvY2F0ZSgpIG9uIHBwYwogICAgdG8gYSBjb21tb24gbG9jYXRpb24uICBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgY2hhbmdlIGdldF9mZHQoKSBhbmQKICAgIGZkdF9yZWxvY2F0ZSgpIHRvIHJldHVybiBzdWNjZXNzL2ZhaWx1cmUgYW5kIG5vdCBjYWxsIGRvX3Jlc2V0KCkgYXQgYWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkMmJjMDk1YTYzOTY3MmRlZjExZDVkMDQzYjU2ODhkMGRiZDY5MmVjCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0NSAyMDA4IC0wNjAwCgogICAgW25ldyB1SW1hZ2VdIHBwYzogUmUtb3JkZXIgcmFtZGlzay9mZHQgaGFuZGxpbmcgc2VxdWVuY2UKCiAgICBEb2luZyB0aGUgZmR0IGJlZm9yZSB0aGUgcmFtZGlzayBhbGxvd3MgdXMgdG8gZ3JvdyB0aGUgZmR0IHcvbyBjb25jZXJuCiAgICBob3dldmVyIGl0IGRvZXMgbWVhbiB3ZSBoYXZlIHRvIGdvIGluIGFuZCBmaXh1cCB0aGUgaW5pdHJkIGluZm8gc2luY2UKICAgIHdlIGRvbid0IGtub3cgd2hlcmUgaXQgd2lsbCBiZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDI3OTUzNDkzZWYwMjVmYjY5OGQ2OGM1ZGVlMzliMzZmMDFmNGQ1MzAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ0IDIwMDggLTA2MDAKCiAgICBbbmV3IHVJbWFnZV0gcHBjOiBEZXRlcm1pbmUgaWYgd2UgYXJlIGJvb3RpbmcgYW4gT0Ygc3R5bGUKCiAgICBJZiB3ZSBhcmUgYm9vdGluIE9GIHN0eWxlIHRoYW4gd2UgY2FuIHNraXAgc2V0dGluZyB1cCBzb21lIHRoaW5ncwogICAgdGhhdCBhcmUgdXNlZCBmb3IgdGhlIG9sZCBib290IG1ldGhvZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogICAgQWNrZWQtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYTY2MTJiZGZlN2VmMzdiOTc4N2I2NjgwMGNmMDJhYWRlZDA1ZmJlYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NDMgMjAwOCAtMDYwMAoKICAgIFtuZXcgdUltYWdlXSBEb24ndCBwYXNzIGtkYiB0byByYW1kaXNrX2hpZ2ggc2luY2Ugd2UgbWF5IG5vdCBoYXZlIG9uZQoKICAgIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIGtkYiBwYXJhbSBhcyB3ZSBhcmUganVzdCB1c2luZyBpdCB0byBnZXQKICAgIGJkLT5iaV9tZW1zaXplIHdoaWNoIHdlIGNhbiBnZXQgZnJvbSBnZC0+YmQtPmJpX21lbXNpemUuICBBbHNvLCBpZiB3ZQogICAgYm9vdCB2aWEgT0Ygd2UgbWlnaHQgbm90IGFjdHVhbGx5IGZpbGwgb3V0IGEga2RiLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyYjIyZmE0YmFlZTUxZTZiNDY3YzQ0ZWExYmUwZDFlY2Q4NmU4Nzc1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEZlYiAyNyAxNjozMDo0NyAyMDA4IC0wNjAwCgogICAgODV4eDogRG9uJ3QgaWNiaSB3aGVuIHVubG9ja2luZyB0aGUgY2FjaGUKCiAgICBUaGVyZSBpcyBubyByZWFzb24gdG8gaWNiaSB3aGVuIGludmFsaWRhdGluZyB0aGUgdGVtcG9yYXJ5IHN0YWNrIGluCiAgICB0aGUgZC1jYWNoZS4gIEl0cyBpbXBvc3NpYmxlIG9uIGU1MDAgdG8gaGF2ZSB0aGUgaS1jYWNoZSBjb250YWluCiAgICBhbnkgYWRkcmVzc2VzIGluIHRoZSB0ZW1wIHN0YWNrIGFuZCBpdCBjYW4gYmUgcHJvYmxlbWF0aWMgaW4gZ2VuZXJhdGluZwogICAgdHJhbnNhY3Rpb25zIG9uIHRoZSBidXMgdG8gbm9uLXZhbGlkIGFkZHJlc3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDUzNGVhNmI2Zjg2ZjhiNzVlZjJhYzA2MWVmMTEwYTk4ZjEwM2Q3ZDYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjcgMTU6NTA6NTAgMjAwOCAtMDYwMAoKICAgIEZpeCBzb3VyY2UgZm9yIEVDTSBlcnJvciBJVlBSCgogICAgVGhlIHNvdXJjZSB2ZWN0b3IgZm9yIHRoZSBFQ00gd2FzIGJlaW5nIHNldCB0byAyLAogICAgYnV0IHRoYXQncyB3aGF0IHRoZSBzb3VyY2UgdmVjdG9yIGZvciBERFIgd2FzIGJlaW5nCiAgICBzZXQgdG8uICBDaGFuZ2UgaXQgdG8gMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjFmYWU4YjJiNGU0ZTZlNjQ4Nzk2ZTA3ZTIwYWIxM2U5Y2IxODkyMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxNDoyOTo1OCAyMDA4IC0wNjAwCgogICAgSW52YWxpZGF0ZSBJTklUX1JBTSBUTEIgbWFwcGluZ3MKCiAgICBDb21taXQgMGRiMzdkYy4uLiAgKGFuZCBzb21lIG90aGVycykgY2hhbmdlZCB0aGUgSU5JVF9SQU0gVExCCiAgICBtYXBwaW5ncyB0byBiZSB1bmd1YXJkZWQuICBUaGlzIGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgImJ1ZyIKICAgIHdoZXJlIHRoZSBtYXBwaW5ncyBmb3IgdGhlIElOSVRfUkFNIHdlcmUgYmVpbmcga2VwdCBhcm91bmQuCiAgICBUaGlzIG1lYW50IHRoYXQgc3BlY3VsYXRpdmUgbG9hZHMgdG8gdGhvc2UgYWRkcmVzc2VzIHdlcmUKICAgIHN1Y2NlZWRpbmcgaW4gdGhlIFRMQiwgYW5kIGdvaW5nIG91dCB0byB0aGUgYnVzLCB3aGVyZSB0aGV5CiAgICB3ZXJlIGNhdXNpbmcgYW4gZXhjZXB0aW9uICh0aGVyZSdzIG5vdGhpbmcgYXQgdGhhdCBhZGRyZXNzKS4gVGhlCiAgICBGbGFzaCBjb2RlIHdhcyBjb2luY2lkZW50YWxseSBjYXVzaW5nIHN1Y2ggYSBzcGVjdWxhdGl2ZSBsb2FkLgogICAgUmF0aGVyIHRoYW4gZ28gYmFjayB0byBtYXBwaW5nIHRoZSBJTklUIFJBTSBhcyBndWFyZGVkLCB3ZSBmaXgKICAgIGl0IHNvIHRoYXQgdGhlIGVudHJpZXMgZm9yIHRoZSBJTklUX1JBTSBhcmUgaW52YWxpZGF0ZWQuICBUaHVzCiAgICB0aGUgc3BlY3VsYXRpdmUgbG9hZHMgd2lsbCBmYWlsIGluIHRoZSBUTEIsIGFuZCBoYXZlIG5vIGVmZmVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzQ3Yjc5MzhkM2U1NjFlYjIxNWFhMzg2YzM3ZmI1YWNiNWEzODNjNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjI6NTY6MTcgMjAwOCArMDEwMAoKICAgIHNiYzg1NDg6IEZpeCBSZXZpc2lvbiByZWFkaW5nIGFuZCB1bnVzZWQgdmFyaWFibGUgJ3BhdGgnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0OTVkMTYyMzc0YzQ3MmY0NjQ1NDQ1MzU1MzM4MmFkMDczNWRjNzI1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAyMjo1NjoxNiAyMDA4ICswMTAwCgogICAgc2JjODU0ODogRml4IGNmaSBmbGFzaCBiYW5rIGRlY2xhcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0ZWZiZTlkYmIxMjlmODU3ZjI3ODU2OTM2MTEyYzhjMDJmMDE2YmU2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjoyNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENvcnJlY3QgcmF3IEZEVCBibG9iIGhhbmRsaWcgd2hlbiBDT05GSUdfRklUIGlzIGRpc2FibGVkCgogICAgRHVhbCBmb3JtYXQgaW1hZ2UgY29kZSBtdXN0IHByb3Blcmx5IGhhbmRsZSBhbGwgdGhyZWUgRkRUIHBhc3NpbmcgbWV0aG9kczoKICAgIC0gcmF3IEZEVCBibG9iIHBhc3NlZAogICAgLSBGRFQgYmxvYiBlbWJlZGRlZCBpbiB0aGUgbGVnYWN5IHVJbWFnZQogICAgLSBGRFQgYmxvYiBlbWJlZGRlZCBpbiB0aGUgbmV3IHVJbWFnZQoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBwcm9wZXIgcmF3IEZEVCBoYW5kbGluZyB3aGVuIG5vIEZJVCBpbWFlZyBzdXBwb3J0CiAgICBpcyBjb21waWxlZCBpbi4gVGhpcyBpcyBhIGJpdCB0cmlja3kgYXMgd2UgbXVzdCBkZWN0ZWQgRklUIGZvcm1hdCBldmVuCiAgICB3aGVuIEZJVCB1SW1hZ2UgaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgYXMgYm90aCBGSVQgdUltYWdlcyBhbmQgcmF3IEZEVAogICAgYmxvYnMgdXNlIHRoYSBzYW1lIGxvdyBsZXZlbCBmb3JtYXQgKGxpYmZkdCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmZjA3MzRjZmYwZmI1Mzk3Y2UyZjQ2MDJmNGYzZTVlYzljOGEzNmU4CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjoyNiAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFBPV0VSUEM6IEFkZCBpbWFnZV9nZXRfZmR0KCkgcm91dGluZQoKICAgIEZEVCBibG9iIG1heSBiZSBwYXNzZWQgZWl0aGVyOiAoMSkgcmF3ICgyKSBvciBlbWJlZGRlZCBpbiB0aGUgbGVnYWN5IHVJbWFnZQogICAgKDMpIG9yIGVtYmVkZGVkIGluIHRoZSBuZXcgdUltYWdlLiBGb3IgdGhlICgyKSBjYXNlIGVtYmVkZGluZyBpbWFnZSBtdXN0IGJlCiAgICB2ZXJpZmllZCBiZWZvcmUgd2UgZ2V0IEZEVCBmcm9tIGl0LiBUaGlzIHBhdGNoIGZhY3RvcnMgb3V0IGxlZ2FjeSBpbWFnZQogICAgc3BlY2lmaWMgdmVyaWZpY2F0aW9uIHJvdXRpbmUgdG8gdGhlIHNlcGFyYXRlIGhlbHBlciByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxZWZkNDM2MDFmOTBkZTIxZWM2YzBlYmI5ODgwODIzZTgyMjkyN2IxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEZlYiAyNyAxMTowMjowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBpbWFnZV9nZXRfa2VybmVsKCkgcm91dGluZQoKICAgIExlZ2FjeSBpbWFnZSBzcGVjaWZpYyB2ZXJpZmljYXRpb24gaXMgZmFjdG9yZWQgb3V0IHRvIGEgc2VwYXJhdGUgaGVscGVyCiAgICByb3V0aW5lIHRvIGtlZXAgZ2V0X2tlcm5lbCgpIGdlbmVyaWMgYW5kIHNpbXBsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgOGE1ZWEzZTYxNjhmZTZhMjc4MGVlYWYyNTdhM2IxOWYzMGRlYzY1OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBGZWIgMjcgMTE6MDE6MDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGltYWdlIHZlcmlmeSBmbGFnIHRvIGJvb3RtX2hlYWRlcnMgc3RydWN0dXJlCgogICAgRG8gbm90IHBhc3MgaW1hZ2UgdmVyaWZpY2F0aW9uIGZsYWcgZGlyZWN0bHkgdG8gcmVsYXRlZCByb3V0aW5lcy4KICAgIFNpbXBsaWZ5IGFyZ3VtZW50IHBhc3NpbmcgYW5kIG1vdmUgaXQgdG8gdGhlIGJvb3RtX2hlYWRlciBzdHJ1Y3R1cmUgd2hpY2gKICAgIGNvbnRhaW5zIGN1cmVudGx5IHByb2Nlc3NlZCBpbWFnZSBzcGVjaWZpYyBkYXRhIGFuZCBpcyBhbHJlYWR5IGJlaW5nIHBhc3NlZAogICAgb24gdGhlIGFyZ3VtZW50IGxpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgyM2FmZTdjZWZlMDBkYWZlZmM2Njk2YzFjYzdhYTgyOGMzOTQyMzQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgRmViIDI3IDExOjAwOjQ3IDIwMDggKzAxMDAKCiAgICBbTWFrZWZpbGVdIFNvcnQgQ09CSlMgaW4gbGliXzxhcmNoPiBNYWtlZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDZmMGY5ZGZjNGVlODgwZmJmNDAwYTJlYmUxNDIzODE4MWE2YzNmOTEKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgRmViIDI3IDExOjAwOjQ3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gT3B0aW1pemUgZ2VuX2dldF9pbWFnZSgpIGZsb3cgY29udHJvbAoKICAgIFdoZW4gQ09ORklHX0hBU19EQVRBRkxBU0ggaXMgbm90IGRlZmluZWQgZ2VuX2dldF9pbWFnZSgpIHJvdXRpbmUgaGFzIG5vdGhpbmcKICAgIHRvIGRvLCB1cGRhdGUgaXRzIGNvbnRyb2wgZmxvdyB0byBiZXR0ZXIgcmVmbGVjdCB0aGF0IHNpbXBsZSBjYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkMmNlZDllYjE5ZWM3NGY0YTM1OTk0OWRiZTM1MzQyN2ZhNmQ1NWNhCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEZlYiA0IDA4OjI4OjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUE9XRVJQQzogU3BsaXQgZ2V0X2ZkdCgpIGludG8gZ2V0IGFuZCByZWxvY2F0ZSByb3V0aW5lcwoKICAgIFBQQyBzcGVjaWZpYyBGRFQgYmxvYiBoYW5kbGluZyBjb2RlIGlzIGRpdmlkZWQgaW50byB0d28gc2VwYXJhdGUgcm91dGluZXM6CgogICAgZ2V0X2ZkdCgpCS0gZmluZCBhbmQgdmVyaWZ5IGEgRkRUIGJsb2IgKGVpdGhlciByYXcgb3IgaW1hZ2UgZW1iZWRkZWQpCiAgICBmZHRfcmVsb2NhdGUoKQktIG1vdmUgRkRUIGJsb2IgdG8gd2l0aGluIEJPT1RNQVAgaWYgbmVlZGVkCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDMzZmE1YzBiZmFmNDY1ZGU4Y2ViMjNmY2Q2YjM5N2Y2OGIzNWE4MTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRmViIDI1IDEzOjEzOjM3IDIwMDggLTA2MDAKCiAgICA4Nnh4OiBGaXggcmVuYW1lZCBHVVIgc3ltYm9scyBpbiBzYmM4NjQxZCBib2FyZC4KCiAgICBCYWNrIGluIGNvbW1pdCBhNTUxY2VlOTlhZDFkMWRhMjBmZDIzYWQyNjVkZTQ3NDQ4ODUyZjU2CiAgICAoODZ4eDogRml4IEdVUiBQQ0kgY29uZmlnIHJlZ2lzdGVycyBwcm9wZXJseSksIHdlIHNob3VsZCBoYXZlCiAgICBjaGFuZ2VkIHRoZSBNUEM4Nnh4X1BPUkJNU1JfSEEgYW5kIE1QQzg2eHhfUE9SREVWU1JfSU9fU0VMCiAgICBzeW1ib2xzIGluIHRoZSBzYmM4NjQxZCBib2FyZCBhcyB3ZWxsLiAgRml4IHRoaXMgb3ZlcnNpZ2h0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjRjZDU5NGU2MjNjMzlmNzM5NjRkMTg3ODc3NjNlNDUzM2Y3OTFmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEZlYiAyNSAxNjo1MDo0OCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQoKICAgIERvbid0IGluY2x1ZGUgdGVzdGRyYW0oKSBvbiBOQU5ELWJvb3RpbmcgdGFyZ2V0IGFjYWRpYV9uYW5kLiBUaGlzIHNhdmVzCiAgICBhIGZldyBieXRlcyBhbmQgbWFrZXMgdGhlIHRhcmdldCBidWlsZCBjbGVhbiBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTRlMDk5ZTY5OGQ0MWU4MTc5ZDA1YzJiMmRiY2Y3MDRhMjM2Zjc0OApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMjQgMjM6MDM6MTIgMjAwOCArMDAwMAoKICAgIG14MWZzMi9mbGFzaDogRml4IG11bHRpcGxlIHBvaW50ZXJ0YXJnZXRzIGluIGFzc2lnbm1lbnQgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDcyNDkwMmM4NDY0ZTYxMDY0MmIzYTE3MDI3OGI5OTcxMDMyNTg4OGUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDI0IDIzOjAzOjExIDIwMDggKzAwMDAKCiAgICBhcm0taW14OiBGaXggcmVnaXN0ZXJzIGRlZmluaXRpb24KCiAgICBTeW5jIHJlZ2lzdGVycyBkZWZpbml0aW9uIHdpdGggbGludXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDRjZDI4OGI1ODllYTExNzg5NDdjNmUzNjQ0NTNjMzJiM2RlZGU2YjcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDI0IDIzOjAzOjEwIDIwMDggKzAwMDAKCiAgICBhY3R1YTEvYWN0dWEyL2FjdHVhMzogRml4IG11bHRpcGxldW51c2VkIHZhcmlhYmxlCgogICAgLSBhY3R1YTE6CglhY3R1eDEuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgxLmM6OTI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCgogICAgLSBhY3R1YTI6CglhY3R1eDIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgoJYWN0dXgyLmM6MTAwOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3MnCglhY3R1eDIuYzo5OTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAncmVzZXRfcGh5JzoKCWFjdHV4Mi5jOjEzMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpJwoKICAgIC0gYWN0dWEzOgoJYWN0dXgzLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKCWFjdHV4My5jOjExNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGQ1OTM0YWQ3NzU2ZjAzOGEzOTNhOWNmYWI3NmE0ZmUzMDZkOWQ5MzAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gRmViIDQgMDg6Mjg6MDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBBZGQgZHVhbCBmb3JtYXQgdUltYWdlIHN1cHBvcnQgZnJhbWV3b3JrCgogICAgVGhpcyBwYXRjaCBhZGRzIGZyYW1ld29yayBmb3IgZHVhbCBmb3JtYXQgaW1hZ2VzLiBGb3JtYXQgZGV0ZWN0aW9uIGlzIGFkZGVkCiAgICBhbmQgdGhlIGJvb3RtIGNvbnRyb2xsIGZsb3cgaXMgdXBkYXRlZCB0byBpbmNsdWRlIGNhc2VzIGZvciBuZXcgRklUIGZvcm1hdAogICAgdUltYWdlcy4KCiAgICBXaGVuIHRoZSBsZWdhY3kgKGltYWdlX2hlYWRlciBiYXNlZCkgZm9ybWF0IGlzIGRldGVjdGVkIGFwcHJvcHJpYXRlCiAgICBsZWdhY3kgc3BlY2lmaWMgaGFuZGxpbmcgaXMgaW52b2tlZC4gRm9yIHRoZSBuZXcgKEZJVCBiYXNlZCkgZm9ybWF0IHVJbWFnZXMKICAgIGR1YWwgYm9vdCBmcmFtZXdvcmsgaGFzIGEgbWluaWFsIHN1cHBvcnQsIHRoYXQgd2lsbCBvbmx5IHByaW50IG91dCBhCiAgICBjb3JyZXNwb25kaW5nIGRlYnVnIG1lc3NhZ2VzLiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRklUIHNwZWNpZmljIGhhbmRsaW5nIHdpbGwKICAgIGJlIGFkZGVkIGluIGZvbGxvd2luZyBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgYjI5NjYxZmMxMTUxMDc3Nzc2NDU0Mjg4MDUxYmM5YTQ4ODM1MWNlOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMjQgMTU6MjE6MzYgMjAwOCArMDEwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBQcmVwYXJlIHYxLjMuMi1yYzIgcmVsZWFzZSBjYW5kaWRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDAwYjQ4YTQ4NDI0ODk0ZGFhNTg5ZDE2NmQ3MzI3NzgzMGIxYzZhYzQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRmViIDIzIDEyOjE1OjU2IDIwMDggKzAxMDAKCiAgICBFTlY6IHJlbW92ZSBzYXZlZW52IHdoZW4gQ0ZHX0VOVl9JU19OT1dIRVJFIGlzIHNlbGVjdGVkCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBiMDc1ZDc0ZWZiNzBmZjY4YzQ5YTI1MzJmMjZiNTZkNjcwM2I2OWMxCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEZlYiAyMyAxNzoyNDoxNiAyMDA4ICswOTAwCgogICAgUmVtb3ZlIHRoZSBfX1NUUklDVF9BTlNJX18gY2hlY2sgZnJvbSB0aGUgX191NjQvX19zNjQgZGVjbGFyYXRpb24gb24gMzJiaXQgdGFyZ2V0cy4KCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBPbGFmIEhlcmluZyBbV2VkLCAxNyBPY3QgMjAwNyAwNjoyNzoxMyArMDAwMCAoMjM6MjcgLTA3MDApXQoKICAgIFJlbW92ZSB0aGUgX19TVFJJQ1RfQU5TSV9fIGNoZWNrIGZyb20gdGhlIF9fdTY0L19fczY0IGRlY2xhcmF0aW9uIG9uCiAgICAzMmJpdCB0YXJnZXRzLgoKICAgIEdDQyBjYW4gYmUgbWFkZSB0byB3YXJuIGFib3V0IHVzYWdlIG9mIGxvbmcgbG9uZyB0eXBlcyB3aXRoIElTTyBDOTAKICAgICgtYW5zaSksIGJ1dCBvbmx5IHdpdGggLXBlZGFudGljLiAgWW91IGNhbiB3cml0ZSB0aGlzIGluIGEgd2F5IHRoYXQgZXZlbgogICAgdGhlbiBpdCBkb2Vzbid0IGNhdXNlIHdhcm5pbmdzLCBuYW1lbHkgYnk6CgogICAgI2lmZGVmIF9fR05VQ19fCiAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CiAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwogICAgI2VuZGlmCgogICAgVGhlIF9fZXh0ZW5zaW9uX18ga2V5d29yZCBpbiBmcm9udCBvZiB0aGlzIHN3aXRjaGVzIG9mZiBhbnkgcGVkYW50aWMKICAgIHdhcm5pbmdzIGZvciB0aGlzIGV4cHJlc3Npb24uCgogICAgU2lnbmVkLW9mZi1ieTogT2xhZiBIZXJpbmcgPG9saEBzdXNlLmRlPgogICAgQ2M6IDxsaW51eC1hcmNoQHZnZXIua2VybmVsLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyMDhhY2QxMTJlNjUxN2IyMWZjMzBjNDIwMzk2OTAyYjEwMzU2M2FjCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEZlYiAyMyAxNzowNzo1NyAyMDA4ICswOTAwCgogICAgY3B1L21jZjUyeDIvY29uZmlnLm1rOiBNYWtlIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9ucyBpbW1lZGlhdGUuCgogICAgVGhpcyB3aWxsIHJlZHVjZSB0aGUgYnVpbGQgdGltZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDQ5NWEwZGRlN2ZhMWIxNGNkYzE1NjA3ZDg2NTAzZWMyYmRjZDAyYzQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgpEYXRlOglTYXQgRmViIDIzIDE3OjA1OjAwIDIwMDggKzA5MDAKCiAgICBjcHUvcHBjNHh4L2NvbmZpZy5tazogTWFrZSBhIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9uIGltbWVkaWF0ZS4KCiAgICBUaGlzIHdpbGwgcmVkdWNlIHRoZSBidWlsZCB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZTY4MmJhMzk5YTFkNzZmMDlkOGNjN2FmMWU1NzA2NmYxZDM2MGQ5MQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBGZWIgMjMgMTY6NTg6NDEgMjAwOCArMDkwMAoKICAgIGNwdS9taXBzL2NvZmlnbC5tazogTWFrZSBhIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9uIGltbWVkaWF0ZS4KCiAgICBUaGlzIHJlZHVjZXMgdGhlIGJ1aWxkIHRpbWUgYnkgfjEwJS4gSGVyZSdzIHRoZSBndGgyX2NvbmZpZyBleGFtcGxlLgoKCSAgICBCRUZPUkUJIEFGVEVSCiAgICByZWFsICAgIDBtMzEuNDQxcwkgMG0yNy44MzNzCiAgICB1c2VyICAgIDBtMjQuNzY2cwkgMG0yMy4wNDVzCiAgICBzeXMgICAgIDBtMTAuNDI1cwkgMG03LjQ2OHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDAyNDA5ZjhjZjU0YzdjZDkxOTgxZjBkZmVjMTM1ZGJmMzg1ODA5MGMKQXV0aG9yOiBNYXJjZWwgTW9vbGVuYWFyIDxtYXJjZWxtQGp1bmlwZXIubmV0PgpEYXRlOglGcmkgRmViIDIyIDEwOjQ4OjA3IDIwMDggLTA4MDAKCiAgICBtYWtlIGRlZmluZTJtay5zZWQgd29yayBvbiBGcmVlQlNECgogICAgSW4gdGhlIHRocmVhZCAiWzEuMy4yLXJjMV0gTVBDODU0OENEUy9NUEM4NTU1Q0RTIGNvbmZpZ3MgZmFpbHMgdG8gbGluayIsCiAgICB0aGUgZGVmaW5lMm1rLnNlZCBzY3JpcHQgd2FzIGlkZW50aWZpZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgbGluawogICAgZmFpbHVyZSBvbiBGcmVlQlNELiBUaGUgcHJvYmxlbSBpcyB0aGF0IHNlZCgxKSBkb2VzIG5vdCBhbHdheXMgc3VwcG9ydAogICAgdGhlICcrJyBvcGVyYXRvci4gSXQgaXNuJ3Qgb24gRnJlZUJTRC4gVGhlIGF0dGFjaCBwYXRjaCBpbXBsZW1lbnRzIHRoZQogICAgZXF1aXZhbGVudCwgdXNpbmcgdGhlICcqJyBvcGVyYXRvciBpbnN0ZWFkIGFuZCBzaG91bGQgd29yayBldmVyeXdoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBNb29sZW5hYXIgPG1hcmNlbG1AanVuaXBlci5uZXQ+Cgpjb21taXQgZTUwODRhZjhkZWQ1ODQ1M2NkMDdlYzFhZjhiMGYyOWYzNDEyMmJiYwpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgRmViIDIyIDE3OjIxOjMyIDIwMDggKzAxMDAKCiAgICBSZXBsYWNlIGRlcHJlY2F0ZWQgInJhbWRpc2siIHdpdGggInJhbWRpc2tfc2l6ZSIga2VybmVsIHBhcmFtZXRlci4KCiAgICBUaGUgTGludXggY29tbWl0IGZhYzhiMjA5YjEwODRiYzg1NzQ4YmQ1NGUxM2QwMGMxMjYyYjIyMGYgKCJSZW1vdmUKICAgIGZpbmFsIHRyYWNlcyBvZiBsb25nLWRlcHJlY2F0ZWQgInJhbWRpc2siIGtlcm5lbCBwYXJtIikgbWFrZXMgdGhlc2UKICAgIGNoYW5nZXMgbmVjY2Vzc2FyeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCBkMDFiODQ3YzVjZDA3MDg5NWM0YmExNzhjODVjZDA2OGE5NWNmN2NkCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTYgMjAwOCAtMDUwMAoKICAgIExNNzUgYnVnIGZpeCBmb3IgbmVnYXRpdmUgdGVtcGVyYXR1cmVzCgogICAgV2hlbiB0aGUgTE03NSB0ZW1wZXJhdHVyZSBzZW5zb3IgbWVhc3VyZXMgYSB0ZW1wZXJhdHVyZSBiZWxvdyAwIEMsIHRoZQogICAgY3VycmVudCBkcml2ZXIgZG9lcyBub3QgcGVyZm9ybSBzaWduIGV4dGVuc2lvbiwgc28gdGhlIHJlc3VsdCByZXR1cm5lZCBpcwogICAgMjU2IEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDVhOTEwYzIyNGIxM2U0MTNiZGE0MTkyMjM3OWFkZDZkNzVjMzJkYTMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMSAxODozMzo0NSAyMDA4ICswMTAwCgogICAgSURTODI0NzogdXBkYXRlIE1BSU5UQUlORVIgZW50cnkuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzllYWMyYmZiNTkxZjJiMDI4ZWMxNzM1MDQ5ZGM5MWU0MzIwZGU0YQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglUaHUgRmViIDIxIDE4OjMxOjE1IDIwMDggKzAxMDAKCiAgICBGaXggZGV2aWNlIHRyZWUgZm9yIG1nc3V2ZCBib2FyZC4KCiAgICBSZW5hbWUgdGhlICJzY2MiIG5vZGUgaW4gImV0aGVybmV0IiBmb3IgdGhlIG1nc3V2ZCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyZTcyMTA5NGE3MGE1MjIwNmFmMmUxYmYxMjA4ZDlhNzEzMWY2ZGFkCkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglUaHUgRmViIDIxIDE0OjIzOjQyIDIwMDggKzAxMDAKCiAgICBsd21vbjU6IGVuYWJsZSBoYXJkd2FyZSB3YXRjaGRvZwoKICAgIFNvbWUgYm9hcmRzIChlLmcuIGx3bW9uNSkgbWF5IHVzZSByYXRoZXIgc21hbGwgd2F0Y2hkb2cgaW50ZXJ2YWxzLCBzbwogICAgY2F1c2luZyBpdCB0byByZWJvb3QgdGhlIGJvYXJkIGlmIFUtQm9vdCBkb2VzIGEgbG9uZyBidXN5LXdhaXQgd2l0aAogICAgdWRlbGF5KCkuIFRodXMsIGZvciB0aGVzZSBib2FyZHMgd2UgaGF2ZSB0byByZXN0YXJ0IFdEIG1vcmUKICAgIGZyZXF1ZW50bHkuCgogICAgVGhpcyBwYXRjaCBzcGxpdHMgdGhlIGJ1c3ktd2FpdCB1ZGVsYXkoKSBpbnRvIHNtYWxsZXIsIHByZWRlZmluZWQsCiAgICBpbnRlcnZhbHMsIHNvIHRoYXQgdGhlIHdhdGNoZG9nIHRpbWVyIG1heSBiZSByZXNldHRlZCB3aXRoIHRoZQogICAgY29uZmlndXJhYmxlIChDT05GSUdfV0RfUEVSSU9EKSBpbnRlcnZhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Cgpjb21taXQgYmM3Nzg4MTI0N2VlNmY5NWQ3YTllYmM0OTlkMjZiOTZiYWUzOGM5ZApBdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMSAxMjo1MjoyOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBTdXBwb3J0IGZvciBBVEkgUmFkZW9uIDkyMDAgY2FyZCBvbiBzZXF1b2lhCgogICAgQWRkcyBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgQVRJIFJhZGVvbiA5MjAwIGNhcmQKICAgIHN1cHBvcnQgdG8gc2VxdW9pYSBjb25maWcgZmlsZS4gSWYgQ09ORklHX1ZJREVPCiAgICBpcyBlbmFibGVkLCBURVhUX0JBU0Ugc2hvdWxkIGJlIGNoYW5nZWQgdG8gMHhGRkY4MDAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNWE5YWJjYzMxN2NmM2M4YTY5NTU5ZmY4MzA4MWY0ZTVkNzE5ZWRiNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMDg6MTg6MDcgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lcyBmb3IgQVJSQVlfU0laRQoKICAgIEEgZmV3IGR1cGxpY2F0ZSBvZiB0aGUgQVJSQVlfU0laRSBtYWNybyBzbmVha2VkIGluIHNpbmNlIHdlIHB1dAogICAgdGhlIGRlZmluZSBpbiBjb21tb24uaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgxZDkzZTVjNGI4M2Q4YjZkY2VlNjlkZTZmNGExNGNjZjZmNzExNGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gRmViIDE4IDA4OjA5OjM3IDIwMDggLTA2MDAKCiAgICBwcGM6IEFsbG93IGJvYXJkcyB0byBzcGVjaWZ5IGVmZmVjdGl2ZSBhbW91bnQgb2YgbWVtb3J5CgogICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB3ZSBsaW1pdGVkIHRoZSBzdGFjayB0byAyNTZNIGJlY2F1c2Ugc29tZSBib2FyZHMKICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYWJsZSBvZiBkb2luZyB1cCB0byAyRykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3NTVjMzVmNTRiYTdlYjc2ODdhYTc5MzVlMDRhMDJhMDFlZjFiMjdiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDE4IDA1OjI0OjEzIDIwMDggLTA1MDAKCiAgICBpbmNsdWRlIGF1dG9jb25mLm1rIGJlZm9yZSBhbnkgb3RoZXIgLm1rIGZpbGVzCgogICAgVGhpcyBidW1wcyB0aGUgYXV0b2NvbmYubWsgaW5jbHVkZSBzdGVwIGFib3ZlIGJvYXJkL2NwdS9hcmNoL2V0Yy4uLiBzbyB0aGF0CiAgICB0aG9zZSAubWsgZmlsZXMgY2FuIGhhdmUgbWFrZSBpZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMTZmZTc3NzUyZWVlMDk5YjlmYjYxZWQ3MzQ2MGU1MWNjOTRiMzdiYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiAxOCAwNToxMDowNyAyMDA4IC0wNTAwCgogICAgZXJyb3IgY2hlY2sgYXV0b2NvbmYubWsgZ2VuZXJhdGlvbgoKICAgIElmIGFueSBvZiB0aGUgc3RlcHMgZm9yIGdlbmVyYXRpbmcgYXV0b2NvbmYubWsgZmFpbCBjdXJyZW50bHksIHRoZXkgZ28KICAgIHVubm90aWNlZC4JVG8gZml4LCB3ZSBjYW4gc2ltcGx5IGFkZCAnc2V0IC1lJyB0byB0aGUgbG9uZyBsaXN0IG9mIGNvbW1hbmRzLgogICAgVGhpcyBpcyBzaW1wbGVyIGFuZCBtb3JlIHJvYnVzdCB0aGFuIHBsYWNpbmcgJ3x8IGV4aXQgJCQ/JyBhZnRlciBldmVyeSBsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwMTk4OTVhOGRlZTcxYTlmMDBkYTA1YzAzZTM3OWY0NWQ1ODFiMGZlCkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CU1vbiBGZWIgMTggMDg6MDM6NTEgMjAwOCArMDEwMAoKICAgIEZpeCBidWcgaW4gZGVwZW5kZW5jeSBjaGVja2luZwoKICAgIEJ5IGFkZGluZyBWRVJTSU9OX0ZJTEUgdG8gdGhlIFBIT05ZIHRhcmdldHMgdGhlIHNjcmlwdAogICAgL3Rvb2xzL3NldGxvY2FsdmVyc2lvbiBpcyBhbHdheXMgY2FsbGVkIGFuZCB2ZXJzaW9uX2F1dG9nZW5lcmF0ZWQuaAogICAgaXMgcmVwbGFjZWQgb25seSBpZiB0aGUgc2NyaXB0IGZpbmQgYSBtb2RpZmllZCBzb3VyY2UgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA5OGJhMTQ0Y2NjOTEyZWVlOTBkZDQyNjk5ZjAyM2M0OTdjZTc3NGM2CkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBGZWIgMTggMTQ6MzU6NDMgMjAwOCArMDkwMAoKICAgIEZpeCBHUE1DIENTMiBtZW1vcnkgc2V0dXAgYXQgYXBvbGxvbgoKICAgIEl0IGRpc2FibGVzIHRoZSBjdXJyZW50IG1hcCBmaXJzdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgZTg0NWUwN2UxZTZlNjRmNDBlMzU2ODg0MzlkM2NkY2YwMWNmZmY0ZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjM6NTI6NDYgMjAwOCArMDEwMAoKICAgIHVsaTUyNng6IEZpeCBtdWx0aXBsZSBkaWZmZXIgaW4gc2lnbmVkbmVzcyBhbmQgcGFyZW50aGVzZXMgYXJvdW5kIGNvbXBhcmlzb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGJlZWNjZjdhNWRjNTQxNWMyMDJlMDEzMmEzM2M1OGZjMzE2YzJhNjIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gRmViIDE3IDE2OjU4OjA0IDIwMDggKzAxMDAKCiAgICBNSVBTOiBGaXggQ0ZHX05PX0ZMQVNIIHN1cHBvcnQKCiAgICAtIEZpeCBmbGFzaF9pbml0IGNhbGwgd2hlbiBDRkdfTk9fRkxBU0ggaXMgdXNlZAogICAgLSBSZW1vdmUgbm8gbW9yZSBuZWVkZWQgZmxhc2guYyBmb3IgcWVtdS1taXBzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlZGZlZDFkOTFkZjJiMjY3MGE4MTJjYTlkMWExZjlmYWFlN2RiYTQ3CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgRmViIDE2IDAyOjQwOjE4IDIwMDggLTA1MDAKCiAgICBlYXN5bG9nbzogY2xlYW4gdXAgc29tZSBtb3JlIGFuZCBhZGQgLXIgKHJnYikgc3VwcG9ydAoKICAgIE1pY2hhZWwgSGVubmVyaWNoIGFkZGVkIHN1cHBvcnQgZm9yIG91dHB1dHRpbmcgYW4gaW1hZ2UgaW4gUkdCIGZvcm1hdCByYXRoZXIKICAgIHRoYW4gZm9yY2luZyBZVVlWIGFsbCB0aGUgdGltZS4gIFRoaXMgbWFrZXMgb2J2aW91cyBzZW5zZSBpZiB0aGUgZGlzcGxheSB5b3UKICAgIGhhdmUgdGFrZXMgUkdCIGlucHV0IHJhdGhlciB0aGFuIFlVWVYuCgogICAgUmF0aGVyIHRoYW4gaGFjayBpbiBzdXBwb3J0IGZvciBvcHRpb25zLCBJJ3ZlIGNvbnZlcnRlZCBpdCB0byB1c2UgZ2V0b3B0IGFuZAogICAgY2xlYW5lZCB1cCB0aGUgYXJndW1lbnQgcGFyc2luZyBpbiB0aGUgcHJvY2Vzcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBmNjVjOTgxMjljY2FkYTNmN2NhZjk3ZDgwMzk1YTk1Yjg0ZTkxMWRlCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglTYXQgRmViIDE2IDAyOjEyOjM3IDIwMDggLTA1MDAKCiAgICBNYWtlZmlsZTogYWRkIHRhcmdldCBmb3IgJChMRFNDUklQVCkKCiAgICBJZiB0aGUgJChMRFNDUklQVCkgZG9lcyBub3QgZXhpc3QgKG5vcm1hbGx5IGl0J3MgYm9hcmQvJChCT0FSRCkvdS1ib290LmxkcyksCiAgICB0aGVuIGNoYW5nZSBpbnRvIHRoZSBib2FyZCBkaXJlY3RvcnkgYW5kIHRyeSBhbmQgY3JlYXRlIGl0LiAgVGhpcyBhbGxvd3MgeW91CiAgICB0byBnZW5lcmF0ZSB0aGUgbGlua2VyIHNjcmlwdCBvbiB0aGUgZmx5IGJhc2VkIHVwb24gYm9hcmQgZGVmaW5lcyAobGlrZSB0aGUKICAgIEJsYWNrZmluIGJvYXJkcyBkbykuCgogICAgVGhlcmUgc2hvdWxkIGJlIG5vIHJlZ3Jlc3Npb25zIGR1ZSB0byB0aGlzIGNoYW5nZSBhcyB0aGUgbm9ybWFsIGNhc2UgaXMgdG8KICAgIGFscmVhZHkgaGF2ZSBhIHUtYm9vdC5sZHMgZmlsZS4gIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgdG8KICAgIGdlbmVyYXRlLCBhbmQgc28gbWFrZSB3aWxsIGFsd2F5cyBleGl0LiAgVGhlIGZpeCBoZXJlIGlzIHRoYXQgaWYgdGhlIGxpbmtlcgogICAgc2NyaXB0IGRvZXMgbm90IGV4aXN0LCB0aGUgaW1wbGljaXQgcnVsZXMgdGFrZSBvdmVyIGFuZCBhdHRlbXB0IHRvIGd1ZXNzIGhvdwogICAgdG8gZ2VuZXJhdGUgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDU1ODNjYmY3MzY0NzRlZjc1NGUxMjhhNTRmYjc4NjMyZjU3YjQ4ZmQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjI3OjQ5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRml4IGVycm9uZW91cyB1c2Ugb2YgaW1hZ2VfZ2V0X21hZ2ljKCkgaW4gZmRjL3VzYiBjbWRzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAyMjQyZjUzNjk4MjJiYzc3ODBkYjk1YzQ3OTg1YmI0MDhlYTkxNTdiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxNzoyNzo0MSAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbmFtZSBhbmQgbW92ZSBwcmludF9pbWFnZV9oZHIoKSByb3V0aW5lCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmNTA0MzNkNjcwZWMyZWU5ZTk2YWJhYzY3Y2RjNmU1ZTA2MWE4MTBkCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxNzoyMDoyMCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEFkZCBmaXRfcGFyc2VfY29uZigpIGFuZCBmaXRfcGFyc2Vfc3ViaW1hZ2UoKSByb3V0aW5lcwoKICAgIEludHJvZHVjaW5nIHJvdXRpbmVzIGZvciBwYXJzaW5nIG5ldyB1SW1hZ2UgZm9ybWF0IGJvb3RtIGFyZ3VtZW50czoKICAgIFs8YWRkcj5dIzxjb25mPgkJLSBjb25maWd1cmF0aW9uIHNwZWNpZmljYXRpb24KICAgIFs8YWRkcj5dOjxzdWJpbWc+CS0gc3ViaW1hZ2Ugc3BlY2lmaWNhdGlvbgoKICAgIE5ldyBmb3JtYXQgaW1hZ2VzIGNhbiBjb250YWluIG11bHRpcGxlIHN1YmltYWdlcyBvZiB0aGUgc2FtZSB0eXBlLiBGb3IgZXhhbXBsZQogICAgYSBzaW5nbGUgbmV3IGZvcm1hdCBpbWFnZSBmaWxlIGNhbiBjb250YWluIHRocmVlIGtlcm5lbHMsIHR3byByYW1kaXNrcyBhbmQgYQogICAgY291cGxlIG9mIEZEVCBibG9icy4gU3ViaW1hZ2UgYW5kIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhdGlvbnMgYXJlIGV4dGVuc2lvbnMKICAgIHRvIGJvb3RtIChhbmQgb3RoZXIgaW1hZ2UtcmVsYXRlZCBjb21tYW5kcykgYXJndW1lbnRzJyBzeW50YXggdGhhdCBhbGxvdyB0bwogICAgc3BlY2lmeSB3aGljaCBwYXJ0aWN1bGFyIHN1YmltYWdlIHNob3VsZCBiZSBvcGVyYXRlZCBvbi4KCiAgICBTdWJpbWFnZSBzcGVjaWZpY2F0aW9uIGlzIHVzZWQgdG8gZGVub3RlIGEgcGFydGljdWxhciBzdWJpbWFnZS4gQ29uZmlndXJhdGlvbnMKICAgIGFyZSBhIGJpdCBtb3JlIGNvbXBsZXggLS0gdGhleSBhcmUgdXNlZCB0byBkZWZpbmUgYSBwYXJ0aWN1YWxyIGJvb3Rpbmcgc2V0dXAsCiAgICBmb3IgZXhhbXBsZSBhIChrZXJuZWwsIGZkdCBibG9iKSBwYWlyLCBvciBhIChrZXJuZWwsIHJhbWRpc2ssIGZkdCBibG9iKSB0dXBsZSwKICAgIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGZmZjg4OGExOTk3ZmY3ZGU5YjI5ZTI0MDUwZmM0YTBmZDQwM2JhMTYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjIwOjE5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIGdlbl9nZXRfaW1hZ2UoKSByb3V0aW5lCgogICAgVGhpcyByb3V0aW5lIGFzc3VyZXMgdGhhdCBpbWFnZSAod2hldGhlciBsZWdhY3kgb3IgRklUKSBpcyBub3QKICAgIGluIGEgc3BlY2lhbCBkYXRhZmxhc2ggc3RvcmFnZS4KCiAgICBJZiBpbWFnZSBhZGRyZXNzIGlzIGEgZGF0YWZsYXNoIGFkZHJlc3MgaW1hZ2UgaXMgbW92ZWQgdG8gc3lzdGVtIFJBTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDc1ZDNlOGZiZDkzYzE0ZDk5MjlkMDI0Yzc1YWYyZDc0MmM3NmRiNzAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDE3OjIwOjE4IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUHVsbCBpbiBsaWJmZHQgaWYgQ09ORklHX0ZJVCBpcyBlbmFibGVkCgogICAgTmV3IHVJbWFnZSBmb3JtYXQgKEZsYXR0ZW5lZCBJbWFnZSBUcmVlKSByZXF1aXJlcyBsaWJmZHQKICAgIGZ1bmN0aW9uYWxpdHksIHByaW50IG91dCBlcnJvciBtZXNzYWdlIGlmIENPTkZJR19PRl9MSUJGRFQKICAgIGlzIG5vdCBkZWZpbmVkLgoKICAgIE5ldyB1SW1hZ2Ugc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGRlZmluaW5nIENPTkZJR19GSVQgKGFuZCBDT05GSUdfT0ZfTElCRkRUKS4KICAgIFRoaXMgY29tbWl0IHR1cm5zIGl0IG9uIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxYmE2MzlkYTU2MDRhNjRiM2VkODg0YTJjYmIxYzU0MTRhOWZhNzI4CkF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KRGF0ZToJTW9uIEZlYiAxOCAyMzoxNjozNSAyMDA4ICswMTAwCgogICAgQ0ZJOiBEbyBub3QgdXNlIHVuaW5pdGlhbGl6ZWQgY21kX3Jlc2V0CgogICAgRG8gbm90IHVzZSB1bmluaXRpYWxpemVkIGNtZF9yZXNldDsgaXNzdWUgYm90aCBBTUQgYW5kIEludGVsIHJlc2V0CiAgICBjb21tYW5kcyBpbnN0ZWFkCgogICAgRnJvbSBhIHNob3J0IHRlc3QsIGl0IGxvb2tzIGxpa2UgQU1ELXN0eWxlIGZsYXNoIHJvbXMgdHJlYXQgKmFueSogdW5rbm93bgogICAgY29tbWFuZCB3cml0ZSBhcyBhIHJlc2V0LCBhdCBsZWFzdCB3aGVuIGluIENGSSBRdWVyeSBtb2RlLCBzbyBpc3N1aW5nIHRoZQogICAgSW50ZWwgcmVzZXQgY29tbWFuZCB0byBBTUQtc3R5bGUgZmxhc2hzIHNlZW1zIHNhZmUgKGZyb20gdGhlIHNtYWxsIHNhbXBsZSBJCiAgICBoYXZlKSwgcGx1cyB0aGUgMy1jeWNsZSBtYWdpYyBzZXF1ZW5jZSBzaG91bGQga2ljayB0aGUgc3RhdGUgbWFjaGluZSBpbnRvCiAgICB0aGUgcmlnaHQgc3RhdGUgZXZlbiB3aXRob3V0IGEgcmVzZXQgY29tbWFuZC4gU2luY2UgdGhlIEFNRC1zdHlsZSBmbGFzaHMKICAgIHJlcXVpcmUgdGhlIHVubG9jayBzZXF1ZW5jZSBmb3IgcmVhbCBvcGVyYXRpb24sIEkgY2hvc2UgdG8gdHJ5IHRoZSBBTUQgcmVzZXQKICAgIGNvbW1hbmQgZmlyc3QsIHNvIHRoYXQgSW50ZWwgZmxhc2hzIGRvIG5vIHNlZSBhbiBpbnZhbGlkIGNvbW1hbmQgcHJpb3IgdG8KICAgIHRoZSBDRkkgcXVlcnkuCgogICAgSSBoYXZlIHRlc3RlZCB0aGUgcGF0Y2ggb24gQU0yOUxWMzIwLXN0eWxlIGZsYXNocyBmcm9tIEZ1aml0c3UgYW5kIE1hY3Jvbml4LAogICAgcGx1cyBJbnRlbCBTdHJhdGFGbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGU3YTg1ZjI2ODMwYzlmMmU3ODUwNjQyMWMyZDUxOWEyOTY1YmM3YTEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRmViIDIxIDExOjU2OjQ0IDIwMDggKzAxMDAKCiAgICBBUEk6IEFkZCAoYykgYW5kIGxpY2Vuc2luZyBub3RpY2UgdG8gdGhlIHB1YmxpYyBBUEkgaGVhZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgOTI4ZDFkNzdmODYyM2MxMjBkODc2M2UyMGUxY2E1OGRmOWM1YzRjNgpBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJVGh1IEZlYiAyMSAxMTowNjowNyAyMDA4ICswMTAwCgogICAgRml4IENQVSBQT1NUIHRlc3QgZmFpbHVyZQoKICAgIFRoZSBDUFUgUE9TVCB0ZXN0IGNvZGUgKHJ1biBmcm9tIGNwdV9wb3N0X2V4ZWNfMzEoKSkgZG9lc24ndCBmb2xsb3cgdGhlCiAgICBBQkkgY2FyZWZ1bGx5LCBhdCBsZWFzdCB0aGUgQ1IzLCBDUjQsIGFuZCBDUjUgZmllbGRzIG9mIENSIGFyZSBjbG9iYmVyZWQKICAgIGJ5IGl0LiBUaGUgZ2NjLTQuMiB3aXRoIGl0cyBtb3JlIGFnZ3Jlc3NpdmUgb3B0aW1pemF0aW9uIGV4cG9zZXMgdGhpcyBmYWN0LgogICAgVGhpcyBwYXRjaCBqdXN0IHNhdmVzIHRoZSBDUiB2YWx1ZSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCBjb2RlLCBzbyBhbGxvd2luZwogICAgaXQgdG8gZG8gYW55dGhpbmcgaXQgd2FudHMgd2l0aCBDUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICAtLQoKY29tbWl0IGQ1OTA4YjA5Mzk1NTQxNWYzZDM0MDcwNjM3OGI5OTFmOTExYWY2NzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIwIDE1OjI2OjUxIDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRG9jdW1lbnQgdGhlIGZsYXNoYmFuayBzZWxlY3Rpb24gc3dpdGNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTUxY2VlOTlhZDFkMWRhMjBmZDIzYWQyNjVkZTQ3NDQ4ODUyZjU2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAyMCAxNDoyMjoyNiAyMDA4IC0wNjAwCgogICAgODZ4eDogRml4IEdVUiBQQ0kgY29uZmlnIHJlZ2lzdGVycyBwcm9wZXJseS4KCiAgICBCYWNrIGluIGNvbW1pdCA5NzVhMDgzYTVlZjc4NWM0MTRiMzVmOWM1YjhhZTI1YjI2YjQxNTI0IHdoZXJlCiAgICBJIHRyaWVkIHRvICI4NjEwSFBDRDogRml4IHR5cG9zIGluIHR3byBQQ0kgc2V0dXAgcmVnaXN0ZXJzIiwgSQogICAgYm90Y2hlZCBpdCBkdWUgdG8gbm90IHJlYWxpemluZyB0aGF0IDg2MTAgYW5kIDg2NDEgaGFkIGRpZmZlcmVudAogICAgR2xvYmFsIFV0aWxpdHkgUmVnaXN0ZXIgZGVmaW50aW9ucywgb25lIG9mIHdoaWNoIHdhcyBsaWtlIDg1eHgsCiAgICBhbmQgdGhlIG90aGVyIHdhc24ndC4gIENvcnJlY3QgdGhpcyBwcm9ibGVtIGJ5IGludHJvZHVjaW5nIHR3bwogICAgc3ltYm9scywgb25lIGZvciBlYWNoIDg2eHggU29DLCBidXQgbmVpdGhlciBvZiB3aGljaCBpcyBuYW1lZAogICAgYW55dGhpbmcgbGlrZSA4NXh4LgoKICAgIE15IGJhZC4gIExvdmVseSBXZWRuZXNkYXkgd2l0aCBnaXQgYmlzZWN0LglZb3Uga25vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNiMDZlYjk2MWJkZmZjODcyOGIzOGMyNDI0NzNkODAyZTgzYWIyYjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIwIDEyOjI0OjExIDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRG9uJ3QgdXNlIFZJREVPL0NGQl9DT05TT0xFIGJ5IGRlZmF1bHQuCgogICAgV2l0aG91dCBhbiBhY3R1YWwgc3VwcG9ydGVkIHZpZGVvIGNhcmQgaG9va2VkIHVwLCBlbmFibGluZwogICAgdGhlIENPTkZJR19WSURFTyBieSBkZWZhdWx0IGp1c3QgbWFrZXMgaXQgbG9vayBicm9rZW4gYnkKICAgIHJvdXRpbmcgYWxsIGNvbnNvbGUgb3V0cHV0IHRvIHRoZSB2aWRlbyBjYXJkLiAgIERvbid0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGQyNjRlZmY0MzEyZjIzMDc3NmI5MTNlZGFkZTdjZWI3NWYxYjFlMApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAzMCAxNTowODoxNSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEZpeCBtaXNzaW5nIGNvZGUgZmxhc2ggc2l6ZSBmb3IgTTU0ODVFVkIKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM1NGY5MjYzZTRlMTFlMzRiMWU3MGMxNjBiYzQ2N2VmMWQ4ZWM1OWQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzAgMTU6MDQ6NDIgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBGaXggNTI4MiBhbmQgNTI3MSBpbnRlcnJ1cHQgbWFzayBiaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3NWEwODNhNWVmNzg1YzQxNGIzNWY5YzViOGFlMjViMjZiNDE1MjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRmViIDE5IDEyOjMxOjA4IDIwMDggLTA2MDAKCiAgICA4NjEwSFBDRDogRml4IHR5cG9zIGluIHR3byBQQ0kgc2V0dXAgcmVnaXN0ZXJzLgoKICAgIFRoZSB0d28gc3ltYm9scyBNUEM4Nnh4X1BPUkRFVlNSX0lPX1NFTCBhbmQgTVBDODZ4eF9QT1JCTVNSX0hBCiAgICB3ZXJlIGVycm9uZW91c2x5IHByZXNlbnQgYXMgODV4eCBuYW1lcyBhbmQgdmFsdWVzLCBsZWZ0b3ZlciBmcm9tCiAgICB0aGUgY2xvbmUgd2Fycy4gIEZpeCB0aGlzIGJ5IHJlbW92aW5nIHRoZSA4NXh4IGNydWZ0IGZyb20gdGhlCiAgICA4Nnh4IGNvZGViYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTNmNTQzM2Y3MDBkNGRhOWY2ZmRmMmE0YmI4MDMxMDEzM2E3YzE3MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBGZWIgMTggMTQ6MDE6NTYgMjAwOCAtMDYwMAoKICAgIDg2eHg6IENvbnZlcnQgc2JjODY0MWQgdG8gdXNlIGxpYmZkdC4KCiAgICBUaGlzIGlzIHRoZSBwcm9wZXIgZml4IGZvciBhIG1pc3NpbmcgY2xvc2luZyBicmFjZSBpbiB0aGUgZnVuY3Rpb24KICAgIGZ0X2NwdV9zZXR1cCgpIG5vdGljZWQgYnkgam9lLmhhbW1hbiA8YXQ+IGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tLgogICAgVGhlIGZ0X2NwdV9zZXR1cCgpIGZ1bmN0aW9uIGluIG1wYzg2NDFocGNuLmMgc2hvdWxkIGhhdmUgYmVlbgogICAgcmVtb3ZlZCBlYXJsaWVyIGFzIGl0IHdhcyB1bmRlciB0aGUgb2Jzb2xldGUgQ09ORklHX09GX0ZMQVRfVFJFRSwKICAgIGJ1dCB3YXMgbWlzc2VkLiAgT25seSwgdGhlIHNiYzg2NDFkIHdhcyBub21pbmFsbHkgc3RpbGwgdXNpbmcgaXQuCiAgICBJdCBhbGwgZ290IHJpcHBlZCBvdXQsIGFuZCB0aGUgZnVuY2FsaXR5IHRoYXQgd2FzIGluIGZ0X2JvYXJkX3NldHVwKCkKICAgIHdhcyByZWZhY3RvcmVkIHRvIHJlbW92ZSB0aGUgQ1BVIHBvcnRpb25zIGludG8gdGhlIG5ldyBmaWxlCiAgICBjcHUvbXBjODZ4eC9mZHQuYyBpbnN0ZWFkLglNYWtlIHNiYzg2NDFkIHVzZSB0aGlzIG5vdy4KCiAgICBCYXNlZCBsb29zZWx5IG9uIGFuIG9yaWdpbmFsIHBhdGNoIGZyb20gam9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDRlZmRkYzg3YzUwYzg0Zjg1ZGFkNWMzMzFjNjM0YTZjZTgzMGE4MwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMjM6MzU6MzEgMjAwOCArMDEwMAoKICAgIG1wYzg2eHg6IEZpeCB1bnVzZWQgdmFyaWFibGUgJ2NvbmZpZycgYW5kICdpbW1hcCcKCiAgICBhbmQgcmVtb3ZlIHVzZWxlc3MgQ09ORklHX0REUl9JTlRFUkxFQVZFCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA4M2QxYjM4NzY2OTVjNGYyMWZhZmYyYjczMWQ5ZWY4M2YzOGVkMjA4CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAyMzowMzozNiAyMDA4ICswMTAwCgogICAgbXBjODZ4eDogRml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9ucyAnaW5pdF9sYXdzJyBhbmQgJ2Rpc2FibGVfbGF3JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYjZmMjljODRjMjA4YTA5MWY5NWExMGNiYzk4NTJkNzI5NjU5YmEyMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMTQ6MTU6MzEgMjAwOCArMDEwMAoKICAgIHMzYzI0eDA6IEZpeCB1bnVzZWQgdmFyaWFibGUgJ2knIGluIGZ1bmN0aW9uICdzZXJpYWxfaW5pdF9kZXYnCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwOTM3YjhkODY5ZmRiNDJkNmFkNGZlMzEyOTU4NjM5YmQ2MmM5NzNmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIEZlYiAxNyAxNDoxNTozMiAyMDA4ICswMTAwCgogICAgcHhhOiBmaXggYXNzaWdubWVudCBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKCiAgICBmaXggbW1jX2JyZWFkIGZ1bmN0aW9uIHByb3RvdHlwZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNjRkNzkyMDYzZmZmOTBiODExODE3OWIwOTJmZWVlMDlmZTVjYWUxMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTcgMTQ6MTU6MzAgMjAwOCArMDEwMAoKICAgIGF0OTFjYXA5YWRrOiBmaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9pbml0JwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzc1YzQzNTNkYjhmOTAwZjdlYzc3MmUyNmZhYjExNmVjMDBmN2QzYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBGZWIgMTcgMTU6NDM6NDQgMjAwOCArMDEwMAoKICAgIFJlbW92ZSBmaWxlcyBhZGRlZCBieSBtaXN0YWtlLCB1cGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjczODY1NGQzYzg0YTMwZjJiZmQ5YThkNzY1MmZmMjA4MDdjODkwYwpBdXRob3I6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgpEYXRlOglXZWQgRmViIDYgMTE6MTA6MTEgMjAwOCAtMDUwMAoKICAgIFBQQzQ0MEVQeDogT3B0aW9uYWxseSBlbmFibGUgc2Vjb25kIEkyQyBidXMKCiAgICBUaGUgb3B0aW9uIENPTkZJR19JMkNfTVVMVElfQlVTIGRvZXMgbm90IGhhdmUgYW55IGVmZmVjdCBvbiBTZXF1b2lhLCB0aGUKICAgIFBQQzQ0MEVQeCByZWZlcmVuY2UgcGxhdGZvcm0sIGJlY2F1c2UgSUlDMSBpcyBuZXZlciBlbmFibGVkLiBBZGQgU2VxdW9pYSBib2FyZAogICAgY29kZSB0byB0dXJuIG9uIElJQzEgaWYgQ09ORklHX0kyQ19NVUxUSV9CVVMgaXMgc2VsZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+CiAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVmNWI0ZjIyMWMyMmQwNTc3MDg3ODUxMzk1MTc0NWYyMzZiNWI0M2YKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUdWUgRmViIDUgMTA6MjY6NDQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogSENVNC81LiBDbGVhbnVwIGNvbmZpZ3MKCiAgICAtIGhjdTQuaDogUmVtb3ZlZCBkZWZpbmUgb2YgQ09ORklHX1BQQzQwNUdQcgogICAgLSBDb3JyZWN0ZWQgcGh5IGFkZHJlc3NlcwogICAgLSBGaXggYm9vdCB2YXJpYWJsZXMKICAgIC0gUmVzcGVjdCBsaW5lIGxlbmd0aCBvZiA4MCBjaGFycwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNzQ5NzMxMjZkMWJlNjNhYzc1YmRjMTkyZjQ2MjM0ZGNhM2E3YzQyMQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVR1ZSBGZWIgNSAxMTozMToyOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBIQ1U0LzUuIENsZWFudXBzCgogICAgLSBGaXggc29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucy4KICAgIC0gVXNlIGluL291dF91MTYvMzIgd2hlcmUgYXBwcm9wcmlhdGUuCiAgICAtIFVzZSByZWdpc3RlciBuYW1lcyBmcm9tIHBwYzQwNS5oLgogICAgLSBGaXggdHJhY2UgdXNlYWdlIGZvciBMYXV0ZXJiYWNoLgogICAgLSBSZW1vdmUgb2Jzb2xldGUgZ2VuZXJhdGlvbiBIQ1UyLgogICAgLSBSZW5hbWVkIGZpeGVkX2hjdTRfc2RyYW0gdG8gaW5pdF9wcGM0MDVfc2RyYW0uCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA4Y2MxMGQwNmI4MzNlZDkxN2ExOWFkMzU4YzhlYmJlZDhiYzE5NTU1CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJVHVlIEZlYiA1IDEwOjI2OjQxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFBQQzQwNUdQciBmaXggbWlzc2luZyByZWdpc3RlciBkZWZpbml0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMjE0Mzk4ZDljYjIyMjY4ZDlkNGY3NTYzMzU5ZWRjYTBmNzgyOTdhMgpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglGcmkgSmFuIDE4IDIxOjQ5OjA1IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IEJlYXV0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIFNlcXVvaWEgYW5kIEtvcmF0IGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDMwYzZhMjQxZTg4NDk5ZjUzNmU4NmQzMjU3NTllMjliYTAwZmY2N2YKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMjA6MDk6MDEgMjAwOCArMDEwMAoKICAgIFdpcGUgb3V0IGFzc2VtYmxlciB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgeDg2IGJpb3NlbXUKCiAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIGdldCByaWQgb2Ygc29tZSBhc3NlbWJsZXIgd2FybmluZ3MgYWJvdXQKICAgIGNoYW5nZWQgLmdvdDIgc2VjdGlvbiB0eXBlIHdoaWxlIGNvbXBpbGluZyB4ODYgYmlvcyBlbXVsYXRvcgogICAgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNjdhNDM4OWUzOWFkODUzZDY1YjcyZTJiN2NhZDE1YzdlODI5MTE0NwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMDA6NTc6MDkgMjAwOCArMDEwMAoKICAgIFByZXBhcmUgdjEuMy4yLXJjMSByZWxlYXNlIGNhbmRpZGF0ZQoKY29tbWl0IGYzM2U5NjUzYzljMDk4Njg5OTVkNzg4NTExZDU3Mzc3MWMyMDlmZTUKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTUgMDA6MTM6MjAgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxlIHdhcm5pbmcgb24gbGliX3BwYy9ib2FyZC5jCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGU1YzZmOWY4YmVjNGRmZjk2MDM0MTkxNjFlM2ExNWNjOGFkNWQ1ZjQKQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMTQgMTg6MjI6MDQgMjAwOCArMDEwMAoKICAgIEFkZCBSYWRlb24gTW9iaWxpdHkgOTIwMCBwY2kgZGV2aWNlIGlkIHRvIHRoZSByYWRlb24gZHJpdmVyCgogICAgVGhpcyBwYXRjaCBleHRlbmRzIFBDSSBkZXZpY2UgaWQgdGFibGUgb2YgdGhlCiAgICByYWRlb24gZHJpdmVyIHNvIHRoYXQgdGhlIGRyaXZlciB3aWxsIGFsc28gc3VwcG9ydAogICAgUmFkZW9uIE1vYmlsaXR5IDkyMDAgKE05KykgYmFzZWQgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCAxYjg2MDdlMWY3MTQzNTQ4YzYwNjJjMjgzNzE0NDllYzY5NTg4YzAwCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDE0IDE4OjE5OjUwIDIwMDggKzAxMDAKCiAgICBFeHRlbmQgQVRJIFJhZGVvbiBkcml2ZXIgdG8gc3VwcG9ydCBtb3JlIHZpZGVvIG1vZGVzCgogICAgQWRkcyBBVEkgUmFkZW9uIDkyMDAgc3VwcG9ydCBmb3IgMTI4MHgxMDI0LCAxMDI0eDc2OCwKICAgIDgwMHg2MDAsIDY0MHg0ODAgYXQgMjQsIDE2IGFuZCA4IGJwcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNDEyNDM4MmRlMDI5ZDM2MTE2MmE0YjhjZWNjNzczZWI4ZjI2ZTJhOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBGZWIgMTAgMTc6MDU6MjAgMjAwOCArMDEwMAoKICAgIHhzZW5naW5lOiBmaXggdHlwbyBhbmQgZmV3IGNvZGluZyBzdHlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNmY0YWJlZTc4OWI2ZDliZTNlYzRiOTdhZDQ4ZjUwOTM1NTU1OWU5ZQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgpEYXRlOglGcmkgRmViIDggMjE6MjU6NTggMjAwOCArMDEwMAoKICAgIEZpeCB3cm9uZyBtZW1vcnkgbGltaXQgY2FsY3VsYXRpb24gaW4gbWVtb3J5LXRlc3QKCiAgICBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgYWRkcmVzcyByYW5nZSBwYXNzZWQgdG8gdGhlICJtdGVzdCIgY29tbWFuZCBpcwogICAgbm90IG9mIHRoZSBmb3JtIDJeeCAtIDEsIG5vdCBhbGwgYWRkcmVzcyBsaW5lcyBhcmUgdGVzdGVkLiBUaGlzIGJ1ZyBpcwogICAgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIHNvZnR3YXJlIGF0CiAgICBodHRwOi8vd3d3Lm5ldHJpbm8uY29tL0VtYmVkZGVkLVN5c3RlbXMvSG93LVRvL01lbW9yeS1UZXN0LVN1aXRlLUMuIEZpeAogICAgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA3ZTMwZjVlYWM3ZjA3MDgyYTdjYTc3YjdkOTFiOTQ0YThkMGFmNmRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAxNSAwMDoxMTozOSAyMDA4ICswMTAwCgogICAgQ29kaW5nIFNUeWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNjkyMWUzZGMzMzEyOTNjODczZWM0ZDEwOWZkNTUxN2E0MmE5MGIzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgRmViIDUgMTM6MzA6NDMgMjAwOCArMDkwMAoKICAgIHNoOiBGaXggcmVnaXN0ZXIgYWRkcmVzcyBvZiBTSDc3MjIKCiAgICBUaGUgYWRkcmVzcyBvZiBTSDc3MjIgaXMgd3JvbmcgYnkgb2xkIGRvY3VtZW50LgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDBlYzdhMDYxZmIxYzI3N2Y2YWZkNzNkNjFkZDcxYmQyMWU3ZWY3YjIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxNzo0NDoyMyAyMDA4IC0wNTAwCgogICAgb25seSB1cGRhdGUgdmVyc2lvbiBoZWFkZXIgYXMgbmVlZGVkCgogICAgQ29uc3RhbnRseSByZWJ1aWxkaW5nIHRoZSB2ZXJzaW9uIGhlYWRlciB3aWxsIGZvcmNlIHVzZWxlc3MgcmVsaW5raW5nLCBzbyB3ZQogICAgc2ltcGx5IG5lZWQgdG8gY29tcGFyZSB0aGUgbmV3IGhlYWRlciB3aXRoIHRoZSBleGlzdGluZyBvbmUgYmVmb3JlIHVwZGF0aW5nCiAgICBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMjA4NDQ3ZjhlOTUzZjM0NzQyNWViOTJjOGUyOGQ1OWU2ZDkxMTM2MwpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEphbiAyOCAwNTo1NjoxOSAyMDA4IC0wNTAwCgogICAgRG8gbm90IHNwZWNpZnkgYSBDUk9TU19DT01QSUxFIGRlZmF1bHQgd2hlbiBleGVjdXRpbmcgc2l6ZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxZjc4MGFhNmYxN2E1ZDc5NzkxZDY5ZWMxZDJmNjZkNzZhYzQ1ZDhlCkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CkRhdGU6CVdlZCBGZWIgMTMgMTE6MTk6MTkgMjAwOCArMDEwMAoKICAgIEZpeCByZXR1cm4gdmFsdWUgb2YgbXRlc3Qgd2hlbiBDRkdfQUxUX01FTVRFU1Qgc2V0CgogICAgRml4IGEgbWlzc2luZyByZXR1cm4gc3RhdGVtZW50IGZyb20gYSBub24tdm9pZCBmdW5jdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KCmNvbW1pdCA5NDNhZmEyMjljZjViZjcwZWY5MTdjN2ViNmJkMGRiNTlhMWJhNjAyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDE0OjM1OjI2IDIwMDggLTA2MDAKCiAgICA4NXh4LCA4Nnh4OiBEZXRlcm1pbmUgSTJDIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzdG9yZSBpbiBnbG9iYWxfZGF0YQoKICAgIFVwZGF0ZSBnbG9iYWxfZGF0YSB0byBkZWZpbmUgaTJjMV9jbGsgYW5kIGkyYzJfY2xrIHRvIDg1eHggYW5kIDg2eHguCgogICAgVXBkYXRlIHRoZSBnZXRfY2xvY2tzKCkgZnVuY3Rpb24gaW4gODV4eCBhbmQgODZ4eCB0byBkZXRlcm1pbmUgdGhlIEkyQwogICAgY2xvY2sgZnJlcXVlbmN5IGFuZCBzdG9yZSBpdCBpbiBnZC0+aTJjMV9jbGsgYW5kIGdkLT5pMmMyX2Nsay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5MzFiM2E5YzNiZGZhYWVhYTcxZTU3YTYwMjZlZWM3MjYwMDViMDgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRmViIDE0IDIzOjE4OjAxIDIwMDggKzAxMDAKCiAgICBUUU04MzR4OiBjbGVhbiB1cCBjb25maWd1cmF0aW9uCgogICAgR2V0IGJvYXJkIG5hbWUgY29uc2lzdGVudCB3aXRoIExpbnV4IGFuZCBlbHNld2hlcmU7CiAgICBnZXQgcmlkIG9mIGxvY2FsIG5ldHdvcmsgZGVmaW5pdGlvbnMgZXRjLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzhjYzA5YzU1YjFkN2YyMzM3ODkwNTJjNmZjNDYyZTUzNzc2NjlhOQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVRodSBGZWIgMTQgMDg6MDI6MTIgMjAwOCArMDEwMAoKICAgIFRGVFA6IGZpeCBzZWFyY2ggb2YgJzonIGluIEJvb3RGaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYmM5ZWZhZGExNzAwOTZjNmIyNzNmMTkxNjVlMzI5MzZkMzMwZDgwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxNCAyMjo0Njo1NSAyMDA4ICswMTAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlNzY3MGY2YzFlNTJhZTZkMmE0M2ZmNzVhOGJjZmE3YTVjODZlNDdiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAxNCAyMjo0MzoyMiAyMDA4ICswMTAwCgogICAgUFBDOiBVc2UgcjIgaW5zdGVhZCBvZiByMjkgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlcgoKICAgIFIyOSB3YXMgYW4gdW5sdWNreSBjaG9pY2UgYXMgd2l0aCByZWNlbnQgdG9vbGNoYWlucyAoZ2NjLTQuMi54KSBnY2MKICAgIHdpbGwgcmVmdXNlIHRvIHVzZSBsb2FkL3N0b3JlIG11bHRpcGxlIGluc25zOyBpbnN0ZWFkLCBpdCBpc3N1ZXMgYQogICAgbGlzdCBvZiBzaW1wbGUgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdXBvbiBmdW5jdGlvbiBlbnRyeSBhbmQgZXhpdCwKICAgIHJlc3VsdGluZyBpbiBiaWdnZXIgY29kZSBzaXplLCB3aGljaCBpbiB0dXJuIG1ha2VzIHRoZSBidWlsZCBmb3IgYQogICAgZmV3IGJvYXJkcyBmYWlsLgoKICAgIFVzZSByMiBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2MyMzRlZmE2OTNiYzU5OTA2YzJiZTU1Yzc5MThlY2JiNTUzOTJlYQpBdXRob3I6IFV3ZSBLbGVpbmUtS8O2bmlnIDxVd2UuS2xlaW5lLUtvZW5pZ0BkaWdpLmNvbT4KRGF0ZToJV2VkIEphbiAzMCAwOTowODo0OSAyMDA4ICswMTAwCgogICAgQVJNOiBtYWtlIHRoZSBtYWNoaWQgY29uZmlndXJhYmxlIHZpYSB0aGUgZW52aXJvbm1lbnQKCiAgICBJZiB0aGUgdmFyaWFibGUgIm1hY2hpZCIgZXhpc3RzLCBsZXQgZG9fYm9vdG1fbGludXggdXNlIHRoYXQgaW5zdGVhZAogICAgb2YgYmQtPmJpX2FyY2hfbnVtYmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUtS/ZuaWcgPFV3ZS5LbGVpbmUtS29lbmlnQGRpZ2kuY29tPgoKY29tbWl0IGRkMjQwNTg0MDdjNWFkZDQ1Y2M2MGFlYzZjNzU3ZGRjMWExN2UxYjAKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJV2VkIEphbiAyMyAxNjozNDo0NiAyMDA4ICswMjAwCgogICAgVXNlICNpZmRlZiBDT05GSUdfRlNMRE1BRkVDCgogICAgTUNEX3Rhc2tzLmMgbGFja3MgW3N1YmplY3RdIHNvIGNvbXBpbGF0aW9uIG9mIG1pcHMgdGFyZ2V0cyAoYW5kIG1vcmUsIHByb2JhYmx5KQogICAgZmFpbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCAyNmM3YmFiODFlMDhkYzdiZDY5NmM0OGY3NTM0MjhhODI5NjI5YmQ4CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IEphbiAxOSAxMDoyNTo1OSAyMDA4ICswOTAwCgogICAgY29tbW9uL21paXBoeXV0aWwuYzogQ2xlYW51cCBNSUlfREVCVUcgYW5kIGRlYnVnKCkKCiAgICBDdXJyZW50IE1JSV9ERUJVRyBpcyBjb25mdXNpbmcgaW4gdHdvIHdheXMuIE9uZSBpcyB1c2VsZXNzIGRlZmluZS10aGVuLQogICAgdW5kZWYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4gVGhlIG90aGVyIGlzIHRoZXJlIGlzIG9ubHkgb25lIGRlYnVnKCkgaW4KICAgIHRoaXMgZmlsZSwgYW5kIHRoYXQgZG9lc24ndCBzZWVtIHdvcnRod2hpbGUgdG8gYm90aGVyIGhhdmluZyBNSUlfREVCVUcuCiAgICBXaGlsZSB0aGVyZSBhcmUgbWFueSB1c2VmdWwgcHJpbnRmKCkvcHV0cygpIGRlYnVnIGNvZGVzLCBidXQgdGhleSBhcmUgZm9yCiAgICBERUJVRywgbm90IGZvciBNSUlfREVCVUcuCgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBwdXQgdGhlbSBhbGwgdG9nZXRoZXIgaW50byBNSUlfREVCVUcgYW5kIGRlYnVnKCkuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA3NTFiOWI1MTg5ZjMyNzRiMDNjODA5MTcyNjMxMzE2ZDZiMDAyYzgyCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMTY6NDM6MjUgMjAwOCArMDkwMAoKICAgIE9uZU5BTkQgSW5pdGlhbCBQcm9ncmFtIExvYWRlciAoSVBMKSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBPbmVOQU5EIGJvb3Qgd2l0aGluIFUtQm9vdC4KICAgIEJlZm9yZSB0aGlzIHdvcmssIHdlIHVzZWQgYW5vdGhlciBPbmVOQU5EIElQTCBjYWxsZWQgWC1Mb2FkZXIgYmFzZWQKICAgIG9uIG9wZW4gc291cmNlLiBXaXRoIHRoaXMgd29yaywgd2UgY2FuIGJ1aWxkIHRoZSBvbmVib290LmJpbiBpbWFnZQogICAgd2l0aG91dCBvdGhlciBwcm9ncmFtLgoKICAgIFRoZSBidWlsZCBzZXF1ZW5jZSBpcyBzaW1wbGUuCiAgICBGaXJzdCwgaXQgY29tcGlsZXMgdGhlIHUtYm9vdC5iaW4KICAgIFNlY29uZCwgaXQgY29tcGlsZXMgT25lTkFORCBJUEwKICAgIEZpbmFsbHksIGl0IGJlY29tZXMgdGhlIG9uZWJvb3QuYmluIGZyb20gT25lTkFORCBJUEwgYW5kIHUtYm9vdC5iaW4KICAgIFRoZSBtZWNoYW5pc20gaXMgc2ltaWxhciB3aXRoIE5BTkQgYm9vdCBleGNlcHQgaXQgYm9vdHMgZnJvbSBpdHNlbGYuCgogICAgQW5vdGhlciB0aGluZyBpcyB0aGF0IHlvdSBjYW4gb25seSB1c2UgdGhlIE9uZU5BTkQgSVBMIG9ubHkgdG8gd29yawogICAgb3RoZXIgYm9vdGxvYWRlciBzdWNoIGFzIFJlZEJvb3QgYW5kIHNvIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgMjFmNmY5NjM2ZjBlOTc4Mzk3NTQ4NzUxMzQ3NDI1ZmJmOGQ0MmJiMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxMzowNjo1OSAyMDA4IC0wNjAwCgogICAgRml4IENPTkZJR19NTUMgdXNhZ2UgaW4gZmF0IGNvZGUKCiAgICBBICNpZiBzdGF0ZW1lbnQgaW4gZmF0LmMgZGVwZW5kZWQgb24gQ09ORklHX01NQywgaW5zdGVhZCBvZgogICAgZGVmaW5lZChDT05GSUdfTU1DKS4gIFRoaXMgbWVhbnQgQ09ORklHX01NQyBuZWVkZWQgdG8gYmUgZGVmaW5lZAogICAgYXMgIjEiIHJhdGhlciB0aGFuIGp1c3QgZGVmaW5lZC4gIE5vdyBpdCdzIGJldHRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU3ZDdkMzY0Y2UxODllMzliMGE2NDMzOGQyZjgwMTJjMDc0YTJiZApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTI6NTI6MzEgMjAwOCArMDEwMAoKICAgIHBwYzogUmVmYWN0b3IgY2FjaGUgcm91dGluZXMsIHNvIHRoZXJlIGlzIG9ubHkgb25lIGNvbW1vbiBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAzZjJhYzhmOTI4Yzc2Y2JkMjM3NDQzN2IyZDA3OWY4YjQzMjRhYWJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNTo1NTowMiAyMDA4IC0wNjAwCgogICAgODZ4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gc3lzX2Vwcm9tLmMKCiAgICBzeXNfZWVwcm9tLmM6ODI6OTogd2FybmluZzogdW5rbm93biBlc2NhcGUgc2VxdWVuY2UgJ1wvJwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjUyMzAxMDcwMjU3MzNlODllMjhmZDVlNWNmZDkxNmQ0OTUzYzI4YQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW4gYXQ+CkRhdGU6CUZyaSBGZWIgMjIgMTE6NDA6NTAgMjAwOCArMDAwMAoKICAgIE1vdmUgQVQ5MVJNOTIwMERLIGJvYXJkIHN1cHBvcnQgdW5kZXIgYm9hcmQvYXRtZWwKCiAgICBXZSBhbHJlYWR5IGhhdmUgYSB2ZW5kb3Igc3ViZGlyIGZvciBBdG1lbCwgc28gd2Ugc2hvdWxkIHVzZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuIDxhdD4gYXRtZWwuY29tPgoKY29tbWl0IDZkMDk0M2E2YmU5OTk3N2Q2ZDg1M2Q1MTc0OWU5OTYzZDY4ZWIxOTIKQXV0aG9yOiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAwOTowNjo1MiAyMDA4ICswMDAwCgogICAgQVJNOiBjbGVhbnVwIGR1cGxpY2F0ZWQgZXhjZXB0aW9uIGhhbmRsaW5nY29kZQoKICAgIE1vdmUgZHVwbGljYXRlZCBleGNlcHRpb24gaGFuZGxpbmcgY29kZSBpbnRvIGxpYl9hcm0uCgogICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+Cgpjb21taXQgZWE4ZDk4OWY0ZWY4MjAzZTFjMDI5MWU2MjQzNWE4YzYyZTNjZmIyOQpBdXRob3I6IFRpbW8gVHV1bmFpbmVuIDx0aW1vLnR1dW5haW5lbkBzeXNhcnQuZmk+CkRhdGU6CUZyaSBGZWIgMSAxMDowOTowMyAyMDA4ICswMDAwCgogICAgU3VwcG9ydCBmb3IgQXJ0aWxhIE0tNTAxIHN0YXJ0ZXIga2l0CgogICAgS2ltbW8gTGVwcGFsYSAvIFN5c2FydCBhbmQKICAgIFRpbW8gVHV1bmFpbmVuIC8gU3lzYXJ0Cgpjb21taXQgOTYwNGI2ZTUzZGRhZTRmZTAwYTQ4OGNiY2Q2YjBlNmNiMzQ0YmNjYwpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CU1vbiBGZWIgMTEgMTA6NTA6MTkgMjAwOCArMDAwMAoKICAgIEFUOTFDQVA5IHN1cHBvcnQKCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICByZWFkX2RhdGFmbGFzaCgpIHRha2VzIGEgc2lnbmVkIGNoYXIgcG9pbnRlciBhcyBhIHBhcmFtZXRlci4gU2lsZW5jZSBhCiAgICBmZXcgd2FybmluZ3MgZHVlcyB0byBpbmNvcnJlY3QgcGFyYW1ldGVyIHR5cGVzIGluIGVudl9kYXRhZmxhc2guYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDY0ZThhMDZhZjY4Y2RhMTc0YThhMDZkMGE2MWZjZTVlNWJiMTg5ZDcKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgpEYXRlOglUaHUgRmViIDcgMDk6NDI6NTcgMjAwOCArMDAwMAoKICAgIEFUOTFDQVA5IHN1cHBvcnQgOiBtb3ZlIGJvYXJkIGZpbGVzIHRvIEF0bWVsIHZlbmRvciBkaXJlY3RvcnkuCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IG1vdmUgYXQ5MWNhcDlhZGsgYm9hcmQgZmlsZXMgdG8gQXRtZWwgdmVuZG9yIGRpcmVjdG9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgoKY29tbWl0IDcyNjNlZjE5MWI4N2RhOTQ3NjhmNzYyYzcwOTNiZWRlYjcwZGI5OGYKQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbiBhdD4KRGF0ZToJVGh1IEphbiAzIDIxOjE1OjU2IDIwMDggKzAwMDAKCiAgICBBVDkxQ0FQOSBzdXBwb3J0IDogTUFDQiBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW4gPGF0PiBwb3BpZXMubmV0PgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW4gPGF0PiBhdG1lbC5jb20+Cgpjb21taXQgNmFmY2FiZjExZDczMjE4NTBmNGZlYWFkZmVlODQxNDg4YWNlNTRjNQpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CVRodSBGZWIgNyAxNjozNzo1NCAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGJvYXJkLyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgZmVmYjZjMTA5MjhjYWE5ZTcxMzM1Y2FkNjRkY2I2NWM4M2ZjZThhYgpBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIGF0PgpEYXRlOglXZWQgSmFuIDMwIDIxOjE1OjU0IDIwMDggKzAwMDAKCiAgICBBVDkxQ0FQOSBzdXBwb3J0IDogY3B1LyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIDxhdD4gcG9waWVzLm5ldD4KCmNvbW1pdCBmYTUwNmE5MjZjZWMzNDg4MDUxNDM1NzZjOTQxZjhlNjFiMzMzY2MwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJVGh1IEphbiAzMSAyMToxNTo1MyAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGluY2x1ZGUvIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCAyMGIxOTdjNmYyNzk5YWYzOTlhNjhmOTZhMWFmZjU0M2E3NTYyMWI4CkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU3VuIEphbiAyMCAxOTo0OToyMSAyMDA4ICswMDAwCgogICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGJ1aWxkIGludGVncmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBkNDlmZTRiZWQ1YjY5ZWM5MTA5MDlkMWJkNjJkYTIzZWNkODgwMWZkCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU3VuIEphbiAyMCAyMTowNzowMCAyMDA4ICswMDAwCgogICAgSW1wcm92ZSBEYXRhRmxhc2ggQ1MgZGVmaW5pdGlvbi4KCiAgICBVc2UgYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB0aGUgZXJyb3IgcHJvbmUgdW5uYW1lZCBhcnJheSB0bwogICAgZGVmaW5lIHRoZSBwb3NzaWJsZSBkYXRhZmxhc2ggYmFua3MuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBhNmNkZDIxYjU2MDE0MjA4NzA2MjM4NzEyYTg1M2E5ZTlhMGEyMjkwCkF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KRGF0ZToJU2F0IEphbiAxOSAyMTowOTozNSAyMDA4ICswMDAwCgogICAgRml4IGFybTkyNmVqcyBjb21waWxlIHdoZW4gU0tJUF9MT1dMRVZFTF9JTklUIGlzIG9uCgogICAgRml4IGFybTkyNmVqcyBjb21waWxlIHdoZW4gU0tJUF9MT1dMRVZFTF9JTklUIGlzIG9uLgoKICAgIGNwdS9hcm05MjZlanMvc3RhcnQubzogSW4gZnVuY3Rpb24gYGNwdV9pbml0X2NyaXQnOgogICAgLi4uL2NwdS9hcm05MjZlanMvc3RhcnQuUzoyMjc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxvd2xldmVsX2luaXQnCgogICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KCmNvbW1pdCBlYTY4NmY1MmU0NWIzZGYyOTM4ODY2ZDNmNWE5OGJiMjU1NmRmZTJiCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJRnJpIEZlYiAxIDE2OjUwOjI0IDIwMDggKzAwMDAKCiAgICBGaXggdGltZXIgb3ZlcmZsb3cgaW4gRGFWaW5jaQogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Cgpjb21taXQgZjRlN2NiZmNiMGZjYmMzMjVhMmJjZmVhN2UwMGUzZGQzN2Y5Mzg0NgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBGZWIgMSAxNjo0OTowOCAyMDA4ICswMDAwCgogICAgVXBkYXRlIGJvYXJkIE5ldFN0YXIKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KCmNvbW1pdCBiN2Y2MTkzZTc2NjUxZTFmZDYwNmU0NmViMTE5MTViNTNjYjY2MThiCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJVHVlIEZlYiA1IDEwOjI2OjQyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEhDVTQvNS4gRml4IG1ha2UgTz0uLi94eAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMjllMzUwMGNiYzQzYzg5ZWZmNmU3MjBjYTgzZTM3NWRlZWVjZDliMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUdWUgSmFuIDIyIDA4OjUxOjU5IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IEFkZCBDT05GSUdfNHh4X0RDQUNIRSBjb21waWxlIHN3aXRjaCB0byBEZW5hbGktY29yZSBTUEQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGZlODkxZWNmNGQxODdlOWQxMWRkZTg2OWVkNDYyM2FmNTJiNTQ0NTEKQXV0aG9yOiBIaXJvc2hpIEl0byA8aXRvQG1sYi5jby5qcD4KRGF0ZToJVGh1IEphbiAzMSAxODozNTowNCAyMDA4ICswOTAwCgogICAgTkZTIFRpbWVvdXQgd2l0aCBsYXJnZSBmaWxlcy4KCiAgICBSZXRyeSB0byBzZW5kIE5GUyBwYWNrZXQgYmVmb3JlIHJlYWNoaW5nIHRpbWVvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGlyb3NoaSBJdG8gPGl0b0BtbGIuY28uanA+Cgpjb21taXQgODhmNzI1MjdmNWI4OWMwOTA1YWQ1YzM2Y2MyZWY4ZDI5ZGQ2YmJmMApBdXRob3I6IEpvaGFubmVzIFN0ZXplbmJhY2ggPGpzQHNpZzIxLm5ldD4KRGF0ZToJVHVlIEphbiAyOSAwMDoxMToyNSAyMDA4ICswMTAwCgogICAgQWRkIGRlcGVuZGVuY2llcyB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBwYXJhbGxlbCBtYWtlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaGFubmVzIFN0ZXplbmJhY2ggPGpzQHNpZzIxLm5ldD4KCmNvbW1pdCA2ZDFiNmY5Zjg5YzgxNWVhY2E0NGFjZmY4ZTczZWNlNzE4MWY2MWI2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSmFuIDI4IDA1OjQ2OjAxIDIwMDggLTA1MDAKCiAgICBNYXJrIGJvYXJkX2luaXRfW2ZyXSBhcyBub3JldHVybgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAxNjFiMmFmNGQ3YjQ4ZmQ2MDJjZTMzM2MzNTVhNGRmMDMzNzg5MmJiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gSmFuIDI4IDA1OjI4OjUwIDIwMDggLTA1MDAKCiAgICBPbmx5IHVzZSBURVhUX0JBU0UgaWYgZGVmaW5lZCBieSB0aGUgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMWI3Njk4ODE3NTAwMzBmMTA3NDM4MDhiOWQ2MDEzZTExZjU1OTM1MApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBKYW4gMjUgMDc6NTQ6NDcgMjAwOCArMDEwMAoKICAgIEZpeCByZW1haW5pbmcgQ09ORklHX0NPTU1BTkRTCgogICAgdXBkYXRlIGNvbW1lbnRzCiAgICBGaXggY29kaW5nIHN0eWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwYzlkNDJlNmIwYjgzZDUwNzMzNWEyOTFlM2VhOTkyNDAwMzhmNGI5CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJTW9uIEphbiAyMSAxNjo0NjowMCAyMDA4ICswMTAwCgogICAgQWRkICp+IHRvIC5naXRpZ25vcmUKCiAgICBPbmUgc2hvdWxkIG5ldmVyIGFkZCBhIGJhY2t1cCBmaWxlIGVuZGluZyBpbiB3aXRoIH4gdG8gdGhlIGdpdCByZXBvc2l0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgM2NmYjBjNTFiMmJiNWVkZTU0ZWNhODVhY2U1YjFiYTEyYmUzMTRiMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMDA6MDI6MTAgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lcyBmb3IgQVJSQVlfU0laRQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYzc3Y2U0NzRiMWM1N2IxM2U5ZDM2ZDk4MzBmMTQ3OTY2YzE0MzY5NApBdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CkRhdGU6CU1vbiBKYW4gMTQgMjI6MDg6MTQgMjAwOCArMDEwMAoKICAgIEZpeCBpbmNvcnJlY3QgYWRkcmVzcyB0ZXN0IGluIEFUOTFGX0RhdGFmbGFzaFNlbGVjdCgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Cgpjb21taXQgZDlhZDExNWJiZjdiYjA4NDJkZTdkYmQyNTAyYjdlNDMwZjgzY2MzZApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBGZWIgMTMgMTU6MDk6NTggMjAwOCAtMDYwMAoKICAgIEZpeCBidWlsZGluZyBvZiBmZHRfc3VwcG9ydC5jIGlmIERFQlVHIHNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgY2NkNmUxNDY0ZTUzOTZiYzFhOWFlYmY3MDc3ZGRmNDM0MmVhZmUwMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBGZWIgMTIgMTQ6NTM6MjggMjAwOCAtMDYwMAoKICAgIEFkZCBDRkdfTVBDODZ4eF9ERFJfQUREUiBhbmQgQ0ZHX01QQzg2eHhfRERSMl9BRERSIHN5bWJvbHMKCiAgICBUaGVzZSByZXBsYWNlIGRpcmVjdCBzdHJ1Y3R1cmUgcmVmZXJlbmNlcyBmb3IgSU1NUiBzZWN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2Mjc3NmJlOGRjYTQwOTdjYTAzZDRmOTQxNWYwOGQ0ODg3YjQ1ZDAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgRmViIDEyIDAwOjQ1OjA2IDIwMDggKzAxMDAKCiAgICBHZXQgcmlkIG9mICIjdW5kZWYgREVCVUciIGZyb20gYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNzNiZjFlMmRlNzg2MmJjZGJkNWE5Zjk5M2IzZTg0YjY3YzhlYTljOApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6MDk6NDEgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSAjdW5kZWYgREVCVUcgZnJvbSBNUEM4M3h4IGJvYXJkIGhlYWRlciBmaWxlcwoKICAgIFJlbW92ZSB0aGUgIiN1bmRlZiBERUJVRyIgbGluZSBmcm9tIGFsbCBGcmVlc2NhbGUgODN4eCBib2FyZCBoZWFkZXIgZmlsZXMuCiAgICBUaGUgaW5jbHVzaW9uIG9mIHRoaXMgbGluZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGVuYWJsZSBkZWJ1ZyBjb2RlIGluCiAgICBvdGhlciBzb3VyY2UgZmlsZXMsIGJlY2F1c2UgIiNkZWZpbmUgREVCVUciIHR5cGljYWxseSBuZWVkcyB0byBiZSBkZWZpbmVkCiAgICBiZWZvcmUgYW55IGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTAxOGNlMmUwODZlOWNhZjM1YjkxNGQ2NzViODJiYzQ4ODhmMDc3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCgogICAgUUU6IE1vdmUgRkRUIHN1cHBvcnQgaW50byBhIGNvbW1vbiBmaWxlCgogICAgTW92ZSB0aGUgZmxhdCBkZXZpY2UgdHJlZSBzZXR1cCBmb3IgUUUgcmVsYXRlZCBkZXZpY2VzIGludG8KICAgIGEgY29tbW9uIGZpbGUgc2hhcmVkIGJldHdlZW4gODN4eCAmIDg1eHggcGxhdGZvcm1zIHRoYXQgaGF2ZSBRRSdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWNmNzQ2YzMwMzcxMDMyOWY4MDQwZDljNjJlZTM1NDMxM2UzZTkxZgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTk6MDkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGtlcm5lbCBkYXRhIGZpbmQgY29kZSB0byBnZXRfa2VybmVsKCkgcm91dGluZQoKICAgIFZlcmlmaWNhdGlvbiBvZiB0aGUga2VybmVsIGltYWdlIChpbiBvbGQgZm9ybWF0KSBhbmQgZmluZGluZyBrZXJuZWwKICAgIGRhdGEgaXMgbW92ZWQgdG8gYSBkZWRpY2F0ZWQgcm91dGluZS4gVGhlIHJvdXRpbmUgd2lsbCBhbHNvIGhvbGQKICAgIHN1cHBvcnQgZm9yLCB0byBiZSBhZGRlZCwgbmV3IGltYWdlIGZvcm1hdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdiMzI1NDU0ZmQyMzFkNDI3M2RlM2ZlMzczODUwZjc3N2ZiMDg2YmYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjU4OjIwIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBGRFQgaGFuZGxpbmcgaW4gUFBDIGRvX2Jvb3RfbGludXgoKQoKICAgIE1vdmUgRkRUIGJsb2IgZmluZGluZyBhbmQgcmVsb2NhdGlvbiB0byBhIGRlZGljYXRlZAogICAgZ2V0X2ZkdCgpIHJvdXRpbmUuIEl0IGluY3JlYXNlcyBjb2RlIHJlYWRhYmlsaXR5IGFuZAogICAgd2lsbCBtYWtlIGFkZGluZyBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCBlYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiNmIwZmU2NDYwYjcwNjNhYzYwYjlhMzUzMWVmMjEwYWVkYjMxNDUxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzo1ODoxMyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENsZWFudXAgZG9fYm90bV9saW51eCgpIGJvb3QgYWxsb2NhdGlvbnMKCiAgICBUaGlzIHBhdGNoIG1vdmVzIGNvbW1vbiBwcmUtYm9vdCBhbGxvY2F0aW9uIHN0ZXBzIHNoYXJlZCBiZXR3ZWVuIFBQQwogICAgYW5kIE02OEsgdG8gYSBoZWxwZXIgcm91dGluZXM6CgogICAgY29tbW9uOgogICAgLSBnZXRfYm9vdF9zcF9saW1pdCgpCiAgICAtIGdldF9ib290X2NtbGluZSgpCiAgICAtIGdldF9ib290X2tiZCgpCgogICAgcGxhdGZvcm06CiAgICAtIHNldF9jbG9ja3NfaW5fbWh6KCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGNlYWVkMmIxZTU0ZWJmMTRkNjAwZTAyZmVmMDE2YzhkZjVjYzRkNDAKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjU3OjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gTW92ZSByYW1kaXNrIGxvYWRpbmcgdG8gYSBjb21tb24gcm91dGluZQoKICAgIFJhbWRpc2sgbG9hZGluZyBjb2RlLCBpbmNsdWRpbmcgaW5pdHJkX2hpZ2ggdmFyaWFibGUgaGFuZGxpbmcsCiAgICB3YXMgZHVwbGljYXRlZCBmb3IgUFBDIGFuZCBNNjhLIHBsYXRmb3Jtcy4gVGhpcyBwYXRjaCBjcmVhdGVzCiAgICBjb21tb24gaGVscGVyIHJvdXRpbmUgdGhhdCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIHBsYXRmb3JtCiAgICBkb19ib290bV9saW51eCgpIHJvdXRpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNjhkNGYwNWU2YjIzODNhNDQyZmI3MWY4MGYyYTlmYmIzZDhkZWY2OApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTU6NTMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZW1vdmVkIGRlYWQgcmFtZGlzayBjb2RlIG9uIG1pY3JvYmxhemUgYXJjaGl0ZWN0dXJlcwoKICAgIE1pY3JvYmxhemUgZG9fYm9vdG1fbGludXgoKSBpbmNsdWRlcyByYW1kaXNrIHByb2Nlc3NpbmcgY29kZSBidXQKICAgIHRoZSByYW1kaXNrIGRvZXMgbm90IGdldCB1c2VkIGFueXdoZXJlIGxhdGVyIG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNWFkMDNlYjM4NTRjMTYyNjg0MjIyYTcxOGI0NGMwNzE2ZWEwZGIwMwpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6NTU6MzkgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGYWN0b3Igb3V0IGNvbW1vbiBpbWFnZV9nZXRfcmFtZGlzaygpIHJvdXRpbmUKCiAgICBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZG9fYm9vdG1fbGludXgoKSByb3V0aW5lcyBzaGFyZSBjb21tb24KICAgIHJhbWRpc2sgaW1hZ2UgcHJvY2Vzc2luZyBjb2RlLiBNb3ZlIHRoaXMgY29kZSB0byBhIGNvbW1vbgogICAgaGVscGVyIHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkM2M1ZWI2ZGQxZjRlZDNjMzM4ODM4NmNmMWQxYmY4MmFhNTFkNTZiCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowOCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIE1vdmUgRkRUIGVycm9yIHByaW50aW5nIHRvIGNvbW1vbiBmZHRfZXJyb3IoKSByb3V0aW5lCgogICAgRkRUIGVycm9yIGhhbmRsaW5nIGluIFBQQyBkb19ib290bV9saW51eCgpIHNoYXJlcyB0aGUgc2FtZSBtZXNzYWdlIGZvcm1hdC4KICAgIFRoaXMgcGF0Y2ggbW92ZXMgZXJyb3IgbWVzc2FnZSBwcmludGluZyB0byBhIGhlbHBlciBmZHRfZXJyb3IoKSByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0MmI3M2U4ZWUwMGQ0ODAwNDc5MWRlYTY0YjgwOTNmYjk3NGM1N2UxCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZhY3RvciBvdXQgY29tbW9uIHJvdXRpbmVzIGZvciBnZXR0aW5nIG9zL2FyY2gvdHlwZS9jb21wIG5hbWVzCgogICAgTW92ZSBudW1lcmljLWlkIHRvIG5hbWUgdHJhbnNsYXRpb24gZm9yIGltYWdlIG9zL2FyY2gvdHlwZS9jb21wIGhlYWRlcgogICAgZmllbGRzIHRvIGEgaGVscGVyIHJvdXRpbmVzOiBpbWFnZV9nZXRfb3NfbmFtZSgpLCBpbWFnZV9nZXRfYXJjaF9uYW1lKCksCiAgICBpbWFnZV9nZXRfdHlwZV9uYW1lKCksIGltYWdlX2dldF9jb21wX25hbWUoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGU5OWMyNjY5NGEzODQyMjFkMzM2ZjY0NDhjMDZhNTc0NzljMGJhYTQKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGhhbmRsaW5nIGZyb20gYm9vb3RtCgogICAgU3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgYXJlIHN1cHBvc2VkIHRvIGJlIHJ1biB1c2luZyB0aGUgImdvIiBjb21tYW5kLgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHN0YW5kYWxvbmUgaW1hZ2VzIGhhbmRsaW5nIGZyb20gdGhlIGRvX2Jvb3RtKCkuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA0YTJhZDVmZjY0MDA2OTg0MzNkZDcyMDNkMzQ5MzljM2M5Y2M5YmZmCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIFJlbW92ZSBPRl9GTEFUX1RSRUUgc3VwcG9ydCBmcm9tIFBQQyBib290bSBjb2RlCgogICAgU3VwcG9ydCBmb3IgT0ZfRkxBVF9UUkVFIGlzIHRvIGJlIG9ic29sZXRlZCBpbiB0aGUgbmVhciBmdXR1cmUsCiAgICByZW1vdmUgcmVsYXRlZCBjb2RlIGZyb20gdGhlIGJvb3RtIHJvdXRpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgODI4NTBmM2QzMmEyNjYxODY4ZWM2ODc2YmVkN2EyMmM1NWNlZjcxOApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBVc2UgaW1hZ2UgQVBJIGluIFNIIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZQoKICAgIEludHJvZHVjZSBpbWFnZSBoYW5kbGluZyBBUEkgZm9yIGxhdGVseSBhZGRlZCBIaXRhY2hpIFNIIGFyY2hpdGVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDRhOTk1ZWRlYzFhYzE2M2Q5MzI2ZDE0M2ZmZTJiNDdlNzU0MzQwN2YKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA2IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gUmVuYW1lIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBib290bSBjb2RlIGZpbGVzCgogICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIGRvX2Jvb3RtX2xpbnV4KCkgYW5kIG90aGVyIGJvb3RtIGhlbHBlciByb3V0aW5lcyBpcwogICAgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvZGUuIEFzIHN1Y2ggaXQgcmVzaWRlcyBpbiBsaWJfPGFyY2g+IGRpcmVjdG9yaWVzCiAgICBpbiBmaWxlcyBuYW1lZCA8YXJjaD5fbGludXguYwoKICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aG9zZSBmaWxlcyB0byBhIG1vcmUgY2xlYXIgYW5kIGFjY3VyYXRlCiAgICBsaWJfPGFyY2g+L2Jvb3RtLmMgZm9ybS4KCiAgICBMaXN0IG9mIHRoZSByZW5hbWVkIGZpbGVzOgogICAgICAgbGliX2FybS9hcm1saW51eC5jIC0+IGxpYl9hcm0vYm9vdG0uYwogICAgICAgbGliX2F2cjMyL2F2cjMyX2xpbnV4LmMgLT4gbGliX2F2cjMyL2Jvb3RtLmMKICAgICAgIGxpYl9ibGFja2Zpbi9iZjUzM19saW51eC5jIC0+IGxpYl9ibGFja2Zpbi9ib290bS5jCiAgICAgICBsaWJfaTM4Ni9pMzg2X2xpbnV4LmMgLT4gbGliX2kzODYvYm9vdG0uYwogICAgICAgbGliX202OGsvbTY4a19saW51eC5jIC0+IGxpYl9tNjhrL2Jvb3RtLmMKICAgICAgIGxpYl9taWNyb2JsYXplL21pY3JvYmxhemVfbGludXguYyAtPiBsaWJfbWljcm9ibGF6ZS9ib290bS5jCiAgICAgICBsaWJfbWlwcy9taXBzX2xpbnV4LmMgLT4gbGliX21pcHMvYm9vdG0uYwogICAgICAgbGliX25pb3Mvbmlvc19saW51eC5jIC0+IGxpYl9uaW9zL2Jvb3RtLmMKICAgICAgIGxpYl9uaW9zMi9uaW9zX2xpbnV4LmMgLT4gbGliX25pb3MyL2Jvb3RtLmMKICAgICAgIGxpYl9wcGMvcHBjX2xpbnV4LmMgLT4gbGliX3BwYy9ib290bS5jCiAgICAgICBsaWJfc2gvc2hfbGludXguYyAtPiBsaWJfc2gvYm9vdG0uYwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgNzU4MjQzOGMyODViZjBjZWY4MjkwOWQwZjIzMmRlNjRlYzU2N2E4YQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDYgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZXR1cm4gZXJyb3Igb24gaW1hZ2UgbW92ZS91bmNvbXByZXNzIG92ZXJ3cml0ZXMKCiAgICBDaGVjayBmb3Igb3ZlcndyaXRlcyBkdXJpbmcgaW1hZ2UgbW92ZS91bmNvbXByZXNzLCByZXR1cm4gd2l0aCBlcnJvcgogICAgd2hlbiB0aGUgb3JpZ2luYWwgaW1hZ2UgZ2V0cyBjb3JydXB0ZWQuIFJlcG9ydCBjbGVhciBtZXNzYWdlIHRvIHRoZSB1c2VyCiAgICBhbmQgcHJldmVudCBmdXJ0aGVyIHRyb3VibGVzIHdoZW4gcG9pbnRlciB0byB0aGUgY29ycnVwdGVkIGltYWdlcyBpcyBwYXNzZWQKICAgIHRvIGRvX2Jvb3RtX2xpbnV4IHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmMTNlN2IyZTk5M2M2MWZlZDFmNjA3OTYyNTAxZTA1MTk0MGQ2ZTgwCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjEyOjE3IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBpbWFnZSBoZWFkZXIgcG9pbnRlciB1c2UgaW4gYm9vdG0gY29kZQoKICAgIC0gdXNlIHNpbmdsZSBpbWFnZSBoZWFkZXIgcG9pbnRlciBpbnN0ZWFkIG9mIGEgc2V0IG9mIGF1eGlsbGlhcnkgdmFyaWFibGVzLgogICAgLSBhZGQgbXVsdGkgY29tcG9uZW50IGltYWdlIGhlbHBlciByb3V0aW5lczogZ2V0IGNvbXBvbmVudCBzaXplL2RhdGEgYWRkcmVzcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMWVlMTE4MGI2ZTkzZTU2ZDAyODJhYzhkOTQzZTQ0OGU5ZDBlYWIyMApBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxODoxNzoxMCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIENsZWFudXAgY21kX2Jvb3RtLmMKCiAgICAtIHNvcnQgYW5kIGNsZWFudXAgaGVhZGVycywgZGVjbGFyYXRpb25zLCBldGMuCiAgICAtIGdyb3VwIHJlbGF0ZWQgcm91dGluZXMKICAgIC0gY2xlYW51cCBpbmRlbnRhdGlvbiwgd2hpdGUgc3BhY2VzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhZjEzY2RiYzAxZWFmODg4ODA5NzhiZmI0ZjYwM2UwMTI4MThiYTI0CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjExOjQ1IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gQWRkIG1lbW1vdmVfd2QoKSBjb21tb24gcm91dGluZQoKICAgIE1vdmUgY29tbW9uLCB3YXRjaGRvZyBzZW5zaWJsZSBtZW1tb3ZlIGNvZGUgdG8gYSBoZWxwZXIgbWVtbW1vdmVfd2QoKSByb3V0aW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOTU4ZmM0OGFiZGRlYWI1MTNlYTQ4NDdlMzRmMjJhMmU5ZmU2N2ZlMQpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxODoxMTo0NCAyMDA4ICswMTAwCgogICAgW25ldyB1SW1hZ2VdIEZpeCBGRFQgaGVhZGVyIHZlcmlmaWNhdGlvbiBpbiBQUEMgZG9fYm9vdF9saW51eCgpIHJvdXRpbmUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDE1MTU4OTcxZjQ5MjU1Y2NlZjU0ZjA5NzlhOTQyY2ZkM2RlMmFlNTIKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBGaXggdUltYWdlIGhlYWRlciBwb2ludGVyIHVzZSBpbiBpMzg2IGRvX2Jvb3RtX2xpbnV4KCkKCiAgICBVc2UgaW1hZ2UgaGVhZGVyIGNvcHkgaW5zdGVhZCBvZiBhIChwb3NzaWJseSBjb3JydXB0ZWQpIHBvaW50ZXIgdG8KICAgIGEgaW5pdGlhbCBpbWFnZSBsb2NhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDI2MWRjZjQ2MjRiMjVmM2M1NTFlZmNmODYzNGU5MTk0ZmFiYmE5YzMKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBSZW1vdmUgSTM4NiB1SW1hZ2UgZmFrZV9oZWFkZXIoKSByb3V0aW5lCgogICAgSTM4NiB0YXJnZXRzIGFyZSBub3QgdXNpbmcgYSB1SW1hZ2UgZm9ybWF0LCBpbnN0ZWFkIGZha2UgaGVhZGVyCiAgICBpcyBhZGRlZCB0byByYW0gaW1hZ2UgYmVmb3JlIGl0IGlzIGZ1cnRoZXIgcHJvY2Vzc2VkIGJ5IGJvb3RtLgoKICAgIFJlbW92ZSB0aGlzIGZpeHVwIGFuZCBmb3JjZSBwcm9wZXIgdUltYWdlIHVzZSBmb3IgSTM4Ni4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDU1OTMxNmZhZjdlYWUwNjE0YzkxZDc3ZjUwOWI1N2Q2YzRjMDkxYmEKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIENIVU5LU1ogZGVmaW5pdGlvbiB0byBpbWFnZS5oCgogICAgQ0hVTktTWiBkZWZpbmVkIGZvciBQUEMgYW5kIE02OEsgaXMgc2V0IHRvIHRoZSBzYW1lIHZhbHVlIG9mIDY0SywKICAgIG1vdmUgdGhpcyBkZWZpbml0aW9uIHRvIGEgY29tbW9uIGhlYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDMyMTM1OWYyMDgyM2UwYjhjNWFkMzhiNjRkMDA3YTZjNDhjZGExNmUKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBNb3ZlIGd1bnppcCgpIGNvbW1vbiBjb2RlIHRvIGNvbW1vbi9ndW56aXAuYwoKICAgIE1vdmUgZ3VuemlwKCksIHphbGxvYygpIGFuZCB6ZnJlZSgpIHRvIGEgc2VwYXJhdGUgZmlsZS4KICAgIFNoYXJlIHphbGxvYygpIGFuZCB6ZnJlZSgpIHdpdGggY3JhbWZzIHVuY29tcHJlc3Mgcm91dGluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IGQ0NWQ1YTE4YjZiMzY2ODhmMjM2NTYyM2Y5ZDU1MDU2NmM2NjRiNWIKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTg6MTE6NDMgMjAwOCArMDEwMAoKICAgIFtuZXcgdUltYWdlXSBDbGVhbnVwIE9GL0ZEVCAjaWYvI2VsaWYvI2VuZGlmIHVzZSBpbiBkb19ib290bV9saW51eCgpCgogICAgTWFrZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfT0ZfRkxBVF9UUkVFIHVzZSBtb3JlCiAgICByZWFkYWJsZSBpbiBQUEMgdmFyaWFudCBvZiBkb19ib290bV9saW51eCgpIHJvdXRpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA1ZDNjYzU1ZWNiYWUyNzdlMDhmNWZmNzcxZGEyMGIxZDZhMzZlYzM2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjExOjQzIDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gTW92ZSBQUEMgZG9fYm9vdG1fbGludXgoKSB0byBsaWJfcHBjL3BwY19saW51eC5jCgogICAgUFBDIGltcGxlbWVudGF0aW9uIG9mIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZSBpcyBtb3ZlZCB0bwogICAgYSBkZWRpY2F0ZWQgZmlsZSBsaWJfcHBjL3BwY19saW51eC5jCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBiOTdhMmEwYTIxZjI3OWQ2NmRlOGE5YmRiZmUyMTkyMDk2OGJjYjFjCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE4OjE0OjA5IDIwMDggKzAxMDAKCiAgICBbbmV3IHVJbWFnZV0gRGVmaW5lIGEgQVBJIGZvciBpbWFnZSBoYW5kbGluZyBvcGVyYXRpb25zCgogICAgLSBBZGQgaW5saW5lIGhlbHBlciBtYWNyb3MgZm9yIGJhc2ljIGhlYWRlciBwcm9jZXNzaW5nCiAgICAtIE1vdmUgY29tbW9uIG5vbiBpbmxpbmUgY29kZSBjb21tb24vaW1hZ2UuYwogICAgLSBSZXBsYWNlIGRpcmVjdCBoZWFkZXIgYWNjZXNzIHdpdGggdGhlIEFQSSByb3V0aW5lcwogICAgLSBSZW5hbWUgSUhfQ1BVXyogdG8gSUhfQVJDSF8qCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCBlZDI5YmM0ZTgxNDJiNDZiNjI2ZjY3NTI0MjA3YjM2ZTQzZDlhYWQ2CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IEphbiAzMSAxMzoxOTo1OCAyMDA4ICswMTAwCgogICAgQWRkIG1pc3NpbmcgY21kX3hpbWcubyB0byBjb21tb24vTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgoKY29tbWl0IDM3ZTNjNjJmYTA3YTgyM2U3NTY5Yzg3MmUzYTkzOTVkMjI3ZWQ4ZTMKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIEphbiAyOCAxMDoxNTowMiAyMDA4ICswMTAwCgogICAgQURTNTEyMWU6IEREUjIgaW5pdC90aW1pbmcgdXBkYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgYWM5MTUyODMwZDdmZGViYWNlOGEyNjBiNzczN2VmMjg3MGMyMWNhMApBdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDMwIDEzOjM2OjU3IDIwMDggLTA3MDAKCiAgICBEZXZpY2UgdHJlZSB1cGRhdGVzCgogICAgQ2hhbmdlcyB0byBtYXRjaCA1MTIxIGRldmljZSB0cmVlIGdvaW5nIG1haW5saW5lIGluIDIuNi4yNS4KCiAgICBDaGFuZ2UgT0ZfU09DIGZyb20gInNvYzUxMjEiIHRvIHBsYWluICJzb2MiLgogICAgUmVtb3ZlIHVubmVlZGVkICJyZWYtZnJlcXVlbmN5IiBmaXh1cHMuCiAgICBSZW1vdmUgImFkZHJlc3MiIGVuZXRhZGRyIGZpeHVwLgoKICAgIEFkZCBidXMtZnJlcXVlbmN5IGZpeHVwIGZvciBvbGQgT0ZfU09DIHNvIG9sZAogICAga2VybmVscyB3aXRoIG9sZCBkZXZpY2UgdHJlZXMgd2lsbCB3b3JrIHdpdGggbmV3CiAgICB1LWJvb3Qgd2l0aCA2Nk1IeiBJUFMgY2xvY2sKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZTU1ZDE4ZGYzZmYyZWE2MTQ2MjRlNzQ3OTNkZTdjNDM1MjBlMGU3CkF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzAgMTM6MzY6NTYgMjAwOCAtMDcwMAoKICAgIENoYW5nZSBJUFMgZnJlcSB0byA2Nk1IegoKICAgIFJlY29tbWVuZGVkIGZyZXF1ZW5jeSBpcyA2Nk1IegogICAgQ2hhbmdlIGRpdmlkZXIgZnJvbSA0IHRvIDMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2Q5Y2I2MmY5ZDhiNzhkNmMzYWY1ZDFlOWI1YTNkNjhhM2Q3Mzk3NApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMjI6Mzg6NTUgMjAwOCArMDEwMAoKICAgIHhzZW5naW5lOiByZW5hbWUgYm9hcmRfcG9zdF9pbml0IHRvIGJvYXJkX2xhdGVfaW5pdAoKICAgIG1pc3NpbmcgbWlncmF0aW9uIGZyb20gIkNsZWFudXAgb2Ygc29tZSBpbml0IGZ1bmN0aW9ucyIKICAgIGluIGM4MzdkY2IxYTMxNjc0NTA5MjU2N2JmZTRmYjI2NmQwOTQxODg0ZmYKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDhkYWZhODc0NzZiMGQ3MTcwZTIxOWMyZjVlMzg0MmM4MzNhOTE4MDcKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJU2F0IEphbiAxMiAyMzozNTozMyAyMDA4IC0wNTAwCgogICAgQWRkIGF0dHJpYnV0ZSBQT1NUX1BSRVJFTCB0byBFQ0MgbWVtb3J5IFBPU1QKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBlZDJjZjU0OGNhYzgwY2QzY2Y4MTU0ZGNmZTdiMjY4NWJlZjQ1OTM4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCgogICAgUUU6IE1vdmUgRkRUIHN1cHBvcnQgaW50byBhIGNvbW1vbiBmaWxlCgogICAgTW92ZSB0aGUgZmxhdCBkZXZpY2UgdHJlZSBzZXR1cCBmb3IgUUUgcmVsYXRlZCBkZXZpY2VzIGludG8KICAgIGEgY29tbW9uIGZpbGUgc2hhcmVkIGJldHdlZW4gODN4eCAmIDg1eHggcGxhdGZvcm1zIHRoYXQgaGF2ZSBRRSdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDM4ZGE1Mzc5NDNjZDM2MzU2YjlkM2Q5ZDliNjA1MzM1NTRiODFkOApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgSmFuIDIzIDE3OjIwOjE0IDIwMDggKzAxMDAKCiAgICBBVlIzMjogTWFrZSBTRFJBTSByZWZyZXNoIHJhdGUgY29uZmlndXJhYmxlCgogICAgVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyB0aGUgU0RSQU0gcm93IHJlZnJlc2ggcGVyaW9kIHNob3VsZCBhbHdheXMKICAgIGJlIDE1LjYgdXMuIFRoaXMgaXMgbm90IGFsd2F5cyB0cnVlLCBhbmQgaW5kZWVkIG9uIHRoZSBBVE5HVzEwMCwgdGhlCiAgICByZWZyZXNoIHJhdGUgc2hvdWxkIHJlYWxseSBiZSA3LjgxIHVzLgoKICAgIEFkZCBhIHJlZnJlc2hfcGVyaW9kIG1lbWJlciB0byBzdHJ1Y3Qgc2RyYW1faW5mbyBhbmQgaW5pdGlhbGl6ZSBpdAogICAgcHJvcGVybHkgZm9yIGJvdGggQVRTVEsxMDAwIGFuZCBBVE5HVzEwMC4gT3V0LW9mLXRyZWUgYm9hcmRzIHdpbGwKICAgIHBhbmljKCkgdW50aWwgdGhlIHJlZnJlc2hfcGVyaW9kIG1lbWJlciBpcyB1cGRhdGVkIHByb3Blcmx5LgoKICAgIEJpZyB0aGFua3MgdG8gR2VyaGFyZCBCZXJnaG9mZXIgZm9yIHBvaW50aW5nIG91dCB0aGlzIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDYxMTUxY2NjYjY2MGNkYjA2YTA3ZmIyODNkZTYwODk5MTNkN2JkZTAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IEFwciAxOSAxMDoxMDoxMSAyMDA3ICswMjAwCgogICAgQVRTVEsxMDAwOiBGaXggcG90ZW50aWFsIGZsYXNoIHByb2dyYW1taW5nIGJ1ZwoKICAgIFRoZSAobm93IG9ic29sZXRlKSBhdG5ndzEwMCBmbGFzaCBwcm9ncmFtbWluZyBjb2RlIHdhcyBoYXZpbmcgcHJvYmxlbXMKICAgIHByb2dyYW1taW5nIHRoZSBvbmJvYXJkIGF0NDlidjY0MiBjaGlwLiBUaGUgYXRzdGsxMDAwIGZsYXNoCiAgICBwcm9ncmFtbWluZyBjb2RlIG1heSBoYXZlIHRoZSBzYW1lIGJ1Zywgc28gaW1wb3J0IGZpeCBmb3IgdGhpcyBwcm9ibGVtCiAgICBmcm9tIHRoZSBBVlIzMiBMaW51eCBCU1AuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYjJlMWQ1YjY0NDY5ZjEwZGZjY2UyN2Y3YjBhZmQ5MzU2ODRhOGUxMQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDE3OjA0OjEzIDIwMDcgKzAxMDAKCiAgICBBVFNUSzEwMDQ6IEZpeCBjb21tZW50IGFib3V0IGRlZmF1bHQgbG9hZCBhZGRyZXNzCgogICAgVGhlIGRlZmF1bHQgbG9hZCBhZGRyZXNzIGlzIFNEUkFNICsgMk1CLCBub3QgU0RSQU0gKyA0TUIuIFRoZSBsYXR0ZXIKICAgIHdvdWxkbid0IGhhdmUgd29ya2VkIGFueXdheSBzaW5jZSB0aGUgYm9hcmQgY2FuIG9ubHkgYWNjZXNzIDRNQiBvZgogICAgU0RSQU0uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgODI2OWFiNTM2MDhkOGRiMmFhMDY5NjljMzM3YWIwYjA1MTgyMTFlNQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgTm92IDIyIDE3OjAxOjI0IDIwMDcgKzAxMDAKCiAgICBBVFNUSzEwMDI6IFVzZSBTRFJBTSArIDRNQiBhcyBkZWZhdWx0IGxvYWQgYWRkcmVzcwoKICAgIE1hbnkgcGVvcGxlIHJ1biBpbnRvIHByb2JsZW1zIHdoZW4gdGhleSBjb21waWxlIGEgYmlnIGtlcm5lbCBhbmQgbG9hZAogICAgdGhlIHVJbWFnZSBhdCB0aGUgZGVmYXVsdCBTRFJBTSArIDJNQiBhZGRyZXNzIGFzIHRoZSBrZXJuZWwgd2lsbAogICAgb3ZlcndyaXRlIHRoZSB1SW1hZ2UgYXMgaXQgaXMgYmVpbmcgdW5wYWNrZWQuIEluY3JlYXNlIHRoZSBkZWZhdWx0CiAgICBsb2FkIGFkZHJlc3Mgc28gdGhhdCB3ZSBjYW4gbG9hZCBhIDRNQiBrZXJuZWwgaW1hZ2Ugd2l0aG91dCBhbnkKICAgIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJiY2FjYzJkODQxYjc3ZjNkMmQzOTEwZGI3MjIwMDM3NDI3MjdlOWYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAyMiAxNjo1MTozOSAyMDA3ICswMTAwCgogICAgQVROR1cxMDA6IEZpeCBkZWZhdWx0IG10ZXN0IHJhbmdlCgogICAgTGV0IG10ZXN0IGNvdmVyIHRoZSB3aG9sZSBTRFJBTSBleGNlcHQgdGhlIGxhc3QgbWVnYWJ5dGUsIHdoaWNoIGlzCiAgICB3aGVyZSB1LWJvb3QgbGl2ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTg1NmE2YjMxMDRlMGJjMjEwYjA4NjhkZmU2OTFjNTJiZjAzYzIyNwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVHVlIEphbiAyMiAxNTozMTo1NiAyMDA4ICswOTAwCgogICAgc2g6IEZpeCByZWdpc3RlciBhZGRyZXNzIG9mIFNINzcyMi4KCiAgICBUaGUgYWRkcmVzcyBvZiBTSDc3MjIgaXMgd3JvbmcgYnkgb2xkIGRvY3VtZW50LgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMwOTQyYjE4YjY2ZjM1ZjJjZWVkYWIzOWFmMTBlOWVjY2FhOTQzY2MKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgbmV3IGNvbW1hbmQgZm9yIGRpc3BsYXlpbmcgc3RyaW5ncyBhdCBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNThkOGI0OGUyNWIwYzg2NmQxNjdjYzU3N2YxMThmNTI4Y2Q5ZTBhCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAoKICAgIHJld3JpdGUvY2xlYW51cCBCbGFja2ZpbiBSVEMgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk0YTkxZTI0OGI3MWMzZmY5NTFmYzI3Y2ZmNjkwOWU4MmNhMzdkMTUKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgZ2VuZXJhdGUgdS1ib290LmxkciBmb3IgQmxhY2tmaW4gdGFyZ2V0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiNzc5ZjdhNTk1MzA0MzYwNDBmMTU3Zjc4NDFkYjdhYjc5NjU0MmRmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAoKICAgIHNjcnViIHVudXNlZCBzeW1ib2xzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGNjMjk3N2FjYzNiYmJiNzg1MGYxNjY0NWRkMTA4MWY5NTMzNTg2OGQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCgogICAgbW92ZSBCbGFja2ZpbiBjcHUgb2JqZWN0IGxpc3QgdG8gcmVzcGVjdGl2ZSBjcHUgZGlyZWN0b3JpZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgZDBiMDFhMjQ2ZDBhMzUxYmM3ZGNlMWQwYzljZjZhZWJkZjZkNzUwNQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU3IDIwMDggLTA1MDAKCiAgICBpbnRlcmZhY2UgdG8gQmxhY2tmaW4gb24tY2hpcCBPbmUtVGltZS1Qcm9ncmFtbWFibGUgbWVtb3J5CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDRjNzI3Yzc3ZTQzODcyZDNhMWQxZjc2YTk0OWZjYjNmMjZhMzg3ODgKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCgogICAgYWRkIHN1cHBvcnQgZm9yIG1lbW9yeSBjb21tYW5kcyB3aXRoIEJsYWNrZmluIEwxIGluc3RydWN0aW9uIG1lbW9yeQoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2YjkwOTdlNWU3NDkwYWE3YjgyOGM2ZjFhMWM3YTBlODc1ZGY4NDY0CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTYgMjAwOCAtMDUwMAoKICAgIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gaW5saW5lIGFzc2VtYmx5CgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDk3YzI2ZTAwNmQyZmE2ZDRlMTU2MDkzM2VlNmYzODVkOGI4OTA4YjkKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCgogICAgYWRkIEJsYWNrZmluLXNwZWNpZmljIHJlZ2luZm8gY29tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAwODU4YjgzNWU3ZWE1MDFlYTA4NGQzNGNlZjc1OTMyZjA5ODM0MmJiCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAoKICAgIGFkZCBzdXBwb3J0IGZvciBCbGFja2ZpbiBzeW1ib2wgcHJlZml4ZXMgdG8gZXhhbXBsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgOGRjNDhkNzFhNGJlNzUzZWE5Zjg0OTU2Y2QzMzYwMGRlMzVmYWQwNApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU1IDIwMDggLTA1MDAKCiAgICBhZGQgQmxhY2tmaW4tc3BlY2lmaWMgYmRpbmZvIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgMDAwMzYxM2UzYzdkZjNiODRiMmNiOTJlNzk3ZDc3ZjQ2ZjE1YTQzYQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU1IDIwMDggLTA1MDAKCiAgICBtb3ZlIC1mZml4ZWQtUDUgdG8gYmxhY2tmaW5fY29uZmlnLm1rIGFuZCBkcm9wIHVudXNlZCAtRF9fQkxBQ0tGSU5fXwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2MGZhNzJkNjU2MTBjN2VmMzNlMWQ2ZGI4NTg5NzlkMDVmZjBkZjU4CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAoKICAgIHVuaWZ5IHRoZSBCbGFja2ZpbiBib2FyZCB0YXJnZXRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGQ0ZDc3MzA4NTNlNWQ2NzVmNzZlYzY2NjgwN2RhMzAyOGM5MWQ1OTIKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NSAyMDA4IC0wNTAwCgogICAgcHVudCBCbGFja2ZpbiBWRFNQIGhlYWRlcnMgYW5kIGltcG9ydCBzYW5pdGl6ZWQvYXV0by1nZW5lcmF0ZWQgb25lcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA2Y2ZjY2U2NzY3MWEzNDI1MjI5ZDY2MjAzMzg2ZmEzY2JkMGNjM2JkCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFsd2F5cyBwdWxsIGluIGFzbS9ibGFja2Zpbi5oIGZvciBCbGFja2ZpbiBwb3J0cwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBiZjUzOTc0YzJkZGFlNjc4ZDc2NjBmMmI1Y2NmZWIwNzMyYjZmNWRjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFkZCBtaXNzaW5nIF9fcmF3IHZlcnNpb25zIG9mIEJsYWNrZmluIHJlYWQvd3JpdGUgaW8gZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDI0ZTAyZDBmZDNhY2M1MGU3M2UxYTNjZGQ1NjdmMGE3Nzk0NmYxNWQKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NCAyMDA4IC0wNTAwCgogICAgYWRkIHRoZSBkZWZhdWx0IEJsYWNrZmluIGxvZ28gdXNlZCBieSBCbGFja2ZpbiBib2FyZHMgd2l0aCBzcGxhc2ggc2NyZWVucwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA0YzU4ZWI1NTUyMjIwZTQyNWM4YWY2YWM4ZDI4MzkyNDRhMmY1N2IxCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIGFkZCBzb21lIG1vcmUgQmxhY2tmaW4gZG9jcwoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCAzMmE5ZjVmMjE2MGEwMzRlYTg3ZWE2NTFiMjMzZWY3YzYzNWU1NWNmCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAoKICAgIG1ha2Ugc21jOTExMTFfZWVwcm9tIG1hbmFnbWVudCBzaW1wbGVyIGJ5IGRlcGVuZGluZyBvbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlIHJhdGhlciB0aGFuIGEgaGFyZGNvZGVkIGxpc3Qgb2YgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDQwODdiYzg4Y2ViZWM3NWM0MzJhN2ZlOWY2YWZiNTQ1YjA5MTk4MzEKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBGZWIgNCAxOToyNjo1NCAyMDA4IC0wNTAwCgogICAgZml4IGJ1aWxkaW5nIG9uIEJsYWNrZmluIGFzIHRoZSBhc3NlbWJsZXIgc3VwcG9ydHMgdGhlIC5zZXQgc3ludGF4LCBub3QgdGhlID0gc3ludGF4LCBmb3IgYXNzaWduaW5nIHN5bWJvbHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Cgpjb21taXQgYjQ1MjY0ZWU4NWNiZDkyMDIwNjQwYTMyZTAyZmI0MzRmZDU1NzEwOApBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjUzIDIwMDggLTA1MDAKCiAgICBhZGQgZ2l0aWdub3JlcyBmb3IgQmxhY2tmaW4gcGllY2VzCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGE5MzkwN2M0M2Y4NDdmMDc2ZGQwZTM0ZWUzYjY5YjVlOGU2ZDBkMjkKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgSmFuIDE4IDAxOjE0OjAzIDIwMDggKzAxMDAKCiAgICBURlRQOiBhZGQgaG9zdCBpcCBhZGRyIHN1cHBvcnQKCiAgICBhbGxvdyB0byB1c2UgYSBkaWZmZXJlbnQgc2VydmVyIGFzIHNldCBpbiBzZXJ2ZXJpcAogICAgYWRkIENPTkZJR19URlRQX0ZJTEVfTkFNRV9NQVhfTEVOIHRvIGNvbmZpZ3VyZSB0aGUgZmlsZSBuYW1lIGxlbmd0aAogICAgaWYgbm90IGRlZmluZWQgdGhlIG1heCBsZW5ndGggd2lsbCBiZSBhdCAxMjgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IGU1NmI0YjQ5NGNkOTJkZWY1Nzc5NjlmOTY3ODM5NWFhMjJkMzRjOWYKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTQ6MzU6MjYgMjAwOCAtMDYwMAoKICAgIDg1eHgsODZ4eDogRGV0ZXJtaW5lIEkyQyBjbG9jayBmcmVxdWVuY2llcyBhbmQgc3RvcmUgaW4gZ2xvYmFsX2RhdGEKCiAgICBVcGRhdGUgZ2xvYmFsX2RhdGEgdG8gZGVmaW5lIGkyYzFfY2xrIGFuZCBpMmMyX2NsayB0byA4NXh4IGFuZCA4Nnh4LgoKICAgIFVwZGF0ZSB0aGUgZ2V0X2Nsb2NrcygpIGZ1bmN0aW9uIGluIDg1eHggYW5kIDg2eHggdG8gZGV0ZXJtaW5lIHRoZSBJMkMKICAgIGNsb2NrIGZyZXF1ZW5jeSBhbmQgc3RvcmUgaXQgaW4gZ2QtPmkyYzFfY2xrIGFuZCBnZC0+aTJjMl9jbGsuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZWM4YmIxNWVlMzY4ZWE1NGQ0OGQ2NDg2Nzc2N2E3MDRkOWFiNGMyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyNyAxMDo1Njo1NCAyMDA3ICswMTAwCgogICAgT01BUDU5MTI6IGZpeCBGSUZPIGhhbmRsaW5nIGluIFVBUlQgZHJpdmVyCgogICAgQWNjb3JkaW5nIHRvIHRoZSBPTUFQNTkxMiBTZXJpYWwgSW50ZXJmYWNlcyBSZWZlcmVuY2UgR3VpZGUgKHNlZQogICAgaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvdWcvc3BydTc2MGMvc3BydTc2MGMucGRmLCBwYWdlIDE1MCksIHRoZQogICAgRklGT19FTiBlbmFibGUgYml0IGluIHRoZSBGSUZPIENvbnRyb2wgUmVnaXN0ZXIgKEZDUikgY2FuIG9ubHkgYmUKICAgIGNoYW5nZWQgd2hlbiB0aGUgYmF1ZCBjbG9jayBpcyBub3QgcnVubmluZywgaS4gZS4gd2hlbiBib3RoIERMTCBhbmQKICAgIERMSCBhcmUgc2V0IHRvIDAuCgogICAgVGh1cyBtYWtlIHN1cmUgdGhhdCBETEwgYW5kIERMSCBhcmUgMCB3aGVuIHdyaXRpbmcgdGhlIEZDUi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDE2MTU4Nzc4YjVmNTJmMjAxZTk1ZGVkMmQyZDkwODRiMGVkNTY3MGQKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE1OjEwOjUyIDIwMDcgKzAxMDAKCiAgICBBUk06IFMzQzI0eDAgU29DIE5BTkQgY29udHJvbGxlciBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgc3VwcG9ydCB0byB0aGUgUzNDMjR4MCBTb0MgY29kZSBpbiB1LWJvb3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IGE3YzE4NWVkM2Q5ZjhlYmQ4NWNmYzI4NmUxZmZlZTcyZTQ4MDMxNjMKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE0OjI0OjQwIDIwMDcgKzAxMDAKCiAgICBBUk06IHMzYzI0eHg6IE11bHRpcGxlIHNlcmlhbCBwb3J0IHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgQ09ORklHX1NFUklBTF9NVUxUSSBvbiBzM2MyNHgwIENQVSdzCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCBhMjVmNzJmMWY3M2ExMWRlNjgyNTFmYjg4Yzg5OTkxZTIwMmU2OGZhCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIERlYyAxOSAxNDoxNjo1NyAyMDA3ICswMTAwCgogICAgQVJNOiBhcm05MjB0OiBBbGxvdyB1c2Ugb2YgJ2dkJyBwb2ludGVyIGZyb20gSVJRCgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdXMgdG8gdXNlIHRoZSAnZ2QnIHBvaW50ZXIgKGFuZCB0aHVzIGVudmlyb25tZW50CiAgICBhbmQgZXZlcnl0aGluZyBlbHNlIGFzc29jaWF0ZWQgd2l0aCBpdCkgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvbgogICAgYXJtOTIwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IGJlMTliZDVjZDBmNDU0YjYzMjk4ODQ0YTBiNTM3N2UwMjliMmNhYWQKQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgpEYXRlOglXZWQgRGVjIDE5IDE0OjE5OjM4IDIwMDcgKzAxMDAKCiAgICBBUk06IGFybTkyMC9zM2MyNHh4OiBJUlEgZGVtdWxpdHBsZXhlciBjYWxsYmFjawoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIElSUSBkZW11bHRpcGxleGVyIGNhbGxiYWNrIHRvIHRoZSBhcm05MjAgY3B1IGNvcmUgY29kZSwKICAgIHBsdXMgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIGl0IGZvciB0aGUgUzNDMjQxMC4KCiAgICBUaGUgcHVycG9zZSBpcyB0byBhbGxvdyBhcm05MjB0IGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIHRoZSBzM2MyNHgwIHRvCiAgICBpbXBsZW1lbnQgaW50ZXJydXB0IGhhbmRsZXJzIGluIHUtYm9vdCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBjb3JlCiAgICBhcm05MjB0IGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KCmNvbW1pdCBhNDFkYmJkOThkMjAxZDhhZWEzMWI1ZDIxZGY0NzQyYzIwY2Q3ZWRhCkF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUdWUgRGVjIDE4IDE2OjAzOjA3IDIwMDcgLTA4MDAKCiAgICBBUk06IERpc3BsYXkgRXRoZXJuZXQgaW5mbyBpbiBkb19iZGluZm8gb25seSBpZiBDT05GSUdfQ01EX05FVCBpcyBkZWZpbmVkCgogICAgQWRkIGlmZGVmIHRvIGJkaW5mbyBjb21tYW5kIHRvIGRpc3BsYXkgZXRoZXJuZXQgaW5mb3JtYXRpb24KICAgIG9ubHkgaWYgQ09ORklHX0NNRF9ORVQgaXMgZGVmaW5lZCBmb3IgYXJtIG1vZHVsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSyBSIEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KCmNvbW1pdCBmN2FkNzliNmY5ZjBmNDU0MzdiNjJlMTliNDUzNTZjYzJhYWY0ODg0CkF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgpEYXRlOglUdWUgRGVjIDE4IDE2OjAwOjU0IDIwMDcgLTA4MDAKCiAgICBBUk06IGFkZCBJMkMgaW5pdCBmdW5jdGlvbiBjYWxsIGluIGxpYl9hcm0vYm9hcmQuYwoKICAgIEFkZHMgSTJDIGluaXQgZnVuYyBjYWxsIHRvIGluaXQgc2VxdWVuY2UgZm9yIEFSTSBib2FyZHMuIFRoaXMgaXMKICAgIHByZXNlbnQgaW4gcHBjLGJsYWNrZmluIGFuZCBvdGhlciBwcm9jZXNzb3IgaW5pdCBzZXF1ZW5jZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLIFIgR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgoKY29tbWl0IGZmMDJmMTM5ODA0ZjNjYjYxNDE0ZjdiYmNiZmRhYTAyNzllM2VmYWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMSAwOTozODoyOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggbmRmYyBIVyBFQ0MgYnl0ZSBvcmRlcgoKICAgIFRoZSBjdXJyZW50IG5kZmMgSFcgRUNDIGltcGxlbWVudGF0aW9uIHN3YXBzIHRoZSBmaXJzdCB0d28gRUNDIGJ5dGVzLgogICAgQnV0IHRoZSA0eHggTkRGQyBhbHJlYWR5IHVzZXMgdGhlIFNNQyAoU21hcnQgTWVkaWEgQ2FyZCkgRUNDIG9yZGVyaW5nLAogICAgc28gdGhpcyBzd2FwcGluZyBpbiB0aGUgSFcgRUNDIGRyaXZlciBpcyBib2d1cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzCiAgICBwcm9ibGVtIGFuZCBub3cgcmVhbGx5IHVzZXMgdGhlIFNNQyBFQ0MgYnl0ZSBvcmRlci4KCiAgICBUaGFua3MgdG8gU2VhbiBNYWNMZW5uYW4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMWQxNDI5YjQ5YjBlZTU4YzgwZjhjN2IyOWMxZWJhZjhiZTdmNWYxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMwIDE1OjM1OjUwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBHUElPIGNvbmZpZ3VyYXRpb24gZm9yIHBjczQ0MGVwCgogICAgVGhlIFNSRDBfUEZDMCByZWdpc3RlciB3YXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGUgR1BJTydzCiAgICA0OS02MyBmb3IgR1BJTy4gVGhleSBoYXZlIGJlZW4gY29uZmlndXJlZCBhcyB0cmFjZSBzaWduYWxzLiBUaGlzIHBhdGNoCiAgICBmaXhlcyB0aGlzIGJ5IGNsZWFyaW5nIHRoZSBjb3JyZXNwb25kaW5nIGJpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjhkNzdkOTY4YmZlMDMxNmRlYjViZjE1YzE3ZjU3ZDVmZjJjODgyMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAzMCAxNDo0ODoyOCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIGluaXQtcmFtIGJpZ2dlciB0aGFuIDRrIG9uIDQ0MCBwbGF0Zm9ybXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGZlZGZkZGY5NzQ2MWI4ODY2OGI5YWVjNzc0ZGZiN2EwYzZkYzM2OApBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJRnJpIERlYyA3IDAwOjQyOjMyIDIwMDcgKzAxMDAKCiAgICBBUk06IEJvYXJkIHZvaWNlYmx1ZSB1cGRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Cgpjb21taXQgMmM1MjYwZjcxMTE2OGQ1ZWU5MWM3MGRkYmI3ZDg5NzAxM2VlZmM0NgpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJVGh1IERlYyA2IDIzOjI0OjU3IDIwMDcgKzAxMDAKCiAgICBBUk06IEFUOTFSTTkyMDAgYmFzZWQgYm9hcmRzIGNvbmZpZyBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgoKICAgIFJlbW92ZSBub3doZXJlIHVzZWQgc3RydWN0IGJkX2luZm9fZXh0LCByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZXMsIGZpeAogICAgaW5kZW50YXRpb24uCgpjb21taXQgNDgxZjI4YjFkYjVjZDIxZGViNTVmNjkzOTliYTI0MGUxMDdhZjRjNwpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJVGh1IERlYyA2IDIyOjU5OjE2IDIwMDcgKzAxMDAKCiAgICBBUk06IEZpeCBhdDkxcm05MjAwZGsgYmFzZSBhZGRyZXNzCgogICAgU29tZXdoZXJlIGR1cmluZyBkZXZlbG9wbWVudCBvZiBVLUJvb3QtMS4xLjMgQ09ORklHX0JPT1RCSU5GVU5DIHdhcwogICAgcmVuYW1lZCBpbnRvIENPTkZJR19JTklUX0NSSVRJQ0FMIHdoaWNoIHdhcyAwNCBBcHIgMjAwNSByZXBsYWNlZAogICAgd2l0aCBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGFuZCBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVC4KICAgIEhvd2V2ZXIgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBoYXMgb3Bvc2l0ZSBtZWFuaW5nIHRvCiAgICBDT05GSUdfQk9PVEJJTkZVTkMsIHNvIGZpeCBjb25maWd1cmF0aW9uIHRvIHJlZmxlY3QgdGhpcyBmYWN0LgogICAgSSdtIHNlbmRpbmcgdGhpcyBwYXRjaCA0dGggKCEpIHRpbWUgaW4gaG9wZSBpdCBwcm9kdWNlcyBhdCBsZWFzdCBzb21lCiAgICByZWFjdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+CgogICAgRml4IGF0OTFybTkyMDBkayBiYXNlIGFuZCBlbnZpcm9ubWVudCBhZGRyZXNzLgoKY29tbWl0IGM5NTIxOWZhZTJhN2FkZDdkYWEyZjkxYWVkY2E2NWIxNjk4NDY1YzcKQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAyMCAxMDo0MDoyNCAyMDA3ICswMTAwCgogICAgTU1DIGZvciBQWEEgMjdYIChyZXN1Ym1pdCkKCiAgICBNTUMgc3VwcG9ydCBmb3IgWF9TY2FsZSBQWEEgaXMgYnJva2VuIGFuZCBkb2VzIG5vdCB3b3JrLgogICAgTWFpbmx5LCB0aGUgbW1jX2luaXQoKSBmdW5jdGlvbiBjYW5ub3QgcmVjb2duaXplIGN1cnJlbnQgU0QvTU1DIGNhcmRzLgogICAgVGhlcmUgd2VyZSBhbHJlYWR5IHNvbWUgcGF0Y2hlcyBhcm91bmQgdGhlIHdvcmxkIGJ1dCBub25lIG9mIHRoZW0gd2FzCiAgICBtZXJnZWQgaW50byB0aGUgb2ZmaWNpYWwgdS1ib290IHRyZWUuCgogICAgVGhpcyBwYXRjaCBtYWtlcyBvcmRlciBmaXhpbmcgdGhpcyBpc3N1ZS4gUmVzdWJtaXQgYWZ0ZXIgY29kZSBjbGVhbnVwLgoKICAgIEFwcGxpZWQgYW5kIHRlc3RlZCBvbiBQWEEgMjcwIChUcml6ZXBzSVYgbW9kdWxlKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA5NmJiZmExZTY2MjVjZTIzYTE1MDkzNjg2M2IzZWNmNGM4NTNlYjMzCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjAgMTA6Mzc6MDQgMjAwNyArMDEwMAoKICAgIEZpeCBnY2MgaXNzdWVzIGluIHB4YS1yZWdzLmgKCiAgICBGaXggZ2NjNCBpc3N1ZS4gV2l0aCBzb21lIHRvb2xjaGFpbiwgYSBwcmV2aW91cyBwYXRjaCB0aGF0IGZpeGVzIGdjYzQKICAgIGlzc3VlcyBnZW5lcmF0ZXMgd3JvbmcgY29kZS4KICAgIChQcm9ibGVtIHdhcyByZXBvcnRlZCB3aXRoIGdjYy00LjAuMi1nbGliYy0yLjMuNi9hcm0tc29mdGZsb2F0LWxpbnV4LWdudSkuCiAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtIGFuZCBzb2x2ZXMgdGhlIGdjYy00IGlzc3VlcyBhcyB0aGUgbGludXgKICAgIGtlcm5lbCBkb2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEl2YW5vdiA8aXZhZG1pdHJ5QGdtYWlsLmNvbT4KCmNvbW1pdCA3MDQ3YjM4ODg3NmU3YjkwNWIyZWM0ZWRiODAxMDU0M2UzNjQxYjg1CkF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgpEYXRlOglUdWUgSmFuIDI5IDA4OjQ1OjAzIDIwMDggKzAxMDAKCiAgICBUUU04MzR4OiBlbmFibGUgREhDUAoKICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTg3NzAwNGQ0NGNhN2RiYzFlNjE4YWRkM2VlYjFkYTdjODRlNGJlYwpBdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KRGF0ZToJVHVlIEphbiAyOSAwODo0NTowMiAyMDA4ICswMTAwCgogICAgVFFNODM0eDogc3VwcG9ydCBmb3IgU3BhbnNpb24gTi10eXBlIEZsYXNoZXMgKHNlY3RvciBzaXplID0gMjU2IEtpQiBhdCAyeDE2IEJpdCkuCgogICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OTMxYWIxNzYwMjViMDNjZmMzMjBiM2ZkMWVjYTQzMmE4OGVkNTYwCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJU2F0IEphbiAyNiAyMzo0MToxOSAyMDA4IC0wNTAwCgogICAgRml4IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIG1weDh4eHhfc3BpIGRyaXZlcgoKICAgIFRoaXMgZHJpdmVyIHNob3VsZCBvbmx5IGNvbXBpbGUgaWYgQ09ORklHX01QQzhYWFhfU1BJIGlzIHNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYzZjczMmQzZDM4ODBmZWI1MzFmNDhhZjI0N2MwMjViZjAxNDYyYjAKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDI5IDE3OjAwOjM0IDIwMDggKzAxMDAKCiAgICBBUEk6IFByb3ZpZGUgZHVtbXkgaGFsdCgpIGluIHRoZSBnbHVlIGxheWVyLgoKICAgIFRoaXMgZml4ZXMgYSBkZW1vIGFwcCBsaW5rIGZhaWx1cmUgb24gcGxhdGZvcm1zIGNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfUEFOSUNfSEFORy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IDBkYzFmYzIyYWY4NmQxNjk5MzM4OGQ5ZWQ5NjMwZGJhYTJkNTE4MjYKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDI5IDE2OjU3OjM4IDIwMDggKzAxMDAKCiAgICBBUEk6IENvbnZlcnQgY29uZGl0aW9uYWwgYnVpbGRpbmcgdG8gdGhlIG5ldyBzY2hlbWUuCgogICAgVGhpcyBmaXhlcyBhIGJ1aWxkIGJyZWFrYWdlIHdpdGggQ09ORklHX0FQSSBlbmFibGVkLCB3aGljaCBhcHBlYXJlZCBhZnRlcgogICAgdGhlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBVLUJvb3QgYnVpbGQgc3lzdGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgOThiNzQyNDg5YzA5NzgwYmU2YTgzMmVlYWE0ZTVlZmY4MjQ3OTJiYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMjUgMDk6NTY6MTcgMjAwOCArMDEwMAoKICAgIGlua2E0eDA6IHJlbW92ZSBkZWFkIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDRmOTNmOGIxYTRkMzViNmQzMDI4NDIxMzJlZGJhOTIwZWY4ZjYyYWEKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowNiAyMDA4IC0wNjAwCgogICAgODZ4eDogQWRkIHJlZ2luZm8gY29tbWFuZAoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRkY2ViY2I2Mzg3MTVhNjI3OGRhOTNiNTUzZDUwMTZmOTk4MjM4MTYKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowNSAyMDA4IC0wNjAwCgogICAgODZ4eDogQWRkIHByaW50X2xhd3MgZnVuY3Rpb24gdG8gZnNsX2xhdy5jCgogICAgVGhpcyBjYW4gYmUgdXNlZCBmb3IgZGVidWcsIGFuZCB3aWxsIGJlIHVzZWQgYnkgYm9hcmQgY29kZQogICAgdG8gaGVscCBpbXBsZW1lbnQgcmVnaW5mby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Y2QzMjQyNmYyNmEwNTY3YmI2MWYzMzllZGQ4M2M2YTJjZTliZmMzCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDQgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFJlbW92ZSBvbGQtc3R5bGUgbGF3IHNldHVwIGNvZGUKCiAgICBUaGlzIGluY2x1ZGVzIG1wYzg2MTBocGNkLCBtcGM4NjQxaHBjbiwgYW5kIHNiYzg2NDFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcxM2Q4MTg2NjQ5ZGFlODc0NjEzZDQ5NWIwY2VjYWEwMzlhOThiMzAKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMyAyMDA4IC0wNjAwCgogICAgODZ4eDogQ29udmVydCBzYmM4NjQxZCB0byB1c2UgbmV3IGxhdyBzZXR1cCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAzMTk3NmY2MzY0YjkzODMzZTk4OWY1N2U5ZjFlMDIzZTBiZThjNGMKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMiAyMDA4IC0wNjAwCgogICAgODZ4eDogQ29udmVydCBtcGM4NjEwaHBjZCB0byBuZXcgbGF3IHNldHVwIG1ldGhvZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OTMzYjkxZjhhNDllNDM2NjgxZjE2M2RmMzE3M2JlYjkxY2FjNDRhCkF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDEgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFN1cHBvcnQgbmV3IGxhdyBzZXR1cCBtZXRob2QgYW5kIGNvbnZlcnQgbXBjODY0MQoKICAgIEFkZHMgdGhlIHN1cHBvcnQgY29kZSBpbiBjcHUvbXBjODZ4eCBmb3IgdGhlIG5ldyBsYXcgc2V0dXAgY29kZQogICAgcmVjZW50bHkgY3JlYXRlZCBmc2xfbGF3LmMsIGFuZCBjaGFuZ2VzIHRoZSBNUEM4NjQxSFBDTiBjb25maWcKICAgIHRvIHVzZSB0aGlzIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWE0MWY3Y2U5YzA4NmUyMDhjMGVhYmY1MjU2NWEyMzdhZjJhMmJkMQpBdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDIzIDE2OjMxOjAwIDIwMDggLTA2MDAKCiAgICA4Nnh4OiBSZWFycmFuZ2UgdGhlIHNlcXVlbmNlIGluIHN0YXJ0LlMKCiAgICAqIHNwbGl0IHRoZSBCQVQgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBvbmx5IDIgQkFUcyAoZm9yIHRoZSBib290IHBhZ2UKICAgIGFuZCBzdGFjaykgYXJlIHByb2dyYW1tZWQgdmVyeSBlYXJseSBvbi4gIFRoZSByZXN0IGFyZSBpbml0aWFsaXplZCBsYXRlci4KICAgICogTW92ZSBvdGhlciBCQVQgc2V0dXAsICBjY3NyYmFyIHNldHVwLCBhbmQgbGF3IHNldHVwIGxhdGVyIGluIHRoZSBjb2RlCiAgICBhZnRlciB0cmFuc2xhdGlvbiBoYXMgYmVlbiBlbmFibGVkLgoKICAgIFRoZXNlIGNoYW5nZXMgd2lsbCBmYWNpbGl0YXRlIHRoZSBtb3Zpbmcgb2YgbGF3IGFuZCBCQVQgaW5pdGlhbGl6YXRpb24KICAgIHRvIEMgY29kZSwgYW5kIHdpbGwgYWlkIHdpdGggMzYtYml0IHBoeXNpY2FsIGFkZHJlc3Npbmcgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzM2RhYzAzYjFiNWQ2MWU0ZmVkN2JhZDQ0NWJhNDBiNGM5N2ZlYmEwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyMyAxNDo0MTozNyAyMDA4ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIENsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDg2NWYwZjk3NTRiOTUxODNjYWQzOTVkZTdlOGNiODVkZjBjNmVhMWYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIzIDE0OjMxOjE3IDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2ZlNWNhNzc5NzZhZmRiZTdlY2I4NmUzOWZkNzUwNWJkZTYzNmFjZQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxOCAxMDowNzowNCAyMDA4ICswODAwCgogICAgbXBjODN4eDogQ29ycmVjdCB0aGUgc3RydWN0IHNwaTh4eHggaW4gbXBjOHh4eF9zcGkuaAoKICAgIFRoZSBjb21taXQgMDRhOWUxMTgwYWM3NmE3YmFjYzE1YTZmY2Q5NWFkODM5ZDY1YmRkYgogICAgY2F1c2UgdGhlIDgzeHggaW1tYXAgYnJva2VuLCBzbyB0aGUgRE1BIGFuZCBQQ0kgd2lsbAogICAgYmUgZmFpbGVkLgoKICAgIFRoZSBwYXRjaCBmaXggdGhlIHN0cnVjdCBzcGk4eHh4IGFuZCBybSBzdHJ1Y3Qgc3BpODN4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YjQ0Mzk0NDQyODZlMGZjZDAxNTk2ZGY1MDRlNmNhODk3YWQzZTVhCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBBcHIgMTQgMTc6MTE6NDkgMjAwNyArMDIwMAoKICAgIEFWUjMyOiBBVE5HVzEwMCBib2FyZCBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBBVE5HVzEwMCBOZXR3b3JrIEdhdGV3YXkgcmVmZXJlbmNlIGRlc2lnbiwKICAgIGluY2x1ZGluZyBmbGFzaCwgZXRoZXJuZXQgYW5kIE1NQyBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGUwMDY5MjdhMGI5YTU0ZThlZTc2ODVkOGFjNzQ4YWFhZDY4MDE4NjIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxODoxNTozMSAyMDA3ICswMTAwCgogICAgQVZSMzI6IEluaXRpYWxpemUgaXBhZGRyLCBsb2FkYWRkciBhbmQgYm9vdGZpbGUgYXQgc3RhcnR1cAoKICAgIEkgZG9uJ3Qga25vdyB3aHkgdGhlIHJlbGV2YW50IGxheWVycyBjYW4ndCBkbyB0aGlzIGJ5IGl0c2VsZiwgYnV0IHRoaXMKICAgIGlzIHdoYXQgcHBjIGRvZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNzk5ODkxZWY3YjFiMzQzMjAzMmVjMjM0NjZkZjZiNjY1YTc5N2ZhNApBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CUZyaSBKYW4gMTggMDA6MDQ6MjggMjAwOCArMDEwMAoKICAgIEFkZCBBY1R1eCBib2FyZCBzdXBwb3J0CgogICAgSGksCgogICAgVGhlIHBhdGNoIGFkZHMgNCBib2FyZHMsIGNhbGxlZCBBY1R1eC0xIC4uIEFjVHV4LTQuIFRoaXMgcGF0Y2ggY29udGFpbnMgdGhlCiAgICBmaWxlcyB0aGF0CiAgICBjb250YWluIGNoYW5nZXMgZm9yIG11bHRpcGxlIGJvYXJkcywgdGhlIGJvYXJkLXNwZWNpZmljIGZpbGVzIGZvbGxvdyBhcwogICAgc2VwYXJhdGUgcGF0Y2hlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgoKY29tbWl0IDY2YTQzNDRhNGQ5MTBhMTExMjVkZjc3Njg4OTlhZDUyOTcxOTg1NWUKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglXZWQgSmFuIDE2IDE5OjUzOjIzIDIwMDggKzAxMDAKCiAgICBhZGQgQWNUdXgtNCBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCBiYzI0MzQ1ZTQxMDFhNWM5OTZkNmI0OGNlNDk3YjA5YzUzMDI1ZGM2CkF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAxOTo1MTo1NSAyMDA4ICswMTAwCgogICAgYWRkIEFjVHV4LTMgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+Cgpjb21taXQgYWViZjAwZmM0ZDEzNDNiMjQ3MTUzNzM4OTNmN2IyMGJmNDYyZDFlOQpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMTk6NTE6MTQgMjAwOCArMDEwMAoKICAgIGFkZCBBY1R1eC0yIGJvYXJkIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgoKY29tbWl0IGVhOTllOGYwNWI3MjQwZmQ2NTc3MzllMjg2NjY0NjY0YWUxNjBhYmUKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglXZWQgSmFuIDE2IDE5OjUwOjM3IDIwMDggKzAxMDAKCiAgICBhZGQgQWNUdXgtMSBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCAzZDlmM2JmYjdhMzNlZmU4ZTQxZTAxYjAyNTU2M2NkNzEyYzU3ZDY0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxOToyMDowOCAyMDA4ICswMTAwCgogICAgQVJNOiByZW1vdmUgdXNlbGVzcyBmdW5jdGlvbiBib2FyZF9wb3N0X2luaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk2YmQ0NjI5NDIwMjJlNDU2OWI1ODJjMDcyYTBlZDI2ZGUxY2QxOWIKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglUaHUgSmFuIDEwIDE0OjU5OjQ2IDIwMDggKzAxMDAKCiAgICBJWFA6IGVuYWJsZSBSVFMKCiAgICBlbmFibGVzIHRoZSBSVFMgc2lnbmFsIHdpdGggQ09ORklHX1NFUklBTF9SVFNfQUNUSVZFLgogICAgTm8gaGFuZHNoYWtpbmcgaXMgZG9uZSwgYnV0IHRoZSBhY3RpdmUgUlRTIHNpZ25hbCBhbGxvd3MgdG8KICAgIGNvbm5lY3QgdG8gdGhlIHRhcmdldCB1c2luZyBhIFBDIHdoaWNoIGlzIHVzaW5nIFJUUy9DVFMKICAgIGhhbmRzaGFrZSwgYW5kIGRvZXMgbm8gaGFybSBpZiB0aGUgUEMgaXMgc2V0IHRvIGlnbm9yZSBSVFMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KCmNvbW1pdCBhMWNmMDI3YTA4ZjlkYzFjMGU3Njk0OTllNmY0ZmJkZGNmOWNhYjkzCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJTW9uIEphbiA3IDA4OjQxOjM0IDIwMDggKzAxMDAKCiAgICBJWFA6IGFkZCBkeW5hbWljIG1pY3JvY29kZSBhZGRyCgogICAgYWxsb3cgdG8gbG9hZCB0aGUgbWljcm9kZSBmcm9tIGZsYXNoIG9yIHJhbSBieSBkb3dubG9hZCBpdCB0aHJvdWdoCiAgICB0aGUgc2VyaWFsIG9yIG90aGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDYzZWJjYzQ2MTVkZDM5OTI2Y2NmNjFmMWQ1ZjM1MTAyNjJlZjY1NjQKQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgpEYXRlOglTYXQgTm92IDEwIDE1OjQ0OjEyIDIwMDcgKzAxMDAKCiAgICBsb2FkIGl4cDQyeCBOUEUgZmlybXdhcmUgZnJvbSBzZXBhcmF0ZSBmbGFzaCBibG9jaywgcmVtb3ZlIGRlYWQgY29kZQoKICAgIEhpLAoKICAgIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIG1vdmUgdGhlIElYUDQyWCBOUEUgZmlybXdhcmUgdG8gYQogICAgc2VwYXJhdGUgZmxhc2ggYmxvY2ssIHdob3NlIHN0YXJ0IGFkZHJlc3MgaXMgZGVmaW5lZCBpbgogICAgQ09ORklHX0lYUDRYWF9OUEVfRVhUX1VDT0RFX0JBU0UuIFVzaW5nIHRoYXQsIGl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkCiAgICBOUEUtZW5hYmxlZCB1LWJvb3Qgd2l0aG91dCBjb3B5cmlnaHQgcHJvYmxlbXMgZHVlIHRvIHRoZSBOUEUgZmlybXdhcmUuCgogICAgSSBob3BlIHRoZSBwYXRjaCBhcHBsaWVzLCBJIGdldCB3aGl0ZXNwYWNlLXJlbGF0ZWQgZGlmZmVyZW5jZXMgaW4gdGhlIE5QRQogICAgZmlsZXMgZHVlIHRvIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gdGhlIG9yaWdpbmFsIHZlcnNpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDU3YTEyNzIwMWViM2Q4Y2MxOTE3MGEwMDhlMGJkN2FmNjA4YmQ3MmYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MTU6NDYgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBNQ0Y1NDd4Xzh4IC0gQWRkIE01NDc1RVZCIGFuZCBNNTQ4NUVWQiBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWFlZTExMTEzNWQ4NjYwYTE2NGQ0ZjZiZjdkNjZiMDMyZWE1MzVjZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowMjo0OSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjU0N3hfOHggLSBBZGQgTTU0N3hFVkIgYW5kIE01NDh4RVZCIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzc3ZDFhYmQ5Nzk2ZjFjMmUxNDg0MTdjYzEwNjU3ZTg0N2QzMThjZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowMDoyNSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IEZFQyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzJmNTZhZGMwYjI1ZDQzODc1YWQwNjdiYWU2YmUxYmNlYTg2Yjc5ZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMzo1NDowOSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IGRtYSBjb2RlIGFuZCBoZWFkZXIgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZTA5ZmM0OWI1NmVhM2M0NDI3OTRiNmJlOWI3ZGI0Yjk5ZGZkYzg3CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjUyOjAzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggZG1hIGNvZGUgLSAyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTE4NjVlYTg0NGU3MTU0ZmQzMGM3ZTI4NjBkYTRlZWQ0YTEyYWQxZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMzo0ODo1MiAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IGRtYSBjb2RlIC0gMQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ2MjFmYzNmZTdjZDY1Yjc4YjNjYmQzMWY2NWM5ZjdmNzJiMjJiZDMKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTM6Mzk6NDQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTUNGNTQ3eF84eCByZWxhdGVkIGhlYWRlciBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NzBjMDE4NmFlY2FiMWI3NDdiMmQ0NGQwZTFkM2MxYWM0Y2IyN2Y1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjM3OjM0IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggY3B1IGFyY2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMjc1NmY0YjU0YWJhMGUwNTIzYjgxZGQxNDU2NjY4MjljZjdmZDU5CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjQ3OjIzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM4NzU4MTAyNzk5NGMxNDgxMzFiMmYxMWFhNzU1MDFmNzgyZWMxOWEKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6NDY6MTkgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTUNGNTIyN3ggY3B1IGFuZCBNQ0Y1MjI3N0VWQiBzdXBwb3J0LTIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNTUyYWY3MGVjYWIxMWI5ZjNkY2VmZjc1MjhlZDE1ZmFmNjc4YjlkCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjQzOjMzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM5N2I3YjgxYTFmMTAwODc5OGFlMTIwNjkxMzUwOGNjODljYjNhN2QKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6MzU6NDQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBGaXggQ0ZJIEZsYXNoIGxvdyBsZXZlbCBSZWFkL1dyaXRlIG1hY3JvCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWE1ZjFmOWRjODE1YTc2ZjZkZmZiNTgwNzk4NTk5YzAyOGZlN2ZlYgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNzoyMzowOCAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTM3M0VWQiBwbGF0Zm9ybSBzdXBwb3J0IC0gMgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFhYzU1OWQ0YWEzNThmNjNiNDhjNjJiNTY0MjI0YzA2ZmVlYjRlMzYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTc6MTk6NTQgMjAwOCAtMDYwMAoKICAgIENvbGRGaXJlOiBBZGQgTTUzNzNFVkIgcGxhdGZvcm0gc3VwcG9ydCAtIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzMjBkNjE5OTFmYTMxOTBlZTQxNzY1NjAxZWQwMTdiNmI1ZmY3YjJiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjE3OjAzIDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEZsZXhCdXMgQ1MgZm9yIE1DRjUzMngKCiAgICBEZWZpbml0aW9uIHVwZGF0ZSBhbmQgY2hhbmdlIGZyb20gMTZiaXQgdG8gMzJiaXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZTcyYWQwNjQ0Yjk0MDgxN2E4OWEzNTkwY2UwZDdiOTljMDVjMzk2CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE3OjExOjQ3IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogUENJIGFuZCBtaXNjIHVwZGF0ZXMgZm9yIE1DRjU0NDV4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDJiMTY0OTM0ODBhYzNkNGE2MGFkN2Q4MzViMGRjMjdkMmU5OWNlZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNzowNjo1NSAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjU0NDV4IGhlYWRlciBmaWxlcyBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDlhYWU2MjYwOTkzYTkzZjdmY2YxM2FiZmY4NWE2MDFmNGY1MGVhNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNjo1OTo0MiAyMDA4IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjUzMnggaGVhZGVyIGZpbGVzIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YWY3NzUxZDA0N2U3NGIyZWM1ODQwMGY5N2I4NzljNTY0NDZiM2U4CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDE0IDE1OjMwOjE1IDIwMDggLTA2MDAKCiAgICBDb2xkRmlyZTogQWRkIG1vZHVsZXMgaGVhZGVyIGZpbGVzCgogICAgQWRkIENGIHNwZWNpZmljIG1vZHVsZXMgaGVhZGVyIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5NTZhY2Q1ZWY5M2E0OTgzMzdmOGFjMmVjNmFlNmE3N2Q0OTFkYzUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDE3IDEyOjQ4OjAwIDIwMDggLTA2MDAKCiAgICBjb2RpbmdzdHlsZSBjbGVhbnVwIGZvciBzcGkgZHJpdmVyCgogICAgLi5hbmQgcm0gdW51c2VkIENPTkZJR19GU0xfU1BJIGRlZmluZQoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDU5ZmVmZmI0MmM5ZjE3NDExNmRiN2E4MmEzMTFkZjk4OTgzZGZjZQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTc6MTI6MTIgMjAwOCAtMDUwMAoKICAgIEZTTDogRml4IGNvbW1vbiBFRVBST01fZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgoKICAgIC0gRml4IEVFUFJPTV9kYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFjY29yZGluZyB0byBTeXN0ZW0gRUVQUk9NIERhdGEgRm9ybWF0LgogICAgLSBSZWFkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gdG8gZXRoWGFkZHIgYmVmb3JlIHNhdmluZyBldGhYYWRkciB0bwogICAgICBiZC0+YmlfZXRoYWRkci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZiZWU3NjRiZDZkYTUxMGE0YWFkNjE0ODgwMzAwYzk2OGJjNzMxOGQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE1OjQ4OjEyIDIwMDggLTA2MDAKCiAgICA4Nnh4OiBlbmFibGUgY29tbWFuZC1saW5lIGVkaXRpbmcKCiAgICBFbmFibGUgY29tbWFuZC1saW5lIGVkaXRpbmcgZm9yIGFsbCBNUEM4Nnh4IGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwZGRkMjI2MjZkMzIxYTc3MmViZmJhMzA0ZWI3ODMwY2I0ZjZiYWMKQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDIyOjM3OjQyIDIwMDggLTA1MDAKCiAgICBJbXBsZW1lbnQgaGFyZCBTUEkgZHJpdmVyIG9uIE1QQzgzNDlFTURTCgogICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBmc2xfc3BpIGRyaXZlciBvbiB0aGUgTVBDODM0OUVNRFMgZXZhbHVhdGlvbiBib2FyZC4KICAgIFRoaXMgYm9hcmQgaGFzIGFuIFNUIE0yNVA0MCA0TWJpdCBFRVBST00gb24gaXRzIFNQSSBidXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwNGE5ZTExODBhYzc2YTdiYWNjMTVhNmZjZDk1YWQ4MzlkNjViZGRiCkF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAyMjozNzozNSAyMDA4IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGEgRnJlZXNjYWxlIG5vbi1DUE0gU1BJIGNvbnRyb2xsZXIKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNQSSBjb250cm9sbGVyIGZvdW5kIG9uIEZyZWVzY2FsZSBQb3dlclBDCiAgICBwcm9jZXNzb3JzIHN1Y2ggYXMgdGhlIE1DUDgzNHggZmFtaWx5LiAgQWRkaXRpb25hbGx5LCBhIG5ldyBjb25maWcgb3B0aW9uLAogICAgQ09ORklHX0hBUkRfU1BJLCBpcyBhZGRlZCBmb3IgZ2VuZXJhbCBwdXJwb3NlIFNQSSBjb250cm9sbGVyIHVzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOGNiNDNhODliZTZjZmQyODMyNTdhNjAzZGQ5ODQxNTAzY2NjZTBmCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDE3IDE4OjIzOjE5IDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGZhdGFsIGNvbmZsaWN0IG9mIG1lcmdlCgogICAgVGhlIGNvbW1pdCA5ZTg5NjQ3ODg5Y2Q0YjVhZGE1YjVlN2NhZDZjYmU1NTczN2EwOGQ3CiAgICB3aWxsIGNhdXNlIHRoZSBtcGM4MzE1ZXJkYiBib2FyZCBjYW4ndCBib290IHVwLgoKICAgIFRoZSBwYXRjaCBmaXggdGhhdCBidWcsIGFuZCByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgI2lmZGVmCiAgICBDRkdfU1BDUl9UU0VDRVAgY29kZSBhbmQgY2xlYW4gdGhlIFNDQ1JfVFNFQzIgZm9yCiAgICBNUEM4MzEzRSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzI1OWVlYWE0MTQ4MTI1YTgxNDE3NDc3ZjYyYzA1YmQ2N2Y2MDU4NwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUaHUgSmFuIDE3IDA4OjUwOjA5IDIwMDggLTA1MDAKCiAgICBNZXJnZSBTZXF1b2lhIGJlYXV0aWZpY2F0aW9uIGludG8gS29yYXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGUxNjkyNTc3MzIxMTI5MWI1NjJlNzcxODcwNjFlOWRkMWQ3NTcyMTcKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IEphbiAxNyAwNzo0NTowNSAyMDA4ICswMTAwCgogICAgbmV0OiBhZGQgJ2V0aHJvdGF0ZScgZW52aXJvbm1lbnQgdmFyaWFibGUKCiAgICBbUEFUQ0hdIG5ldDogYWRkICdldGhyb3RhdGUnIGVudmlyb25tZW50IHZhcmlhYmxlCgogICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgYnVpbGR0aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uCiAgICBDT05GSUdfTkVUX0RPX05PVF9UUllfQU5PVEhFUiB0aHJvdWdoIHRoZSAnZXRocm90YXRlJyBydW50aW1lCiAgICBjb25maWd1cmF0aW9uIHZlcmlhYmxlLiBTZWUgUkVBRE1FLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCBiYTUyYmUzZDBlNjE4YzI2MDcwZTkzYWFmM2MxZjJkMmFkZjU1NzFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE3IDE0OjI5OjA0IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5ncyBhbmQgY29kaW5nIHN0eWxlIGlzc3VlcyBpbiBIQ1U0L0hDVTUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTVlZDE1MTZjYmMxZGFkM2FlMjc3YzY3ZWUwNmZjNGE0NmVhYWM3ZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAxODowNzozMiAyMDA4ICswOTAwCgogICAgc2g6IFJlbW92ZSBDT05GSUdfQ09NTUFORFMgZnJvbSBNUzc3MjBTRSBjb25maWcgZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNTU2MDZiZDI1ZTg4YzBjZDA0YWQzNDhhNjc5YTA0YjFiNjE2YmVlCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxODozOToyMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBOZXRzdGFsIEhDVTQgYm9hcmQ6IGFkZGVkIHZhcmlvdXMgZml4ZXMgYW5kIFBPU1QKCiAgICAtIE1vdmVkIHNvbWUgY29tbW9uIGNvZGUgdG8gbmV0c3RhbC9jb21tb24vbm1fYnNwLmMuCiAgICAtIHNkcmFtIGluaXRpYWxpc2F0aW9uIGdvZXMgZ28gbmV0c3RhbC9jb21tb24vZml4ZWRfc2RyYW0uYy4KICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgUE9TVC4KICAgIC0gU3R5bGlzdGljIGNsZWFudXBzIChtdWx0aS1saW5lIGNvbW1lbnRzLyBlbmZvcmNlIDgwIGNvbG9tbiB3aWR0aCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDY5YjA2MzRhNGVlOThjOTc5MTgxNTYwMGQ0M2I5OWY2MjZhOTUyZjMKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUaHUgSmFuIDE3IDEyOjUzOjU2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IG5ldHN0YWwvY29tbW9uIGRlZmluZSByb3V0aW5lcyB1c2VkIGJ5IGFsbCBib2FyZHMKCiAgICBBZGRlZCBzb21lIHJvdXRpbmVzIHVzZWQgYnkgYWxsIE5ldHN0YWwgYm9hcmRzOgogICAgLSBubV9ic3AuYzogLSBubV9zaG93X3ByaW50IGFuZAoJICAgIC0gIGNvbW1vbl9taXNjX2luaXRfcgoJICAgIC0gc2V0X3BhcmFtc19mb3Jfc3dfaW5zdGFsbC4gVmVyeSBzcGVjaWZpYyBjb2RlIHRvIGhhbmRsZSBvdXIgU1cKCSAgICAgIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUKICAgIC0gZml4ZWRfc2RyYW0uYzogQ29tbW9uIHJvdXRpbmVzIGZvciBIQ1U0IChhbmQgdXBjb21pbmcpIE1DVTI1IGJvYXJkcwogICAgICB0byBoYW5kbGUgc2RyYW0gaW5pdGlhbGl6YXRpb24uCiAgICAtIG5tLmg6IENvbW1vbiBoZWFkZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IGVmZWZmNTM4MmI3YTkxYjQ4YTFhYTY4YjJiNzVmOTJhZDFkMzNmZjgKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE4OjM5OjE4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE5ldHN0YWwgSENVNSBib2FyZDogYWRkZWQgdmFyaW91cyBmaXhlcyBhbmQgUE9TVAoKICAgIC0gTW92ZWQgc29tZSBjb21tb24gY29kZSB0byBuZXN0YWwvY29tbW9uL25tX2JzcC5jLgogICAgLSBBZGRlZCBzdXBwb3J0IGZvciB0aGUgdnhXb3JrcyBFRFIuCiAgICAtIEVuYWJsZSB0cmFjZSBmb3IgTGF1dGVyYmFjaCwgaWYgcHJlc2VudC4KICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgUE9TVC4KICAgIC0gU3R5bGlzdGljIGNsZWFudXBzIChtdWx0aS1saW5lIGNvbW1lbnRzLyBlbmZvcmNlIDgwIGNvbG9tbiB3aWR0aCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDQzNzEwOTBlNWRhNzdlZGM3YmY5ZjI5NjM2NGRiNDgwMTYzOWQ5YzQKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE4OjM5OjA4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE5ldHN0YWwgSENVNSBib2FyZC4gQWRkZWQgUE9TVC4gVmFyaW91cyBmaXhlcwoKICAgIC0gVmFyaW91cyBmaXhlcwogICAgLSBSZWR1Y2VkIHJvbV9zaXplIGZyb20gMzg0IHRvIDMyMCBrQgogICAgLSBFbnZpcm9ubWVudCBpcyBub3cgaW4gZmxhc2gKICAgIC0gQWRkZWQgUE9TVAogICAgLSBTdXBwb3J0IGZvciBPRgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNGJkNTAzNmU2MGFmYWMzN2U0ODRjMmQzNWNiYmU3ZjZjYzE2MjNlNwpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTg6Mzc6NTAgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTmV0c3RhbCBIQ1U0IGJvYXJkLiBBZGRlZCBQT1NULiBWYXJpb3VzIGZpeGVzCgogICAgLSBWYXJpb3VzIGZpeGVzCiAgICAtIFJlZHVjZWQgcm9tX3NpemUgZnJvbSAzODQgdG8gMzIwIGtCCiAgICAtIEVudmlyb25tZW50IGlzIG5vdyBpbiBmbGFzaAogICAgLSBBZGRlZCBQT1NUCiAgICAtIFN1cHBvcnQgZm9yIE9GCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCAxYTNhYzg2Yjc5ZmNiNjkwMjc1Yzg1ODYxYzhlZmE2YTM4OTkwNjBhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBKYW4gMTcgMTA6NTM6MDggMjAwOCArMDEwMAoKICAgIHBwYzR4eDogQ29tcGxldGUgRFU0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDE1YTA4YmMyYmVmOTFlNWYxZWE0YjljZjYwZTQ2ODMyZDg2YmNjMWYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IEphbiAxNyAxMDo1MjozMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgRFU0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGFjMzMxZGEwN2RiMzg2MGYxMWZhMWQwZmQzZGI3YzgxMGJjZTExOTgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMTU6NTM6NTIgMjAwOCArMDkwMAoKICAgIHNoOiBVcGRhdGUgU3VwZXJIIFNDSUYgZHJpdmVyCgogICAgVGhpcyBwYXRjaCBmaXhlZCB3cm9uZyBTSDc3MjAgQ1BVIG1hY3JvIGFuZCBjaGFuZ2VkIG1hY3JvIHRoYXQKICAgIGNhbGN1bGF0ZWQgdmFsdWUgb2YgU0NCUlIgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMzNGU0NDJlNmZhYzU5YmU5MTI0NDA2M2U5YjNmNmNhMjVlOGRhZjgKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNToxMjo0NyAyMDA4ICswMTAwCgogICAgU2V0IGlwcyBkaXZpZG9yIHRvIDEvNCBvZiBjc2IgY2xvY2suCgogICAgUHJldmlvdXMgc2V0dGluZyBjYXVzZSBpcHMgY2xvY2sgdG8gYmUgb3V0IG9mIHNwZWMuIFRoaXMgYnVnIHdhcyBmb3VuZCBieSBKb2huCiAgICBSaWdieSBmcm9tIEZyZWVzY2FsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3ZGMzNThiYjBkZTllMmZhMzQxZjNiNGM5MTQ0NjZiMWYzNGIyZDg5CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMjoxOToxOCAyMDA4IC0wNjAwCgogICAgODV4eDogR2V0IHJpZGUgb2Ygb2xkIFRMQiBzZXR1cCBjb2RlCgogICAgTm93IHRoYXQgYWxsIGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkLCByZW1vdmUgb2xkIGNvbmZpZyBjb2RlIGFuZCB0aGUKICAgIGNvbmZpZyBvcHRpb24gZm9yIHRoZSBuZXcgc3R5bGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzYjU1OGUyNmE1ZWYzMTYzNTc4N2Q2ZDZlOTdkNzA5MzlkNGY4OTJkCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMjowMjoxMCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBUUU04NXh4IHRvIG5ldyBUTEIgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDc0MTIxYjQ3MGMxNGY3ZWFmMjg0ZWU4MzhiZmZjYTZmOTUyMTA2OWUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSmFuIDE3IDAxOjU2OjMyIDIwMDggLTA2MDAKCiAgICA4NXh4OiBDb252ZXJ0IFNUWEdQMyAmIFNUWFNTQSB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxNDNiNTE4ZDkxMjViNTRmOTZmMWQ3ZjFhZmM2NDBiOGFhZTgxZmYwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTo0NDozNCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBTQkM4NTQwL1NCQzg1NjAvU0JDODU0OCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MTgyMThiYWM2YTExNTkxZTI1NDJjMzQ0ZDIzMzBlMGY0ZTE5NjhiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTozMTozNCAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBQTTg1NC9QTTg1NiB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmZjQ2ODFjOTI4NWIyYjRkMjQ1NTJhMTljYWNjMTc2OWZlMmZjN2UwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMToyNTozMyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQwRVZBTCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA3M2FhOWFjMmI0NmYxY2ZkMDM5MTA2ZWJkNmI5ODY1MDE2MDA1MjM0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMToxMjoyMiAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTY4IE1EUyB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZGIzN2RjMmVlZDMwODg0ZGIyZGFhMjRkYmQ5YTExM2I1ZDAwNjEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMTowMTowOSAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgdG8gbmV3IFRMQiBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjE5YTgxYjk4ZDgzNGY5MDcxYjZmN2MzYmRjNmI3ZWMzOWNjNDZjYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBKYW4gMTcgMDA6NTI6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IENvbnZlcnQgTVBDODU0MC9NUEM4NTYwIEFEUyB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MGQwYjZhMTQ5ODc2MWM0MzU1YjJkYjljODAwMWIwNGMyOTVlN2I4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IEphbiAxNyAwMDozMjoxNyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBBVFVNODU0OCB0byBuZXcgVExCIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwZjdhM2RjOTVjYmZmM2MyMWJkNmRiYzYzOTMxMzc5NjQxMmJiYmFiCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAyMzoxMTo1NyAyMDA4IC0wNjAwCgogICAgODV4eDogQ29udmVydCBNUEM4NTQ0IERTIHRvIG5ldyBUTEIgc2V0dXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDg3MTYzMTgwNTdhNWY2MGFiMWJhMDgxZWNlMmRiZTgyYWUwMGUxZWUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDIyOjM4OjM0IDIwMDggLTA2MDAKCiAgICA4NXh4OiBSZXdvcmtlZCBpbml0aWFsIHByb2Nlc3NvciBpbml0CgogICAgUmV3b3JrZWQgdGhlIGluaXRpYWwgcHJvY2Vzc29yIGluaXRpYWx6YXRpb24gc2VxdWVuY2U6CiAgICAqIGludHJvZHVjZWQgY3B1X2Vhcmx5X2luaXRfZiB0aGF0IGlzIHJ1biBpbiBhZGRyZXNzIHNwYWNlIDEgKEFTPTEpCiAgICAqIE1vdmVkIFRMQi9MQVcgYW5kIENDU1IgaW5pdCBpbnRvIGNwdV9lYXJseV9pbml0X2YoKQogICAgKiBSZXdvcmtlZCBpbml0aWFsIGFzbSBjb2RlIHRvIGRvIG1vc3Qgb2YgdGhlIGNvcmUgaW5pdCBiZWZvcmUgVExCcwoKICAgIFRoZSBtYWluIHJlYXNvbnMgZm9yIHRoZXNlIGNoYW5nZXMgYXJlIHRvIGFsbG93IGhhbmRsaW5nIG9mIDM2LWJpdCBwaHlzCiAgICBhZGRyZXNzZXMgaW4gdGhlIGZ1dHVyZSBhbmQgc29tZSBvZiB0aGUgaXNzdWVzIHRoYXQgd2lsbCBleGlzdCB3aGVuIHdlCiAgICBkbyB0aGF0LgoKICAgIFRoZXJlIGFyZSBhIGZldyBjYXZlYXRzIG9uIHdoYXQgY2FuIGJlIGluaXRpYWxpemVkIHZpYSB0aGUgTEFXIGFuZCBUTEIKICAgIHN0YXRpYyB0YWJsZXM6CiAgICAqIFRMQiBlbnRyeSAxNC8xNSBjYW4ndCBiZSBpbml0aWFsaXplZCB2aWEgdGhlIFRMQiB0YWJsZQogICAgKiBhbnkgTEFXIHRoYXQgY292ZXJzIHRoZSBpbXBsaWNpdCBib290IHdpbmRvdyAoNEctOE0gdG8gNEcpIG11c3QgbWFwIHRvCiAgICAgIHRoZSBjb2RlIHRoYXQgaXMgY3VycmVudGx5IGV4ZWN1dGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQ0YTIzY2ZkNjM2MGE2OGVhYTQxZjk0NTE5MDYxOGE1NTUxOWVhYzMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDIyOjMzOjIyIDIwMDggLTA2MDAKCiAgICA4NXh4OiBJbnRyb2R1Y2UgbmV3IHRsYiBBUEkKCiAgICBBZGQgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgVExCIGVudHJpZXM6CiAgICAgKiBzZXRfdGxiKCkgLSB3cml0ZSBhIHRsYiBlbnRyeQogICAgICogaW52YWxpZGF0ZV90bGIoKSAtIGludmFsaWRhdGUgYSB0bGIgYXJyYXkKICAgICAqIGRpc2FibGVfdGxiKCkgLSBkaXNhYmxlIGEgdmFyaWFibGUgc2l6ZSB0bGIgZW50cnkKICAgICAqIGluaXRfdGxicygpIC0gc2V0dXAgaW5pdGlhbCB0bGJzIGJhc2VkIG9uIHN0YXRpYyB0YWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYmU4OGIxNjk5ODYzYzI2MjgxOGYzYWY3ZjYwMTczYjRkNDhkZjhmYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxNyAwNzo1MDoxNyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggcmVtYWluaW5nIENPTkZJR19DT01NQU5EUyBpbiA0eHggZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzhjNDFkNGE4MGIxYThhZDU5ODRhMjg3ZDgxZWE3ODA0OTYyNTlmOApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMTA6MDQ6NDIgMjAwOCAtMDYwMAoKICAgIDg1eHg6IFVzZSBwcm9wZXIgZGVmaW5lcyBmb3IgUENJIGFkZHJlc3NlcwoKICAgIFdlIHNob3VsZCBiZSB1c2luZyB0aGUgX01FTV9QSFlTIGZvciBMQVcgYW5kIFRMQiBzZXR1cCBhbmQgbm90IF9NRU1fQkFTRS4KICAgIFdoaWxlIF9NRU1fQkFTRSAmIF9NRU1fUEhZUyBhcmUgbm9ybWFsbHkgdGhlIHNhbWUsIF9NRU1fQkFTRSBzaG91bGQgb25seQogICAgYmUgdXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIFBDSSBBVE1VLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTRhNTA3MDExNWVmZjM4ZTliMzI0Yjc4YWJkZmEwYjQ1MjA1ODBiOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MjI6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IFJlbW92ZSBvbGQgc3R5bGUgb2YgTEFXIGluaXQKCiAgICBBbGwgYm9hcmRzIGFyZSBub3cgdXNpbmcgdGhlIG5ldyBmc2xfbGF3IGNvZGUgc28gd2UgY2FuIGRyb3AgdGhlIG9sZCB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNGQzNTIxY2M3OWNhYmM2MWVkZjEyYzQ4YzBjZTMxOGQ0ZWZiNzEyZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MTU6MjkgMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgcmVtYWluaW5nIDg1eHggYm9hcmRzIG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCgogICAgQ29udmVydGVkIEFUVU04NTQ4LCBNUEM4NTY4IE1EUywgTVBDODU0MCBFVkFMLCBhbmQgVFFNODV4eCBib2FyZHMgb3ZlcgogICAgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTcyYjEzYWZjNDI3MTBmMjk1N2MzODJhNzEwMzYwNDI5YzBlMDk5YgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MTE6NTMgMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgU1RYR1AzL1NUWFNTQSBvdmVyIHRvIHVzZSBuZXcgTEFXIGluaXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNDVmMjE2NmFjMDIzM2E5MjYzMDU4Mzc4ZjM5NjEyYmQxMWY2MTE5NgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBKYW4gMTYgMDk6MDY6NDggMjAwOCAtMDYwMAoKICAgIDg1eHg6IGNvbnZlcnQgUE04NTQvUE04NTYgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGUyYjE1OWQwMDcwZWUwNmU0YWM3ZTJmOTM4MWQzZThlNTQyZTYxNGEKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDA5OjA1OjI3IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IFNCQzg1NDAvU0JDODU2MC9TQkM4NTQ4IG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyY2ZhYTFhYTFhYWMzOWE4MTAwNmI3YjI3ZTBlNDMxYmYyMWY2ZGZhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEphbiAxNiAwMTo0NToxMCAyMDA4IC0wNjAwCgogICAgODV4eDogY29udmVydCBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDcyMzJhMjcyNGNjYzlkY2JjM2VjNGVmODRhZGEwMmYxM2NjZDEyMzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjMyOjA2IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDAvTVBDODU2MCBBRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRiY2FlOWM5MmFlZTBkNzJhMmYxOWI4MWNhYjI3ZWYzODEwN2NlNzUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjE2OjE2IDIwMDggLTA2MDAKCiAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDQgRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDgzZDQwZGZkNzlmZTg2ODc5NjI3NTgwMmY2MDExNmQ4NGI5ZTQzOTUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgSmFuIDE2IDAxOjEzOjU4IDIwMDggLTA2MDAKCiAgICA4NXh4OiBNb3ZlIExBVyBpbml0IGNvZGUgaW50byBDCgogICAgTW92ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIExBV3MgaW50byBDIGNvZGUgYW5kIHByb3ZpZGUgYW4gQVBJCiAgICB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgTEFXcyBhZnRlciBpbml0LgoKICAgIEJvYXJkIGNvZGUgaXMgcmVzcG9uc2libGUgdG8gcHJvdmlkZSBhIGxhd190YWJsZSBhbmQgbnVtX2xhd19lbnRyaWVzLgoKICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgc2FtZSBjb2RlIG9uIDg2eHggYXMgd2VsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGJlZDhjZTgzOGE2MDlhYWFiMTM2ZDQzYjI1ZTZkZjJhNTIwYmM4NTQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjAzOjEyIDIwMDcgKzAxMDAKCiAgICBxZW11LW1pcHM6IGFjdGl2ZSBIVVNIIFBBUlNFUiwgQVVUT19DT01QTEVURSBhbmQgQ01ETElORV9FRElUSU5HCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAwNzY0YzE2NGZlZDYyNzdkMzU5Y2YxMzJkNTUxODdlYTM0MjkwMTE0CkF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+CkRhdGU6CVdlZCBKYW4gMTYgMTk6Mjc6NTEgMjAwOCArMDIwMAoKICAgIE1JUFM6VGFyZ2V0IHN1cHBvcnQgZm9yIHFlbXUgLU0gbWlwcwoKICAgIFdpdGggc2VyaWFsLCBORTIwMDAsIElERSBzdXBwb3J0LiBUZXN0ZWQgaW4gYmlnLWVuZGlhbiBtb2RlLgogICAgTWVtb3J5IHNpemUgaGFyZC1jb2RlZCB0byAxMjhNIGZvciBub3csIHNvIGRvbid0IHBsYXkgd2l0aAogICAgdGhlIC1tIG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCA3ZjUyZmEzYzJkZjU5ZTQ5ZGMyYmFkZDdjMDg0Y2YyZDAwN2M0MzhmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIEphbiAxMSAwMDowMTozNyAyMDA4ICswMTAwCgogICAgRml4IG5mcyBjb21tYW5kIGhlbHAgdG8gcmVmbGVjdCB0aGF0IHRoZSBzZXJ2ZXJpcCBpcyBvcHRpb25hbAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IGI4ZjQxNjJhNGY3YTliZWU1ZTlkMDMwNWMxN2YyZDM0ZGU0NjZhOWIKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglNb24gRGVjIDEwIDIyOjMyOjE0IDIwMDcgKzAxMDAKCiAgICBiZjUzNy1zdGFtcDogcmVtb3ZlIGFscmVhZHkgZGVmaW5lZCBpc196ZXJvX2V0aGVyX2FkZHIgYW5kIGlzX211bHRpY2FzdF9ldGhlcl9hZGRyCgogICAgYW5kIG1vdmUgaXNfdmFsaWRfZXRoZXJfYWRkciBib2FyZCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgYzJmODk2YjhmYzQ3MjJlMzY5MTU5MDNlMTk0MmUxMzhlNjhjZTgwNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNjoxMzozMSAyMDA4ICswOTAwCgogICAgZHJpdmVycy9uZXQvcnRsODEzOS5jOiByeF9zdGF0dXMgc2hvdWxkIGJlIGxlMzJfdG9fY3B1KHJ4X3N0YXR1cykuCgogICAgcnhfc3RhdHVzIG9uIHRoZSBtZW1vcnkgaXMgYmFzaWNhbGx5IGluIExFLCBidXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBDUFUKICAgIGVuZGlhbi4gbGUzMl90b19jcHUoKSB0YWtlcyB1cCB0aGlzIG1pc3Npb24uIEV2ZW4gaWYgb24gdGhlIHNhbmUgaGFyZHdhcmUsCiAgICBpdCdsbCB3b3JrIGZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgogICAgQ2M6IE1hc2FtaSBLb21peWEgPG1rb21peWFAc29uYXJlLml0PgogICAgQ2M6IEx1Y2FzIEppbiA8bHVjYXNqaW5AZ21haWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA5NmEyMzY3NDZmZTZhN2I4NDgwMmFmYjRlZDMxNTM2Njk2ZDM0ODEyCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglXZWQgSmFuIDE2IDE2OjEyOjI2IDIwMDggKzA5MDAKCiAgICBkcml2ZXJzL25ldC9ydGw4MTM5LmM6IEZpeCBjYWNoZSBjb2hlcmVuY3kgaXNzdWVzCgogICAgQ3VycmVudCBkcml2ZXIgaXMgbWVhbnQgZm9yIGNhY2hlIGNvaGVyZW50IHN5c3RlbXMuIFRoaXMgcGF0Y2ggYWRkcwogICAgZmx1c2hfY2FjaGUoKSByb3V0aW5lcyB0byBzdXBwb3J0IGNhY2hlIG5vbi1jb2hlcmVudCBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KICAgIENjOiBMdWNhcyBKaW4gPGx1Y2FzamluQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZDEyNzZjNzZjMWUyYjUwMzUyOTY2ODkyODBiYTFhY2IyYzQyNTEwNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxNjoxMToxNCAyMDA4ICswOTAwCgogICAgZHJpdmVycy9uZXQvcnRsODEzOS5jOiBGaXggdHggdGltZW91dAoKICAgICJ0byA9IChjdXJydGlja3MoKSArIFJUTF9USU1FT1VUKSIgaGFzIHBvc3NpYmlsaXRpZXMgdG8gd3JhcCBhcm91bmQuIElmIGl0CiAgICBkb2VzLCB0aGUgY29uZGl0aW9uICIoY3VycnRpY2tzKCkgPCB0bykiIGJlY29tZXMgaW52YWxpZCBhbmQgaW1tZWRpYXRlbHkKICAgIGxlYWRzIHRvIHR4IHRpbWVvdXQgZXJyb3IuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgZmluZS1ncmFkZWQgdWRlbHkoMTApCiAgICBsb29wcyB0byBlYXNlIHRoZSBpbXBhY3Qgb2Ygd3JhcHBpbmcgYXJvdW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KICAgIENjOiBMdWNhcyBKaW4gPGx1Y2FzamluQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgMThlZTMyMGZmNjNlZGJmN2IyN2JiZWIwNWYwZTEyYTUyMzAyYzY4YQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxODo0NToyOCAyMDA4ICswODAwCgogICAgVFNFQzogQWRkIHRoZSBzdXBwb3J0IGZvciBSZWFsVGVrIFJUTDgyMTFCIFBIWQoKICAgIEFkZCB0aGUgc3VwcG9ydCBvZiBSZWFsVGVrIFJUTDgyMTFCIFBIWSwgdGhlIFJUTDgyMTFCCiAgICBQSFkgb25seSBzdXBwb3J0cyBSR01JSSBhbmQgTUlJIG1vZGUuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgODRhMzA0N2I3MmI3MGU4NjJiMGI3YThlMjA1ODA3NzQ1N2Y4OWEzMgpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglXZWQgSmFuIDE2IDA5OjQwOjQxIDIwMDggKzAxMDAKCiAgICBSZW1vdmUgYW5ub3lpbmcgZGVidWcgcHJpbnRvdXQgZm9yIFBIWSBsZXNzIGJvYXJkcy4KCiAgICBQSFkgbGVzcyBib2FyZCBwcmludHMgb3V0IGxvdHMgb2YgInJlYWQgd3JvbmcgLi4uIjoKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDIsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDMsIGJhc2UgZTAxMDIzMjAKICAgIFVFQzogUEhZIGlzIEdlbmVyaWMgTUlJIChmZmZmZmZmZikKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDQsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDAsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDUsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDUsIGJhc2UgZTAxMDIzMjAKICAgIEZTTCBVRUMwOiBGdWxsIER1cGxleAogICAgRlNMIFVFQzA6IFNwZWVkIDEwMEJUCiAgICBGU0wgVUVDMDogTGluayBpcyB1cAogICAgVXNpbmcgRlNMIFVFQzAgZGV2aWNlCgogICAgTWFrZSB0aGlzIHByaW50b3V0IGRlcGVuZCBvbiBVRUNfVkVSQk9TRV9ERUJVRyBhbmQKICAgIHJlbW92ZSBpdHMgZGVmaW5pdGlvbiBpbiB1ZWNfcGh5LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZWU2MmVkMzI4NmY4M2I5OGI3Nzg1ZTAzMThkYzYzNzllNzhmN2ZmNgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MTE6MDAgMjAwOCAtMDYwMAoKICAgIG5ldDogcmVkdWNlIGJvb3QgbGF0ZW5jeSBvbiBRRSBVRUMgYmFzZWQgYm9hcmRzCgogICAgYWN0dWFsbHkgcG9sbGluZyBmb3IgUEhZIGF1dG9uZWdvdGlhdGlvbiB0byBmaW5pc2ggZW5hYmxlcyB1cyB0byByZW1vdmUgdGhlCiAgICA1IHNlY29uZCBib290IHByb21wdCBsYXRlbmN5IHByZXNlbnQgb24gUUUgYmFzZWQgYm9hcmRzLgoKICAgIGNhbGwgdG8gcWVfc2V0X21paV9jbGtfc3JjIGluIGluaXRfcGh5LCBhbmQgbXYgY2FsbCB0byBpbml0X3BoeSBmcm9tCiAgICB1ZWNfaW5pdGlhbGl6ZSB0byB1ZWNfaW5pdCBieSBKb2FraW0gVGplcm5sdW5kOyBhdXRvbmVnb3RpYXRpb24gd2FpdAogICAgY29kZSBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSB0c2VjIGRyaXZlci4KCiAgICBhbHNvIHJtIHVudXNlZCBDT05GSUdfUk1JSV9NT0RFIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1NWZlN2M1N2E4Yjk5YTEzMDkyNTA1MmRjZGJiNzdmMDUzZGM1MGUzCkF1dGhvcjogbWljaGFlbC5maXJ0aEBidC5jb20gPG1pY2hhZWwuZmlydGhAYnQuY29tPgpEYXRlOglXZWQgSmFuIDE2IDExOjQwOjUxIDIwMDggKzAwMDAKCiAgICBUU0VDIGRyaXZlcjogQ2hhbmdlIE1ESU8gc3VwcG9ydCB0byBhbGxvdyBhY2Nlc3MgdG8gYW55IFBIWXMgb24gdGhlIE1ESU8gYnVzCgogICAgVGhlIGN1cnJlbnQgVFNFQyBkcml2ZXIgbGltaXRzIE1ESU8gYWNjZXNzIHRvIHRoZSBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgYXMgYXR0YWNoZWQKICAgIHRvIGEgVFNFQyBNQUMuIFRoaXMgcGF0Y2ggYWxsb3dzIGFjY2VzcyB0byBhbnkgUEhZIGRldmljZSBvbiB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGUgJ21paScgY29tbWFuZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBGaXJ0aCA8bWljaGFlbC5maXJ0aEBidC5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KCmNvbW1pdCA1ZTkxOGE5OGMyNmU4YWI5YjVkMmQ0OGQ5OThhMmNlZDJiNWI4NWIzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAwMDozODowNSAyMDA4IC0wNjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4Mzd4RVJEQgoKICAgIE1QQzgzN3hFUkRCIGJvYXJkIHN1cHBvcnQgaW5jbHVkZXM6CiAgICAqIEREUjIgMzMwTUh6IGhhcmRjb2RlZCAoc29sZGVyZWQgb24gdGhlIGJvYXJkKQogICAgKiBMb2NhbCBCdXMgTk9SIEZsYXNoCiAgICAqIEkyQywgVUFSVCBhbmQgUlRDCiAgICAqIGVUU0VDIFJHTUlJIChUU0VDMCAtIFJUTDgyMTFCIHdpdGggTUlJOwogICAgKgkgICAgICAgVFNFQzEgLSBWU0M3Mzg1IGxvY2FsIGJ1cywgaGFyZGNvZGVkLCByZXF1aXJlcyBzZXBlcmF0ZSBmaXJtd2FyZQogICAgKgkJICAgICAgIGxvYWQpCgogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTGFtIDxrZXZpbi5sYW1AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBEJ0FiYnJhY2NpbyA8am9lLmQnYWJicmFjY2lvQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDllODk2NDc4ODljZDRiNWFkYTViNWU3Y2FkNmNiZTU1NzM3YTA4ZDcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDE2IDEyOjA2OjE2IDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgc3VwcG9ydCBmb3IgbW9yZSBzeXN0ZW0gY2xvY2sgcGVyZm9ybWFuY2UgY29udHJvbHMKCiAgICBTeXN0ZW0gcmVnaXN0ZXJzIHRoYXQgYXJlIG1vZGlmaWVkIGFyZSB0aGUgQXJiaXRlciBDb25maWd1cmF0aW9uCiAgICBSZWdpc3RlciAoQUNSKSwgdGhlIFN5c3RlbSBQcmlvcml0eSBDb250cm9sIFJlZ2lzdGVyIChTUENSKSwgYW5kIHRoZQogICAgU3lzdGVtIENsb2NrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKFNDQ1IpLgoKICAgIFNpZ25lZC1vZmYgYnk6IE1pY2hhZWwgRi4gUmVpc3MgPE1pY2hhZWwuRi5SZWlzc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZiBieTogSm9lIEQnQWJicmFjY2lvIDxsamQwMTVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTZjM2NkZTA1MGUyZDI0M2U2MmIzNzQ4NmYxNTU4NTcwNzg3YmViOApBdXRob3I6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAxNiAxMTo1ODowOCAyMDA4IC0wNjAwCgogICAgRlNMOiBHZW5lcmFsaXplIFBJWElTIHJlc2V0IGNvbW1hbmQgcGFyc2luZy4KCiAgICBCZWZvcmUsIHRoZSBvcmRlciBvZiBhcmd1bWVudHMgdG8gdGhlIHBpeGlzX3Jlc2V0CiAgICBjb21tYW5kIG5lZWRlZCB0byBiZSBzdXBwbGllZCBpbiBhIGhhcmQtY29kZWQgb3JkZXIuCiAgICBHZW5lcmFsaXplIHRoZSBjb21tYW5kIHBhcnNpbmcgdG8gYWxsb3cgYW55IG9yZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFkOGY4Njg3Yjc4YzNlOTE3YjE3M2YwMzg5MjY2OTUzODNjNTU1NTUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDEzOjQyOjQxIDIwMDggLTA2MDAKCiAgICBGU0w6IENvbnZlcnQgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9NYWtlZmlsZSB0byB1c2UgQ09ORklHXwoKICAgIENvbnZlcnQgdGhlIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUgdG8gdXNlCiAgICBDT05GSUdfKiBvcHRpb25zIHRvIHNlbGVjdCB3aGljaCBmaWxlcyB0byBjb25kaXRpb25hbGx5CiAgICBjb21waWxlIGludG8gdGhlIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24gbGlicmFyeSByYXRoZXIKICAgIHRoYW4gY29uZGl0aW9uYWxseSBjb21waWxpbmcgZW50aXJlIGZpbGVzLgoKICAgIE5vdyBoYW5kbGVzOjoKCUNPTkZJR19GU0xfUElYSVMKCUNPTkZJR19GU0xfRElVX0ZCCglDT05GSUdfUFFfTURTX1BJQgoKICAgIENPTkZJR19JRF9FRVBST00gaXMgaW50cm9kdWNlZCB1bnRpbCBDRkdfSURfRUVQUk9NIGlzIGdvbmUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YzIyMjFlYjIzMDM3MmE5ZTUzN2M0ZjY2MzZiMTQ3YjA5MDkzMjVmCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDE2OjM4OjM4IDIwMDggKzA4MDAKCiAgICBVc2UgQ09ORklHX1VMSTUyNlggYXMgTVBDODYxMEhQQ0QgZGVmYXVsdCBFdGhlcm5ldCBkcml2ZXIKCiAgICBVc2UgZHJpdmVyL25ldC91bGk1MjZ4LmMgYXMgTVBDODYxMEhQQ0QgZGVmYXVsdCBFdGhlcm5ldCBkcml2ZXIuCiAgICBSZW1vdmUgdW51c2VkIGV0aGVybmV0IENPTkZJR18gb3B0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MTFhNzk0NjI3N2QyZTI5YWY0ODEwMTFlODYzNWU5OTc1YzU0ZTQ1CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxNDowNToxNCAyMDA4IC0wNjAwCgogICAgbXBjODN4eDogZml4IFFFIEVUSFBSSU1FcyB0byBjb3JyZWN0ICdGU0wgVUVDMCcgdmFsdWUKCiAgICBjb250aW51YXRpb24gb2YgY29tbWl0IGI5NmM4M2Q0YWU0NzVhNzBlZjI2MzVjZDBlNzQ4MTc0YzQ0Yzg2MDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2M2VlYTlmZjdmMTlhMmNiYTE3ZjI2MmJkMTc1NTlmMTY2ZTEzNGUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDE1IDA5OjUxOjEyIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBjbGVhbiB1cCBtcGM4MzYwZW1kcy5jIHdhcm5pbmdzCgogICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24gJ2Z0X2JvYXJkX3NldHVwJzoKICAgIG1wYzgzNjBlbWRzLmM6MzI3OiB3YXJuaW5nOiBhc3NpZ25tZW50IG1ha2VzIHBvaW50ZXIgZnJvbSBpbnRlZ2VyIHdpdGhvdXQgYSBjYXN0CiAgICBtcGM4MzYwZW1kcy5jOjMyOTogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mICdmZHRfZ2V0cHJvcCcgbWFrZXMgaW50ZWdlciBmcm9tIHBvaW50ZXIgd2l0aG91dCBhIGNhc3QKICAgIG1wYzgzNjBlbWRzLmM6MzM0OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9zZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAogICAgbXBjODM2MGVtZHMuYzozNDE6IHdhcm5pbmc6IGFzc2lnbm1lbnQgbWFrZXMgcG9pbnRlciBmcm9tIGludGVnZXIgd2l0aG91dCBhIGNhc3QKICAgIG1wYzgzNjBlbWRzLmM6MzQzOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9nZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAogICAgbXBjODM2MGVtZHMuYzozNDg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnZmR0X3NldHByb3AnIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0CgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMDk4ODBlYTcyYTFjODA2ZGIyMjNjZTU5NGM1ZmIxYjY1NDJmZjZhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAxNjoxNDo0NiAyMDA4IC0wNjAwCgogICAgbXBjODN4eDogZml4IHBoeS1jb25uZWN0aW9uLXR5cGUgZml4dXAgY29kZQoKICAgIHVzZSB0cmVlIHBhc3NlZCB0byB1cyBpbiBsb2NhbCBibG9iLCBub3QgZ2xvYmFsIGZkdC4KCiAgICBBbHNvIHVzZSBmZHRfcGF0aF9vZmZzZXQgdG8gY29udmVydCB0byByZWxhdGl2ZSBvZmZzZXQsIHNpbmNlIGFic29sdXRlCiAgICByZWZlcmVuY2UgaXMgbmVlZGVkIHRvIGNoZWNrIGZvciByZ21paS1pZCBtb2RlIHN0cmluZyB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJiNGM5NTJiZTdjNDM1N2ExM2U4MzlkNDhkZjgwODUzODIwYzMzZWIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gSmFuIDE0IDA5OjAxOjQwIDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggbXBjODMxMy9tcGM4MzE1L21wYzgzNDlpdHggTWFrZWZpbGVzIGZvciBzaWxlbnQgYnVpbGQgKHdpdGggLXMpCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTFkOGVkMmMwOGRhMTRiMTY4NjU4Y2M1ZmE3ODUyOWQ0NjFhZWE3MApBdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEphbiAxNCAwOTo0MToxNCAyMDA4ICswNTMwCgogICAgQ2hhbmdlcyBpbiB1Ym9vdCBERFIgY29uZmlndXJhdGlvbiBmb3IgTVBDODMxM2VSREIKCiAgICBUaGVzZSBjaGFuZ2VzIHdlcmUgaWRlbnRpZmllZCBieSBIaWdoU21pdGggQmlsbCAsTWF6enlhciBhbmQgSm9zZXBoIGZvcgogICAgRERSIGNvbmZpZ3VyYXRpb24gaW4gdS1ib290IGNvZGUuIFNvbWUgYXJlIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UsIHNvbWUKICAgIGFmZmVjdCBzdGFiaWxpdHkgYW5kIHNvbWUgY29ycmVjdCBmZXcgYmFzaWMgZXJyb3JzIGluIHRoZSBjdXJyZW50CiAgICBjb25maWd1cmF0aW9uLgoKICAgIFRoZSBjaGFuZ2VzIGhhdmUgYmVlbiB0ZXN0ZWQgYW5kIGZvdW5kIHRvIGdpdmUgYmV0dGVyIG1lbW9yeSBsYXRlbmN5CiAgICBmaWd1cmVzIG9uIE1QQzgzMTNlUkRCLkxNQmVuY2ggZmlndXJlcyBwcm92ZSBpdC4KCiAgICBUaGUgY2hhbmdlcyBhcmU6CgogICAgLSBDUzBfQ09ORklHWyBBUF9uX0VOXSBpcyBjaGFuZ2VkIGZyb20gMSB0byAwCiAgICAgICh0aGlzIG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvciBhcHBsaWNhdGlvbiB3aXRoIG1hbnkgcmVhZAogICAgICBvciB3cml0ZSB0byBvcGVuIHBhZ2VzKS4KICAgIC0gQ1MwX0NPTkZJR1tPRFRfV1JfQ0ZHXSBpcyBjdXJyZW50bHkgY2hhbmdlZCBmcm9tIDEwMCB0bwogICAgICAwMDEgKGFjdGl2YXRpbmcgYWxsIHRoZSBDUyB3aGVuIG9ubHkgb25lIGlzIHVzZWQgbWF5IGNhdXNlCiAgICAgIHVud2FudGVkIG5vaXNlIG9uIHRoZSBzeXN0ZW0pCgogICAgLSBUSU1JTkdfQ0ZHXzFbQUNUVE9QUkVdIGlzIGNoYW5nZWQgZnJvbSA5Y2xrcyB0byA4Y2xrcyAoYmFzZWQgb24KICAgICAgVHJhcz00NW5zKQogICAgLSBUSU1JTkdfQ0ZHXzFbUkVGUkVDXSBjaGFuZ2VkIGZyb20gMjEgY2xrcyB0byAxOGNsa3MuCgogICAgLSBUSU1JTkdfQ0ZHXzJbQUxdIHZhbHVlIGNoYW5nZWQgZnJvbSAwIHNldHRpbmcgdG8gMSBjbGsgdG8KICAgICAgY29tcGx5IHdpdGggdGhlIDMgT0RUIGNsayByZXF1aXJlbWVudHMpCiAgICAtIFRJTUlOR19DRkdfMltDUE9dIHdhcyBzZXQgdG8gYSByZXNlcnZlZCB2YWx1ZSwgY2hhbmdlZCB0byBSTCszLzQuCiAgICAtIFRJTUlOR19DRkdfMltGT1VSX0FDVF0gaXMgY2hhbmdlZCBmcm9tIDEwIGNsa3MgdG8gNmNsa3MuCgogICAgLSBERFJfU0RSQU1fTU9ERVtBTF1jaGFuZ2VkIGZyb20gMCB0byAxLgogICAgLSBERFJfU0RSQU1fTU9ERVtXUlJFQ10gY2hhbmdlZCBmcm9tIDEgY2xrIHRvIDMgY2xrcy4KCiAgICAtIEREUl9TRFJBTV9JTlRFUlZBTFtSRUZJTlRdIGlzIGNoYW5nZWQgZnJvbSAweDAzMjAgdG8gMHgwNTEwLgogICAgLSBERFJfU0RSQU1fSU5URVJWQUxbQlNUT1BSRV0gaXMgY2hhbmdlZCBmcm9tIDB4NjQgdG8gMHgwNTAwLgoKICAgIFRoZSBwYXRjaCBpcyBiYXNlZCBvZiBnaXQ6Ly93d3cuZGVueC5kZS9naXQvdS1ib290LW1wYzgzeHguZ2l0CiAgICBUaGUgbGFzdCBjb21taXQgb24gdGhpcyB0cmVlIHdhcyA2Nzc1YzY4NjgzYTUzYzdhYmM3Nzg3NzQ2NDFhYWM2ZjgzM2EyY2JmCgogICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwtYjEwODEyIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBCaWxsIEhpZ2hTbWl0aCA8QmlsbC5IaWdoc21pdGhAZnJlZXNjYWxlLmNvbT4KICAgIENjOiBSYXp6YXogTWF6eWFyIDxNUmF6emF6QGZyZWVzY2FsZS5jb20+CiAgICBDYzogSm9zZXAgUCBKIDxQSi5Kb3NlcGhAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjVjZGQ3ZGY0YTA2ZWRiOTE1MzljOWEyZWE3YzE3OGE4NzBjM2E5NQpBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJU2F0IEphbiAxMiAxMzoyNDoxNCAyMDA4IC0wNTAwCgogICAgRW5hYmxlIHRoZSBpc2RyYW0gY29tbWFuZCBvbiB0aGUgTVBDODM2MEVNRFMgYm9hcmQKCiAgICBUaGUgaXNkcmFtIGNvbW1hbmQgcHJpbnRzIG91dCBkZWNvZGVkIGluZm9ybWF0aW9uIHRoZSAic2VyaWFsIHByZXNlbmNlCiAgICBkZXRlY3QiIChTUEQpIGNoaXAgb24gdGhlIFNEUkFNIFNJTU1zLiAgVGhpcyBjYW4gYmUgdmVyeSBoZWxwZnVsIHdoZW4KICAgIGRlYnVnZ2luZyBtZW1vcnkgY29uZmlndXJhdGlvbiBwcm9ibGVtcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmQ1MjJjZTRhZmRhM2Q0ODY4ZWU4YzkxM2Y1Mzk0MDk0MzI2YmUxCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDExIDE4OjQ4OjI0IDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgZm9yIE1QQzgzMTVFUkRCIGJvYXJkCgogICAgVGhlIGZlYXR1cmVzIGxpc3Q6CiAgICAtIEJvb3QgZnJvbSBOT1IgRmxhc2gKICAgIC0gRERSMiAyNjZNSHogaGFyZGNvZGVkIGNvbmZpZ3VyYXRpb24KICAgIC0gTG9jYWwgYnVzIE5PUiBGbGFzaCBSL1cgb3BlcmF0aW9uCiAgICAtIEkyQywgVUFSVCwgTUlJIGFuZCBSVEMKICAgIC0gZVRTRUMwLzEgc3VwcG9ydAogICAgLSBQQ0kgaG9zdAoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIwNTg4NGVmYTYxNGU0ZDhhOTQxMzE1OGZjMjI4ZTBkYzAyYWI3MDQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gMTEgMTg6NDY6NTAgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBjb25maWcgb2YgZVRTRUMgZW1lcmdlbmN5IHByaW9yaXR5IGluIFNQQ1IKCiAgICBUaGUgVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHkgZGVmaW5pdGlvbiBvZiA4MzF4LzgzN3gKICAgIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBkZWZpbml0aW9uIG9mIDgzNHggaW4gU1BDUiByZWdpc3Rlci4KCiAgICBBZGQgdGhlIG90aGVyIGNvbmZpZyBvZiBUU0VDIGVtZXJnZW5jeSBwcmlvcml0eSBpbnRvCiAgICBjcHVfaW5pdC5jCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWI5NTgyMzRiMDc4M2YxM2Q5MmYwMDdmNzUzZmQyYzNhZTJjODY4MApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxODo0MjoxOSAyMDA4ICswODAwCgogICAgbXBjODN4eDogUmVtb3ZlIGNhY2hlIGNvbmZpZyBmcm9tIE1QQzgzNjBFUkRLLmgKCiAgICBUaGUgTVBDODM2MEVSREsgYm9hcmQgc3VwcG9ydCBwYXRjaCBpcyBhZGRlZCBiZWZvcmUKICAgIHRoZSBjb21taXQgMmM1YjQ4ZmMyMDVjM2UyNzUyOTEwZGE4ZjM5MjA5ZWQwNzU5MjllNQogICAgc28sIG1pc3MgY2xlYW4gdXAgaXQuCgogICAgVGhlIHBhdGNoIGNsZWFuIHVwIHRoZSBtaXNzIGNhY2hlIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZDlkMjMwNTNkNDM1YzA4ZmM4Njk1MDE3YjVjYjkwMDNmY2RhNzg2CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMjM6MDk6MzIgMjAwOCArMDMwMAoKICAgIG5hbmQ6IEZTTCBVUE0gTkFORCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCA2Y2IyMjM5YWU3NmZhZWU2NDQzNDI4NmM0ZjhmYzcxMzc0NzAyZGQyCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMDg6NTk6NDQgMjAwOCArMDkwMAoKICAgIE9uZU5BTkQ6IFNlcGFyYXRlIFUtQm9vdCBkZXBlbmRlbnQgY29kZSBmcm9tIE9uZU5BTkQKCiAgICBPbmVOQU5EOiBTZXBhcmF0ZSBVLUJvb3QgZGVwZW5kZW50IGNvZGUgZnJvbSBPbmVOQU5ECgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA4M2E0OWM4ZGQ3OTk4YmUyZDFmMGQ0MjA1OTdhMzZiYmYwYmY0MTY0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVdlZCBKYW4gMTYgMTA6MzM6NDYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogU2VxdW9pYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBhbmQgYmVhdXRpZmljYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA0YjNjYzZlY2U5YzQ1NTUwNGNmMTI5MDlmYWUzOGQwODVkODQ4YWMwCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMTQ6MzU6NTggMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogUmVmYWN0b3IgRUNDIFBPU1QgZm9yIEFNQ0MgRGVuYWxpIGNvcmUKCiAgICBUaGUgRUNDIFBPU1QgcmVwb3J0ZWQgaW50ZXJtaXR0ZW50IGZhaWx1cmVzIHJ1bm5pbmcgYWZ0ZXIgcG93ZXItdXAgb24KICAgIHRoZSBLb3JhdCBQUEM0NDBFUHggYm9hcmQuCUV2ZW4gd2hlbiB0aGUgdGVzdCBwYXNzZWQsIHRoZSBkZWJ1Z2dpbmcKICAgIG91dHB1dCBvY2Nhc2lvbmFsbHkgcmVwb3J0ZWQgYWRkaXRpb25hbCB1bmV4cGVjdGVkIEVDQyBlcnJvcnMuCgogICAgVGhpcyByZWZhY3RvcmluZyBoYXMgdGhyZWUgbWFpbiBvYmplY3RpdmVzOiAoMSkgbWluaW1pemUgdGhlIGNvZGUKICAgIGV4ZWN1dGVkIHdpdGggRUNDIGVuYWJsZWQgZHVyaW5nIHRoZSB0ZXN0cywgKDIpIGFkZCBtb3JlIGNoZWNraW5nIG9mIHRoZQogICAgcmVzdWx0cyBzbyBhbnkgdW5leHBlY3RlZCBFQ0MgZXJyb3JzIHdvdWxkIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwsIGFuZAogICAgKDMpIHVzZSBzeW5jaHJvbml6YXRpb24gKG9ubHkpIHdoZXJlIHJlcXVpcmVkIGJ5IHRoZSBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMjQ2NTY2NWI3M2FjMmY2ODhhZjk0NWIxZWQ1MTA3NTJhZmE4MTZhNApBdXRob3I6IERhdmlkIFNhYWRhIDxEYXZpZC5TYWFkYUBlY2l0ZWxlLmNvbT4KRGF0ZToJVHVlIEphbiAxNSAxMDo0MDoyNCAyMDA4ICswMjAwCgogICAgUUUgVUVDOiBFeHRlbmQgbnVtYmVyIG9mIHN1cHBvcnRlZCBVRUNzIHRvIDQKCiAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgVUVDcyB0byA0LiBOb3RlIHRoYXQgdGhlCiAgICBwcm9ibGVtIG9mIFFFIHRocmVhZCByZXNvdXJjZXMgZXhoYXVzdGlvbiBpcyByZXNvbHZlZCBieSBzZXR0aW5nIHRoZQogICAgY29ycmVjdCBudW1iZXIgb2YgUUUgdGhyZWFkcyBhY2NvcmRpbmcgdG8gRXRoZXJuZXQgdHlwZSAoR0JFIG9yIEZFKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgoKY29tbWl0IDU4ZDIwNDI1NmNiMWNlMWJkMzIzODQ3ZDlmNjQ0YWNmNzBhNzJlNmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDE2IDAwOjAxOjAxIDIwMDggKzAxMDAKCiAgICBMV01PTjU6IGVuYWJsZSBodXNoIHNoZWxsIGFzIGNvbW1hbmQgbGluZSBwYXJzZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY2ZmZiMTg4M2ZlZWRkZGM4MTNkOGE1MDdkMDYwZjJhOTQwZWIyYjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDE1IDE3OjIyOjI4IDIwMDggKzAxMDAKCiAgICBBRFM1MTIxOiBkaXNhYmxlIHdhdGNoZG9nOyBlbmFibGUgaW1hZ2UgdGltZXN0YW1wcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmI0Zjc3OGZlOWQxZGU2MWQ3NDQ1YmFlN2IzMjUzNDBhYmE2OTY4ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6MjE6MjggMjAwOCArMDEwMAoKICAgIFRLODg1RDogZml4ZXMgZm9yIGJpZ2dlciBmbGFzaCBzZWN0b3Igc2l6ZXMgb24gbmV3IG1vZHVsZXM7CiAgICBhZGp1c3QgZGVmYXVsdCBlbnZpcm9ubWVudDsKICAgIGRpc2FibGUgU0NDIGV0aGVybmV0IChub3QgdXNlZCBvbiB0aGlzIGJvYXJkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGY5MWQ3YWU1Y2E4OWFjZjlmYTFlZDEwMTVkYzA3OGNmMjk1ODE2MDcKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVR1ZSBKYW4gMTUgMTc6NDg6MTMgMjAwOCArMDkwMAoKICAgIHBjbWNpYTogUmVtb3ZlIENPTkZJR19DT01NQU5EUyBmcm9tIG1hcnVidW4gcGNtY2lhIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3NmU0OWFhN2ZiOGU3NmNjNDkwOTJjMWFjZDUzZmZmOTIxZTI2MzYwCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSmFuIDE1IDIzOjI1OjI1IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgU0g3NzEwL1NINzcxMgoKICAgIFNINzcxMC9TSDc3MTIgb2YgU0gzIENQVSBhcmUgc3VwcG9ydGVkLgogICAgU0g3NzFYIGlzIGNhbGxlZCBTSC1FdGhlciwgYW5kIGhhcyB0aGUgRXRoZXIgY29udHJvbGxlciBpbiBDUFUuCiAgICBUaGUgZHJpdmVyIG9mIEV0aGVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2M2ExMWJlNjgzMDY4NzBlMDRkMzg1MWVkOWZhNDE5NTVjZGY0ODk0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUdWUgSmFuIDE1IDIzOjA2OjE3IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgb2YgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpIHRvIFN1cGVySAoKICAgIFRoaXMgcGF0Y2ggYWRkIHRoZSBzdXBwb3J0IG9mIG1hcF9waHlzbWVtKCkgYW5kIHVubWFwX3BoeXNtZW0oKQogICAgdXNlZCB3aXRoIENvbW1vbiBGbGFzaCBJbnRlcmZhY2UoQ0ZJKSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGRiMzk5NWZlNTE2NGFjNWQ2MzBiN2VjYjk2Mjg2YTk4MjhkZmJiNTQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVdlZCBKYW4gOSAxNDo0MjoyNyAyMDA4ICswOTAwCgogICAgc2g6IEFkZCBtYWludGFpbmVyIG9mIE1TNzcyMFNFIHRvIHRoZSBNQUlOVEFJTkVSIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZGNkOTllODhlMDNkNTZhMGFlZWNkNDJiNTA3ZDJkMjlkMjBhYjBlMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIEphbiA5IDE0OjM5OjU4IDIwMDggKzA5MDAKCiAgICBzaDogRml4IGJvYXJkIG5hbWUgaW4gTVM3NzIwU0UncyBjb25maWcubWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYzBhMDRkOTM3MzRkNzY4YjM5ZGJiNzJmYjUwMWI2NTYxNGM4NjE1ZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJV2VkIEphbiA5IDE0OjM3OjM2IDIwMDggKzA5MDAKCiAgICBzaDogQWRkIE1TNzcyMFNFIHRvIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgYjJiNWUyYmI3OGExZWY0YWU4NTA0ZjVhMjZiZmRjMzI5M2VhNzRhZQpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIERlYyAzIDIyOjU4OjUwIDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgZm9yIE1TNzcyMFJQMDIgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA3YzEwYzU3Mjc1OTAxOTM5YThlY2U0YTllZjNlN2NjYjdjMTJhMGVkCkF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgpEYXRlOglXZWQgSmFuIDkgMTQ6MzA6MDIgMjAwOCArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBmb3IgU0g3NzIwIGluIHNlcmlhbF9zaCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgogICAgQ0M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZjk5MTNhOGVlNzFmZjE0ZmNmYzFjN2ZkMGU2OTEyZjg5N2U2OTQwMwpBdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KRGF0ZToJTW9uIERlYyAzIDIyOjU4OjQ1IDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIHN1cHBvcnQgU0gzIGFuZCBTSDc3MjAKCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+CiAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgogICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA5YWRmYzlmYjlhZGU2NGNkZjFlZDlmZjg0MmU0ZjkwMGNiZGE3OGJkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDE1IDEwOjExOjAyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGluIGNwdS9wcGM0eHgvNDR4X3NwZF9kZHIyLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTdiZWY2ODA5N2FiMzY5MjUwMGEzNmZiMzExMTViZmY3OTEwYWE5OQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CU1vbiBKYW4gMTQgMTQ6MDQ6NDIgMjAwOCArMDEwMAoKICAgIHBwY180eHg6IEZpeCBwb3N0IHNwci5jIGZvciBQUEM0MDUKCiAgICBwb3N0L2NwdS9wcGM0eHgvc3ByLmMgY29udGFpbmVkIGEgZmV3IGNoZWNrcyBmb3IgcmVnaXN0ZXJzIG9ubHkgcHJlc2VudAogICAgZm9yIFBQQzQ0MCBhbmQgZGVyaXZhdGVzIHByb2Nlc3Nvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDA2YzQyOGJjZDQ0MTMwMTRiNDMyMzZlNzc3NjUwMjIwNzE0MjRmYTYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMTQgMTE6MTI6MDEgMjAwOCArMDgwMAoKICAgIFFFOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgcWUuYzogSW4gZnVuY3Rpb24gJ3FlX3VwbG9hZF9maXJtd2FyZSc6CiAgICBxZS5jOjM5MDogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMgogICAgdWVjLmM6IEluIGZ1bmN0aW9uICd1ZWNfaW5pdGlhbGl6ZSc6CiAgICB1ZWMuYzoxMjM2OiB3YXJuaW5nOiAndWVjX2luZm8nIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEwZGQ5OWQ1MWVmYTU1ZmUwMjNlMTljOTdlYWQ5MjY4MzcyNWViMTEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKYW4gMTQgMTA6MDU6MDUgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIEtpbGF1ZWEgQ1BMRCBjb25maWd1cmF0aW9uIHdpdGggVVNCIFBIWSByZXNldCBiaXQKCiAgICBOb3cgdGhhdCBiaXQgMjkgaXMgdGhlIFVTQiBQSFkgcmVzZXQgYml0LCB1cGRhdGUgdGhlIEtpbGF1ZWEgcG9ydAogICAgdG8gcmVtb3ZlIHRoZSBVU0IgUEhZIHJlc2V0IGFmdGVyIHBvd2VydXAuIFRoZSBDUExEIHdpbGwga2VlcCB0aGUKICAgIFVTQiBQSFkgaW4gcmVzZXQgKGFjdGl2ZSBsb3cpIHVudGlsIHRoZSBiaXQgaXMgc2V0IHRvIDEgaW4KICAgIGJvYXJkX2Vhcmx5X2luaXRfZigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNDNhZDUzOTA4ZjFlYTgzYTdjMjZjMzUwNWJiZTg0MzgyZTQ3YWFkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAyMzoyNjo0NSAyMDA4ICswMTAwCgogICAgQVJNOiB1cGRhdGUgbWFjaC10eXBlcy5oIGZyb20gMi42LjI0LXJjNyBMaW51eCBrZXJuZWwgdHJlZQoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGQxMDMwNzFiN2IwZTNlYzg4ODg1OWJmY2I5ZDQyMjU2NWU2ZDc1MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMjM6Mzc6NTAgMjAwOCArMDEwMAoKICAgIEFEUzUxMjE6IEZpeCB0eXBvIGluIGFkczUxMjEuYywgYWRqdXN0IGRlZmF1bHQgZW52aXJvbm1lbnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDUxYjY3ZDA2ZmFhNjcwYzY1ZGU2ZjI5ZWM1YjVhYWNlNzRiMmEwNDcKQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyNCAxODoxODo0MyAyMDA3IC0wNjAwCgogICAgQURTNTEyMTogTUFYIHNsZXcgcmF0ZSBmb3IgUEFUQSBwaW5zCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQ1MzFhYWMzNGFhYWQxMzhmMTZjYWNkYjUxZDYxOTA4ZDU5YzBlMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMjE6MDU6NTIgMjAwOCArMDEwMAoKICAgIEZpeCBNYWtlZmlsZSBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4OTk2Nzg0MWUzZWEwMmUzZDBlNWUxMjk1YWI2ODc1NzZlNWIxMDg5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAxOTo1MTozOSAyMDA4ICswMTAwCgogICAgTVBDODU0NERTOiBmaXggYm9hcmQgTWFrZWZpbGUgZm9yIHNpbGVudCBidWlsZCAod2l0aCAtcykKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZkNzE0ZjgyZmI0YjhiYjdlMjY3ZTljNzFiODAwOWJjNjcwYmZlODgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDE2OjQ0OjA4IDIwMDggKzAxMDAKCiAgICBQTUM0NDAgYm9hcmQ6IGZpeCBib2FyZCBNYWtlZmlsZSBmb3Igb3V0LW9mLXRyZWUgYnVpbGRpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDZlYjNmYjE1NTg4ZDMxOWJkMzA5OWQ1ZjliOTEwMDUxZGZlYWI2YjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDE2OjA3OjQ0IDIwMDggKzAxMDAKCiAgICBNYWthbHU6IGZpeCBjb21waWxlIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDBhMWUwM2JjYWRjNzczNDY4OGEyMWU4ZGQyZTQ2YTRmNjA4MTkzYzAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gSmFuIDEzIDEyOjM2OjEyIDIwMDggKzAxMDAKCiAgICBjbWRfbmFuZCA6IGZpeCBjb21waWxlciB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgODIyNWQxZTNhYzBhYjE0N2NkZGU0YjAwNDI4MTI1ODMzODBhZmI4YQpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxyaW5jZXdpbmRAZGlzY3dvcmxkLmRhc2Nvbi5kZT4KRGF0ZToJU2F0IEphbiAxMiAyMDoyOTo0NyAyMDA4ICswMTAwCgogICAgQ0ZJOiBGaXggQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kgY29tcGlsYXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyYjJmNDNlZDZhMzBlY2U3N2Y3NjE5MWM4NDVhYzk1MjY3ZGFhMzFhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAwMjoxOTo0NCAyMDA4ICswMTAwCgogICAgTVBDODM2MEVSREs6IGZpeCBpbmNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2YgQ0ZHX0kyQ19OT1BST0JFUwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMDhlOTllMWRkMDFhM2UwZTNkYzNhNzEzOGViODI3Yzk5N2UyYjc0ZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMDI6MTk6MTMgMjAwOCArMDEwMAoKICAgIE1QQzh4eCBGRUMgZHJpdmVyOiBmaXggY29tcGlsZXIgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGFlNmQxMDU2ZDJjMmU0ZDEyNjY0MTNjMGFlOGE2ZDU1MjllY2RlNGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gSmFuIDEzIDAwOjU5OjIxIDIwMDggKzAxMDAKCiAgICBGaXggTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGlzc3VlczsgYWxsb3cgc2lsZW50IGJ1aWxkCgogICAgLSBnZXQgcmlkIG9mICJ2ZXJzaW9uIiB0YXJnZXQgd2hpY2hkaWRuJ3QgcmVhbGx5IHdvcmsKICAgIC0gbWFrZSBhdXRvY29uZi5tayBkZXBlbmQgb24gdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmggdG8gbWFrZSBzdXJlCiAgICAgIHRvIHJlYnVpbGQgZmlsZXMgYXMgbmVlZGVkCiAgICAtIGFkZCBYRUNITyBtYWNybyB0byBhbGxvdyBmb3Igc2lsZW50IGJ1aWxkIHVzaW5nICJtYWtlIC1zIgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZTM0M2FiODNkNTEzNWI1NThhYTU4ZGI5YmU4ZmM3ZmFhNjhkNzdlZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBKYW4gMTMgMDA6NTU6NDcgMjAwOCArMDEwMAoKICAgIEFEUzUxMjFlOiBmaXggY29tcGlsZSB3YXJuaW5nCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmMmI2ZjQ2MTA2MjdmZTNkNjA3NjIwZTI1MDgyOTE2YTAxNTM4ODc1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxMyAwMDo1NToxOCAyMDA4ICswMTAwCgogICAgTVVOSUNlczogZml4IGJvYXJkIE1ha2VmaWxlIGZvciByZW1vdGUgYnVpbGQgZGlyZWN0b3J5CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyYWQ0ZDM5OTlmZTgwMWFhNzE2MjIxZDdkOWE0YzViZGFkNzQ3ODNhCkF1dGhvcjogT2xpdmVyIFdlYmVyIDxhbG1vZWxpQGdteC5kZT4KRGF0ZToJV2VkIEphbiA5IDE3OjA0OjM4IDIwMDggKzAxMDAKCiAgICBNUEM1MjAwOiBkb24ndCB1c2UgaGFyZGNvZGVkIE1CQVIgYWRkcmVzcyBpbiBCZXN0Y29tbSBmaXJtd2FyZQoKICAgIFNpZ25lZC1vZmYtYnk6IE9saXZlciBXZWJlciA8YWxtb2VsaUBnbXguZGU+Cgpjb21taXQgMDBhYzUwZTM0OGQxYmFjZTI3YTE3NGI3ZjUyOGQxMTNiYzdjZGY3ZgpBdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgpEYXRlOglXZWQgSmFuIDkgMTc6MTA6NTYgMjAwOCArMDEwMAoKICAgIE1ha2UgYm9vdHJldHJ5IHdvcmsgd2hlbiBjb21tYW5kIGxpbmUgZWRpdGluZyBpcyBlbmFibGVkCgogICAgQ3VycmVudGx5LCB3aGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgc2V0LCBib290cmV0cnkgZG9lc24ndCB3b3JrLgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KCmNvbW1pdCA2MzJkZTA2NzJkM2MzYWI1M2FkNzk4YzQ3ZjVmMWViMjYwMDhhMGU0CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CUZyaSBKYW4gMTEgMjM6MjY6MTggMjAwOCAtMDUwMAoKICAgIFJlZmFjdG9yIGNvZGUgZm9yICJpMmMgc2RyYW0iIGNvbW1hbmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAwZGY2Yjg0NDZjNDcyMWI5MWNlMzExNTQ4MTE0ODkxMTMwMzcxMDgzCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBKYW4gMTAgMjI6MjM6MzkgMjAwOCAtMDUwMAoKICAgIEZpeCAiaTJjIHNkcmFtIiBjb21tYW5kIGZvciBERFIyIERJTU1zCgogICAgTWFueSBvZiB0aGUgU1BEIGJ5dGVzIGZvciBERFIyIFNEUkFNIGFyZSBub3QgaW50ZXJwcmV0ZWQgY29ycmVjdGx5IGJ5IHRoZQogICAgImkyYyBzZHJhbSIgY29tbWFuZC4gIFRoaXMgcGF0Y2ggcHJvdmlkZXMgY29ycmVjdCBhbHRlcm5hdGl2ZQogICAgaW50ZXJwcmV0YXRpb25zIHdoZW4gRERSMiBtZW1vcnkgaXMgZGV0ZWN0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNjQxMzRmMDExMjU0MTIzNjE4Nzk4ZmY3N2M0MmJhMTk2YjJlYzQ4NQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gMTIgMjA6MzE6MzkgMjAwOCArMDEwMAoKICAgIEZpeCBsaW5rZXIgc2NyaXB0czogYWRkIE5PTE9BRCBhdHJpYnV0ZSB0byAuYnNzLy5zYnNzIHNlY3Rpb25zCgogICAgV2l0aCByZWNlbnQgdG9vbGNoYWluIHZlcnNpb25zLCBzb21lIGJvYXJkcyB3b3VsZCBub3QgYnVpbGQgYmVjYXVzZQogICAgb3IgZXJyb3JzIGxpa2UgdGhpcyBvbmUgKGhlcmUgZm9yIG9jb3RlYSBib2FyZCB3aGVuIGJ1aWxkaW5nIHdpdGgKICAgIEVMREsgNC4yIGJldGEpOgogICAgcHBjXzR4eC1sZDogc2VjdGlvbiAuYm9vdHBnIFtmZmZmZjAwMCAtPiBmZmZmZjIzYl0gb3ZlcmxhcHMgc2VjdGlvbiAuYnNzIFtmZmZlZTkwMCAtPiBmZmZmZjhhYl0KCiAgICBGb3IgbWFueSBib2FyZHMsIHRoZSAuYnNzIHNlY3Rpb24gaXMgYmlnIGVub3VnaCB0aGF0IGl0IHdyYXBzIGFyb3VuZAogICAgYXQgdGhlIGVuZCBvZiB0aGUgYWRkcmVzcyBzcGFjZSAoMHhGRkZGRkZGRiksIHNvIHRoZSBwcm9ibGVtIHdpbGwgbm90CiAgICBiZSB2aXNpYmxlIHVubGVzcyB5b3UgdXNlIGEgNjQgYml0IHRvb2wgY2hhaW4gZm9yIGRldmVsb3BtZW50LiBPbgogICAgc29tZSBib2FyZHMgaG93ZXZlciwgY2hhbmdlcyB0byB0aGUgY29kZSBzaXplIChkdWUgdG8gZGlmZmVyZW50CiAgICBvcHRpbWl6YXRpb25zKSB3ZSBiYWlsIG91dCB3aXRoIHNlY3Rpb24gb3ZlcmxhcHMgbGlrZSBhYm92ZS4KCiAgICBUaGUgZml4IGlzIHRvIGFkZCB0aGUgTk9MT0FEIGF0dHJpYnV0ZSB0byB0aGUgLmJzcyBhbmQgLnNic3MKICAgIHNlY3Rpb25zLCB0ZWxsaW5nIHRoZSBsaW5rZXIgdGhhdCAuYnNzIGRvZXMgbm90IGNvbnN1bWUgYW55IHNwYWNlIGluCiAgICB0aGUgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzYWZhYzc5ZWMyN2I5MWRmMTg1ZjA5MGIzMWRhZDk2MjA3NzlmNDQwCkF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAyMDo0Mjo1OCAyMDA4IC0wNjAwCgogICAgVVNCOiBBZGQgUGhpbGlwcyAxNTYxIFBDSS1PSENJIGlkcwogICAgKG5lZWRlZCBmb3IgTTU0NzVFVkIpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVlOGRlZjY3MzFjZDdiZWM3NGJmZjQyYTE2YjEzOWRlMDQwMTAzNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEyIDE1OjUxOjM0IDIwMDggKzAxMDAKCiAgICBBZGQgTUFJTlRBSU5FUlMgZW50cmllcyBmb3IgaWRzODI0NywganVwaXRlciwgbXVuaWNzZSwgc2MzIGFuZCB1YzEwMQogICAgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1ZDQ5ZTBlMTUyYThiODFjYzA2MDIyNzFlOGZkMjU5MzcxZjU1OWI3CkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKYW4gMTEgMTI6MDM6NDMgMjAwOCArMDEwMAoKICAgIE1QQzUxMlg6IENsZWFudXAgYnVzIGNsb2NrIG5hbWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDY2YTk0NTViNmJmNDZkNjljZWM1Yzg4ZDFhNjAwZDFkOWExMDY3MGQKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE3OjE2OjU5IDIwMDggKzAxMDAKCiAgICBNUEM1MTJYOiBGaXhlZCB0eXBvIGluIG1hY3JvIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgMjgxZmY5YTQ1Y2Y5ZWIxN2I4YTlhZmM0MzZjYjc4M2NmMWY2MjM2MwpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDggMTc6MTY6MTUgMjAwOCArMDEwMAoKICAgIGFkczUxMjE6IEFkZGVkIHN1cHBvcnQgZm9yIEZEVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhMTBmZjkxOTYxODNlN2U1ZjJhZTNjNGY1ZjNjYmU5MmFlOWNiNzE5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEphbiAxMiAwMTowNTo1MCAyMDA4ICswMTAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBmNmRiOTQ1NjQ5ZTVlOWQwYzdlZmUzM2I1MDdkMjQzY2RjODZjZjAzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTcgMjAwOCArMDEwMAoKICAgIEZpeGVkIHN5bnRheCBlcnJvciBpbiBmdW5jdGlvbiBpbml0X2UzMDBfY29yZSgpIG9mIG1wYzgzeHgvc3RhcnQuUyBpZgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmYTA1NjY0Y2Q4YzdhYjFlY2YwNjJhYTczYjk5MmI3YjU4YmJhNDljCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTYgMjAwOCArMDEwMAoKICAgIE1VTklDZXM6IFNldCB0aGUgcmlnaHQgQ0ZHX0RFRkFVTFRfTUJBUiB2YWx1ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA1ZmIyYjIzNDJlY2U4ZDc4NmM2ZjdmZGJhMWJjMjczZmViZDNiM2QyCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMTU6MTU6MTUgMjAwOCArMDEwMAoKICAgIGFkZGVkIHRoZSBjb25maWcgRmlsZSBmb3IgdGhlIE1VTklDZXMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNjM0MWQ5ZDcyM2I3MWI0YzBiZjg2Zjk3OWU0Y2IyMjhjMDJmZDA5ZApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjE1OjE0IDIwMDggKzAxMDAKCiAgICBhZGRlZCBiYXNpYyBzdXBwb3J0IGZvciB0aGUgTVVOSUNlcyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzYmI3N2ZiMDlhMWNhYWJmNWEyOTJjYzViNDg2YTc4Yjk3N2ZiZTE5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEphbiAxMiAwMDozOTozNyAyMDA4ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRyBhbmQgTUFJTlRBSU5FUlMgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YmE3MzkwYzNjYjU3OTE3MmJlNjY4ODhhMzcxNzA3YjQ3YjViZTRlCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAyOjE1OjAyIDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsYXRpb24gcHJvYmxlbSBpbiBjb21tb24vY21kX2JtcC5jCgogICAgY29tbW9uL2NtZF9ibXAuYyBmYWlscyB0byBjb21waWxlIGlmIENPTkZJR19WSURFT19CTVBfR1pJUAogICAgaXNuJ3QgZGVmaW5lZC4gVGhpcyBwYXRjaCBmaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Cgpjb21taXQgNWFhNDM3YmFhZTVmZTYyOWFiZWFiOTliZWY3OTNhMmExZmM3MWI1OApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAxOjEyOjA5IDIwMDggKzAxMDAKCiAgICBGaXggZGVmYXVsdGNvbmZpZyBmb3IgdGhlIG1nY29nZSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhYzlkYjA2NmIyNjkzNWYzMWJmZjE1Yzk4MTY4YjE5ZmFlYjYwM2YzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDggMjAwOCArMDEwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtZ2NvZ2UgYm9hcmQgZnJvbSBrZXltaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGI0MjNkMDU1Y2MyZTEzYzRlZjFmMDM4OWMzZmEyOTg4ZDBlZWQ4MTgKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxMSAwMToxMjowNyAyMDA4ICswMTAwCgogICAgRW5hYmxlIFNNQyBtaWNyb2NvZGUgcmVsb2NhdGlvbiBwYXRjaCBmb3IgU01DMS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAzODFlNGU2Mzk3MjBkOGQyZWZiODA2NmM3YzQ4ZWM5NTg4Y2IyOGM3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDYgMjAwOCArMDEwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtZ3N1dmQgYm9hcmQgZnJvbSBrZXltaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGJmMDUyOTM5NzNiMzQ4ZjY5NDZjOWRmOTJjZDNjNjVlY2U0MmQwYmUKQXV0aG9yOiBKYW1lcyBZYW5nIDxqYW1lcy55YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMTAgMTY6MDI6MDcgMjAwOCAtMDYwMAoKICAgIEZpeCA2NC1iaXQgdnNwcmludGYuCgogICAgVGhlcmUgd2VyZSBzb21lIHNpemUgYW5kIHVuc2lnbmVkIHByb2JsZW1zLgogICAgQWxzbyBhZGQgc3VwcG9ydCBmb3IgImxsIiBzaXplIG1vZGlmaWVyIGluIGZvcm1hdCBzdHJpbmcgbGlrZSBnbGliYwoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkyZmEzN2VhYzUzMDg2MDY0M2FmYTI2YWUzNDdhZjNkMjNkNjczMDkKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJV2VkIEphbiA5IDEyOjQyOjM1IDIwMDggLTA1MDAKCiAgICBSZW1vdmUgc3VwZXJmbHVvdXMgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscyBmcm9tIExNNzMgZHJpdmVyCgogICAgKDEpIFJlbW92ZSB1bnVzZWQgc3ltYm9sICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIi4KCiAgICAoMikgVXNlIGNvbmRpdGlvbmFsIE1ha2VmaWxlLm8uCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgZWZjNmY0NDdjMWI5NDBkMTY1MGM0Yjg1NGM1NTk4YTU5NWRkYzNkYQpBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxMCAxNzo1OTowNyAyMDA4ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBUSzg4NUQgYmFzZWJvYXJkIGZyb20gVEVMRS1EQVRBCgogICAgVGhlIFRLODg1RCBib2FyZCB1c2VzIGEgVFFNODg1RCBtb2R1bGUgZnJvbSBUUSwgdGhpcyBwb3J0IGFkZHMgYW4KICAgIG93biBjb25maWd1cmF0aW9uIGZpbGUgYW5kIGFkZHMgYSBsYXN0X3N0YWdlX2luaXQoKSBtZXRob2QgdG8KICAgIGNvbmZpZ3VyZSB0aGUgdHdvIFBIWXMsIGRlcGVuZGluZyBvbiB0aGUgcGh5X2F1dG9fbmVnbyBlbnZpcm9ubWVudAogICAgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDBlYzU5NTI0M2RjOTllZGNkMjQ4YmJjZmJmZDVhMWRjODYwYmRlODkKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgSmFuIDEwIDAyOjIyOjA1IDIwMDggLTA2MDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZwoKICAgIG1haW4uYzogSW4gZnVuY3Rpb24gJ3JlYWRsaW5lX2ludG9fYnVmZmVyJzoKICAgIG1haW4uYzo5Mjc6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncF9idWYnCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiZWQ1Mzc1M2RkMWQ3ZTZiY2JlYTQzMzliZTBmYjc3NjAyMTRjYzM1CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE0OjMwOjAxIDIwMDggKzAxMDAKCiAgICBBZGQgRnVqaXRzdSBDb3JhbFAvTGltZSB2aWRlbyBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCAyMGM0NTBlZjYxZWYyZWIxYzk2ZjliNTliYTBlYjhkODQ5YmJhMDU4CkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDAyOjM5OjQ3IDIwMDggKzAxMDAKCiAgICBGaXggdmlkZW8gY29uc29sZSBuZXdsaW5lIGFuZCBjYXJyaWFnZSByZXR1cm4gaGFuZGxpbmcKCiAgICBMaW5lcyBvZiB0aGUgbGVuZ2h0IENPTlNPTEVfQ09MUyBvciBncmVhdGVyIHRoYW4gQ09OU09MRV9DT0xTCiAgICBhcmUgbm90IGRpc3BsYXllZCBjb3JyZWN0bHkuIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXgKICAgIHRoaXMgaXNzdWUuIEFsc28gYWRkIGNhcnJpYWdlIHJldHVybiBoYW5kbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBkNWExNjNkNmJhYTA0ZjVhOGVkY2MxMGViYzZmYWQwODY1N2QzMDkzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjUzOjU4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBzZHJhbSBpbml0IG9uIFNlcXVvaWEgYm9hcmRzCgogICAgQ2xlYXIgcG9zc2libGUgZXJyb3JzIGluIE1DU1IgcmVzdWx0aW5nIGZyb20gZGF0YS1leWUtc2VhcmNoLgogICAgSWYgbm90IGRvbmUsIHRoZW4gd2UgY291bGQgZ2V0IGFuIGludGVycnVwdCBsYXRlciBvbiB3aGVuCiAgICBleGNlcHRpb25zIGFyZSBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNjEwYTYwNzMwYjc0NjRmNmY2NTlkYjQ5ZDI2NGQ4OWE3YzcxMDYxCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglGcmkgSmFuIDExIDE1OjMxOjA5IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJld29yayBMaW1lIHN1cHBvcnQgZm9yIGx3bW9uNQoKICAgIFJld29yayBMaW1lIHN1cHBvcnQgZm9yIGx3bW9uNSB1c2luZyBuZXcgdmlkZW8gZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgoKY29tbWl0IGZmNDFmZmM5M2MxNTkyZTc3YTQ0YmRiZWJkNWQ3ODE3MzlmM2FhZTAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIEphbiAxMSAxNDo1NToxNiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBVcGRhdGUgUE1DNDQwIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZTNlZGNiMzZmMTRmMGFhYmI2ZjUwZTk2MDE0ZDY4NzdmNzNkNjRlYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSmFuIDExIDE0OjU1OjA4IDIwMDggKzAxMDAKCiAgICBwcHg0eHg6IEZpeCBzZHJhbSBpbml0IG9uIFBNQzQ0MCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwNjFhYWQ0ZDMyMGRkZGNlMjYyNDc2OTlkY2YyODc1ZWUyZWExMzY2CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA5OjMzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIGJ1ZyBvZiAyNjZNSHogZGF0YSByYXRlIEREUgoKICAgIFRoZSBERFIgZG9lc24ndCB3b3JrIG9uIHRoZSAyNjZNSHogZGF0YSByYXRlLAogICAgdGhlIHBhdGNoIGZpeCB0aGUgYnVnLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRlZDA4MzE3YWQ5ZTM0MGI4ODdiZjJlYjQ2ZTk1NjVhMGY2MTBhOTMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMTAgMjM6MDg6MjYgMjAwOCArMDgwMAoKICAgIG1wYzgzeHg6IE1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZQoKICAgIEZvcm1hdCB0aGUgY29kZSwgbWFrZSBpdCBtb3JlIHJlYWRhYmxlCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2U3NGQ2M2QxYTIxMWZiYzM0ZWM0MjRlMmRjNjcyNjYwMWYzMjNkMApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAyMzowNzoyMyAyMDA4ICswODAwCgogICAgbXBjODN4eDogUmVkdWNlIHRoZSBsYXRlbmN5IG9mIEREUgoKICAgIFJlZHVjZSB0aGUgQUwgZnJvbSAyIHRvIDEgY2xvY2sgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmYzOTMxYTJiZWQ1NDEyYzIwZDVlNTUzNmM4NjVmYmQ2NTdmN2QyOApBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAyMzowNjowNSAyMDA4ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSB3cm9uZyBkZWZpbml0aW9uIG9mIE1QQzgzMTVFCgogICAgQWNjb3JkaW5nIHRvIHRoZSBsYXRlc3QgdXNlciBtYW51YWwgb2YgTVBDODMxNUUsCiAgICAxKSBUaGUgU1ZDT0Qgb2YgSFJDV0wgaXMgZGlmZmVyZW50IHRoYW4gODM3eAogICAgMikgVGhlIFNDQ1IgaGFzIGNoYW5nZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlYzI2MzhlYTA4YTUzN2ExYmQ0MDlkYjg3M2FhYWEzM2EwNTNlYmFlCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA1OjAwIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIHR5cG8gaW4gbXBjODN4eC5oCgogICAgVGhlIFNQQ1IgYWJvdXQgVFNFQyBwcmlvcml0eSBpcyB3cm9uZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8TWljaGFlbC5CYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBEJ0FiYnJhY2NpbyA8Sm9lLkQnYWJicmFjY2lvQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjODZlZjJjZDllZjgxOTM1MDQ5MjMxZmE4OWYzNmM3Yjc5M2YyZDRiCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjA0OjEzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIHR5cG8gaW4gZ2xvYmFsIGRhdGEgc3RydWN0CgogICAgRml4IHRoZSB0eXBvIGluIGdsb2JhbF9kYXRhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyYzViNDhmYzIwNWMzZTI3NTI5MTBkYThmMzkyMDllZDA3NTkyOWU1CkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDEwIDIzOjAzOjAzIDIwMDggKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlnLmgKCiAgICBjbGVhbiB1cCB0aGUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlncy5oIG9mIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmFiNmY1NTZiYmJiZDFiYjM1YTU0MzMxNjFmN2YxNzNjMThkZjU1OQpBdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgSmFuIDkgMjA6NTc6NDcgMjAwOCArMDMwMAoKICAgIG1wYzgzeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM2MEUtUkRLCgogICAgVGhpcyBpcyBNUEM4MzYwRSBiYXNlZCBib2FyZCB3aXRoOgogICAgLSAyNTZNQiBmaXhlZCBTRFJBTTsKICAgIC0gOE1CIEludGVsIFN0cmF0YSBOT1IgZmxhc2g7CiAgICAtIFN0TUlDUk8gNjRNaUIgTkFORCBmbGFzaDsKICAgIC0gdHdvIDEwLzEwMC8xMDAwIGV0aGVybmV0IHBvcnRzIGNvbm5lY3RlZCB2aWEgQnJvYWRjb20KICAgICAgQkNNNTQ4MSBQSFlzOwogICAgLSB0d28gMTAvMTAwIGV0aGVybmV0IHBvcnRzIGNvbm5lY3RlZCB2aWEgTmF0aW9uYWwKICAgICAgRFA4Mzg0OCBQSFlzOwogICAgLSBvbmUgUENJIGFuZCBvbmUgbWluaVBDSSBzbG90czsKICAgIC0gZm91ciBzZXJpYWwgcG9ydHMgKHR3byBOUzE2NTUwLWNvbXBhdGlibGUsIHR3byBVQ0NzKTsKICAgIC0gZm91ciBVU0IgcG9ydHMgd29ya2luZyB0aHJvdWdoIE1QQzgzNjBFICJGSENJIiBVU0IgY29udHJvbGxlcjsKICAgIC0gRnVqaXRzdSBNQjg2Mjc3IGdyYXBoaWNzIGNvbnRyb2xsZXI7CiAgICAtIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlci9Ub3VjaHNjcmVlbiBjb250cm9sbGVyLCBBRDc4NDMKICAgICAgY29ubmVjdGVkIHRvIFNQSS4KCiAgICBGZWF0dXJlcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGF0Y2ggYXJlOgogICAgLSBTdE1JQ1JPIDY0TWlCIE5BTkQgZmxhc2ggKHBhdGNoIHNlbnQpOwogICAgLSBNSU5UIGZyYW1lYnVmZmVyIGluaXRpYWxpemF0aW9uIChwYXRjaCBpcyBwZW5kaW5nKTsKICAgIC0gRmV0Y2hpbmcgcHJvZHVjdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBFRVBST00gdmlhIEkyQzsKICAgIC0gRkhDSSBVU0I7CiAgICAtIFR3byBzbG93IFVDQ3MgdXNlZCBhcyBSUy00ODUgVUFSVHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzZDJjZGU3YTNhYTFlODNiNzk2OGNkZmY5MjllNTJjOGNjNjE3YmIKQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KRGF0ZToJV2VkIEphbiA5IDIwOjU3OjQwIDIwMDggKzAzMDAKCiAgICBtcGM4M3h4OiBhZGQgImZzbCwgcWUiIGNvbXBhdGlibGUgZml4dXBzCgogICAgTmV3IGRldmljZSB0cmVlcyB3aWxsIHVzZSAiZnNsLHFlIiBjb21wYXRpYmxlIHByb3BlcnRpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3N2I1NzU4M2E3YzM0MDEwZTU2NmEwOWE2NzllYzNjMTgzNmY5OTYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTU6MjQ6MDYgMjAwOCAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBtaXNzaW5nIENPTkZJR19IQVNfRVRIMCBkZWZpbmVzCgogICAgdGhlIG5ldyBsaWJmZHQgY29kZSBvbmx5IHVwZGF0ZXMgZXRoMCBpZiBDT05GSUdfSEFTX0VUSDAKICAgIGlzIGRlZmluZWQ7IGFkZCB0aGUgZGVmaW5lIHRvIHRoZSBtaXNzaW5nIGJvYXJkIGNvbmZpZ3MuCgogICAgVGhhbmtzIHRvIEVtaWxpYW4gTWVkdmUgZm9yIGZpbmRpbmcgdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI4MzBiN2YxNjM1OTg0YmE2MDcyMTlmY2JkNzg1OTdjMjhlZWI1MjkKQXV0aG9yOiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEphbiAxMCAxNDowMDoyOCAyMDA4IC0wNjAwCgogICAgODZ4eDogU3VwcG9ydCAyR0IgRElNTXMKCiAgICBDb25maWd1cmUgdGhlIG51bWJlciBvZiBiaXRzIHVzZWQgdG8gYWRkcmVzcyB0aGUgYmFua3MgaW5zaWRlIHRoZSBTRFJBTQogICAgZGV2aWNlLiAgVGhlIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgb2YgMCBtZWFucyAyIGJpdHMgdG8gYWRkcmVzcyA0IGJhbmtzLgogICAgSGlnaGVyIGNhcGFjaXR5IGRldmljZXMgbGlrZSBhIDJHQiBESU1NIHJlcXVpcmUgMyBiaXRzIHRvIGFkZHJlc3MgOCBiYW5rcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDMzMmRiZWIwOGY1ODYzZDFlYTY5ZDkxYTAwYzU0OTlkM2E4N2VkCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJVGh1IEphbiAxMCAxODo1MDozMyAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBNYWtlIFNlcXVvaWEgYm9vdCB2eFdvcmtzCgogICAgdnhXb3JrcyBleHBlY3RzIGluCiAgICBUTEIgMCBhIGVudHJ5IGZvciB0aGUgTWFjaGluZSBDaGVjayBpbnRlcnJ1cHQKICAgIFRMQiAxIGEgZW50cnkgZm9yIHRoZSBSQU0KICAgIFRMQiAyIGEgZW50cnkgZm9yIHRoZSBFQkMKICAgIFRMQiAzIGEgZW50cnkgZm9yIHRoZSBib290IGZsYXNoCgogICAgQWZ0ZXIgY2hhbmdpbmcgdGhlIGJhdWRyYXRlIHRvIDk2MDAgSSBoYWQgbm8gcHJvYmxlbXMgdG8gYm9vdCB0aGUKICAgIHZ4V29ya3MgaW1hZ2UgYXMgZGlzdHJpYnV0ZWQgYnkgV2luZFJpdmVyIChSZXZpc2lvbiAyLjAvMSBmcm9tCiAgICBKdW5lIDE4LCAyMDA3KQoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNmQ4MTg0YjAwYzBkMWQ3MDkwZTRhMmY1MTRlMzEwZDk4YTM5NGY4ZApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglXZWQgSmFuIDkgMjM6MTA6MjcgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogRml4IGRmbHVzaCgpIHRvIHJlc3RvcmUgRFZMSU0gcmVnaXN0ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAyNTJmNjBiMDY4ZDFmOTQxOTBiNWJjZmRhMTY5ZGI1ODIzODdlMTVlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVGh1IEphbiAxMCAwMzo1Mjo0NCAyMDA4IC0wNTAwCgogICAgTmlvczI6IHJlbW92ZSBjb21tb24vY21kX2JkaW5mby5jIHVudXNlZCB2YXJpYWJsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Cgpjb21taXQgNDIyYjFhMDE2MDJiNmUyZmJmODQ0NGExMTkyYzdiYTMxNDYxZmQ0YwpBdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+CkRhdGU6CVdlZCBKYW4gOSAxODoxNTo1MyAyMDA4IC0wNTAwCgogICAgRml4IEV0aGVybmV0IGluaXQoKSByZXR1cm4gY29kZXMKCiAgICBDaGFuZ2UgcmV0dXJuIHZhbHVlcyBvZiBpbml0KCkgZnVuY3Rpb25zIGluIGFsbCBFdGhlcm5ldCBkcml2ZXJzIHRvIGNvbmZvcm0KICAgIHRvIHRoZSBmb2xsb3dpbmc6CgoJPj0wOiBTdWNjZXNzCgk8MDogIEZhaWx1cmUKCiAgICBBbGwgZHJpdmVycyBnb2luZyBmb3J3YXJkIHNob3VsZCByZXR1cm4gMCBvbiBzdWNjZXNzLiAgQ3VycmVudCBkcml2ZXJzIHRoYXQKICAgIHJldHVybiAxIG9uIHN1Y2Nlc3Mgd2VyZSBsZWZ0IGFzLWlzIHRvIG1pbmltaXplIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CiAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQWNrZWQtQnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNhNjUzMmNiZTI2M2Q5OTJmNDllODZhYzk1YmVkZTI4ZTk2ZjljOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTAgMDA6NTU6MTQgMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxN2E0MWU0NDkyMTIxY2NmOWZhMmMxMGMyY2IxYTZkMWMxOGQ3NGY3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDE2OjU2OjU0IDIwMDggLTA2MDAKCiAgICBBZGQgUUUgYnJnIGZyZXEgYW5kIGNvcnJlY3QgcWUgYnVzIGZyZXEgZmR0IHVwZGF0ZSBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4OTBkZmVmMDZjMmQxNjlhMzM1NjM1OTU5Njg5MDc1NGRmYjhlZTFjCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTY6MzQ6NTEgMjAwOCAtMDYwMAoKICAgIFJlbW92ZSBjYWNoZSBjb25maWcgZnJvbSBBVFVNODU0OCBhbmQgc2JjODU0OCBjb25maWdzCgogICAgVGhlc2UgYm9hcmRzIHdlcmVuJ3QgdXBkYXRlZCBieSBLdW1hcidzIGNvbmZpZyBwYXRjaCBiZWNhdXNlIHRoZXkKICAgIHdlcmVuJ3QgaW4gdGhlIHRyZWUsIHlldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjhlYzIzODUwMzhjMDk0YjA3ZWM1YjQ5MzM2Mjg5YTQ2YjZlOWNjNgpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gNyAxMzozMToxOSAyMDA4IC0wNjAwCgogICAgODV4eDogYWRkIGFiaWxpdHkgdG8gdXBsb2FkIFFFIGZpcm13YXJlCgogICAgRGVmaW5lIHRoZSBsYXlvdXQgb2YgYSBiaW5hcnkgYmxvYiB0aGF0IGNvbnRhaW5zIGEgUUUgZmlybXdhcmUgYW5kIGluc3RydWN0aW9ucwogICAgb24gaG93IHRvIHVwbG9hZCBpdC4gIEFkZCBmdW5jdGlvbiBxZV91cGxvYWRfZmlybXdhcmUoKSB0byBwYXJzZSB0aGUgYmxvYiBhbmQKICAgIHBlcmZvcm0gdGhlIGFjdHVhbCB1cGxvYWQuCUFkZCBjb21tYW5kLWxpbmUgY29tbWFuZCAicWUgZnciIHRvIHRha2UgYSBmaXJtd2FyZQogICAgYmxvYiBpbiBtZW1vcnkgYW5kIHVwbG9hZCBpdC4gIFVwZGF0ZSBmdF9jcHVfc2V0dXAoKSBvbiA4NXh4IHRvIGNyZWF0ZSB0aGUKICAgICdmaXJtd2FyZScgZGV2aWNlIHRyZWUgbm9kZSBpZiBVLUJvb3QgaGFzIHVwbG9hZGVkIGEgZmlybXdhcmUuICBGdWxseSBkZWZpbmUKICAgICdzdHJ1Y3QgcnNwJyBpbiBpbW1hcF9xZS5oIHRvIGluY2x1ZGUgdGhlIGFjdHVhbCBSSVNDIFNwZWNpYWwgUmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjAwOWYzZWNhOTliYjdiOWU2YmE2NjM5YTg5MDlhMTM4ZGQ1ZTlmZQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gOCAwMToyMjoyMSAyMDA4IC0wNjAwCgogICAgODV4eDogUmVtb3ZlIGNhY2hlIGNvbmZpZyBmcm9tIGNvbmZpZ3MuaAoKICAgIEVpdGhlciB1c2UgdGhlIHN0YW5kYXJkIGRlZmluZXMgaW4gYXNtL2NhY2hlLmggb3IgZ3JhYiB0aGUgaW5mb3JtYXRpb24KICAgIGF0IHJ1bnRpbWUgZnJvbSB0aGUgTDFDRkcgU1BSLgoKICAgIEFsc28sIG1pbm9yIGNsZWFudXAgaW4gY2FjaGUuaCB0byBtYWtlIHRoZSBjb2RlIGEgYml0IG1vcmUgcmVhZGFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBiOTY0ZTkzNjhmNDUzNzJhYWYxZGEwYzEzZmU1NmY2ZDgxYWU4ZTk2CkF1dGhvcjogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+CkRhdGU6CUZyaSBEZWMgMjEgMTA6Mzk6MjcgMjAwNyAtMDUwMAoKICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBBVFVNODU0OCAodXBkYXRlZCkKCiAgICBBZGQgc3VwcG9ydCBmb3IgSW5zdGl0dXRvIEF0bGFudGljbydzIEFUVU04NTQ4IGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2JkNjEwNGI3MWRlOWJjYTgwYWM4ZTA5MzYwMDM0NDNiYjQyZjJmYwpBdXRob3I6IHJvYmVydCBsYXphcnNraSA8cm9iZXJ0bGF6YXJza2lAZ21haWwuY29tPgpEYXRlOglGcmkgRGVjIDIxIDEwOjM2OjM3IDIwMDcgLTA1MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgQVRVTTg1NDggKHVwZGF0ZWQpCgogICAgQWRkIHN1cHBvcnQgZm9yIEluc3RpdHV0byBBdGxhbnRpY28ncyBBVFVNODU0OCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IHJvYmVydCBsYXphcnNraSA8cm9iZXJ0bGF6YXJza2lAZ21haWwuY29tPgoKY29tbWl0IDllM2VkMzkyZDJjODk2NWUyNGM5NDJiNTg3OTZjMzFjNjQ0YzJmNzAKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgRGVjIDEzIDA2OjQ1OjE0IDIwMDcgLTA2MDAKCiAgICBtcGM4NXh4OiBBZGQgc3VwcG9ydCBmb3IgU0JDODU0OCAodXBkYXRlZCkKCiAgICBBZGQgc3VwcG9ydCBmb3IgV2luZCBSaXZlcidzIFNCQzg1NDggcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Cgpjb21taXQgMTFjNDVlYmQ0NmQ2NTE3YjUxYjdhOTJkZDUyYTYxOGIyZjRlNTU4NgpBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CVRodSBEZWMgMTMgMDY6NDU6MDggMjAwNyAtMDYwMAoKICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBTQkM4NTQ4ICh1cGRhdGVkKQoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODU0OCByZWZlcmVuY2UgYm9hcmQuCgogICAgU2lnbmVkLW9mZiBieTogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KICAgIFNpZ25lZC1vZmYgYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NGQ0YmNiMDg3YzJlY2UxYzRkMGRlOGVmZTg1ZTAwNzVlNWIxNTk0CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBPY3QgMjIgMTk6NTg6MTkgMjAwNyArMDQwMAoKICAgIE1QQzg1NjhFLU1EUzogc2V0IHVwIFFFIHBhcmlvIGZvciBVQVJUMQoKICAgIFRvIHVzZSBVQVJUMSBvbiB0aGUgTVBDODU2OEUtTURTLCBRRSBwYXJpbyBwaW5zIFBDWzA6M10gc2hvdWxkCiAgICBiZSBzZXQgdXAgYXBwcm9wcmlhdGVseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KCmNvbW1pdCBhZDE2MjI0OWNiMzcxZTllMzg5NzE2NzZmMDliZTc5MWU1ZjNjZjRhCkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBPY3QgMjIgMTg6MTI6NDYgMjAwNyArMDQwMAoKICAgIE1QQzg1NjhFLU1EUzogcmVzZXQgVUNDcyB0byB1c2UgdGhlbSByZWxpYWJseQoKICAgIEluIG9yZGVyIHRvIHVzZSBHRVRIMSBhbmQgR0VUSDIgb24gdGhlIE1QQzg1NjhFLU1EUywgd2Ugc2hvdWxkIHJlc2V0CiAgICBVQ0NzLgoKICAgIHAucyBTaW1pbGFyIGNvZGUgZXhpc3RzIGluIHRoZSBMaW51eCBrZXJuZWwgYm9hcmQgZmlsZSAoZm9yIGNhcGFiaWxpdHkKICAgIHJlYXNvbnMgd2l0aCBvbGRlciBVLUJvb3RzKSwgYnV0IHNob3VsZCBiZSByZW1vdmVkIHNvbWUgZGF5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IDIxNDZjZjU2ODIxYzMzNjQ3ODZjYTk0YTczMDYwMDhjNTgyNGIyMzgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgRGVjIDE5IDAxOjE4OjE1IDIwMDcgLTA2MDAKCiAgICBSZXdvcmtlZCBGU0wgQm9vay1FIFRMQiBtYWNyb3MgdG8gYmUgbW9yZSByZWFkYWJsZQoKICAgIFRoZSBvbGQgbWFjcm9zIG1hZGUgaXQgZGlmZmljdWx0IHRvIGtub3cgd2hhdCBXSU1HRSBhbmQgcGVybSBiaXRzCiAgICB3ZXJlIHNldCBmb3IgYSBUTEIgZW50cnkuICBBY3R1YWxseSB1c2UgdGhlIGJpdCBtYXNrcyBmb3IgdGhlc2UgaXRlbXMKICAgIHNpbmNlIHRoZXkgYXJlIG9ubHkgYSBzaW5nbGUgYml0LgoKICAgIEFsc28gbW92ZWQgdGhlIG1hY3JvcyBpbnRvIG1tdS5oIG91dCBvZiBlNTAwLmggc2luY2UgdGhleSBhcmVuJ3Qgc3BlY2lmaWMKICAgIHRvIGU1MDAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAxZDQ3MjczZDQ2OTI1OTI5ZjhmMmMxOTEzY2Q5NmQ3MjU3YWFkZTg4CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIERlYyAxOCAyMzoyMTo1MSAyMDA3IC0wNjAwCgogICAgVXNlIEZTTCBCb29rLUUgTU1VIG1hY3JvcyBmcm9tIExpbnV4IEtlcm5lbAoKICAgIEdyYWIgdGhlIEZTTCBCb29rLUUgTUFTIHJlZ2lzdGVyIG1hY3JvcyBmcm9tIExpbnV4LiAgQWxzbyBhZGRlZAogICAgZGVmaW5lcyBmb3IgcGFnZSBzaXplcyB1cCB0byA0VEIgYW5kIHJlbW92ZWQgU0hBUkVOIHNpbmNlIGl0IGRvZXNudAogICAgcmVhbGx5IGV4aXN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDJkZjRhMjcwZjgxN2VmNmVjMzkwNDdhMDFiNTVmZWNkYzVmM2IzNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiA5IDEzOjUxOjMyIDIwMDggLTA2MDAKCiAgICBGaXggbXkgb3duIG1lcmdlIHN0dXBpZGl0eQoKICAgIFdheSBiYWNrIGluIEF1Z3VzdCBJIG1lcmdlZCBIZWlrbydzIHBhdGNoOgogICAgNTY2YTQ5NGY1OTI6IFtQQ1M0NDBFUF0gdXBncmFkZSB0aGUgUENTNDQwRVAgYm9hcmQKCiAgICB3aXRoIEpvbidzIENPTkZJR19DT01NQU5EUyBwYXRjaGVzLgoKICAgIFRoaXMgd2FzIGRvbmUgaW4gY29tbWl0OiA2YmY2ZjExNGRjZGQ5N2VjM2Y4MGMyNzYxZWQ0MGUzMTIyOWQ2Yjc4CgogICAgSG93ZXZlciwgaW4gdGhlIHByb2Nlc3MsIEkgbGVmdCBvdXQgc29tZSBvZiBIZWlrbydzIGdvb2QgY2hhbmdlcy4KCiAgICBOb3cgSGVpa28ncyBhbmQgSm9uJ3MgcGF0Y2hlcyBhcmUgcHJvcGVybHkgbWVyZ2VkIGluIGZhdF9yZWdpc3Rlcl9kZXZpY2UoKQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NjM2YjYyYTZlZmM3ZjE0ZTZlNzg4Nzg4NjMxYWU3YTdmY2E0NTM3CkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTE6MTc6NDkgMjAwOCAtMDYwMAoKICAgIEV4cG9zZSBwYXJzZV9saW5lKCkgZ2xvYmFsbHkuCgogICAgQWRkIG5ldyBmdW5jdGlvbiByZWFkbGluZV9pbnRvX2J1ZmZlcigpIHRoYXQgYWxsb3dzIHRoZQogICAgb3V0cHV0IG9mIHJlYWRsaW5lIHRvIGJlIHB1dCBpbnRvIGEgcG9pbnRlciB0byBjaGFyIGJ1ZmZlci4KCiAgICBUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBvdGhlciBmdW5jdGlvbnMgYmVzaWRlcyB0aGUKICAgIG1haW4gY29tbWFuZCBsb29wIHRvIGFsc28gdXNlIHRoZSBzYW1lIGlucHV0IG1lY2hhbmlzbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3Y2E5MDUxMzQ4NmFiZDRhZTUwYmQxYjc0MDNmNDdjYzU4YzVhZDI1CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglXZWQgSmFuIDkgMDE6MTU6MjUgMjAwOCArMDEwMAoKICAgIHRyaXZpYWw6IGZpeCBjb25zZXF1ZW5jZXMgb2YgYSBiYWQgbWVyZ2UKCiAgICBGaXggd2hhdCBsb29rcyBsaWtlIGEgbWVyZ2UgYXJ0aWZhY3QuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDQ3ODVhNjk0YzAwNDU5OTZjY2YwYWM1YjhlZGY1MzFlZmMxYjczMGUKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSmFuIDMgMTA6NTE6MTUgMjAwOCArMDgwMAoKICAgIEFkZCBDdHJsIGNvbWJvIGtleSBzdXBwb3J0IHRvIHVzYiBrZXlib2FyZCBkcml2ZXIuCgogICAgQ3RybCBjb21ibyBrZXkgc3VwcG9ydCBpcyBhZGRlZCwgd2hpY2ggaXMgdmVyeSB1c2VmdWwgdG8gaW5wdXQgQ3RybC1DCiAgICBmb3IgaW50ZXJydXB0IGN1cnJlbnQgam9iLgogICAgQWxzbyBhZGQgdXNiX2V2ZW50X3BvbGwoKSBjYWxsaW5nIHRvIHVzYl9rYmRfdGVzdGMoKSwgd2hpY2ggY2FuIGdldAogICAga2V5IGlucHV0IHdoZW4gdHN0YygpIGlzIGNhbGxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwYzczODJiYzVkNWU2NGM0N2Y5NGFjMmNhNzhjYzU3NDQ0MmU4MmQKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDM6MzA6NTYgMjAwNyArMDEwMAoKICAgIGZpeCB2YXJpb3VzIGNvbW1lbnRzCgogICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgoKY29tbWl0IDc4MTdjYjIwODNkOTgyOTIzNzUyZmUwZjEyYjY3YzBlN2MwOWEwMjcKQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDM6MzA6NDYgMjAwNyArMDEwMAoKICAgIGZpeCBjb21tZW50cyB3aXRoIG5ldyBkcml2ZXJzIG9yZ2FuaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KCmNvbW1pdCBhOWI0MTBkYzdkMmE0NzIxYzQwOGIxM2FiZmMwMzc5ODgxNTBmMTQ1CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglGcmkgRGVjIDI4IDEyOjUwOjU5IDIwMDcgKzA5MDAKCiAgICBSZW1vdmUgdGhlIG9ic29sZXRlIHRlcnNlIHZlcnNpb24gb2YgZG9fbWlpKCkKCiAgICBXZSBub3cgaGF2ZSBtb3JlIHVzZWZ1bCB2ZXJzaW9uIG9mIGRvX21paSgpIGFuZCBldmVyeWJvZHkgdXNlIGl0LgogICAgR2VyYWxkIFZhbiBCYXJlbiBzYXlzOgoKICAgID4gV2hlbiBJIG9yaWdpbmFsbHkgd3JvdGUgdGhlIG1paSBjb21tYW5kIDYoISkgeWVhcnMgYWdvLCBJIHdyb3RlIGEKICAgID4gdmVyYm9zZSB2ZXJzaW9uIHRoYXQgcHJpbnRlZCBodW1hbiByZWFkYWJsZSBkZWNvbXBvc2l0aW9uIG9mIHRoZSBmbGFncywKICAgID4gZXRjLiwgYW5kIGEgdGVyc2Ugb25lIHRoYXQgZGlkbid0IHByaW50IGFzIG11Y2ggc3R1ZmYgYW5kIHRodXMgaGFkIGEKICAgID4gc21hbGxlciBtZW1vcnkgZm9vdHByaW50LgogICAgPgogICAgPiBJdCBzb3VuZHMgbGlrZSB0aGUgdGVyc2UgdmVyc2lvbiBoYXMgd2l0aGVyZWQgYW5kIGRpZWQsIGFwcGFyZW50bHkKICAgID4gcGVvcGxlIGFyZSBvbmx5IHVzaW5nIHRoZSB2ZXJib3NlIHZlcnNpb24gKHdoaWNoIGlzIHZlcnkgdW5kZXJzdGFuZGFibGUsCiAgICA+IEkgZG8gbXlzZWxmKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDAxYzY4N2FhNmUwNjViZDRmYWY4MGY3MjMzNjFlNzk4OTQxZGQ2YjAKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVRodSBEZWMgMjcgMTM6NDI6NTYgMjAwNyAtMDUwMAoKICAgIERvIG5vdCByZWZlcmVuY2Ugc2hhMS5jIHdoZW4gYnVpbGRpbmcgbWtpbWFnZS4KCiAgICByZW1vdmUgc2hhMS5vIGZyb20gbWtpbWFnZSBsaW5raW5nIHNpbmNlIGl0IGlzbid0IGFjdHVhbGx5IHVzZWQuCgogICAgU2lnbmVkLU9mZi1CeTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGI5MTczYWY3M2U1MjRkMzdjODEyZjIxMDE3M2NmODMzODVjNTE3MWEKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTU6Mzk6NTQgMjAwNyArMDkwMAoKICAgIGNvbW1vbi9jbWRfbWlpLmM6IEFkZCBzYW5pdHkgYXJnYyBjaGVjawoKICAgIElmIHR5cGUgbWlpIGNvbW1hbmQgd2l0aG91dCBhcmd1bWVudHMsIHdlIHN1ZmZlciBmcm9tIHVuaW5pdGlhbGl6ZWQgYXJndltdCiAgICBlbnRyaWVzOyBmb3IgZXhhbXBsZSB3ZSBNSVBTIGdldCBzdHVjayBieSBUTEIgZXJyb3IuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDUwMDg1NmViMTcwN2VkMTdkOTIwNGJhYTYxZGQ1OTk0OGQzYjI4OTkKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgSmFuIDkgMTk6Mzk6MzYgMjAwOCArMDEwMAoKICAgIEFQSSBmb3IgZXh0ZXJuYWwgYXBwbGljYXRpb25zLgoKICAgIFRoaXMgaXMgYW4gQVBJIGZvciBleHRlcm5hbCAoc3RhbmRhbG9uZSkgYXBwbGljYXRpb25zIHJ1bm5pbmcgb24gdG9wIG9mCiAgICBVLUJvb3QsIGFuZCBpcyBtZWFudCB0byBiZSBtb3JlIGV4dGVuc2libGUgYW5kIHJvYnVzdCB0aGFuIHRoZSBleGlzdGluZwogICAganVtcHRhYmxlIG1lY2hhbmlzbS4gSXQgaXMgc2ltaWxhciB0byBVTklYIHN5c2NhbGwgYXBwcm9hY2guIFNlZSBhcGkvUkVBRE1FCiAgICBmb3IgbW9yZSBkZXRhaWxzLgoKICAgIEluY2x1ZGVkIGlzIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHVzaW5nIHRoaXMgbmV3IGZyYW1ld29yayAoYXBpX2V4YW1wbGVzKS4KCiAgICBQbGVhc2Ugbm90ZSB0aGlzIGlzIHN0aWxsIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlLCBhbmQgaXMgdHVybmVkIG9mZiBieQogICAgZGVmYXVsdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGZlOGRkMGIyMjIwYjdjMDJiMGQ0YzljNGY5OTY3ODc5OTcwNDc3YjEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSmFuIDkgMTI6MTQ6NTUgMjAwOCAtMDYwMAoKICAgIDg2eHg6IFJlbW92ZSBjYWNoZSBjb25maWcgZnJvbSBjb25maWdzLmgKCiAgICBKdXN0IHVzZSB0aGUgc3RhbmRhcmQgZGVmaW5lcyBpbiBhc20vY2FjaGUuaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI2YTQxNzkwZjhlYmExOWFkNDUwZTE4YWU5MTM1MWRhZjQ4NWIzZTIKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgSmFuIDkgMTg6MDU6MjcgMjAwOCArMDEwMAoKICAgIEdsb2JhbGl6ZSBlbnZtYXRjaCgpCgogICAgVGhlIG5ld2x5IGludHJvZHVjZWQgQVBJIChyb3V0aW5lcyByZWxhdGVkIHRvIGVudiB2YXJzKSB3aWxsIG5lZWQgdG8gY2FsbAogICAgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgWmFiZHlyIDxhcm1vQHNlbWloYWxmLmNvbT4KCmNvbW1pdCAxZGYxNzBmOGIyYTk5ZTFlMmY5NDBmOWYwYjU2NTExZTFlNGM5ZTFmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA0IDEyOjA3OjI3IDIwMDggLTA2MDAKCiAgICBDb252ZXJ0IE1QQzg2MTBIUENEIHRvIHVzZSBsaWJmZHQuCgogICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCiAgICBsb2NhdGUgdGhlIHBjaSBhbmQgc2VyaWFsIG5vZGVzIGZvciBmaXh1cHMuCgogICAgVXNlIGNvbnNpc3RlbnQgZmR0YWRkciBhbmQgZmR0ZmlsZSBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjOTk3NGFiMGE0ZDM3MzFjZGI3NmE3NTk5ZDlmZTk0NDVkNzY0ZDYwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEphbiA0IDExOjU4OjIzIDIwMDggLTA2MDAKCiAgICA4NjEwOiBGaXggbGluZ2VyaW5nIGNvbXBpbGUgd2FybmluZ3MuCgogICAgVHVybiBvZmYgREVCVUcuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MDA3ZjMyNTFjMDk2N2FkYzEzZjJlZDhiZTFiOTI0ZGRjMzAxMjRkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDE1OjE0OjQ2IDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZmM2NDE0ZWNhNTVmMWZjMTA4ZmIxMmZjOGNkYzQzYmQ4YjQ0NjNmOQpBdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KRGF0ZToJVHVlIERlYyAxOCAwNDoyOTo1NSAyMDA3IC0wNTAwCgogICAgZml4IGVhc3lsb2dvIG9uIGJpZyBlbmRpYW4gZGV2IHN5c3RlbXMKCiAgICBkaWRudCByZWFsaXplIGhvdyBvdXQgb2Ygc2hhcGUgZWFzeWxvZ28gYWN0dWFsbHkgd2FzIHVudGlsIGkgdHJpZWQgdXNpbmcgaXQuCiAgICB0aGlzIHBhdGNoIGRvZXMgYnl0ZSBzd2FwcGluZyBhcyBuZWVkIGJlIG9uIHRoZSBpbnB1dCB0Z2EgaGVhZGVyIHNpbmNlIHRoZSB0Z2EKICAgIGlzIGluIGxpdHRsZSBlbmRpYW4gYnV0IHRoZSBob3N0IGNvdWxkIGp1c3QgYXMgd2VsbCBiZSBiaWcgZW5kaWFuLglpIGRpZG50CiAgICBib3RoZXIgdXNpbmcgYnN3YXAgbWFjcm9zIG9yIHN1Y2ggc3R1ZmYgZnJvbSBzeXN0ZW0gaGVhZGVycyBhcyBub3RoaW5nIGluCiAgICBQT1NJWCBkaWN0YXRlcyBieXRlIHN3YXBwaW5nIGZ1bmN0aW9uYWxpdHkuCgogICAgU2lnbmVkLU9mZi1CeTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IDM4ZDI5OWMyZGI4MWJkODg5YzYwMWI1ZGZjMTJjNGU4M2VmODMzMzMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CVR1ZSBEZWMgMTggMDM6MjM6MjUgMjAwNyAtMDUwMAoKICAgIGNsZWFudXAgZWFzeWxvZ28KCiAgICAtIG1ha2UgdGhlIE1ha2VmaWxlIG5vdCBzdWNrCiAgICAtIGluY2x1ZGUgcHJvcGVyIGhlYWRlcnMgZm9yIHByb3RvdHlwZXMKICAgIC0gZml4IG9idmlvdXMgYnJva2VuIGhhbmRsaW5nIG9mIHN0cmNocigpIHdoZW4gaGFuZGxpbmcgJy4nIGluIGZpbGVuYW1lcwoKICAgIFNpZ25lZC1PZmYtQnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCA4ODNlMzkyNWQ5OWE4ZGQ2OWM1YjAyMDFjYmE1YjE4ODdmODhmOTVjCkF1dGhvcjogcmFwdG9yYnJpbm9AYWltLmNvbSA8cmFwdG9yYnJpbm9AYWltLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAyMToyMzoyOCAyMDA3IC0wNTAwCgogICAgRml4IGJ1aWxkIHByb2JsZW1zIHVuZGVyIEN5Z3dpbgoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHUtYm9vdCB0byBidWlsZCB3aXRob3V0IGVycm9yIGluIGEgY3lnd2luCiAgICBlbnZpcm9ubWVudC4gIEN5Z3dpbiBkb2VzIG5vdCBkZWZpbmUgX191NjQgaW4gaXQncwogICAgaW5jbHVkZS9hc20vdHlwZXMuaCBmaWxlLiAgVGhlIC1pZGlyYWZ0ZXIgZmxhZyBpbiB0aGUgdS1ib290CiAgICBidWlsZCBjYXVzZXMgdGhlIGluY2x1c2lvbiBvZiB0aGUgY3lnd2luIHR5cGVzLmggZmlsZSBhcyBvcHBvc2VkCiAgICB0byB1LWJvdC9pbmNsdWRlL2FzbS90eXBlcy5oIGZpbGUgd2hpY2ggZG9lcyBkZWZpbmUgX191NjQuCiAgICBTdWJzZXF1ZW50bHksIHNoYTEuYyBjb21waWxlIGZhaWxzIGR1ZSB0byB1bmtub3duIHN5bWJvbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCcmlhbiBNaWxsZXIgPHJhcHRvcmJyaW5vQG5ldHNjYXBlLm5ldD4KCmNvbW1pdCA0M2VmMWMzODFmOTE5NTUwNGEyNDg4ZjVjYjkwOTIyN2ViOTdkNDc1CkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KRGF0ZToJRnJpIE5vdiAzMCAxNzoyOTo1OSAyMDA3ICswMTAwCgogICAgY21kX2JtcDogQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgZ3ppcCBjb21wcmVzc2VkIGJtcHMKCiAgICBUaGUgZXhpc3RpbmcgY29kZSBjYW4gc2hvdyBpbmZvcm1hdGlvbiBhYm91dCBhIGd6aXAgY29tcHJlc3NlZCBCTVAKICAgIGltYWdlLCBidXQgY2FuJ3QgYWN0dWFsbHkgZGlzcGxheSBpdC4KCiAgICBUaGVyZWZvcmUsIG1vdmUgdGhlIGRlY29tcHJlc3Npb24gY29kZSBvdXQgb2YgYm1wX2luZm8oKSBhbmQgdXNlIGl0IGluCiAgICBibXBfZGlzcGxheSgpIGFzIHdlbGwgaW4gb3JkZXIgdG8gZGlzcGxheSBhIGNvbXByZXNzZWQgQk1QIGltYWdlLgoKICAgIEFsc28sIGNsZWFuIHRoaW5ncyB1cCBhIGJpdCBhbmQgZml4IGEgbWVtb3J5IGxlYWsgd2hpbGUgd2UncmUgYXQgaXQuCgogICAgW2hza2lubmVtb2VuQGF0bWVsLmNvbTogYSBiaXQgb2YgcmVmYWN0b3JpbmddCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkMTk3ZmZkODE3MmM2ZmRlZjM4NzMzNDI0NjQwYTlhNDcyOTVkNmU5CkF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgpEYXRlOglUaHUgTm92IDI5IDIxOjE1OjU2IDIwMDcgKzAxMDAKCiAgICBGaXggYW5kIG9wdGltaXplIE1JSSBvcGVyYXRpb25zIG9uIEZFQyAoTVBDOHh4KSBjb250cm9sbGVycwoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgc2V2ZXJhbCBpc3N1ZXMgYXQgbGVhc3Qgb24gYSBNUEM4ODUgYmFzZWQgc3lzdGVtIHdpdGggdHdvCiAgICBGRUMgaW50ZXJmYWNlcyB1c2VkIGluIE1JSSBtb2RlLgoKICAgIDEuIFBIWSBkaXNjb3Zlcnkgc2hvdWxkIGZpcnN0IHJlYWQgUEhZX1BIWUlEUjIgcmVnaXN0ZXIgYW5kIG9ubHkgdGhlbgogICAgICAgUEhZX1BIWUlEUjEgbGlrZSBjcHUvbXBjOHh4L2ZlYy5jOjptaWlfZGlzY292ZXJfcGh5KCkgZG9lcyBpdCwKICAgICAgIG90aGVyd2lzZSB0aGUgdmFsdWVzIHJlYWQgYXJlIHdyb25nLiBBbHNvIG5vdGljZSwgdGhhdCBQSFkgZGlzY292ZXJ5CiAgICAgICBjYW5ub3Qgd29yayBvbiBNUEM4OHggLyBNUEM4N3ggaW4gc2V0dXBzIHdpdGggYm90aCBGRUNzIGFjdGl2ZSBhdCBhbGwKICAgICAgIGluIGl0cyBwcmVzZW50IGZvcm0sIGJlY2F1c2UgZm9yIGJvdGggaW50ZXJmYWNlcyB0aGUgcmVnaXN0ZXJzIGZyb20gRkVDCiAgICAgICAxIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIG92ZXIgTUlJLgoKICAgIDIuIFJlbW92ZSBjb2RlIGR1cGxpY2F0aW9uIGZvciByZXNldHRpbmcgdGhlIEZFQyBieSBpc29sYXRpbmcgaXQgaW50byBhCiAgICAgICBzZXBhcmF0ZSBmdW5jdGlvbi4KCiAgICAzLiBJbml0aWFsaXplIE1JSSBvbiBGRUMgMSB3aGVuIGNvbW11bmljYXRpbmcgb3ZlciBGRUMgMiBpbiBmZWNfaW5pdCgpLgoKICAgIDQuIE9wdGltaXplIG1paV9pbml0KCkgdG8gb25seSByZXNldCB0aGUgRkVDIDEgY29udHJvbGxlciBvbmNlLgoKICAgIDUuIEZpeCBhIHR5cG8gaW4gbWlpX2luaXQoKSB1c2luZyBpbmRleCBpIGluc3RlYWQgb2YgaiB0aHVzIHBvdGVudGlhbGx5CiAgICAgICBsZWFkaW5nIHRvIHVucHJlZGljdGFibGUgcmVzdWx0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgNmE1ZTFkNzViZjEwNmZhMTU3ZTljZTY4YmNhZjRiMTNlOGExZDIxNApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAyMCAxMzoxNDoyMCAyMDA3ICswMTAwCgogICAgRml4IGVuZGlhbm5lc3MgY29udmVyc2lvbnMgaW4gcnRsODE2OSBkcml2ZXIKCiAgICBJdCBpcyB1bmNsZWFyIG9uIHdoYXQgcGxhdGZvcm1zIHRoaXMgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCwgc2luY2UKICAgIG5vb25lIHVwIHRvIG5vdyBkZWZpbmVzIENPTkZJR19SVEw4MTY5IGluIHRoZSBib2FyZCBjb25maWd1cmF0aW9uCiAgICBoZWFkZXIuIE5vdyBpdCBoYXMgYmVlbiBmaXhlZCBmb3IgYSBiaWctZW5kaWFuIG1wYzgyNDEgYmFzZWQKICAgIGxpbmtzdGF0aW9uIHBsYXRmb3JtLiBUaGlzIHBhdGNoIHByZXNlbnRzIHRoZSBuZWNlc3NhcnkgZW5kaWFubmVzcwogICAgY29udmVyc2lvbiBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgNTg2OTRmOTcwOWMwYzNlMzE3OGUzNDlhZTc0OGQ5OGNmYjBjNjM5YQpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMyAxMDo1MToxNSAyMDA4ICswODAwCgogICAgQWRkIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgdG8gdXNiIGtleWJvYXJkIGRyaXZlci4KCiAgICBDdHJsIGNvbWJvIGtleSBzdXBwb3J0IGlzIGFkZGVkLCB3aGljaCBpcyB2ZXJ5IHVzZWZ1bCB0byBpbnB1dCBDdHJsLUMKICAgIGZvciBpbnRlcnJ1cHQgY3VycmVudCBqb2IuCiAgICBBbHNvIGFkZCB1c2JfZXZlbnRfcG9sbCgpIGNhbGxpbmcgdG8gdXNiX2tiZF90ZXN0YygpLCB3aGljaCBjYW4gZ2V0CiAgICBrZXkgaW5wdXQgd2hlbiB0c3RjKCkgaXMgY2FsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDA3ZWIwMjY4N2YwMDg3MjE5NzRhMmZiNTRjZDdmZGMyODAzM2FiM2MKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDkgMTM6NDM6MzggMjAwOCArMDEwMAoKICAgIENvZGluZyBTdHlsZSBjbGVuYXVwOyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjMjZhY2MxYTQzYjMxZGRjYTVhZGQ0MmZkMDM2MGZmMGVlZTkwYzgwCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTc6MTM6MTEgMjAwNyArMDEwMAoKICAgIFJlbW92ZSBiaXQgc3dhcHBpbmcgaW4gWGlsaW54IFNwYXJ0YW4gYml0ZmlsZSBsb2FkaW5nCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bm5lY2Vzc2FyeSBiaXQgc3dhcHBpbmcgd2hlbgogICAgYm9vdGluZyAuYml0IGZpbGVzIHdpdGggdGhlICdmcGdhIGxvYWRiJyBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDQzN2ZjNzMyN2YwNjExZjgyOTM3ODU4ZjJkODBlNGNkNjFiNDA5ODQKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzoxMzowNSAyMDA3ICswMTAwCgogICAgRml4IE1TQiBjaGVjayBpbiBYaWxpbnggU3BhcnRhbiBzbGF2ZSBzZXJpYWwgbW9kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDNiZmY0ZmZhMzM3MjlhNDI2NDVlMzI4YTIxZThkMTY0ODg4NzI5NTgKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzoxMjo1NiAyMDA3ICswMTAwCgogICAgQWRkIG5ldyBYaWxpbnggU3BhcnRhbiBGUEdBIHR5cGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMjFkMzlkNTk4YzRlNzRkNGU3NzYxNjA4Yzc5ZGJhMjcxNWQ0MGE0YwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE3OjEyOjQzIDIwMDcgKzAxMDAKCiAgICBBZGQgcHJlIGFuZCBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2tzIGZvciBTcGFydGFuIEZQR0FzCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGZvciBTcGFydGFuMi8zIEZQR0FzLgogICAgcHJlIGFuZCBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2sgYXJlIG5vdyBvcHRpb25hbCBhbmQKICAgIG5vdCBjYWxsZWQgd2hlbiB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBzZXQgdG8gTlVMTC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCAwMTMzNTAyZTM5ZmY4OWI2N2MyNmNiNDAxNWUwZTdlOGQ5NTcxMTg0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTc6MTI6MzQgMjAwNyArMDEwMAoKICAgIEltcHJvdmUgY29uZmlndXJhdGlvbiBvZiBGUEdBIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgRlBHQSBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbiB0aHJvdWdoCiAgICB0aGUgQ09ORklHX0ZQR0EgYml0bWFzayBjb25maWd1cmF0aW9uIG9wdGlvbi4KCiAgICBTZWUgUkVBRE1FIGZvciB0aGUgbmV3IG9wdGlvbnM6CgoJQ09ORklHX0ZQR0EsCglDT05GSUdfRlBHQV88dmVuZG9yPiwKCUNPTkZJR19GUEdBXzxmYW1pbHk+CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgOTVjNmJjN2Q0YTM1ODhiNDUyYmFjYTYxMGY4Yzc5NWE4MzYzMDQ3NwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU1OjE3IDIwMDcgKzAxMDAKCiAgICBBZGQgRXBzb24gUlg4MDI1IFJUQyBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMTIwOGEyZGZkZTAyYmVkZDNjNWJkYTI5YTYwNjYzMmI4ZTBiZTA1OApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU3OjIzIDIwMDcgKzAxMDAKCiAgICBzZXJpYWw6IE1ha2UgZGVmYXVsdF9zZXJpYWxfY29uc29sZSgpIGEgd2VhayBmdW5jdGlvbgoKICAgIFdpdGggdGhpcyBwYXRjaCBpdCBpcyBwb3NzaWJsZSB0byByZWltcGxlbWVudCBkZWZhdWx0X3NlcmlhbF9jb25zb2xlKCkKICAgIGluIGJvYXJkIHNwZWNpZmljIGNvZGUuIFRoaXMgd2lsbCBiZSBkb25lIGluIHRoZSB1cGNvbW1pbmcgUE1DNDQwCiAgICBVLUJvb3QgcG9ydC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgbHdtb24gYm9hcmQgbWFpbnRhaW5lciB0bwogICAgcmVtb3ZlIHRoZSAnI2lmICFkZWZpbmVkKENPTkZJR19MV01PTikgLi4uJyBmcm9tIGNvbW1vbi9zZXJpYWwuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBkMTY0NzFlZTA1Y2U3YWM1MzkyYmMwZTlmZTNmZjRiNThhNzY4ZjMzCkF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KRGF0ZToJV2VkIERlYyAxOSAxNDoxNDo0NyAyMDA3ICswMTAwCgogICAgYWRkICd0ZXJtaW5hbCBwcm9ncmFtJyBmdW5jdGlvbmFsaXR5CgogICAgVGhpcyBwYXRjaCBhZGRzIGEgJ2N1JyBsaWtlIHNlcmlhbCB0ZXJtaW5hbCBjb21tYW5kIHRvIHUtYm9vdAogICAgdXNpbmcgd2hpY2ggeW91IGNhbiBhY2Nlc3Mgb3RoZXIgc2VyaWFsIHBvcnRzIGZyb20gdGhlIHN5c3RlbSBjb25zb2xlLgoKICAgIE9wZW5Nb2tvIHVzZXMgdGhpcyBpbiB0aGVpciBOZW8xOTczIHBob25lcyB0byBnZXQgYWNjZXNzIHRvIHRoZSBHU00KICAgIE1vZGVtIGFuZCBHUFMgY2hpcCBmcm9tIHRoZSBib290bG9hZGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgNjJkNGY0MzY1MzQxNTc2ZjVhNTMwN2IyYjIwNWE1YWEyZTNjNmJlNgpBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CkRhdGU6CVdlZCBEZWMgMTkgMTQ6MTI6NTMgMjAwNyArMDEwMAoKICAgIFJlLWludHJvZHVjZSB0aGUgJ25hbmQgcmVhZC5vb2InIGFuZCAnbmFuZCB3cml0ZS5vb2InIGNvbW1hbmRzCiAgICB0aGF0IHVzZWQgdG8gZXhpc3Qgd2l0aCB0aGUgbGVnYWN5IE5BTkQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Cgpjb21taXQgZjU0MGM0MmQ5NTY0ODU0YjE5Y2U5YmJiNzBhZmZlMTcyNTI5ZmU3MApBdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+CkRhdGU6CVdlZCBEZWMgMTkgMTQ6MDk6NTggMjAwNyArMDEwMAoKICAgIEZpeCBidWlsZGluZyB3aXRoIENSQU1GUyBidXQgbm90IEpGRlMyIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgoKY29tbWl0IDIzZDBiYWY5NjdmZWNkYWYxODA0ZjA0NWY2MzM5MzM3YzU2MDdlZWMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjUyOjU4IDIwMDcgKzAxMDAKCiAgICBBbGxvdyBDT05GSUdfQVVUT19DT01QTEVURSBhbmQgY29tbWFuZCBoaXN0b3J5IENPTkZJR19DTURMSU5FX0VESVRJTkcgYXQgdGhlIHNhbWV0aW1lCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyMzc3NmZmMjkyOTY2YTg1ZDgxMTEyNjkzMzgzMGJlZDQ4MjExODI2CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIERlYyAxMSAxMDo1MzoxMiAyMDA3ICswMTAwCgogICAgQVJNOiBzdXBwb3J0IGJvYXJkLXNwZWNpZmljIGV0aGVybmV0IFBIWSBpbml0CgogICAgQWRkIHVudGlsIHRoZSBuZXcgcGh5bGliIHdpbGwgYmUgYXJyaXZlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgN2I3NGViZTcyM2U1NzZiYWVkZjVhOGI2MjQwNTg5YjE5Yjg0NWExYgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBEZWMgOCAxNjozNDowOCAyMDA3ICswMTAwCgogICAgSVhQOiBBZGQgZnVsbCBiYXVkLXJhdGUgc3VwcG9ydCBmb3IgaXhwNDJ4LCBpeHA0NXggYW5kIGl4cDQ2eAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTJkZjRkYTMxYjFhMWU0MWUzZTllMTM1OGNmYzUyYjgwNjA0NmNlMQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBEZWMgOSAxMTowMToxMCAyMDA3ICswMTAwCgogICAgQWRkIG1pc3NpbmcgZmlsZSBpbiBnaXRpZ25vcmUgYW5kIGNvbW1lbnRzCgogICAgYmFzZWQgb24gTGludXggc291cmNlIHRyZWUncyAuZ2l0aWdub3JlIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA0MzVkYzhmY2RiM2JjNjFkM2Q0OTA3NzNhOGYzNjlmOThhMjBjODY4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDExOjM2OjIxIDIwMDggKzAxMDAKCiAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYjJlMjE0MmM1MDBjNDhhNTdmMThmOWRkMzBlNjZjMTNjYWVhMDk3MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjM4OjU4IDIwMDggKzAxMDAKCiAgICBQT1NUOiBFeGVjdXRlIFNQUiB0ZXN0IGFmdGVyIHJlbG9jYXRpb24KCiAgICBPbiBMV01PTjUgd2Ugbm93IHVzZSBkLWNhY2hlIGFzIGluaXQtcmFtIGFuZCBzdGFjay4gVGhlIFNQUiBQT1NUIHRlc3QgdXNlcwogICAgc2VsZiBtb2RpZnlpbmcgY29kZSBhbmQgdGhpcyBkb2Vzbid0IHdvcmsgd2l0aCBzdGFjayBpbiBkLWNhY2hlLCBzaW5jZQogICAgSSBjYW4ndCBtb3ZlIHRoZSBjb2RlIGZyb20gZC1jYWNoZSB0byBpLWNhY2hlLiBXZSBtb3ZlIHRoZSBTUFIgdGVzdCB0bwogICAgYmUgZXhlY3V0ZWQgYSBsaXR0bGUgbGF0ZXIsIGFmdGVyIHJlbG9jYXRpb24uIFRoZW4gc3RhY2sgaXMgbG9jYXRlZCBpbgogICAgU0RSQU0gYW5kIHRoaXMgc2VsZi1tb2RpZnlpbmcgY29kZSBpcyBubyBwcm9ibGVtIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhmMjRlMDYzN2FlMTEzNTAwZDhiZDYwZDgwZDU3YWZjYzBhYThiZGUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gOSAxMDoyODoyMCAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBDaGFuZ2UgTFdNT041IHRvIG5vdCB1c2UgT0NNIGZvciBpbml0LXJhbSBhbmQgUE9TVCBhbnltb3JlCgogICAgVGhpcyBwYXRjaCBjb25maWd1cmVzIHRoZSBMV01PTjUgcG9ydCB0byB1c2UgZC1jYWNoZSBhcyBpbml0LXJhbSBhbmQKICAgIHRoZSB1bnVzZWQgR1BUMF9DT01QNiBhcyBQT1NUIFdPUkQgc3RvcmFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTc1NGY1MGI3MTAxOTRmODg2YjZmMjgzMTgwM2Q4OTYwMTcxYTE0ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjI1OjQ2IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBDRkdfUE9TVF9BTFRfV09SRF9BRERSIHRvIHN1cHBvcnQgbm9uIE9DTSBQT1NUIFdPUkQgc3RvcmFnZQoKICAgIFRoZSBwcml2aW91cyA0eHggUE9TVCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRlZCBzdG9yaW5nIHRoZSBQT1NUCiAgICBXT1JEIGluIE9DTS4gU2luY2Ugd2UgbmVlZCB0byByZXNlcnZlIHRoZSBPQ00gb24gTFdNT041IGZvciB0aGUgbG9nYnVmZmVyCiAgICB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBQT1NUIFdPUkQgaW4gc29tZSBvdGhlciBub24gdm9sYXRpbGUgbG9jYXRpb24uCiAgICBUaGlzIHBhdGNoIGFkZHMgQ0ZHX1BPU1RfQUxUX1dPUkRfQUREUiB0byBzcGVjaWZ5IGFuIGFkZHJlc3MgZm9yIHN1Y2gKICAgIGEgbG9jYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUwMmM1MjFkOTRiNDVkN2IwNWFhNTIyZTRjY2RlNmI3NGJmNWZlNTcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gOSAxMDoyMzoxNiAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBBZGQgNDR4IGNhY2hlIGxvY2tpbmcgdG8gYmV0dGVyIHN1cHBvcnQgaW5pdC1yYW0gaW4gZC1jYWNoZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2NraW5nIHRoZSBpbml0LXJhbS9zdGFjayBpbiBkLWNhY2hlLAogICAgc28gdGhhdCBvdGhlciByZWdpb25zIG1heSB1c2UgZC1jYWNoZSBhcyB3ZWxsCgogICAgTm90ZSwgdGhhdCB0aGlzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbG9ja3MgZXhhY3RseSA0ayBvZiBkLWNhY2hlLAogICAgc28gcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHlvdSBkb24ndCBkZWZpbmUgYSBiaWdnZXIgaW5pdC1yYW0gYXJlYS4gVGFrZQogICAgYSBsb29rIGF0IHRoZSBsd21vbjUgNDQwRVB4IGltcGxlbWVudGF0aW9uIGFzIGEgcmVmZXJlbmNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGRiODk2MDFhOGQyOWU4MDhkYjQ1MDM2Njc1MmZmZGM2MjY3YzUzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiA5IDEwOjE2OjMzIDIwMDggKzAxMDAKCiAgICBGaXggbWVtc2V0IGJ1ZyBpbiBleHQyZnNfcmVhZF9maWxlKCkKCiAgICBleHQyZnNfcmVhZF9maWxlKCkgaGFkIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgc3dhcHBlZC4KCiAgICBQb2ludGVkIG91dCBieSBNaWtlIE1vbnRvdXIsIDE5IERlYyAyMDA3IDIyOjM0OjI1IC0wODAwCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAzMmQ2ZjFiYzA5MTc1ZjNiNzc0Njk3NzFlODM5YmM3MjU1YTlmMjJlCkF1dGhvcjogTWFya3VzIEtsb3R6YsO8Y2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA1IDA4OjE3OjE1IDE5ODggKzAxMDAKCiAgICBGaXggcHJvYmxlbXMgd2l0aCB1c2Igc3RvcmFnZSBkZXZpY2VzIG9uIE1QQzUyMDAgL1RRTTUyMDAKCiAgICBUaGUgTVBDNTIwMCBPSENJIGNvbnRyb2xsZXIgb3BlcmF0ZXMgaW4gYmlnIGVuZGlhbiwgc28KICAgIENGR19PSENJX0JFX0NPTlRST0xMRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBpdCB0byB3b3JrIHByb3Blcmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgNDZmNmU1MDE5MDQ4YjEwM2Q3NjkzZDUzMTBkZTBmMWNmYmFmNGMxOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOCAyMjo1ODoyNyAyMDA4ICswMTAwCgogICAgRml4IGNvbXBpbGUgcHJvYmxlbSB3aXRoIG5ldyBlbnYgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY0YjM3MjdiOTc3OWQ4NjEyN2NkNTc2ZTM5MmE5ODdkZTVlYmI5ZmQKQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUdWUgTm92IDI3IDEwOjIzOjIwIDIwMDcgKzAxMDAKCiAgICB0b29sczogZml4IGZ3X3ByaW50ZW52IHRvb2wgdG8gY29tcGlsZSBhZ2FpbgoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZndfcHJpbnRlbnYvZndfc2V0ZW52IHVzZXJzcGFjZSB0b29sIHRvIGluY2x1ZGUKICAgIHRoZSBjb3JyZWN0IE1URCBoZWFkZXIgaW4gb3JkZXIgdG8gY29tcGlsZSBhZ2FpbnN0IGN1cnJlbnQga2VybmVsCiAgICBoZWFkZXJzLiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIHByZXNlcnZlZCBieSBpbnRyb2R1Y2luZyBhbiBvcHRpb24KICAgIE1URF9WRVJTSU9OIHdoaWNoIGNhbiBiZSBzZXQgdG8gIm9sZCIgZm9yIGNvbXBpbGF0aW9uIHVzaW5nIHRoZSBvbGQgTVRECiAgICBoZWFkZXJzLiBBbG9uZyB3aXRoIHRoaXMgYSBudW1iZXIgb2Ygd2FybmluZ3MgYXJlIGZpeGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMWY4NDAyMWE4NWFiZWI4MzdkMmNlMGRjODQyOTdiNGYxZDQ1ZDUxNgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgSmFuIDggMTU6NDA6MDkgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogYXNzaWduIFBDSSBpbnRlcnJ1cHRzIG9uIHNldXFvaWEgYm9hcmRzCgogICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyByZWx5IG9uIGFzc2lnbmVkIFBDSSBpbnRlcnJ1cHRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDZlOTIzM2QzMGFmZTU3Y2I2ZTE0OGZiZmE0ODk1ZTc4MTAxOTZmYWMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE1OjUwOjQ5IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IE1vdmUgY3B1L3BwYzR4eC92ZWNudW0uaCBpbnRvIGluY2x1ZGUgcGF0aAoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSB1c2Ugb2YgNHh4IGludGVycnVwdCB2ZWN0b3IgbnVtYmVyIGRlZmluZXMKICAgIGluIGJvYXJkIHNwZWNpZmljIGNvZGUgb3V0c2lkZSBjcHUvcHBjNHh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDU4MGQxZDMxODZhMmJjNmRiZGI2MjY5NDFiNzE2ZGFlMTc4OGU1MWUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDE1OjM5OjAxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBVSUMyIHZlY3RvciBudW1iZXIgYmFzZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGZmNWZiOGE2Y2NiYTU2ZTM0ODJkMGUyOTdkOGNmYjdmYWEwNDA4MTEKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVHVlIEphbiA4IDEyOjQ5OjU4IDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBQTEIvUENJIGRpdmlkZXIgZm9yIFBNQzQ0MCBib2FyZAoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgUExCL1BDSSBkaXZpZGVyIHdoZW4gcnVubmluZyBhdAogICAgNDAwTUh6IENQVSBmcmVxdWVuY3kgZnJvbSA0IHRvIDMgd2hpY2ggcmVzdWx0cyBpbiA0NE1IeiBQQ0kgc3luYyBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3ZDVkNzU2MzMxNzQ4NjczMTZhMGMwZjJmY2E1Y2ViMmNmMzEyY2RlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBKYW4gOCAxMToxMzowOSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBEaXNhYmxlIGVycm9yIG1lc3NhZ2Ugd2hlbiBubyBOQU5EIGNoaXAgaXMgaW5zdGFsbGVkIG9uIFBNQzQ0MAoKICAgIEFkZCBDRkdfTkFORF9RVUlFVF9URVNUIG9wdGlvbiB0byBkaXNhYmxlIGVycm9yIG1lc3NhZ2Ugd2hlbgogICAgbm8gTkFORCBjaGlwIGlzIGluc3RhbGxlZCBvbiBQTUM0NDAgYm9hcmRzLgoKICAgIERpc2FibGUgYSBjb3VwbGUgb2YgY29uZmlnIGRlZmluZXMgdGhhdCBhcmUgb25seSB1c2VkIGZvciBOQU5EX1VfQk9PVC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBjODNkN2NhNGRhZGQ0NGFlNDMwMjM1MDc3ZjYzYjY0YTExZjM2ZjZlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA4IDIyOjU4OjI3IDIwMDggKzAxMDAKCiAgICBGaXggY29tcGlsZSBwcm9ibGVtIHdpdGggbmV3IGVudiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmRlNjZiMzU0MjYzMTJhMjExNzRhOWJmMDU3NmEwOTRlMjkwNGJlYQpBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjcgMTA6MjM6MjAgMjAwNyArMDEwMAoKICAgIHRvb2xzOiBmaXggZndfcHJpbnRlbnYgdG9vbCB0byBjb21waWxlIGFnYWluCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBmd19wcmludGVudi9md19zZXRlbnYgdXNlcnNwYWNlIHRvb2wgdG8gaW5jbHVkZQogICAgdGhlIGNvcnJlY3QgTVREIGhlYWRlciBpbiBvcmRlciB0byBjb21waWxlIGFnYWluc3QgY3VycmVudCBrZXJuZWwKICAgIGhlYWRlcnMuIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgcHJlc2VydmVkIGJ5IGludHJvZHVjaW5nIGFuIG9wdGlvbgogICAgTVREX1ZFUlNJT04gd2hpY2ggY2FuIGJlIHNldCB0byAib2xkIiBmb3IgY29tcGlsYXRpb24gdXNpbmcgdGhlIG9sZCBNVEQKICAgIGhlYWRlcnMuIEFsb25nIHdpdGggdGhpcyBhIG51bWJlciBvZiB3YXJuaW5ncyBhcmUgZml4ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCBhZDMwMDZmZTdlODQ2NjcwMjE3NTNiNzQyNDdiMGJhZmQ5N2JhMzVmCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEphbiA3IDIzOjQ3OjMyIDIwMDggLTA1MDAKCiAgICBMSUJGRFQ6IHVzZSBtZW1tb3ZlKCkgaW5zdGVhZCBvZiBtZW1jcHkoKQoKICAgIFRoaXMgaXMgcGFydGlhbCBwYXRjaCBmcm9tIHRoZSBEVEMvbGliZmR0CiAgICBjb21taXQgIDY3YjZiMzNiOWI0MTNhNDUwYTcyMTM1YjVkYzU5YzBhMWUzM2U2NDcKICAgIEF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CiAgICBEYXRlOiAgIFdlZCBOb3YgMjEgMTE6NTY6MTQgMjAwNyArMTEwMAoKCVRoZSBwYXRjaCBhbHNvIGZpeGVzIG9uZSBnZW51aW5lIGJ1ZyBjYXVnaHQgYnkgdmFsZ3JpbmQgLQoJX3BhY2tibG9ja3MoKSBpbiBmZHRfcncuYyB3YXMgdXNpbmcgbWVtY3B5KCkgd2hlcmUgaXQgc2hvdWxkIGhhdmUgYmVlbgoJdXNpbmcgbWVtbW92ZSgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYWVjNzEzNWJjMzAwZTMzNDBkMThmMjAzMzQ3ZWUwMGM1YjVmNjhjMApBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgpEYXRlOglNb24gRGVjIDE3IDE0OjQyOjA3IDIwMDcgKzExMDAKCiAgICBsaWJmZHQ6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24gKHBhdGNoIHRoZSBzZXZlbnRoKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBtb3JlIGRvY3VtZW50aW5nIGNvbW1lbnRzIHRvIGxpYmZkdC5oLiAgU3BlY2lmaWNhbGx5LAogICAgdGhlc2UgZG9jdW1lbnQgdGhlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIChub3QgaW5jbHVkaW5nIGZkdF9vcGVuX2ludG8oKQogICAgYW5kIGZkdF9wYWNrKCksIGZvciBub3cpLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgoKY29tbWl0IDlkNDQ1MGI1YWRjMzY2MjNlOWMxZGUxZjkyNTM5ZGI3N2FkMGM1N2UKQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KRGF0ZToJTW9uIERlYyAxNyAxNDo0MTo1MiAyMDA3ICsxMTAwCgogICAgbGliZmR0OiBBZGQgbW9yZSBkb2N1bWVudGF0aW9uIChwYXRjaCB0aGUgc2l4dGgpCgogICAgVGhpcyBwYXRjaCBhZGRzIHNvbWUgbW9yZSBkb2N1bWVudGluZyBjb21tZW50cyB0byBsaWJmZHQuaC4KICAgIFNwZWNpZmljYWxseSB0aGlzIGRvY3VtZW50cyBhbGwgdGhlIHdyaXRlLWluLXBsYWNlIGZ1bmN0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KCmNvbW1pdCBiNjBhZjNkNGMxNjgwNDg3ZWUzN2UxMWFhMWIzZGI2ZGVjMDRkOGYwCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IERlYyAyOSAyMjo0NToyNyAyMDA3IC0wNTAwCgogICAgRmluZSBncmFpbmVkIHBlciBwcm9wZXJ0eSAvY2hvc2VuIHVwZGF0aW5nLgoKICAgIEltcGxlbWVudCBhIHN1Z2dlc3Rpb24gYnkgU2NvdHQgV29vZCB0byBtYWtlIHRoZSAvY2hvc2VuIGhhbmRsaW5nIGZpbmUKICAgIGdyYWluZWQuICBEb24ndCBvdmVyd3JpdGUgcHJlLWV4aXN0aW5nIHByb3BlcnRpZXMgb24gYSBwZXItcHJvcGVydHkgYmFzaXMsCiAgICBzbyBpZiAvY2hvc2VuIGV4aXN0cyBidXQgYSBuZWNlc3NhcnkgL2Nob3Nlbi9wcm9wZXJ0eSBkb2Vzbid0LCBpdCBnZXRzCiAgICBjcmVhdGVkLiAgSWYgYSAvY2hvc2VuIHByb3BlcnR5IGV4aXN0cywgaXQgaXMgTk9UIG92ZXJ3cml0dGVuIHVubGVzcyB0aGUKICAgICJmb3JjZSIgZmxhZyBpcyB0cnVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMjM4Y2I3YTQyM2M2ZWFhMzY0OTZlZmI3ODhjZmI5Nzk4Y2VhN2Y5NQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBKYW4gNSAxNTozMzoyOSAyMDA4IC0wNTAwCgogICAgSW1wcm92ZSB0aGUgRkRUIGhlbHAgbWVzc2FnZS4KCiAgICBBZGQgYSBub3RlIHRoYXQgImZkdCBjb3B5IiBtYWtlcyB0aGUgbmV3IGFkZHJlc3MgYWN0aXZlLgogICAgUmVtb3ZlIG1vc3Qgb2YgdGhlIGV4dHJhIGhpbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGZkdCBoZWxwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgZWE2ZDhiZTE1M2NlYWYxNjk1OGY4MDA5Y2VhNmQ3NWYzZmY1OGQ5MgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBKYW4gNSAxNDo1MjowNCAyMDA4IC0wNTAwCgogICAgU3VwcG9ydCBzZXR0aW5nIEZEVCBwcm9wZXJ0aWVzIHdpdGggb3B0aW9uYWwgdmFsdWVzLgoKICAgIEZpeCBhIGJ1ZyBmb3VuZCBhbmQgZG9jdW1lbnRlZCBieSBCYXJ0bG9taWVqIFNpZWthIHdoZXJlIHRoZSBvcHRpb25hbAogICAgdmFsdWUgb24gImZkdCBzZXQgPHBhdGg+IDxwcm9wPiBbPHZhbD5dIiB3YXNuJ3Qgb3B0aW9uYWwuCgogICAgPT4gZmR0IG1rbm9kZSAvIHRlc3Rub2RlCiAgICA9PiBmZHQgcHJpbnQgL3Rlc3Rub2RlCiAgICB0ZXN0bm9kZSB7CiAgICB9OwogICAgPT4gZmR0IHNldCAvdGVzdG5vZGUgdGVzdHByb3AKICAgID0+IGZkdCBwcmludCAvdGVzdG5vZGUKICAgIHRlc3Rub2RlIHsKCSAgICB0ZXN0cHJvcDsKICAgIH07CgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAyMmZiMjI0NmRmOTFiZmM4NDBkODdmMGM1OTEwODE4YmFkNTU1NzdhCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTE6NTY6MzAgMjAwNyArMDEwMAoKICAgIEFkZCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIHRvIGZkdF9zdXBwb3J0LmgKCiAgICBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIGlzIHVzZWQgYnkgc2V2ZXJhbCA0eHggYm9hcmRzIGFuZCBpdCdzCiAgICBtaXNzaW5nIGluIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIuIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyBhCiAgICB3YXJuaW5nIHdoZW4gYnVpbGRpbmcgVS1Cb290IGZvciBzdWNoIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODAyYjc2OWJhYzE3YjA1NjBkMzUzNWE0MmM1MDI0NjllZTE5MGNkMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA4IDE4OjM5OjMwIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJldHVybiAwIG9uIHN1Y2Nlc3MgaW4gNHh4IGV0aGVybmV0IGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2Nzc1YzY4NjgzYTUzYzdhYmM3Nzg3NzQ2NDFhYWM2ZjgzM2EyY2JmCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiA4IDA5OjU5OjQ5IDIwMDggLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggbWlzc2VkIHBjaV9ob3NlIC0+IGhvc2UgY29udmVyc2lvbiBmb3IgbmV3IGxpYmZkdCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NGZhYjI1ZjVmMWE3ZDFjMGNjNjNjMTdlODEzZWE4OTQzZmU0OWM3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyAyMCAxNjoyODozNCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogcm0gcmVtYWluaW5nIEZMQVRfVFJFRSBjb2RlCgogICAgLi5pbiBib2FyZCBwY2kuYyBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjM0NThkMmNkNTVkMDE3MzJlMzBhNzZkODk4YWZkOTllODcxY2Q2NwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTU6NTc6MjggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHJlbW92ZSBGTEFUX1RSRUUgY29kZQoKICAgIG5lZWQgdG8gcm0gaXQgZnJvbSBwY2kgY29kZSwgdG9vIQoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWI4YmM2MDZjNjE0NTY1NjZhZjY5MTJmODE4YTE1M2I2YjA2ZjI0MgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTQ6MDk6MjIgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGNvbnZlcnQgdG8gdXNpbmcgZG9fZml4dXBfKigpCgogICAgY29udmVydCB0byB1c2luZyBzaW1wbGVyIG1wYzg1eHggc3R5bGUgZmR0IHVwZGF0ZSBjb2RlOyBzdHJlYW1saW5lIGJ5CiAgICBlbGltaW5hdGluZyBtYWNyb3MgT0ZfU09DLCBPRl9DUFUsIGV0Yy4gd2hpY2ggYWxsb3dzIHVzIHRvIHJtCiAgICB0aGUgb2xkIHNjaG9vbCBGTEFUX1RSRUUgY29kZSBmcm9tIDgzeHggKHNpbmNlIHRoZSBzYmM4MzQ5IHdhcyBqdXN0CiAgICBjb252ZXJ0ZWQgb3ZlciB0byB1c2luZyBsaWJmZHQpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTQ5Njg2NWVjYzMxYTJmZTJmOWFiZmU3OTgzMzRiYjAyYWFmMDVhYgpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUaHUgRGVjIDIwIDEyOjU4OjUxIDIwMDcgLTA1MDAKCiAgICBzYmM4MzQ5OiBlbmFibGUgbGliZmR0IGJ5IGRlZmF1bHQgb24gV1JTIFNCQzgzNDkgYm9hcmQuCgogICAgTWFrZSBsaWJmZHQgdGhlIGRlZmF1bHQgZm9yIHRoZSBXUlMgU0JDODM0OSBib2FyZC4KICAgIFBhcmFsbGVsIG9mIGNvbW1pdCAzNWNjNGU0ODIzNjY4ZTg3NDU4NTQ4OTljZmFlZGQ0NDg5YmViMGVmCiAgICBkb25lIGZvciB0aGUgb3RoZXIgODN4eCBiYXNlZCBib2FyZHMuICBBbHNvIGZpeCBhIHR5cG8gaW4gQ09ORklHX1BDSS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KCmNvbW1pdCAyNDA4YjNmMjBiY2JkZDljNmMzOTdjZDAzYWIwZDcxZDU0NjgwYTQwCkF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CkRhdGU6CVRodSBEZWMgMjAgMTI6NTg6MTYgMjAwNyAtMDUwMAoKICAgIHNiYzgzNDk6IG1pZ3JhdGUgYm9hcmQgdG8gbGliZmR0CgogICAgVGhpcyBhZGRzIGxpYmZkdCBzdXBwb3J0IGNvZGUgZm9yIHRoZSBXaW5kIFJpdmVyIHNiYzgzNDkgYm9hcmQuCgogICAgUGFyYWxsZWwgb2YgY29tbWl0IDNmZGU5ZThiMjJjZmJkN2FmNDg5MjE0NzU4Zjk4MzlhMjA2NTc2Y2IgZm9yCiAgICB0aGUgb3RoZXIgRnJlZXNjYWxlIDgzeHggYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgoKY29tbWl0IDI3YTI1NmE5MGNjODYzOTJhYzliZjAwMzlhM2FmZTYzOGVjMmMxOGQKQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KRGF0ZToJVGh1IERlYyAyMCAxMjo1NjoxOSAyMDA3IC0wNTAwCgogICAgc2JjODM0OTogUmVtb3ZlIGJvYXJkIHNwZWNpZmljIEVDQyBjb2RlCgogICAgRUNDIGNvZGUgaXMgbm93IHNoYXJlZCBmb3IgYWxsIDgzeHggYm9hcmRzLCBzbyByZW1vdmUgYm9hcmQgc3BlY2lmaWMgb25lLgogICAgU2VlIGNvbW1pdCBkYWFiOGM2N2QyZGVmZWY3M2RjMjZhYjA3ZjBjM2FmZDFiMDVkMDE5IGZvciByZWZlcmVuY2UuCgogICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Cgpjb21taXQgYTFlMWFjODQ5MjQ5MzEwZTVlMmU1YzcxNDhlOWZiMzUzYTgzMTdhNwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgMjAgMDE6MzA6NDggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IFJlbW92ZSBDT05GSUcgb3B0aW9ucyByZWxhdGVkIHRvIE9GIHRoYXQgd2UgZG9udCB1c2UgKG9uIDgzN3gpCgogICAgY29udGludWF0aW9uIG9mIGNvbW1pdCAzNzM5NWZhMmIwZDlkNjE3ZjI4ZDQ0Y2ExMTU5MjI2MGVmMTYxMDVhIHRvIDgzN3gKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNjZjIxYzMxMWU2OGQ0ODM5OWVmZjFlNzI5MzYwNTI4ODVmNmUzZjcKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVGh1IERlYyA2IDE2OjQzOjQwIDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBDT05GSUdfVUVDX0VUSDMgaW4gTVBDODN4eAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgoKY29tbWl0IGU2YWY5OTMyZDMxMTcxZTM1ZGI4ODBlN2IyZjI5ZjkwM2IxYjc2NjAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDExOjAwOjU0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgQ09ORklHIG9wdGlvbnMgcmVsYXRlZCB0byBPRiB0aGF0IHdlIGRvbnQgdXNlCgogICAgVGhlIE1QQzgzNjBFIE1EUyBjb25maWcgZGVmaW5lZDoKCUNPTkZJR19PRl9IQVNfQkRfVAoJQ09ORklHX09GX0hBU19VQk9PVF9FTlYKCiAgICBXaGljaCB3ZSBkb24ndCB1c2Ugb3IgZXZlciBuZWVkZWQuCVRoaXMgc2VlbXMgbGlrZSBjb3B5LXBhc3RlIGZlYXR1cmUgY3JlZXAuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBmNjAyMDgyYjRiN2VkNGVlMTY0MzIwNjdjYzY3YTBhMjRmZWRjNzE1CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIERlYyAxMCAxNDoxNjoyMiAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogc3VwcmVzcyBjb21waWxlciB3YXJuaW5nCgogICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24g4oCYZnRfYm9hcmRfc2V0dXDigJk6CiAgICBtcGM4MzYwZW1kcy5jOjMzNTogd2FybmluZzogYXNzaWdubWVudCBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQogICAgbXBjODM2MGVtZHMuYzozNDU6IHdhcm5pbmc6IGFzc2lnbm1lbnQgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMxNmU0NGZhODM1ZmI5ZWVjOTgyZDkxOTg2M2EwNGUyZjc4ZTVjZTcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI3IDE0OjE3OjI5IDIwMDcgLTA2MDAKCiAgICBtcGM4M3h4OiBmaXggcmVtYWluaW5nIGZkdF9maW5kX25vZGVfYnlfcGF0aCByZWZlcmVuY2VzCgogICAgcmVuYW1lIHRvIGZkdF9wYXRoX29mZnNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTIxZDRiMTlhZDFiZTcwNGRmNTg3MjU0ODVkOTI5MmRjMDQxNGFkZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTI6MzA6MDkgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGZpeCBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGRlZmluaXRpb25zIGZvciA4Mzd4CgogICAgRml4IHRoZSBkZWZpbml0aW9ucyBvZiBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGZvciA4Mzd4LgogICAgVGhpcyBjaGFuZ2UgZ3VhcmFudGVlcyB0aGF0IHRoZSBlbnZpcm9ubWVudCB3aWxsIGJlIGxvY2F0ZWQgb24gdGhlCiAgICBmaXJzdCBmbGFzaCBzZWN0b3IgYWZ0ZXIgdGhlIFUtQm9vdCBpbWFnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI0Zjg2ODQzM2I1MGVjYmFhODhlMTE4YWFkYzdiZDI1NDAxM2M2YWUKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDkgMTQ6Mjg6MDggMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IG1wYzgzNjAgcmV2LjIuMSBlcnJhdHVtIDI6IHJlcGxhY2UgcmdtaWktaWQgd2l0aCByZ21paS1yeGlkCgogICAgdS1ib290IGl0c2VsZiB1c2VzIEdNSUkgbW9kZSBvbiB0aGUgODM2MC4gIEZpeCB1cCBVQ0MgcGh5LWNvbm5lY3Rpb24tdHlwZQogICAgcHJvcGVydGllcyBpbiB0aGUgZGV2aWNlIHRyZWUgc28gdGhlIFBIWSBnZXRzIGNvbmZpZ3VyZWQgZm9yIGludGVybmFsIGRlbGF5IG9uCiAgICBSWCBvbmx5IGJ5IHRoZSBPUywgYXMgcHJlc2NyaWJlZCBieSBtcGM4MzYwIHJldi4gMi4xIHBiIG1kcyBlcnJhdHVtICMyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjJiNDQ4ZGJmYmUyYTk4ZjAxZmY0YWRjM2MzOTc5ZjhjNTQxYWQ3YgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMjo0MToxNSAyMDA3ICswODAwCgogICAgbXBjODN4eDogdXBkYXRlIHRoZSBDUkVESVRTIGFuZCBNQUlOVEFJTkVSUwoKICAgIHVwZGF0ZSB0aGUgQ1JFRElUUyBhbmQgTUFJTlRBSU5FUlMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMjFhZGQ0YjQyYWY3Yjc2NzQ0ODI1MWI1OTliOTEwNjZhMTYwZTBkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDE4IDEyOjQwOjIxIDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBhZGQgTUFJTlRBSU5FUiBhbmQgTUFLRUFMTCBlbnRyaWVzIGZvciB0aGUgbXBjODM3eGVtZHMKCiAgICBBZGQgdGhlIE1BSU5UQUlORVIgYW5kIE1BS0VBTEwgZW50cmllcyBmb3IgbXBjODM3eGVtZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY4OTAwY2U5MDk0YzQ2MjM1NWViNzkyZWVhMjY0ZmYxNmFjOGZkMTYKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTggMTI6Mzg6NTMgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgTVBDODM3eEVNRFMgYm9hcmQgcmVhZG1lCgogICAgQWRkIHRoZSBSRUFETUUubXBjODM3eGVtZHMgdG8gL2RvYwoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTk1ODBlNjYwY2M4ZGE0OWYxNjUzNmE4YmQ3OGMwNDdjN2JjMTJlNQpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMjozNzo1NyAyMDA3ICswODAwCgogICAgbXBjODN4eDogQWRkIHRoZSBzdXBwb3J0IG9mIE1QQzgzN3hFTURTIGJvYXJkCgogICAgVGhlIE1QQzgzN3hFTURTIGJvYXJkIHN1cHBvcnQ6CiAgICAqIEREUjIgNDAwTUh6IGhhcmRjb2RlZCBhbmQgU1BEIGluaXQKICAgICogTG9jYWwgYnVzIE5PUiBGbGFzaAogICAgKiBJMkMsIFVBUlQsIE1JSSBhbmQgUlRDCiAgICAqIGVUU0VDIFJHTUlJCiAgICAqIFBDSSBob3N0CgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NTVkYTYxNzAyNzcxZmUwZjc2ZjNkZTIzYjRlNzU5MGYzNzA0MTYxCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgU2VwIDE4IDEyOjM2OjU4IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgb2YgTVBDODMxNUUgU29DCgogICAgVGhlIE1QQzgzMTVFIFNvQyBpbmNsdWRpbmcgZTMwMGMzIGNvcmUgYW5kIG5ldyBJUCBibG9ja3MsCiAgICBzdWNoIGFzIFRETSwgUENJIEV4cHJlc3MgYW5kIFNBVEEgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDAzMDUxYzNkMzVjOTk4MWNlYWEwNTkwMDU2NjBlNjk5ZjNlYWNmMWMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTggMTI6MzY6MTEgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgc3VwcG9ydCBvZiBNUEM4Mzd4IFNvQwoKICAgIFRoZSBNUEM4Mzd4IFNvQyBpbmNsdWRpbmcgZTMwMGM0IGNvcmUgYW5kIG5ldyBJUCBibG9ja3MsCiAgICBzdWNoIGFzIFNESEMsIFBDSSBFeHByZXNzIGFuZCBTQVRBIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NTFkOTZmN2U0Yzg0YWRjZGI5OGVmMDdlYzg3OGMyMDMyNmUzMzU5CkF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CkRhdGU6CVdlZCBOb3YgMTQgMTg6NTQ6NTMgMjAwNyArMDMwMAoKICAgIE1QQzgzNjBFLU1EUzogY29uZmlndXJlIGFuZCBlbmFibGUgc2Vjb25kIFVBUlQKCiAgICBEZXNwaXRlIHVzZXIgbWFudWFsLCBCQ1NSOS43IGlzIG5lZ2F0ZWQgKGhpZ2gpIG9uIEhSU1QsIHNvCiAgICBVQVJUMiBpcyBkaXNhYmxlZC4gRml4IHRoYXQgYW5kIGNvbmZpZ3VyZSBRRSBwaW5zIHByb3Blcmx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgoKY29tbWl0IGIyODkzZTFmY2IyOGZhZDhjOGIzMTcxMDRkZjhjZWUwMTQyYzc2MzEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDUgMDk6MzQ6MDYgMjAwNyAtMDYwMAoKICAgIDgzeHg6IGZpeCBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGRlZmluaXRpb25zCgogICAgRml4IHRoZSBkZWZpbml0aW9ucyBvZiBDRkdfRU5WX0FERFIgYW5kIENGR19FTlZfU0VDVF9TSVpFIGZvciBhbGwgb2YgdGhlCiAgICBjdXJyZW50bHktZGVmaW5lZCA4M3h4IGJvYXJkcy4gIFRoaXMgY2hhbmdlIGd1YXJhbnRlZXMgdGhhdCB0aGUgZW52aXJvbm1lbnQKICAgIHdpbGwgYmUgbG9jYXRlZCBvbiB0aGUgZmlyc3QgZmxhc2ggc2VjdG9yIGFmdGVyIHRoZSBVLUJvb3QgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTA1MzI5NTE2YTEzNjE2YjUzMjQwY2Q4NWI3MzkyMTdjMmJmODdmMQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglGcmkgSmFuIDQgMTM6Mjc6MDIgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHdlYWsgYmluZGluZyBmcm9tIGNvbW1vbiBEZW5hbGkgZGF0YS1leWUgc2VhcmNoIGNvZGUKCiAgICBOb3cgdGhhdCB0aGVyZSBhcmUgbm8gYm9hcmQtc3BlY2lmaWMgdmVyc2lvbnMgb2YKICAgICJkZW5hbGlfY29yZV9zZWFyY2hfZGF0YV9leWUoKSIsIHRoZSB3ZWFrIGJpbmRpbmcgb24gdGhlIGNvbW1vbiB2ZXJzaW9uCiAgICBjYW4gYmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCA1YmE1NzZjMDE2MDJmZDMyODgwMGE0Mjc5NjRjMzZhMGEwNWM1ZGNlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDUgMDk6MTM6NDYgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBDT05GSUdfRUNDX0VSUk9SX1JFU0VUIGZyb20gNDR4X3NwZF9kZHIyLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODQ1YzZjOTVkYmZlNmM5MTVjZTY4YTBhMTE1ODUyZmExNzkzMmZiNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA1IDA5OjEyOjQxIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBLYXRtYWkvNDR4X3NwZF9kZHIyLmMgY29kZSBmb3Igb3B0aW1hbCBERFIyIHNldHVwCgogICAgT24gS2F0bWFpIHRoZSBjb21wbGV0ZSBhdXRvLWNhbGlicmF0aW9uIHNvbWVob3cgZG9lc24ndCBzZWVtIHRvCiAgICBwcm9kdWNlIHRoZSBiZXN0IHJlc3VsdHMsIG1lYW5pbmcgb3B0aW1hbCB2YWx1ZXMgZm9yIFJRRkQvUkZGRC4KICAgIFRoaXMgd2FzIGRpc2NvdmVyZWQgYnkgR0RBIHVzaW5nIGEgaGlnaCBiYW5kd2lkdGggc2NvcGUsCiAgICBhbmFseXppbmcgdGhlIEREUjIgc2lnbmFscy4gR0RBIHByb3ZpZGVkIGEgZml4ZWQgdmFsdWUgZm9yIFJRRkQsCiAgICBzbyBub3cgb24gS2F0bWFpICJvbmx5IiBSRkZEIGlzIGF1dG8tY2FsaWJyYXRlZC4KCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBSRENDIGNhbGlicmF0aW9uIGFzIG1lbnRpb25lZCBvbiBwYWdlIDcgb2YKICAgIHRoZSBBTUNDIFBvd2VyUEM0NDBTUC9TUGUgRERSMiBhcHBsaWNhdGlvbiBub3RlOgogICAgIkREUjEvRERSMiBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBhbmQgRHluYW1pYyBUdW5pbmciCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ5ZGI0N2I4YWU2YWZmZjJiODk4YmUzMTI5NDhmZjUwMTM1N2RjODAKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJV2VkIEphbiAyIDE2OjQ4OjQyIDIwMDggKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBzZHJhbS5oIGZyb20gUE1DNDQwIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMzQwNjVhMmNlMGQ4OTcyZjJlYzY2NTIwNzYwMTRhYjI0M2QyY2U4YQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgSmFuIDIgMTY6NDg6MzQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogdXNlIGNvbW1vbiBkZW5hbGkgY29yZSBkZWZpbmVzIGFuZCBkYXRhIGV5ZSBzZWFyY2ggY29kZSBmb3IgUE1DNDQwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgOWFjNmI2ZjNkM2YxYjA3MmQ4OTI2OGIyZWZlNDdlOTVlNjY1OTQ4OQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgSmFuIDIgMTI6MDU6MTQgMjAwOCArMDEwMAoKICAgIHBwYzR4eDogTW9yZSBjbGVhbnVwIGZvciBlc2QncyBMQ0QgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGZlOWMyNmIzMzBhMjFjZTczZTUyYjViZDM0N2Q3MjVjYjgxZTNjZmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNCAxMjowMDowMSAyMDA4ICswMTAwCgogICAgcHBjNHh4OiBGaXggU2VxdW9pYSBOQU5EIGJvb3RpbmcgdGFyZ2V0CgogICAgVGhlIFNlcXVvaWEgTkFORCBib290aW5nIHRhcmdldCBub3cgdXNlcyB0aGUgcmVjZW50bHkgZXh0cmFjdGVkCiAgICBjcHUvcHBjNHh4L2RlbmFsaV9kYXRhX2V5ZS5jIGZpbGUgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGRkOTY5YWVjNTMyYmQ3ZWFlMzBmYzA5NTkwNDg4YTNhYWE2MjlhCkF1dGhvcjogTGF3cmVuY2UgUi4gSm9obnNvbiA8bHJqQGFjbS5vcmc+CkRhdGU6CVRodSBKYW4gMyAxNTowMjowMiAyMDA4IC0wNTAwCgogICAgcHBjNHh4OiBVc2UgQ0ZHXzR4eF9HUElPX1RBQkxFIHRvIGNvbmZpZ3VyZSBLb3JhdCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGIwNWU4YmY1OGJlOWQ4OTU2ZmRmZGUzZDhjOGU4N2MxNDA0MTQ2NjMKQXV0aG9yOiBMYXdyZW5jZSBSLiBKb2huc29uIDxscmpAYWNtLm9yZz4KRGF0ZToJRnJpIEphbiA0IDAyOjExOjU2IDIwMDggLTA1MDAKCiAgICBwcGM0eHg6IFVzZSBDRkdfNHh4X0dQSU9fVEFCTEUgdG8gY29uZmlndXJlIFNlcXVvaWEgYm9hcmQKCiAgICBOb3RlOiB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2Ygc29tZSBHUElPIHJlZ2lzdGVyczoKCiAgICAgICBSZWdpc3RlciAgICAgIE9sZCBWYWx1ZQkgTmV3IFZhbHVlCiAgICAtLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0KICAgIERDUiBHUElPMF9UQ1IgICAgMHgwMDAwMDAwRiAgMHgwMDAwRjBDRgogICAgRENSIEdQSU8wX1RTUkggICAweDU1MDA1MDAwICAweDAwMDAwMDAwCiAgICBEQ1IgR1BJTzFfVENSICAgIDB4QzIwMDAwMDAgIDB4RTIwMDAwMDAKICAgIERDUiBHUElPMV9UU1JMICAgMHgwQzAwMDAwMCAgMHgwMDIwMDAwMAogICAgRENSIEdQSU8xX0lTUjJMICAweDAwMDUwMDAwICAweDAwMTEwMDAwCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNWFiODg0YjI1NGNhMmU3MDdhYjUwNTQ1Y2Q3MDVmMzAxMDhjZjQ5MQpBdXRob3I6IExhd3JlbmNlIFIuIEpvaG5zb24gPGxyakBhY20ub3JnPgpEYXRlOglUaHUgSmFuIDMgMTg6NTQ6MDAgMjAwOCAtMDUwMAoKICAgIHBwYzR4eDogQWRkIGZ1bmN0aW9uYWxpdHkgdG8gR1BJTyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBtYWtlcyB0d28gYWRkaXRpb25zIHRvIEdQSU8gc3VwcG9ydDoKCiAgICBGaXJzdCwgaXQgYWRkcyBmdW5jdGlvbiBncGlvX3JlYWRfaW5fYml0KCkgdG8gcmVhZCB0aGUgYSBiaXQgZnJvbSB0aGUKICAgIEdQSU8gSW5wdXQgUmVnaXN0ZXIgKEdQSU94X0lSKSBpbiB0aGUgc2FtZSB3YXkgdGhhdCBmdW5jdGlvbgogICAgZ3Bpb19yZWFkX291dF9iaXQoKSByZWFkcyBhIGJpdCBmcm9tIHRoZSBHUElPIE91dHB1dCBSZWdpc3RlcgogICAgKEdQSU94X09SKS4KCiAgICBTZWNvbmQsIGl0IG1vZGlmaWVzIGZ1bmN0aW9uIGdwaW9fc2V0X2NoaXBfY29uZmlndXJhdGlvbigpIHRvIHByb3ZpZGUKICAgIGFuIGFkZGl0aW9uYWwgb3B0aW9uIGZvciBjb25maWd1cmluZyB0aGUgR1BJTyBmcm9tIHRoZQogICAgIkNGR180eHhfR1BJT19UQUJMRSIuCgogICAgQWNjb3JkaW5nIHRvIHRoZSA0NDBFUHggVXNlcidzIE1hbnVhbCwgd2hlbiBhbiBhbHRlcm5hdGUgb3V0cHV0IGlzIHVzZWQsCiAgICB0aGUgdGhyZWUtc3RhdGUgY29udHJvbCBpcyBjb25maWd1cmVkIGluIG9uZSBvZiB0d28gd2F5cywgZGVwZW5kaW5nIG9uCiAgICB0aGUgcGFydGljdWxhciBvdXRwdXQuICBUaGUgZmlyc3Qgb3B0aW9uIGlzIHRvIHNlbGVjdCB0aGUgY29ycmVzcG9uZGluZwogICAgYWx0ZXJuYXRlIHRocmVlLXN0YXRlIGNvbnRyb2wgaW4gdGhlIEdQSU94X1RSU0gvTCByZWdpc3RlcnMuICBUaGUgc2Vjb25kCiAgICBvcHRpb24gaXMgdG8gc2VsZWN0IHRoZSBHUElPIFRocmVlLVN0YXRlIENvbnRyb2wgUmVnaXN0ZXIgKEdQSU94X1RDUikgaW4KICAgIHRoZSBHUElPeF9UUlNIL0wgcmVnaXN0ZXJzLCBhbmQgc2V0IHRoZSBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUKICAgIEdQSU94X1RDUiByZWdpc3RlciB0byBlbmFibGUgdGhlIG91dHB1dC4gIEZvciBleGFtcGxlLCB0aGUgTWFudWFsCiAgICBzcGVjaWZpZXMgY29uZmlndXJpbmcgdGhlIEdQSU8wMCBBbHRlcm5hdGUgMSBTaWduYWwgKFByZUFkZHIwNykgdG8gdXNlCiAgICB0aGUgYWx0ZXJuYXRlIHRocmVlLXN0YXRlIGNvbnRyb2wgKGZpcnN0IG9wdGlvbiksIGFuZCBzcGVjaWZpZXMKICAgIGNvbmZpZ3VyaW5nIHRoZSBHUElPMzIgQWx0ZXJuYXRlIDEgU2lnbmFsIChVU0IyT00wKSB3aXRoIHRoZSBvdXRwdXQKICAgIGVuYWJsZWQgaW4gdGhlIEdQSU94X1RDUiByZWdpc3RlciAoc2Vjb25kIG9wdGlvbikuCgogICAgQ3VycmVudGx5LCBncGlvX3NldF9jaGlwX2NvbmZpZ3VyYXRpb24oKSBjb25maWd1cmVzIGFsbCBhbHRlcm5hdGUgc2lnbmFsCiAgICBvdXRwdXRzIHRvIHVzZSB0aGUgZmlyc3Qgb3B0aW9uLiAgVGhpcyBwYXRjaCBhbGxvdyB0aGUgc2Vjb25kIG9wdGlvbiB0bwogICAgYmUgc2VsZWN0ZWQgYnkgc2V0dGluZyB0aGUgIm91dF92YWwiIGVsZW1lbnQgaW4gdGhlIHRhYmxlIGVudHJ5IHRvCiAgICAiR1BJT19PVVRfMSIuICBUaGUgZmlyc3Qgb3B0aW9uIGlzIHVzZWQgd2hlbiB0aGUgIm91dF92YWwiIGVsZW1lbnQgaXMKICAgIHNldCB0byAiR1BJT19PVVRfMCIuICBCZWNhdXNlICJvdXRfdmFsIiBpcyBub3QgY3VycmVudGx5IHVzZWQgd2hlbiBhbgogICAgYWx0ZXJuYXRlIHNpZ25hbCBpcyBzZWxlY3RlZCwgYW5kIGJlY2F1c2UgYWxsIGN1cnJlbnQgR1BJTyB0YWJsZXMgc2V0CiAgICAib3V0X3ZhbCIgdG8gIkdQSU9fT1VUXzAiIGZvciBhbGwgYWx0ZXJuYXRlIHNpZ25hbHMsIHRoaXMgcGF0Y2ggc2hvdWxkCiAgICBub3QgY2hhbmdlIGFueSBleGlzdGluZyBjb25maWd1cmF0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCAxOTY0MDRjZGMxZGU0OTVkNjE4MmU4NDczMWMyMDBmYzU3NDhkZjE1CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDE6MDE6NTQgMjAwNyAtMDUwMAoKICAgIFBQQzR4eDogUmVtb3ZlIHNkcmFtLmggZnJvbSBib2FyZC9sd21vbjUKCiAgICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm93IGluICJpbmNsdWRlL3BwYzQ0MC5oIi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBlZjE2ZmNjZjk2ZTU1ZWFiOTNmZTI1ZDAzZWJlMmU5YjU2ZTUzMzJiCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVN1biBEZWMgMzAgMDE6MDE6MzIgMjAwNyAtMDUwMAoKICAgIFBQQzR4eDogVXNlIGNvbW1vbiBjb2RlIGZvciBMV01PTjUgYm9hcmQgU0RSQU0gc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWxzbyBtb2RpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY29kZSBzbyB0aGF0IHRoZSBkYXRhLWV5ZQogICAgc2VhcmNoIGlzIG5vdyBkb25lIHdpdGggd2l0aCB0aGUgY2FjaGUgZGlzYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgNjJjYzM5NTFhYjcyMTM1ZDljMTAxZjE4NDViNzk0ZTYzYTBmYTE4OQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTdW4gRGVjIDMwIDAxOjAxOjE0IDIwMDcgLTA1MDAKCiAgICBQUEM0eHg6IFJlbW92ZSBzZHJhbS5oIGZyb20gYm9hcmQvYW1jYy9zZXF1b2lhCgogICAgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG5vdyBpbiAiaW5jbHVkZS9wcGM0NDAuaCIuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgY2UzOTAyZTE3NjViYmZiMDdjZjViYmU5OGJlOWE2OGUzMDA5OTk2YQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTdW4gRGVjIDMwIDAxOjAwOjUwIDIwMDcgLTA1MDAKCiAgICBQUEM0eHg6IFVzZSBjb21tb24gY29kZSBmb3IgU2VxdW9pYSBib2FyZCBTRFJBTSBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOGIwYzVjMTI3NjkwMzM1NzU4MTAwYzI1ZWFlYzJiODRkYjk3YzEwMQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgRGVjIDI3IDE2OjU4OjQxIDIwMDcgKzAxMDAKCiAgICBuZXQ6IEFkZCBDT05GSUdfTkVUX0RPX05PVF9UUllfQU5PVEhFUiBvcHRpb24KCiAgICBXaGVuIENPTkZJR19ORVRfRE9fTk9UX1RSWV9BTk9USEVSIGlzIGRlZmluZWQgVS1Cb290J3MKICAgIG5ldHdvcmtpbmcgc3RhY2sgZG9lcyBub3QgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8KICAgIGFub3RoZXIgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIGRvZXMgbm90IHRvdWNoIHRoZSBkZWZhdWx0CiAgICBiZWhhdmlvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNTA1YmU4N2E2NWU0Zjg3YWQ3ZDhkYTFkNTdlYTRkY2Q0ODdkN2UzMgpBdXRob3I6IFVwYWt1bCBCYXJrYWthdHkgPHVwYWt1bEBnbWFpbC5jb20+CkRhdGU6CVRodSBOb3YgMjkgMTI6MTY6MTMgMjAwNyArMDUzMAoKICAgIE5FVDogUHJvcGVyIHJldHVybiBjb2RlIGhhbmRsaW5nIGluIGV0aF9pbml0KCkgZnVuY3Rpb24gaW4gZmlsZSBldGguYwoKICAgIFRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiBjb2RlIGhhbmRsaW5nIGluIHRoZSBldGhfaW5pdCgpCiAgICBmdW5jdGlvbiwgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGUgcmV0dXJuIGNvZGVzIGluCiAgICB0aGUgb3RoZXIgbmV0d29yayBzdGFjayBmaWxlcy4gSXQgbm93IHJldHVybnMgYSAwIG9uIFN1Y2Nlc3MgYW5kIC0xIG9uCiAgICBlcnJvci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBVcGFrdWwgQmFya2FrYXR5IDx1cGFrdWwuYmFya2FrYXR5QGNvbmV4YW50LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNWNhMmQwOTUzZTQ1NzlhODA4MTA5NjZjY2EyMDc3ZTIwZDkxMmM5NwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJTW9uIE5vdiAxOSAyMDoyNzowNCAyMDA3ICswOTAwCgogICAgbmV0L2V0aC5jOiBGaXggZW52X2VuZXRhZGRyIHNpZ25lZCBvdmVyZmxvdwoKICAgIEFzc2lnbmluZyB0aGUgb3V0cHV0IG9mIHNpbXBsZV9zdHJ0b3VsKENCOkE5Ojg3OjY1OjQzOjIxKSB0byBgY2hhcicsIHdlIGFyZQogICAgd2FybmVkIGFzIGJlbG93OgoKICAgICAgVS1Cb290IDEuMi4wIChBdWcgMzAgMjAwNyAtIDA4OjI3OjM3KQoKICAgICAgRFJBTTogIDI1NiBNQgogICAgICBGbGFzaDogMzIgTUIKICAgICAgSW46ICAgIHNlcmlhbAogICAgICBPdXQ6ICAgc2VyaWFsCiAgICAgIEVycjogICBzZXJpYWwKICAgICAgTmV0OiAgIE5FQy1DYW5keQogICAgICBXYXJuaW5nOiBORUMtQ2FuZHkgTUFDIGFkZHJlc3NlcyBkb24ndCBtYXRjaDoKICAgICAgQWRkcmVzcyBpbiBTUk9NIGlzCSAwMDowMDo0Qzo4MDo5MjpBMgogICAgICBBZGRyZXNzIGluIGVudmlyb25tZW50IGlzICBGRkZGRkZDQjpGRkZGRkZBOTpGRkZGRkY4Nzo2NTo0MzoyMQoKICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBlbnZfZW5ldGFkZHIgdHlwZSBmcm9tIGBjaGFyJyB0byBgdW5zaWduZWQgY2hhcicuCgogICAgQ2M6IE1hc2FraSBJc2hpa2F3YSA8aXNoaWthd2EtbWFzYWtpQGNudC5teGUubmVzLm5lYy5jby5qcD4KICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgZjg1YjYwNzEwNTcxYjM3MjkzZDIyMzM5MzNiNzZlMmFhM2RiNTYzNQpBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBEZWMgMjcgMTg6MTk6MDIgMjAwNyArMDEwMAoKICAgIEludHJvZHVjZSBuZXcgZXRoX3JlY2VpdmUgcm91dGluZQoKICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgcm91dGluZSBpcyByZWNlaXZpbmcgYSBzaW5nbGUgbmV0d29yayBmcmFtZSwgb3V0c2lkZSBvZgogICAgVS1Cb290J3MgTmV0TG9vcCgpLiBFeHBvcnRpbmcgaXQgdG8gc3RhbmRhbG9uZSBwcm9ncmFtcyB0aGF0IHJ1biBvbiB0b3Agb2YKICAgIFUtQm9vdCB3aWxsIGxldCB0aGVtIHV0aWxpc2UgbmV0d29ya2luZyBmYWNpbGl0aWVzLiBGb3Igc2VuZGluZyBhIHJhdyBmcmFtZQogICAgdGhlIGFscmVhZHkgZXhpc3RpbmcgZXRoX3NlbmQoKSBjYW4gYmUgdXNlZC4KCiAgICBUaGUgZGlyZWN0IGNvbnN1bWVyIG9mIHRoaXMgcm91dGluZSBpcyB0aGUgbmV3bHkgaW50cm9kdWNlZCBBUEkgbGF5ZXIgZm9yCiAgICBleHRlcm5hbCBhcHBsaWNhdGlvbnMgKGVuYWJsZWQgd2l0aCBDT05GSUdfQVBJKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Cgpjb21taXQgNWM3NDA3MTFmMGVhNWI1MTQxNGIzNDFiNzE1OTdjNGEwNzUxYmU3NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMyAxMDo0MTowNCAyMDA4IC0wNjAwCgogICAgODYxMDogTW92ZSBpbmNsdWRlIG9mIGNvbmZpZy5oIGVhcmxpZXIuCgogICAgSW5jbHVkZSBjb25maWcuaCBlYXJsaWVyIGluIHRoZSBzZXQgb2YgI2luY2x1ZGVzCiAgICBzbyBhcyB0byBhdm9pZCBhIGluY2lkZW50YWwgYW5kIGR1cGxpY2F0ZSBkZWZpbml0aW9uCiAgICBvZiBDRkdfQ0FDSEVMSU5FX1NJWkUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyCgpjb21taXQgNjFkMzQyMWJkZWEwOTBiZDAzOTliMTRjM2UxMGEzYmViY2M4ZDVmZgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgNCAxMDo1MzozNCAyMDA3IC0wNjAwCgogICAgRG9uJ3Qgc2xhbSAjdW5kZWYgREVCVUcgaW4gdGhlIDg2NDFIUENOIGNvbmZpZyBmaWxlLgoKICAgIERvaW5nIHNvIHByZXZlbnRzIGl0IGZyb20gYmVpbmcgaW5kaXZpZHVhbGx5IHNldAogICAgYW5kIHVzZWZ1bCBpbiBvdGhlciBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVhOWY3Mzk1ZWMzNjI1ODRlNWU0ZjI2NmJkMGIwYzQ0MjJjZjZhNGMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDI4IDE0OjQ3OjE4IDIwMDcgLTA2MDAKCiAgICBDb252ZXJ0IE1QQzg2NDFIUENOIHRvIHVzZSBsaWJmZHQuCgogICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCiAgICBsb2NhdGUgdGhlIGV0aGVybmV0LCBwY2kgYW5kIHNlcmlhbCBub2RlcyBmb3IgZml4dXBzLgoKICAgIFVzZSBjb25zaXN0ZW50IGZkdGFkZHIgYW5kIGZkdGZpbGUgaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2UzNzQyMmQwMDAyZTEwNDkwZTI2ODM5MmUwYzRlMzAyOGU1MmNlYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyIDE0OjA2OjI2IDIwMDggKzAxMDAKCiAgICBjZmlfZmxhc2g6IEZpeCBidWcgaW4gZmxhc2hfaXNzZXQoKSB0byB1c2UgY29ycmVjdCAzMmJpdCBmdW5jdGlvbgoKICAgIFRoaXMgYnVnIHdhcyBkZXRlY3RlZCBvbiB0aGUgTFdNT041IHRhcmdldCB3aGljaCBoYXMgMiBJbnRlbCAxNmJpdCB3aWRlCiAgICBmbGFzaCBjaGlwcyBjb25uZWN0ZWQgdG8gYSAzMmJpdCB3aWRlIHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDExODJlOWY4ZTNiOTJmYzM3MmQ2NDk0MzI5M2RlNTNkYWEyZTI2Y2YKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIgMTU6NTg6NDQgMjAwOCArMDEwMAoKICAgIEZpeCBjb21waWxlIHByb2JsZW0gaW50cm9kdWNlZCBieSAiY2xlYW51cCIgY29tbWl0IDNkZmQ3MDhjCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxYWFhYjliZmFlMGIzYjJlZTJiNDE4YzIyYzY1MTI4MGVlN2I2NWM3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAyIDE1OjU0OjQ1IDIwMDggKzAxMDAKCiAgICBNYWtlIHNjcmlwdHMgYW5kIE1ha2VmaWxlcyBQT1NJWCBjb21wbGlhbnQKCiAgICBUaGUgYmFzaCBidWlsdGluIHZlcnNpb25zIG9mIHRoZSAidGVzdCIgKHJlc3AuICJbIikgY29tbWFuZCBhbGxvdwogICAgdXNpbmcgIj09IiBmb3Igc3RyaW5nIGNvbXBhcmlzb25zLCBidXQgUE9TSVggY29tcGF0aWJsZSBpbXBsZW1lbi0KICAgIHRhdGlvbnMgKGxpa2UgL3Vzci9iaW4vdGVzdCkgaW5zaXN0IG9uIHVzaW5nICI9IiBvbmx5LiBPbiBzdWNoIHN5c3RlbXMKICAgIHlvdSB3aWxsIHNlZToKCgkkIC91c3IvYmluL3Rlc3QgYSA9PSBhICYmIGVjaG8gT0sKCS91c3IvYmluL3Rlc3Q6ID09OiBiaW5hcnkgb3BlcmF0b3IgZXhwZWN0ZWQKCiAgICBUaGlzIHBhdGNoIGZpeGVzIE1ha2VmaWxlcyBhbmQgc2NyaXB0cyB0byB1c2UgUE9TSVggc3R5bGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA0N2NjMjNjYmU5YTY2OWM1MTAxODNmNGYwNDliZjcwM2VmNDQ1ZjNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDIgMTQ6MDU6MzcgMjAwOCArMDEwMAoKICAgIGNmaV9mbGFzaDogRml4IGJ1ZyBpbiBmbGFzaF9pc3NldCgpIHRvIHVzZSBjb3JyZWN0IDMyYml0IGZ1bmN0aW9uCgogICAgVGhpcyBidWcgd2FzIGRldGVjdGVkIG9uIHRoZSBMV01PTjUgdGFyZ2V0IHdoaWNoIGhhcyAyIEludGVsIDE2Yml0IHdpZGUKICAgIGZsYXNoIGNoaXBzIGNvbm5lY3RlZCB0byBhIDMyYml0IHdpZGUgcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2RmZDcwOGNjMWIyYTk2NmFkNDU0Y2E5ZWQxMjVkZDE3ZGJhZGJjYwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMiAxMjozODo0MyAyMDA4ICswMTAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMTc0YWMzNGFkZjVkNTY1M2RmMTJiYzNjZjE5YzUyMDYzYTcxMjY5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgRGVjIDI4IDE3OjI5OjU2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhiYTEzMmNhYjE4YWU0MzhiNmRkNWIwMjE0YzI4YThmYzBkOTc2ZTUKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAyOCAxNzowNzoyNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBDb21wbGV0ZSBQTUM0NDAgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYnJpbmdzIHRoZSBQTUM0NDAgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLgogICAgRmluYWxseSBpdCBlbmFibGVzIHRoZSBQTUM0NDAgYm9hcmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA0MDc4NDNhNTgyNTYwZmM1MjMxMjk5NTYxYWIzYzJiNmI2Y2QzMzk3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTc6MDc6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIEZQR0Egc3VwcG9ydCBhbmQgQlNQIGNvbW1hbmRzIGZvciBQTUM0NDAgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIHNvbWUgQlNQIGNvbW1hbmRzIGFuZCBGUEdBIGJvb3Rpbmcgc3VwcG9ydAogICAgZm9yIGVzZCdzIFBNQzQ0MCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNzJjNWQ1MmFlZGNjZTM1ZTRiNGZhNTg5NTYwNTU1NDgyNWI2YTc2ZgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgRGVjIDI4IDE3OjA3OjE0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIGVzZCBQTUM0NDAgYm9hcmQgZmlsZXMKCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZpcnN0IGZpbGVzIGZvciB0aGUgbmV3IGVzZCBQTUM0NDAgYm9hcmRzLgogICAgVGhlIG5leHQgdHdvIHBhdGNoZXMgd2lsbCBjb21wbGV0ZSB0aGUgUE1DNDQwIGJvYXJkIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZjZlMGYxZjYxODk2Y2U3NzI5YmExYmNlYTJmZmJkMTM4ZDM5NDdmNQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgRGVjIDI4IDE3OjEwOjM2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbiBmb3IgUExVNDA1IGJvYXJkcyArIG1pc2MuIHVwZGF0ZXMKCiAgICAtIGFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbiBmb3IgZXNkIFBMVTQwNSBib2FyZHMuCiAgICAtIGluaXRpYWxpemUgTkFORCBHUElPcwogICAgLSB1c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMKICAgIC0gY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDc3NjYwYzRiNTkwNTVkNjIxZDJhODU5NWJkNGMxOGJiMjc3MjY4ZmMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAyOCAxNzoxMDo0NCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiB1c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIGVzZCdzIExDRCBjb2RlCgogICAgVGhpcyBwYXRjaCBmaXhlcyBlc2QncyBMQ0QgZGVjdGVjdGlvbiBjb2RlIHRvIHdvcmsgY29ycmVjdGx5IHdpdGgKICAgIG5ld2VyIGdjYyB2ZXJzaW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBiNTZiZDBmY2ZjMWM3M2RiNzIyZTM0NjJjOGE5YmY2MDdiYTc3NzVlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMjggMTc6MTA6NDIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFpbnRlbmFuY2UgcGF0Y2ggZm9yIFZPSDQwNSBib2FyZHMKCiAgICAtIGFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbgogICAgLSBpbml0aWFsaXplIE5BTkQgR1BJT3MKICAgIC0gdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzCiAgICAtIHNsb3cgZG93biBJMkMgY2xvY2sgdG8gMTAwa0h6CiAgICAtIGVuYWJsZSBleHQuIEkyQyBidXMKICAgIC0gY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGMwNTU2OTA2NmRiY2JhM2ZkZjM2ZDRkMTk0M2RmMjY1ZGMzMTZhODYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjggMTY6MDg6MDggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRW5hYmxlIDQwNUVQIFBDSSBhcmJpdGVyIHBlciBkZWZhdWx0IG9uIGFsbCBib2FyZHMKCiAgICBJbiBhbiBhdHRtZW10IHRvIGNsZWFuIHVwIHRoZSA0eHggc3RhcnQuUyBmaWxlLCBJIHJlbW92ZWQgdGhlIGVuYWJsaW5nCiAgICBvZiB0aGUgaW50ZXJuYWwgNDA1RVAgUENJIGFyYml0ZXIuIFRoaXMgaXMgbmVlZGVkIGZvciBtdWx0aXBsZSBvdGhlcgogICAgNDA1RVAgcGxhdGZvcm1zLCBsaWtlIG1vc3Qgb2YgdGhlIGVzZCA0MDVFUC4gTm93IHRoZSBpbnRlcm5hbCBQQ0kKICAgIGFyYml0ZXIgaXMgZW5hYmxlZCBhZ2FpbiBwZXIgZGVmYXVsdCBhcyBpdCBoYXMgYmVlbiBiZWZvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgogICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGJlYzkyNjQ2MTZmYjc4MjczYTFkOTNlODdmZjRiMGI2N2M3YmVjMWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjggMTU6NTM6NDYgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IGJ1ZyBpbiBjcHVfaW5pdC5jICg0MDVFUCBpbnN0ZWFkIG9mIDQ1MEVQKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBmYjgzYTY1YzYwYWI1Y2ExMjM1OGI3NWYxMjU3ZTVlZWU2Y2RiZjc5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgRGVjIDI4IDA2OjA2OjA0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBwcm9ibGVtIG9mIGtpbGF1ZWEvaGFsZWFrYWxhIG5hbmQgYm9vdGluZyB0YXJnZXQKCiAgICBVc2UgY29ycmVjdCBsaW5rIHRvIG5hbmRfZWNjIG5vdyBsb2NhdGVkIGluIGRyaXZlcnMvbXRkL25hbmQvIGZvciB0aGUKICAgIHBsYXRmb3JtcyBtZW50aW9uZWQgYWJvdmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGI1NjhmZDI1NTc0MTgxYTNiMTJhZTNkNjZiMjkxMzkwMzQ0MmNiODMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxNzowMzo0NiAyMDA3ICswMTAwCgogICAgUmVtb3ZlIENQQ0k0NDAgYm9hcmQKCiAgICBUaGlzIGJvYXJkIG5ldmVyIGxlZnQgcHJvdG90eXBpbmcgc3RhdGUgYW5kIGl0CiAgICBiZWNhbWUgYSBtaWxsc3RvbmUgcm91bmQgbXkgbmVjay4gU28gcmVtb3ZlIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGM1OTFkZmZlMGNiYWNkODk2Y2NiYWQwNjAxMWZlNmQ2YWZhMDgwZGEKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxMToyODo1MSAyMDA3IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIEtvcmF0IFBQQzQ0MEVQeCBib2FyZAoKICAgIFRoZXNlIHBhdGNoZXMgYWRkIHN1cHBvcnQgZm9yIHRoZSBQUEM0NDBFUHgtYmFzZWQgIktvcmF0IiBib2FyZCB0bwogICAgVS1Cb290LiAgVGhleSBhcmUgYmFzZWQgcHJpbWFyaWx5IG9uIHN1cHBvcnQgZm9yIHRoZSBTZXF1b2lhIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDg3ZGMwOTY4MjllNmE2MzYzZjRmZGQ3MzY1M2IwMDkzYTg1YWRiZTAKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJU2F0IERlYyAyMiAxNToxNjoyNSAyMDA3IC0wNTAwCgogICAgQWRkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgS29yYXQgYm9hcmQKCiAgICBUaGlzIHBhdGNoIHN1cHBsaWVzIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLb3JhdCBQUEM0NDBFUHgtCiAgICBwcm9jZXNzb3IgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOGViNTJkNWQ5ODJiNzY0YjM5Yzg4ZDlkMTA2NGQ1NmM1Mzk3YmZhNQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE2OjExIDIwMDcgLTA1MDAKCiAgICBBZGQgZGVuYWxpX2RhdGFfZXllLm8gYW5kIGRlbmFsaV9zcGRfZGRyMi5vIHRvIFBQQzR4eCBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IGFiYTE5NjA0ZDg0OGIyODM4Y2ZiOWViZTgxODkwOWU2YTIxNjA1OGUKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IERlYyAyNyAxMDo1NDo0OCAyMDA3IC0wNTAwCgogICAgQWRkIDQ0MEVQeCBERFIyIFNQRCBESU1NIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgU1BEIEREUjIgc3VwcG9ydCBmb3IgdGhlIDQ0MEVQeCAoIkRlbmFsaSIpIFNEUkFNCiAgICBjb250cm9sbGVyLiAgSXQgc2hvdWxkIGFsc28gd29yayBvbiB0aGUgNDQwR1J4LiAgSXQgaXMgYmFzZWQgb24gdGhlIEREUjIKICAgIFNQRCBjb2RlIGZvciB0aGUgNDQwRVAvNDQwRVB4LCBidXQgbWFrZXMgbm8gcHJvdmlzaW9uIGZvciBERFIxIHN1cHBvcnQuCgogICAgVGhpcyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBvbiBwcm90b3R5cGUgS29yYXQgYm9hcmRzIHdpdGggdGhyZWUgS2luZ3N0b24KICAgIERJTU1TOiA1MTIgTWlCIEVDQyAob25lIHJhbmspLCA1MTIgTWlCIG5vbi1FQ0MgKG9uZSByYW5rKSBhbmQgMSBHaUIgRUNDCiAgICAodHdvIHJhbmtzKS4gIFRoZSBLb3JhdCBib2FyZCBoYXMgYSBzaW5nbGUgRElNTSBzb2NrZXQsIGJ1dCBzdXBwb3J0IGhhcwogICAgYmVlbiBwcm92aWRlZCAodGhvdWdoIG5vdCB0ZXN0ZWQpIGZvciBib2FyZHMgd2l0aCB0d28gRElNTSBzb2NrZXRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgoKY29tbWl0IDhhMjRhNjk2MzAwMmNiODY3ZDVhNmI3MGUzNTYwZjBiMTQ2N2Y1NWYKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJU2F0IERlYyAyMiAxNToxNTozMCAyMDA3IC0wNTAwCgogICAgQ29weSA0NDBFUHgvR1J4IFNEUkFNIGRhdGEtZXllIHNlYXJjaCB0byBjb21tb24gZGlyZWN0b3J5CgogICAgVGhpcyBwYXRjaCBjcmVhdGVzIGEgbm9uLWJvYXJkLXNwZWNpZmljIGZpbGUgZm9yIHBlcmZvcm1pbmcgdGhlIFNEUkFNCiAgICBkYXRhLWV5ZSBzZWFyY2guICBJdCBhbHNvIGFkZHMgRUNDIGVycm9yIGNoZWNraW5nIHRvIHRoZSB0ZXN0IG9mIHZhbGlkCiAgICBkYXRhIG9uIHJlYWRiYWNrIHdoZW4gRUNDIGlzIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzQ2ZjUzMzMzYjIyYjFmOTA5ODY3NmJlYTg4ODRmYzdkYjgyMGNmMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE1OjEzIDIwMDcgLTA1MDAKCiAgICBBZGQgZGVmaW5pdGlvbnMgZm9yIDQ0MEVQeC9HUnggU0RSQU0gY29udHJvbGxlciB0byBwcGM0NDAuaAoKICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgRGVuYWxpIFNEUkFNIGNvbnRyb2xsZXIgZGVmaW5pdGlvbnMgdG8gInBwYzQ0MC5oIi4KICAgIEl0IGFsc28gZml4ZXMgdHdvIHR5cG9zIGluIHRoZSBkZWZpbml0aW9ucywgc28gdGhlIGJvYXJkLXNwZWNpZmljCiAgICAic2RyYW0uaCIgZmlsZXMgY29udGFpbmluZyB0aGVzZSBkZWZpbml0aW9ucyBhcmUgYWxzbyBmaXhlZCB0byBhdm9pZAogICAgY29tcGlsZXIgd2FybmluZ3MuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzM0ODU3OGJmNjEyZDBjNTZkOGQzNzZkMjNjYWUxNmRlZmJkODZhZgpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglUaHUgRGVjIDI3IDEwOjUwOjU1IDIwMDcgLTA1MDAKCiAgICBBZGQgRXRoZXJuZXQgMTAwMEJBU0UtWCBzdXBwb3J0IGZvciBQUEM0eHgKCiAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgc3dpdGNoOiAiQ09ORklHX1BIWV9EWU5BTUlDX0FORUciLiAgV2hlbiB0aGlzIHN5bWJvbAogICAgaXMgZGVmaW5lZCwgdGhlIFBIWSB3aWxsIGFkdmVydGlzZSBpdCdzIGNhcGFiaWxpdGllcyBmb3IgYXV0b25lZ290aWF0aW9uCiAgICBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIHNob3duIGluIHRoZSBQSFkncyBzdGF0dXMgcmVnaXN0ZXJzLCBpbmNsdWRpbmcKICAgIDEwMDBCQVNFLVguICBXaGVuICJDT05GSUdfUEhZX0RZTkFNSUNfQU5FRyIgaXMgbm90IGRlZmluZWQsIHRoZSBQSFkgd2lsbAogICAgYWR2ZXJ0aXNlIGhhcmQtY29kZWQgY2FwYWJpbGl0aWVzLCBhcyBiZWZvcmUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgOWUyYzM0NzE1MWRiNWFlOGFjZjVmMThiOTk0OTNjZDUzZTY2MzdlMwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglUaHUgRGVjIDI3IDA5OjUyOjE3IDIwMDcgLTA1MDAKCiAgICBBZGQgZHJpdmVyIGZvciBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzMgdGVtcGVyYXR1cmUgc2Vuc29yCgogICAgVGhpcyBkcml2ZXIgaXMgYmFzZWQgb24gdGhlIGRyaXZlciBmb3IgdGhlIExNNzUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMTI2MTgyNzg2ODhlYTliM2Q3NjUzNjk2MGE1YWQyZTM3OTBmYWM0MApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjE0OjAwIDIwMDcgLTA1MDAKCiAgICBBZGQgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgTTQxVDYwIFJUQwoKICAgIFRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uIHRoZSBkcml2ZXIgZm9yIHRoZSBNNDFUMTEuCUluIHRoZSBpbnRlbmRlZAogICAgYXBwbGljYXRpb24sIHRoZSBSVEMgd2lsbCBiZSBwb3dlcmVkIGJ5IGEgbGFyZ2UgY2FwYWNpdG9yLCByYXRoZXIgdGhhbiBhCiAgICBiYXR0ZXJ5LiAgVGhlIGRyaXZlciB0aGVyZWZvcmUgY2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBSVEMgaGFzIGxvc3QKICAgIHBvd2VyLiAgVGhlIGNoaXAncyBPVVQgYml0IGlzIG5vcm1hbGx5IHJlc2V0IGZyb20gaXRzIHBvd2VyLXVwIHN0YXRlLiAgSWYKICAgIHRoZSBPVVQgYml0IGlzIHJlYWQgYXMgc2V0LCBvciBpZiB0aGUgZGF0ZSBhbmQgdGltZSBhcmUgbm90IHZhbGlkLCB0aGVuIHRoZQogICAgUlRDIGlzIGFzc3VtZWQgdG8gaGF2ZSBsb3N0IHBvd2VyLCBhbmQgaXRzIGRhdGUgYW5kIHRpbWUgYXJlIHJlc2V0IHRvCiAgICAxOTAwLTAxLTAxIDAwOjAwOjAwLgoKICAgIFN1cHBvcnQgZm9yIGFkanVzdGluZyB0aGUgc3BlZWQgb2YgdGhlIGNsb2NrIHRvIGltcHJvdmUgYWNjdXJhY3kgaXMKICAgIHByb3ZpZGVkIHRocm91Z2ggYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgZDM0NzExNzNlMTRiNzU0NGJiNjAzMzllZGE4ZDNkMzkwNjY5NGIwYQpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjM0OjM5IDIwMDcgLTA1MDAKCiAgICBVc2Ugb3V0X2JlMzIoKSBhbmQgZnJpZW5kcyB0byBhY2Nlc3MgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgaW4gc2VxdW9pYS5jCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgYzY4ZjU5ZmUzZWMxNjc2OWY4MmI1ZmNhNzQyMTk4M2MzMzZkM2FhYwpBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjM0OjIwIDIwMDcgLTA1MDAKCiAgICBVc2UgZGVmaW5pdGlvbnMgZnJvbSAiYXNtLXBwYy9tbXUuaCIgaW4gaW5pdC5TIGZvciBTZXF1b2lhCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMGQ5Y2RlYWMxZDNmYThkNjJlZDdkODgzYWNjOTUwYzM2NGY1YmRhOApBdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgpEYXRlOglTYXQgRGVjIDIyIDE1OjIzOjUwIDIwMDcgLTA1MDAKCiAgICBDb3NtZXRpYyBjaGFuZ2VzIHRvIEVDQyBQT1NUIGZvciBBTUNDIERlbmFsaSBjb3JlCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Cgpjb21taXQgMmU1ODNkNmM4MTAzNGY4MGEyNjdiODlmYTU1NDk4YWUwNjNjY2VmMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIERlYyAyNiAyMDoyMDoxOSAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gcHJvYmxlbSBpbiA0MDUgY2FjaGUgUE9TVCB0ZXN0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQyZDU1ZWEwYmRlMDZlNDdkNWEzYjQ5YjBkOTEwMDJhY2Q4ZTU3MDgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBEZWMgMjIgMTI6MjA6MDkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTW92ZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgUE9TVCBjYWNoZSB0ZXN0IHRvIGJpZ2dlciBhZGRyZXNzCgogICAgT24gU2VxdW9pYSAmIExXTU9ONSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBQT1NUIGNhY2hlIHRlc3QgaXMgbm93CiAgICBtb3ZlZCB0byBhIGJpZ2dlciBhZGRyZXNzLiBUaGlzIGVuYWJsZXMgdXNhZ2Ugb2YgbW9yZSBtZW1vcnkgb24gdGhvc2UKICAgIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDkxNzIyMTAyY2Y2M2Y3N2EwMTQ4ZWQzZjNkNTRhMjZkODc1NzVlOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IERlYyAyMiAxMjoxODoyNiAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiA0NHggY2FjaGUgUE9TVCByb3V0aW5lCgogICAgQXMgcmVwb3RlZCBieSBMYXJyeSBKb2huc29uLCBydW5uaW5nICJkaWFnIHJ1biBjYWNoZSIgY2F1c2VkIGEgY3Jhc2gKICAgIGluIFUtQm9vdC4gVGhpcyBwcm9ibGVtIHdhcyBpbnRyb2R1Y2VkIGJ5IGEgcGF0Y2ggdGhhdCByZW1vdmVkIHRoZQogICAgVExCIGVudHJ5IGZvciB0aGUgY2FjaGUgdGVzdCBhZnRlciB0aGUgdGVzdCBoYXMgY29tcGxldGVkLiBTaW5jZSB0aGlzCiAgICBUTEIgd2FzIG9ubHkgc2V0dXAgb25jZSwgYSAybmQgYXR0ZW1wdCB0byBydW4gdGhpcyBjYWNoZSB0ZXN0CiAgICBmYWlsZWQgd2l0aCBhIGNyYXNoLiBOb3cgdGhpcyBUTEIgZW50cnkgaXMgY3JlYXRlZCBldmVyeSB0aW1lIHRoZQogICAgcm91dGluZSBpcyBjYWxsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGIwMjY1YjU3NmJiOGZhOTQ2NWY5OWU5OWMzMjM3NjhiNTYyZmFkYzIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjEgMDc6NTE6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBmZHQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiZjgzMjRlNGE1MDc1OGRhZmY4Y2RkZDA0YzZhMmZmOGVkNzc1YmVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgRGVjIDE5IDA5OjA1OjQwIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBmZHQgc3VwcG9ydCB0byBBTUNDIEthdG1haSBldmFsIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDMyOGEzNDAzOTJhNWRmOWFhZjAwNzkyYmU5ODlkZjczZTc1MDg1OWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTggMDg6NDQ6NTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogZmR0OiBDbGVhbnVwIHNldHVwIG9mIGNwdSBub2RlIHNldHVwCgogICAgTm93IHRoZSBjcHUgbm9kZSBzZXR1cCAoInRpbWViYXNlLWZyZXF1ZW5jeSIgYW5kICJjbG9jay1mcmVxdWVuY3kiKSBpcwogICAgd2l0aG91dCB1c2luZyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgY3B1IG5vZGUuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUKICAgIHRvIHVzZSB0aGlzIFUtQm9vdCB2ZXJzaW9uIHdpdGggYm90aCB2ZXJzaW9ucyBvZiBjcHUtbm9kZSBuYW1pbmcKICAgICJjcHVAMCIgYW5kIHRoZSBmb3JtZXIgIlBvd2VyUEMsNDQwRVB4QDAiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ODEyYmM0YTJlMjQzNmViYmMwY2U1YjRlOTljMWRmYzJlNzdlYjViCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRGVjIDE3IDE3OjI2OjIxIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBsd21vbjUgY29tcGlsYXRpb24gcHJvYmxlbQoKICAgIE5vdyB0aGF0IHRoZSA0NDBFUHggRUNDIHRlc3QgaXMgbm90IGJvYXJkIHNwZWNpZmljIGFueW1vcmUKICAgIHJlbW92ZSB0aGlzIE1ha2VmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MmVkMzNmZmUxMzVmNjE4NjgwZjlkNmU5NzEyZWIzNWE4NWJjYjYyCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdHNjaGluQHQtb25saW5lLmRlPgpEYXRlOglXZWQgRGVjIDUgMTc6NDM6MjAgMjAwNyArMDEwMAoKICAgIEZpeCBwcGM0eHggY2xlYXJfYnNzKCkgY29kZQoKICAgIHBwYzR4eCBjbGVhcl9ic3MoKSBmYWlscyBpZiBCU1Mgc2VnbWVudCBzaXplIGlzIG5vdAogICAgZGl2aXNpYmxlIGJ5IDQgd2l0aG91dCByZW1haW5kZXIuIFRoaXMgcGF0Y2ggcHJvdmlkZXMKICAgIGZpeCBmb3IgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KCmNvbW1pdCA4NWRjMmE3ZjgyZDExZTE3ZjBjYTJhNDQ4MTE4YWVkN2Y3YTRiODVkCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIE5vdiAzMCAxODozNToxMSAyMDA3ICswMTAwCgogICAgUFBDNHh4OiBNaW5pbWFsIGNoYW5nZXMgdG8gYWRkIHZ4V29ya3Mgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMDUyNDQwYjAyMmNhODk4MWQzOWI2ZjhjMTBkMWFhNjMyNmY0NzQ4MApBdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMjMgMTM6MDk6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIENPTkZJR19CT09UUF9TVUJORVRNQVNLIHRvIFNlcXVvaWEgYm9hcmQgY29uZmlnCgogICAgV2hlbiB1c2luZyBkaGNwL2Jvb3RwIHRoZSAibmV0bWFzayIgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90CiAgICBzZXQgYmVjYXVzZSBDT05GSUdfQk9PVFBfU1VCTkVUTUFTSyBpcyBub3QgZGVmaW5lZC4gQnV0IHVzdWFsbHkgdGhpcyBpcwogICAgZGVzaXJlYWJsZSwgc28gdGhlIGZvbGxvd2luZyBwYXRjaCBhZGRzIHRoaXMgdGhpcyBvcHRpb24gdG8gdGhlIGJvYXJkCiAgICBjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNzI0YTliNDBjN2ZiZWI2YWRlMTkzY2E1MjMyMWI0NDFlYWVjYjRlCkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVNhdCBPY3QgMjcgMTI6NDg6MTUgMjAwNyAtMDQwMAoKICAgIEZpeC9lbmhhbmNlIEVDQyBQT1NUIGZvciA0NDBFUHgvR1J4CgogICAgVGhpcyBwYXRjaCBhbGxvd3MgdGhlIEVDQyBQT1NUIHRvIGJlIHVzZWQgZm9yIGRpZmZlcmVudCBib2FyZHMgd2l0aCB0aGUKICAgIFBQQzQ0MCBEZW5hbGkgU0RSQU0gY29udHJvbGxlci4gIE1vZGlmaWNhdGlvbnMgaW5jbHVkZSBza2lwcGluZyB0aGUgdGVzdAogICAgaWYgRUNDIGlzIG5vdCBlbmFibGVkIChhcyBmb3Igbm9uLUVDQyBESU1NcykgYW5kIGFkZGluZyBzeW5jaHJvbml6YXRpb24KICAgIHRvIHByZXZlbnQgdGltaW5nIGVycm9ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCA0NTRhNmNmOGQ0OThmNzBkMmIzZTE4ZjA3ODM3NjAzZWIyNGIxMmQ0CkF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+CkRhdGU6CVNhdCBPY3QgMjcgMTI6NDg6MDUgMjAwNyAtMDQwMAoKICAgIFBQQzR4eDogTW92ZS9yZW5hbWUgRUNDIFBPU1QgZm9yIDQ0MEVQeC9HUngKCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KCmNvbW1pdCBjMjlkMmQzNjgwMDQ2ZDQzMDAyMmM1NWU1MGZjYjI3ZjU4NjY1MTdlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBEZWMgMTQgMTE6MjA6MzMgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciA0eHggZXRoZXJuZXQgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGJhNzlmZGU1OGE0OGMwYTZmZjhlMmE5NmNhYmE5NTE1OTQxNDIyMDMKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxMToxOTo1NiAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBmaXggZmx1c2ggKyBpbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSBhcmd1bWVudHMKCiAgICBmbHVzaCArIGludmFsaWRhdGVfZGNhY2hlX3JhbmdlKCkgZXhwZWN0IHRoZSBzdGFydCBhbmQgc3RvcCsxIGFkZHJlc3MuCiAgICBTbyB0aGUgc3RvcCBhZGRyZXNzIGlzIHRoZSBmaXJzdCBhZGRyZXNzIGJlaGluZCAoISkgdGhlIHJhbmdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDg3MWU2Y2UxODhhN2M2YmM3MzIxYmNmODM3Mjg1NzAzNWQyMGYxY2QKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMTQgMDg6NDE6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogZmR0OiB1c2UgZmR0X2ZpeHVwX2V0aGVybmV0KCkKCiAgICBCeSB1c2luZyBhbGlhc2VzIGluIHRoZSBkdHMgZmlsZSwgdGhlIGV0aGVybmV0IG5vZGUgZml4dXAgaXMKICAgIG11Y2ggZWFzaWVyIHdpdGggdGhlIHJlY2VudGx5IGFkZGVkIGZ1bmN0aW9ucy4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBkdHMgZmlsZSBuZWVkcyB0aGUgYWxpYXNlcyBmb3IgdGhpcyB0byB3b3JrLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMzYyODg4NDdlM2IwNGYyZmYzNTdhMDY3YWQ0NWUxMGFmYTBhMjRjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDEzIDE0OjUyOjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEJyaW5nIDR4eCBmZHQgc3VwcG9ydCB1cC10by1kYXRlCgogICAgVGhpcyBwYXRjaCB1cGRhdGUgdGhlIDR4eCBmZHQgc3VwcG9ydC4gSXQgZW5hYmxlZCBmZHQgYm9vdGluZwogICAgb24gdGhlIEFNQ0MgS2lsYXVlYSBhbmQgU2VxdW9pYSBmb3Igbm93LiBNb3JlIGNhbiBmb2xsb3cgbGF0ZXIKICAgIHF1aXRlIGVhc2lseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGRjODBlMjc1OWZiYTg1OWNjYzRjZGFkYzYzMzU3N2NhMjk3MWYzZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyNyAwNzo1MDo1NCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgbWlzc2luZyBjaGVjayBmb3IgZXJhc2VkIGRlc3QgdG8gZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKCkKCiAgICBUaGUgY2hlY2sgZm9yIGFuIHN1ZmZpY2llbnRseSBlcmFzZWQgZGVzdGluYXRpb24gd2FzIG1pc3NpbmcgaW4gdGhlCiAgICBidWZmZXJlZCB3cml0ZSBmdW5jdGlvbiBvZiB0aGUgY2ZpIGZsYXNoIGRyaXZlciAod2hlbgogICAgQ0ZHX0ZMQVNIX1VTRV9CVUZGRVJfV1JJVEUgaXMgZGVmaW5lZCkuIFRoaXMgcGF0Y2ggYWRkcyB0aGlzIGNoZWNrIHRvIHRoYXQKICAgIHdyaXRpbmcgdG8gc3VjaCBhIHJlZ2lvbiB3aWxsIGZhaWwgd2l0aCB0aGUgY3VycmVjdCBlcnJvciBtZXNzYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzM2VkNzNiYzBlMzhkMGYyYjVjMTgzZDQ2MjlkOGYyMDdlNWI5OTk0CkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CU1vbiBOb3YgMTIgMTA6NTY6MTcgMjAwNyArMDEwMAoKICAgIFNvbWUgY29uZmlndXJhdGlvbiB1cGRhdGVzIGZvciB0aGUgVFFNNTIwMCBiYXNlZCBUQjUyMDAgYm9hcmQ6CgogICAgLSBlbmFibGUgY29tbWFuZCBsaW5lIGhpc3RvcnkKICAgIC0gaW5jcmVhc2UgbWFsbG9jIHNwYWNlIChiZWNhdXNlIG9mIGJpZ2dlciBmbGFzaCBzZWN0b3JzKQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IGUzMThkOWU5MDIxYTBhZjc1MDgxNzFmODRlZDA5ZDBlNzlmMDI4NGUKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJVGh1IFNlcCAyNyAxMToxMDowOCAyMDA3ICswMjAwCgogICAgVFFNOHh4OiB1c2UgdGhlIENGSSBmbGFzaCBkcml2ZXIgb24gYWxsIFRRTTh4eCBib2FyZHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCAxMWQ5ZWVjNDc5YjQ3MGVhYjkyNDJhYjkzN2ZjYTcwYTg3NmQ5Mzc2CkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTYgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IGFkanVzdCBmb3IgZG91YmxlZCBmbGFzaCBzZWN0b3Igc2l6ZSArIHNvbWUgbWlub3IgZml4ZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCAyMmQxYTU2Y2JmYjBiZmYzNGY0NzdiNGRiNmE1NWQwNzZkODI5YjgzCkF1dGhvcjogSmVucyBHZWhybGVpbiA8amVucy5nZWhybGVpbkB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTQgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IEV4Y2hhbmdlZCBTRFJBTSB0aW1pbmcgYnkgYSBtb3JlIHJlbGF4ZWQgdGltaW5nLgoKICAgIENBUy1MYXRlbmN5PTIsIFdyaXRlIFJlY292ZXJ5IFRpbWUgdFdSPTIKICAgIFRoZSBtYXguIHN1cHBvcnRlZCBidXMgZnJlcXVlbmN5IGlzIDY2IE1Iei4gVGhlcmVmb3JlLCBjaGFuZ2VkCiAgICB0aHJlc2hvbGQgdG8gc3dpdGNoIGZyb20gMToxIG1vZGUgdG8gMjoxIGZyb20gODAgTUh6IHRvIDY2IE1Iei4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBiOTg4YjhjZDQ0Mzk4OWJlNjUxNjE4ODhlZWEwMTI3YWQwM2Y4NDZmCkF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTYgMjAwNyArMDIwMAoKICAgIFRRTTg4NUQ6IHVzZSBjYWxjdWxhdGVkIGNwdWNsayBpbnN0ZWFkIG9mIG1lYXN1cmluZyBpdAoKICAgIE9uIHRoZSBUUU04ODVEIHRoZSBtZWFzdXJlbWVudCBvZiBjcHVjbGsgd2l0aCB0aGUgUElUIHJlZmVyZW5jZQogICAgdGltZXIgaXN0IG5vdCBuZWNlc3NhcnkuIFNpbmNlIGFsbCBtb2R1bGUgdmFyaWFudHMgdXNlIHRoZSBzYW1lCiAgICBleHRlcm5hbCAxMCBNSHogb3NjaWxsYXRvciwgdGhlIGNwdWNsayBvbmx5IGRlcGVuZHMgb24gdGhlIFBMTAogICAgY29uZmlndXJhdGlvbiAtIHdoaWNoIGlzIHJlYWRhYmxlIGJ5IHNvZnR3YXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDQ5MmM3MDQ5ODY5MzQ4ZDMxMTY4ZGU4ZGFkODk2NTEzMTVlNDY4ZTAKQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxqZW5zLmdlaHJsZWluQHRxcy5kZT4KRGF0ZToJVGh1IFNlcCAyNyAxNDo1NDo0NiAyMDA3ICswMjAwCgogICAgVFFNODg1RDogZml4IFNEUkFNIHJlZnJlc2gKCiAgICBBdCAxMzMgTUh6IHRoZSBjdXJyZW50IFNEUkFNIHJlZnJlc2ggcmF0ZSBpcyB0b28gZmFzdAogICAgKG1lYXN1cmVkIDQgKiAxLjE3IHVzKS4KICAgIENGR19NQU1SX1BUQSBjaGFuZ2VzIGZyb20gMzkgdG8gMTI4LiBUaGlzIHJlc3VsdAogICAgaW4gYSByZWZyZXNoIHJhdGUgb2YgNCAqIDcuOCB1cyBhdCB0aGUgZGVmYXVsdCBjbG9jawogICAgNjYgTUh6LiBBdCAxMzMgTUh6IHRoZSB2YWx1ZSB3aWxsIGJlIHRoZW4gNCAqIDMuOCB1cy4KICAgIFRoaXMgaXMgYSBjb21wcm9taXNlIHVudGlsIGEgbmV3IG1ldGhvZCBpcyBmb3VuZCB0bwogICAgYWRqdXN0IHRoZSByZWZyZXNoIHJhdGUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgZGFiYWQ0YjliYzQ2OTA4ZTMwMWY3M2NlNzZiMzhiMjM2MjZhOTZlOQpBdXRob3I6IEplbnMgR2VocmxlaW4gPGplbnMuZ2VocmxlaW5AdHFzLmRlPgpEYXRlOglUaHUgU2VwIDI3IDE0OjU0OjQ2IDIwMDcgKzAyMDAKCiAgICBUUU04NjBNOiBTdXBwb3J0IGZvciAxMGNvbCBTRFJBTXMsIG1heC4gMTI4IE1pQgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDYxZmIxNWM1MTZmZWY1NjMxZTMwNWYxOTc2ZDdiM2E2Nzk3MjU4NTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDI3IDAxOjUyOjUwIDIwMDcgKzAxMDAKCiAgICBGaXggY29kaW5nIHN0eWxlIGlzc3VlczsgdXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDQ2N2JjZWUxMWZlMjZhZDQyMmYyZGU5NzFhYTcwODY2MDc5ODcwZjIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxOCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgbWFudWZhY3R1cmVyLXNwZWNpZmljIGZpeHVwcwoKICAgIFJ1biBmaXh1cHMgYmFzZWQgb24gdGhlIEpFREVDIG1hbnVmYWN0dXJlciBJRCBpbmRlcGVuZGVudCBvZiB0aGUKICAgIGNvbW1hbmQgc2V0IElELgoKICAgIFRoaXMgY2hhbmdlcyBjdXJyZW50IGJlaGF2aW91cjogUHJldmlvdXNseSwgZ2VvbWV0cnkgcmV2ZXJzYWwgZm9yIEFNRAogICAgY2hpcHMgd2VyZSBkb25lIGJhc2VkIG9uIHRoZSBjb21tYW5kIHNldCBJRCwgd2hpbGUgdGhleSBhcmUgbm93IGRvbmUKICAgIGJhc2VkIG9uIHRoZSBKRURFQyBtYW51ZmFjdHVyZXIgYW5kIGRldmljZSBJRC4KCiAgICBBbHNvIGFkZCBmaXh1cCBmb3IgdG9wLWJvb3QgQXRtZWwgY2hpcHMuIEEgZml4dXAgaXMgbmVlZGVkIGZvcgogICAgQVQ0OUJWNjQxNihUKSB0b28sIGJ1dCBzaW5jZSB1LWJvb3QgY3VycmVudGx5IG9ubHkgcmVhZHMgdGhlIGxvdyBieXRlCiAgICBvZiB0aGUgZGV2aWNlIElELCB0aGVyZSdzIG5vIHdheSB0byB0ZWxsIGl0IGFwYXJ0IGZyb20gQVQ0OUJWNjQyRCwKICAgIHdoaWNoIHNob3VsZCBub3QgaGF2ZSB0aGlzIGZpeHVwLiBTaW5jZSBBVDQ5QlY2NDJEIHN1cHBvcnQgaXMKICAgIG5lY2Vzc2FyeSB0byBnZXQgQVROR1cxMDAgYm9hcmQgc3VwcG9ydCBpbnRvIG1haW5saW5lLCBJJ3ZlIGNvbW1lbnRlZAogICAgb3V0IHRoZSBmaXh1cCBmb3Igbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDBkZGYwNmRkZjZiNGJkMDU3YWQ0YzVmMGRmZmVhNzg3MGJhMDZhMmEKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxNyAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBBZGQgY21kc2V0LXNwZWNpZmljIGluaXQgZnVuY3Rpb25zCgogICAgTW92ZSB0aGluZ3MgbGlrZSByZWFkaW5nIEpFREVDIElEcyBhbmQgZml4aW5nIHVwIGdlb21ldHJ5IHJldmVyc2FsCiAgICBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4gVGhlIGdlb21ldHJ5IHJldmVyc2FsIGZpeHVwIGlzIG5vdyBwZXJmb3JtZWQKICAgIGJ5IGFsdGVyaW5nIHRoZSBxcnkgc3RydWN0dXJlIGRpcmVjdGx5LCB3aGljaCBtYWtlcyB0aGUgc2VjdG9yIGluaXQKICAgIGNvZGUgc2xpZ2h0bHkgY2xlYW5lci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBlMjM3NDFmNGE2ZDgwNDc1MjBlZjBkNDk3MTc2Mjc0OWIzNTg3ZDMyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CUZyaSBEZWMgMTQgMTU6MzY6MTYgMjAwNyArMDEwMAoKICAgIGNmaV9mbGFzaDogUmVhZCB3aG9sZSBRUlkgc3RydWN0dXJlIGluIG9uZSBnbwoKICAgIFJlYWQgb3V0IHRoZSB3aG9sZSBDRkkgU3RhbmRhcmQgUXVlcnkgc3RydWN0dXJlIGFmdGVyIHN1Y2Nlc3NmdWwgY2ZpCiAgICBpZGVudGlmaWNhdGlvbi4gVGhpcyBhbGxvd3Mgc3Vic2VxdWVudCBjb2RlIHRvIGFjY2VzcyB0aGlzIGluZm9ybWF0aW9uCiAgICBkaXJlY3RseSB3aXRob3V0IGhhdmluZyB0byBnbyB0aHJvdWdoIGZsYXNoX3JlYWRfdWNoYXIoKSBhbmQgZnJpZW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkZjljMjVlYTA0YjM4YTBlMDVkNGY4YzczYzVjYzE0NGNkYWZhN2RiCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBEZWMgMTcgMTE6MDI6NDQgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBGaXggbG9naWMgaW52ZXJzaW9uIGluIGRpc2FibGVfaW50ZXJydXB0cygpCgogICAgZGlzYWJsZV9pbnRlcnJ1cHRzKCkgc2hvdWxkIHJldHVybiBub256ZXJvIGlmIGludGVycnVwdHMgd2VyZQogICAgX2VuYWJsZWRfIGJlZm9yZSwgbm90IGRpc2FibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGFjYWM0NzUyMTJjYmVkYjE3YjMyMWEzNjNhMWM4NzhlMmI0N2IzN2YKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIERlYyAxNCAxNjo1MToyMiAyMDA3ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBpbnRlcnJ1cHRzIGF0IGJvb3R1cAoKICAgIFRoZSB0aW1lciBjb2RlIGRlcGVuZHMgb24gdGhlIHRpbWVyIGludGVycnVwdCB0byBrZWVwIHRyYWNrIG9mIHRoZQogICAgdXBwZXIgMzIgYml0cyBvZiB0aGUgY3ljbGUgY291bnRlci4gVGhpcyBvYnZpb3VzbHkgZG9lc24ndCB3b3JrIHdoZW4KICAgIGludGVycnVwdHMgYXJlIGRpc2FibGVkIHRoZSB3aG9sZSB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDk1NzBiY2Q4N2Y0ZGIyNTU1MTRmNDNiNjcwMTc0NmM0MTJmOGZlZjAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAxNSAxMDowMzo0NSAyMDA3ICswMTAwCgogICAgQVZSMzI6IEZpeCB3cm9uZyBwaW4gc2V0dXAgZm9yIFVTQVJUMwoKICAgIEFzIHJlcG9ydGVkIGJ5IEdlcmhhcmQgQmVyZ2hvZmVyOgoKICAgIGluICJncGlvX2VuYWJsZV91c2FydDMiIHRoZSBjb3JyZWN0IHBpbnMgZm9yIFVTQVJUIDMgYXJlIFBCMTcgYW5kIFBCMTgKICAgIGluc3RlYWQgb2YgUEIxOCBhbmQgUEIxOS4KCiAgICB3aGljaCBpcyBvYnZpb3VzbHkgY29ycmVjdC4gVGhlcmUncyBjdXJyZW50bHkgbm8gY29kZSB0aGF0IHVzZXMKICAgIFVTQVJUMywgYnV0IGN1c3RvbSBib2FyZHMgbWF5IHJ1biBpbnRvIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDA5ZWEwZGUwM2RjYzNlZTdhZjA0NWIwYjU3MjIyN2JkYTJjMWM5MTgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjQ0OjIwIDIwMDcgKzAxMDAKCiAgICBSRUFETUU6IFJlbW92ZSBBVFNUSzEwMDAgZGF1Z2h0ZXJib2FyZCBsaXN0CgogICAgQXMgbm90ZWQgYnkgS2ltIFBoaWxsaXBzLCB0aGVzZSBsaXN0cyB0ZW5kIHRvIGJlY29tZSBvdXQgb2YgZGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBjODFjYmJhZDIxY2IwYWU5ODNlMmU3OTYyMTEyMDIyMzRjZGM4YmUyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVR1ZSBPY3QgMzAgMTQ6NTY6MzYgMjAwNyArMDEwMAoKICAgIEFkZCBBVFNUSzEwMFsyMzRdIHRvIE1BSU5UQUlORVJTCgogICAgQWRkIGFsbCB0aGUgQVRTVEsxMDAwIGRhdWdodGVyYm9hcmRzIHRvIE1BSU5UQUlORVJTIGFsb25nIHdpdGggdGhlaXIKICAgICJtb3RoZXIiLiBBbHNvIHVwZGF0ZSB0aGUgZW50cnkgZm9yIEFUU1RLMTAwMCB0byBiZSBub3Qgb25seSBhYm91dCB0aGUKICAgIEFQNzAwMCBDUFU7IGl0J3MgaW50ZW5kZWQgdG8gaGFuZGxlIGFsbCBDUFVzIGluIHRoZSBBVDMyQVAgZmFtaWx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDY0ZmYyMzU3YjE3MjcyMTM4MDM1OTE4MTNkYmM3NzljOTI0YmY3NzIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE9jdCAyOSAxMzowMjo1NCAyMDA3ICswMTAwCgogICAgQVZSMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVRTVEsxMDA0IGJvYXJkCgogICAgQVRTVEsxMDA0IGlzIGEgZGF1Z2h0ZXJib2FyZCBmb3IgQVRTVEsxMDAwIHdpdGggdGhlIEFUMzJBUDcwMDIgQ1BVLAogICAgd2hpY2ggaXMgYSBkZXJpdmF0aXZlIG9mIEFUMzJBUDcwMDAuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNjY3NTY4ZGIxNTdmMzc0Yjg1YWJkN2UwMzU5NmRkZDFmMGIyNTY4MQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjAyOjU0IDIwMDcgKzAxMDAKCiAgICBBVlIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDMgYm9hcmQKCiAgICBBVFNUSzEwMDMgaXMgYSBkYXVnaHRlcmJvYXJkIGZvciBBVFNUSzEwMDAgd2l0aCB0aGUgQVQzMkFQNzAwMSBDUFUsCiAgICB3aGljaCBpcyBhIGRlcml2YXRpdmUgb2YgQVQzMkFQNzAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA1ZmVlODRhNzk0YTUxZWM4MzA1NDhjZGE0ODVhNzcwZWZiMDE4YjkyCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTM6MjM6MzMgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBNYWtlIHNvbWUgQVQzMkFQNzAweCBwZXJpcGhlcmFscyBvcHRpb25hbAoKICAgIEFkZCBhIGNoaXAtZmVhdHVyZXMgZmlsZSBwcm92aWRpbmcgZGVmaW5pdGlvbnMgb2YgdGhlIGZvcm0KCiAgICBBVDMyQVA3MDB4X0NISVBfSEFTXzxwZXJpcGhlcmFsPgoKICAgIHRvIGluZGljYXRlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGdpdmVuIHBlcmlwaGVyYWwgb24gdGhlIGN1cnJlbnRseQogICAgc2VsZWN0ZWQgY2hpcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAzNmYyOGY4YTk2MDVlZTVkY2ZhMzMwNDgyY2ZjNjIxNzEyNjFhZjk3CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTM6MDk6NTYgMjAwNyArMDEwMAoKICAgIEFWUjMyOiBSZW5hbWUgYXQzMmFwNzAwMCAtPiBhdDMyYXA3MDB4CgogICAgVGhlIFNvQy1zcGVjaWZpYyBjb2RlIGZvciBhbGwgdGhlIEFUMzJBUDcwMHggQ1BVcyBpcyBwcmFjdGljYWxseQogICAgaWRlbnRpY2FsOyB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgc29tZSBjaGlwcyBoYXZlIGxlc3MgZmVhdHVyZXMKICAgIHRoYW4gb3RoZXJzLiBCeSBkb2luZyB0aGlzIHJlbmFtZSwgd2UgY2FuIGFkZCBzdXBwb3J0IGZvciB0aGUgQVA3MDAwCiAgICBkZXJpdmF0aXZlcyBzaW1wbHkgYnkgbWFraW5nIHNvbWUgZmVhdHVyZXMgY29uZGl0aW9uYWwuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGQ1ZmE5OWM3M2YzNTRlN2NmOTg1ZWZjZjQxN2VhNTVjYTJmNmE1ZQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglGcmkgSnVuIDI5IDE4OjIyOjM0IDIwMDcgKzAyMDAKCiAgICBhdG1lbF9tY2k6IFNob3cgU1Igd2hlbiBibG9jayByZWFkIGZhaWxzCgogICAgU2hvdyBjb250cm9sbGVyIHN0YXR1cyBhcyB3ZWxsIGFzIGNhcmQgc3RhdHVzIHdoZW4gYW4gZXJyb3Igb2NjdXJzCiAgICBkdXJpbmcgYmxvY2sgcmVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA4Njk3ZTZhMTliMTBmNTE0NTExYjZhOWM4NmRlODhiZDEwOGM0ZjhkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDEzIDE0OjUyOjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEJyaW5nIDR4eCBmZHQgc3VwcG9ydCB1cC10by1kYXRlCgogICAgVGhpcyBwYXRjaCB1cGRhdGUgdGhlIDR4eCBmZHQgc3VwcG9ydC4gSXQgZW5hYmxlZCBmZHQgYm9vdGluZwogICAgb24gdGhlIEFNQ0MgS2lsYXVlYSBhbmQgU2VxdW9pYSBmb3Igbm93LiBNb3JlIGNhbiBmb2xsb3cgbGF0ZXIKICAgIHF1aXRlIGVhc2lseS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTJkMzBhYTc5Nzc5YzJhYTdhOTk4YmJhZTRjMDc1ZjgyMmE1MzAwNApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjM0IDIwMDcgKzAxMDAKCiAgICBjZmlfZmxhc2g6IFVzZSBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkKCiAgICBVc2UgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpIHRvIGNvbnZlcnQgZnJvbSBwaHlzaWNhbCB0bwogICAgdmlydHVhbCBhZGRyZXNzZXMuIFRoaXMgZ2l2ZXMgdGhlIGFyY2ggYSBjaGFuY2UgdG8gcHJvdmlkZSBhbiB1bmNhY2hlZAogICAgbWFwcGluZyBmb3IgZmxhc2ggYWNjZXNzZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNGQ3ZDY5MzZlYjI5YWY3Y2NhMzMwOTM3ODA4MzEyYWE1ZjYxNDU0ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjMzIDIwMDcgKzAxMDAKCiAgICBJbnRyb2R1Y2UgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpCgogICAgbWFwX3BoeXNtZW0oKSByZXR1cm5zIGEgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBhCiAgICBnaXZlbiBwaHlzaWNhbCBhZGRyZXNzIHdpdGhvdXQgaW52b2x2aW5nIHRoZSBjYWNoZS4gdW5tYXBfcGh5c21lbSgpCiAgICBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHZpcnR1YWwgYWRkcmVzcyByZXR1cm5lZCBieSBtYXBfcGh5c21lbSgpIGlzCiAgICBubyBsb25nZXIgbmVlZGVkLgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHN0dWIgaW1wbGVtZW50YXRpb24gd2hpY2ggc2ltcGx5IHJldHVybnMgdGhlCiAgICBwaHlzaWNhbCBhZGRyZXNzIGNhc3QgdG8gYSB1Y2hhciAqIGZvciBhbGwgYXJjaGl0ZWN0dXJlcyBleGNlcHQgQVZSMzIsCiAgICB3aGljaCBjb252ZXJ0cyB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0byBhbiB1bmNhY2hlZCB2aXJ0dWFsIG1hcHBpbmcuCiAgICB1bm1hcF9waHlzbWVtKCkgaXMgYSBuby1vcCBvbiBhbGwgYXJjaGl0ZWN0dXJlcywgYnV0IGlmIGFueQogICAgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGRvIHN1Y2ggbWFwcGluZ3MgdGhyb3VnaCB0aGUgVExCLCB0aGlzIGlzIHRoZQogICAgaG9vayB3aGVyZSB0aG9zZSBUTEIgZW50cmllcyBjYW4gYmUgaW52YWxpZGF0ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgY2RiYWVmYjVmNWYwM2U1NDQ1NWQwNDM5ZGNmNmRiZDk3ZWFkMWY5ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglUaHUgRGVjIDEzIDEyOjU2OjMyIDIwMDcgKzAxMDAKCiAgICBjZmlfZmxhc2g6IEludHJvZHVjZSByZWFkIGFuZCB3cml0ZSBhY2Nlc3NvcnMKCiAgICBJbnRyb2R1Y2UgZmxhc2hfcmVhZHs4LDE2LDMyLDY0KSBhbmQgZmxhc2hfd3JpdGV7OCwxNiwzMiw2NH0gYW5kIHVzZQogICAgdGhlbSB0byBhY2Nlc3MgdGhlIGZsYXNoIG1lbW9yeS4gVGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoZW4gdGhlIGZsYXNoCiAgICBpcyBhY3R1YWxseSBiZWluZyBhY2Nlc3NlZDsgbWVyZWx5IGRlcmVmZXJlbmNpbmcgYSB2b2xhdGlsZSBwb2ludGVyCiAgICBsb29rcyBqdXN0IGxpa2UgYW55IG90aGVyIGtpbmQgb2YgYWNjZXNzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDgxMjcxMWNlNmIzYTM4NjEyNWRjZjBkNmE1OTU4OGU0NjFhYmJiODcKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjozMSAyMDA3ICswMTAwCgogICAgSW1wbGVtZW50IF9fcmF3X3tyZWFkLHdyaXRlfVtid2xdIG9uIGFsbCBhcmNoaXRlY3R1cmVzCgogICAgVGhpcyBhZGRzIGltcGxlbWVudGF0aW9ucyBvZiBfX3Jhd19yZWFkW2J3bF0gYW5kIF9fcmF3X3dyaXRlW2J3bF0gdG8KICAgIG02OGssIHBwYywgbmlvcyBhbmQgbmlvczIuIFRoZSBtNjhrIGFuZCBwcGMgaW1wbGVtZW50YXRpb25zIHdlcmUgdGFrZW4KICAgIGZyb20gTGludXguCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYmU2MGE5MDIxYzgyZmM1YWVjZDViMmIxZmM5NmY3MGE5YzgxYmJjZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTYXQgT2N0IDYgMTg6NTU6MzYgMjAwNyArMDIwMAoKICAgIGNmaV9mbGFzaDogUmVvcmRlciBmdW5jdGlvbnMgYW5kIGVsaW1pbmF0ZSBleHRyYSBwcm90b3R5cGVzCgogICAgUmVvcmRlciB0aGUgZnVuY3Rpb25zIGluIGNmaV9mbGFzaC5jIHNvIHRoYXQgZWFjaCBmdW5jdGlvbiBvbmx5IHVzZXMKICAgIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBkZWZpbmVkIGJlZm9yZSBpdC4gVGhpcyBhbGxvd3MgdGhlIHN0YXRpYwogICAgcHJvdG90eXBlIGRlY2xhcmF0aW9ucyBuZWFyIHRoZSB0b3AgdG8gYmUgZWxpbWluYXRlZCBhbmQgbWlnaHQgYWxsb3cKICAgIGdjYyB0byBkbyBhIGJldHRlciBqb2IgaW5saW5pbmcgZnVuY3Rpb25zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDMwNTU3OTNiY2JkZjI0YjFmODExN2Y2MDZmZmI3NjZkMzJlYjc2NmYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjoyOSAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBNYWtlIHNvbWUgbmVlZGxlc3NseSBnbG9iYWwgZnVuY3Rpb25zIHN0YXRpYwoKICAgIE1ha2UgZnVuY3Rpb25zIG5vdCBkZWNsYXJlZCBpbiBhbnkgaGVhZGVyIGZpbGUgc3RhdGljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDdlNWI5YjQ3MTUxOGM1NjUyZmViYzY4YmE2MmI0MzIxOTNkNmFiZjQKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJVGh1IERlYyAxMyAxMjo1NjoyOCAyMDA3ICswMTAwCgogICAgY2ZpX2ZsYXNoOiBCcmVhayBsb25nIGxpbmVzCgogICAgVGhpcyBwYXRjaCB0cmllcyB0byBrZWVwIGFsbCBsaW5lcyBpbiB0aGUgY2ZpX2ZsYXNoIGRyaXZlciBiZWxvdyA4MAogICAgY29sdW1ucy4gVGhlcmUgYXJlIGEgZmV3IGxpbmVzIGxlZnQgd2hpY2ggZG9uJ3QgZml0IHRoaXMgcmVxdWlyZW1lbnQKICAgIGJlY2F1c2UgSSBjb3VsZG4ndCBmaW5kIGFueSB0cml2aWFsIHdheSB0byBicmVhayB0aGVtIChpLmUuIGl0IHdvdWxkCiAgICB0YWtlIHNvbWUgcmVzdHJ1Y3R1cmluZywgd2hpY2ggSSBpbnRlbmQgdG8gZG8gaW4gYSBsYXRlciBwYXRjaC4pCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgNDIwMjZjOWNiM2E3Njg0OWI0MWU2ZTI0YWJmYjdiNTY4MDdhNWMxYQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBEZWMgMTEgMTM6NTk6NTcgMjAwNyArMDEwMAoKICAgIENGSTogc3luY2hyb25pemUgY29tbWFuZCBvZmZzZXRzIHdpdGggTGludXggQ0ZJIGRyaXZlcgoKICAgIEZpeGVzIG5vbi13b3JraW5nIENGSSBGbGFzaCBvbiB0aGUgSW5rYTR4MCBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDhmZjNkZTYxZmM1ZjliM2IyMTY0N2JjZTA4MWEzYjdmNzEwZjBkNGQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglGcmkgRGVjIDcgMTI6MTc6MzQgMjAwNyAtMDYwMAoKICAgIEhhbmRsZSBNUEM4NXh4IFBDSWUgcmVzZXQgZXJyYXRhIChQQ0ktRXggMzgpCgogICAgT24gdGhlIE1QQzg1eHggYm9hcmRzIHRoYXQgaGF2ZSBQQ0llIGVuYWJsZSB0aGUgUENJZSBlcnJhdGEgZml4LgogICAgKE1QQzg1NDREUywgTVBDODU0OENEUywgTVBDODU2OE1EUykuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4MmFjOGM5NzE0NWE0YzNiZjhiM2RiZmFkMDBmYTk2ZTkyMGY5YjljCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIERlYyA3IDEyOjA0OjMwIDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCgogICAgKiBFbmFibGVkIENPTkZJR19DTURfRUxGCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBkNDM1NzkzMjI5Y2UyOWE0Mjc5N2MxZWRjMzlmNWIzNGY5ODdmOTFhCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJRnJpIERlYyA3IDA0OjU5OjI2IDIwMDcgLTA2MDAKCiAgICBIYW5kbGUgQXN5bmNocm9ub3VzIEREUiBjbG9jayBvbiA4NXh4CgogICAgVGhlIE1QQzg1NzIgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBhbiBhc3luY2hyb25vdXMgRERSIGNsb2NrIHdpdGgKICAgIHJlZ2FyZHMgdG8gdGhlIHBsYXRmb3JtIGNsb2NrLgoKICAgIEludHJvZHVjZSBnZXRfZGRyX2ZyZXEoKSB0byByZXBvcnQgdGhlIEREUiBmcmVxIHJlZ2FyZGxlc3Mgb2Ygc3luYy9hc3luYwogICAgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDIyYWJiMmQyZWFmN2I3OTVhNjkyM2M2MjczZWM5Y2I1M2ZkYTlhMTAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDEwOjM0OjI4IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCgogICAgKiBSZW1vdmVkIHNvbWUgbWlzYyBlbnZpcm9ubWVudCBzZXR1cAogICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDQxNWE2MTNiYWJiODRkNWU1ZDViNDJlOGU1NTM4NjhjNzFmYzNhNjQKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDEwOjQ3OjQ0IDIwMDcgLTA2MDAKCiAgICBNb3ZlIHRoZSBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBjMmQ5NDNmZmJmZDMzNTliM2I0NWQxNzdiNDM3Mzc5ZDJjYjg2ZmJmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxNjoxOCAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU0MCBBRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4NzBjZWFjNWIzYTM0ODZjMTA5Mzk2ZTAwNWFmODFhZTc2MmI1NzEwCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxNDo1MCAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU2MCBBRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhY2JjYTg3NmZiM2ZlYzI1Y2Q5YzU1YjBlZmM4MWZmNjE4ZmY1MjYyCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAxMDoxMzo0NyAyMDA3IC0wNjAwCgogICAgTW92ZSB0aGUgTVBDODU2OCBNRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgoKICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCBhODUzZDU2YzU5YjMzNDE1MzA0NTMxNDQzNjMzODA4NzM2YWNmYzZlCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAwMjoxODo1OSAyMDA3IC0wNjAwCgogICAgVXNlIHN0YW5kYXJkIExBV0FSX1RSR1RfSUZfKiBkZWZpbmVzIGZvciBMQVcgc2V0dXAgb24gODV4eAoKICAgIFdlIGFscmVhZHkgaGFkIGRlZmluZXMgZm9yIExBV0FSX1RSR1RfSUZfKiB0aGF0IHdlIHNob3VsZCB1c2UKICAgIHJhdGhlciB0aGFuIGNyZWF0aW5nIG5ldyBvbmVzLiAgQWxzbywgYWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgZm9yCiAgICBQQ0lFIHRhcmdldHMuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAwNGRiNDAwODkyZGEzN2I3NmE1ODVlMzMyYTBjMTM3OTU0YWQyMDE1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE5vdiAyOSAwMjoxMDowOSAyMDA3IC0wNjAwCgogICAgU3RvcCB1c2luZyBpbW1hcF90IG9uIDg1eHgKCiAgICBJbiB0aGUgZnV0dXJlIHRoZSBvZmZzZXRzIHRvIHZhcmlvdXMgYmxvY2tzIG1heSBub3QgYmUgaW4gc2FtZSBsb2NhdGlvbi4KICAgIE1vdmUgdG8gdXNpbmcgQ0ZHX01QQzg1eHhfKl9BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSByZWdpc3RlcnMKICAgIGluc3RlYWQgb2YgZ2V0dGluZyBpdCB2aWEgJmltbWFwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMjcxNDIyM2Y4ZTA0YWIzZTQxMzNmZjY1ODcyZWVmMzY2ZDkwYmZlYQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDE6MjM6MDkgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBDT05GSUdfT0ZfRkxBVF9UUkVFIHJlbGF0ZWQgY29kZSBmcm9tIG1wYzg1eHggc2luY2Ugd2Ugbm93IHVzZSBsaWJmZHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGM0ODA4NjFiZjAwMDE1NmU2YTNlOTMyYzI1OGRiNTlmZjIyMTJkZDMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgTm92IDI5IDAxOjA2OjE5IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODU2OCBNRFMgdG8gdXNlIGxpYmZkdAoKICAgIFVwZGF0ZWQgdGhlIE1QQzg1NjggTURTIGNvbmZpZyB0byB1c2UgbGliZmR0IGFuZCBhc3N1bWUgdXNlIG9mIGFsaWFzZXMgZm9yCiAgICBldGhlcm5ldCwgcGNpLCBhbmQgc2VyaWFsIGZvciB0aGUgdmFyaW91cyBmaXh1cHMgdGhhdCBhcmUgZG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1NjNmNTZlMGM2OGY2OTIwZjk1NjM4MmQ2ZDEzYmVlM2YwMWMwZjcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDE0IDE1OjUyOjA2IDIwMDcgLTA1MDAKCiAgICBBZGQgUENJIEV4cHJlc3Mgc3VwcG9ydCBvbiBNUEM4NTY4TURTCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYjkwZDI1NDk3NjI1YjkwZmZhM2YyOTExYTA4OTVjYTIzNzU1NmZmNQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDA6MTE6NDQgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NXh4IENEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODV4eCBDRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGZkNWVjNjZiMTA1MjFhMDU3YWQ3M2U2OWFiNWYwZjllYWZiYTI1NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMjI6NTQ6MjcgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTQwIEFEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODU0MCBBRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNWNlNzE1ODAyZjZjNTBkYzc4YjM0MDViOTJmMTg0YjFlMzcxMDUxOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMjI6NDA6MzEgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTYwIEFEUyB0byB1c2UgbGliZmR0CgogICAgVXBkYXRlZCB0aGUgTVBDODU2MCBBRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWFmZWVmYmRiOGIwMjlmNWNhMmExOTU1OThkMGE1MDFhNjA2ZWVhOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjggMDA6MzY6MzMgMjAwNyAtMDYwMAoKICAgIFN0b3AgdXNpbmcgaW1tYXBfdCBmb3IgY3BtIG9mZnNldCBvbiA4NXh4CgogICAgSW4gdGhlIGZ1dHVyZSB0aGUgb2Zmc2V0cyB0byB2YXJpb3VzIGJsb2NrcyBtYXkgbm90IGJlIGluIHNhbWUgbG9jYXRpb24uCiAgICBNb3ZlIHRvIHVzaW5nIENGR19NUEM4NXh4X0NQTV9BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSBDUE0gcmVnaXN0ZXJzCiAgICBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgdmlhICZpbW1hcC0+aW1fY3BtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjU5YjU1YTViOGZjYWRhYTk5NzgxYmE0OGU3YTM4ZTk1NmFmYTUyNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjM6MjU6MDIgMjAwNyAtMDYwMAoKICAgIFN0b3AgdXNpbmcgaW1tYXBfdCBmb3IgZ3V0cyBvZmZzZXQgb24gODV4eAoKICAgIEluIHRoZSBmdXR1cmUgdGhlIG9mZnNldHMgdG8gdmFyaW91cyBibG9ja3MgbWF5IG5vdCBiZSBpbiBzYW1lIGxvY2F0aW9uLgogICAgTW92ZSB0byB1c2luZyBDRkdfTVBDODV4eF9HVVRTX0FERFIgYXMgdGhlIGJhc2Ugb2YgdGhlIGd1dHMgcmVnaXN0ZXJzCiAgICBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgdmlhICZpbW1hcC0+aW1fZ3VyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTBjMDNjOGNmNDk0ZDkxY2RlYzM5NjcwZDk1MzM3Yzc0M2UxNmVjOQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjI6NDI6MzQgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4NTQ0IERTIGNvbmZpZwoKICAgICogUmVtb3ZlZCBIQVNfRVRIMi9IQVNfRVRIMyAtIE1QQzg1NDQgb25seSBoYXMgVFNFQzEvMgogICAgKiBSZW1vdmVkIHNvbWUgbWlzYyBlbnZpcm9ubWVudCBzZXR1cAogICAgKiBNb3ZlZCB0byB1c2luZyBmZHRmaWxlICYgZmR0YWRkciBhcyBmZHQgZW52IHZhciBuYW1lcwogICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGFkZGNlNTdlMmU0YzQ5ZTc3ZmZiMjAyMGE4NDY5MDcxM2JiMThiNDcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDE3OjEyOjI0IDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODU0NERTIHRvIHVzZSBsaWJmZHQKCiAgICBVcGRhdGVkIHRoZSBNUEM4NTQ0RFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjg1MmNlNzJmMTAwY2FiZDFmMTFjMjFjMDg1YTBhZDhlY2E5ZmI2NQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDA6MTU6MzAgMjAwNyAtMDYwMAoKICAgIEFkZCBsaWJmZHQgYmFzZWQgZnRfY3B1X3NldHVwIGZvciBtcGM4NXh4CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAzYjlhYmRjNDQ4YTFjMmM2YTRjMmFhMjkyNzI0YjRkMWEwNTE2NmE5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRGVjIDExIDEzOjM4OjE5IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgR1BJTyBvZmZzZXQgaW4gZ3Bpb19jb25maWcoKQoKICAgIFRoYW5rcyB0byBHYXJ5IEplbm5lam9obiBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg4MDlhMjcxM2IxY2VhZjNkYTU1ZDlkNzg1NDcwMjk0ZjE1ZGUwNmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgMTEgMTE6NDY6MDEgMjAwNyArMDEwMAoKICAgIHJ0YzogRml4IG1lcmdpbmcgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3Y2ZjMTJhN2RjZmRiMzUwZTJhYjc2ZGI0ZGFmY2MzMGY3ZTc3YzJiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgRGVjIDggMTQ6NDc6MzQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogNDA1RVg6IENvcnJlY3RseSBlbmFibGUgVVNCIHBpbnMKCiAgICBUaGlzIHBhdGNoIHNlbGVjdHMgdGhlIFVTQiBkYXRhIHBpbnMgaW4gdGhlIDQwNUVYIEdQSU8gYW5kIE1GQyAobXVsdGkKICAgIGZ1bmN0aW9uIGNvbnRyb2wpIHJlZ2lzdGVycy4gVGhpcyBpcyBkb25lIGZvciB0aGUgQU1DQyBLaWxhdWVhIGFuZAogICAgTWFrYWx1IGV2YWwgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NjkyYzI3MzRhNDdmMjNiNDRhMGY2ODA0MmEzZTJjYThkMWJmYjM5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgRGVjIDggMDg6MjU6MDkgMjAwNyArMDEwMAoKICAgIENGSTogQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODFiMjBjY2MyZDc5NWFlOWExMTk5ZGI1YTUwYWQ5YzI4ZDFlNGQyMgpBdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CkRhdGU6CUZyaSBEZWMgNyAyMzozNTowMiAyMDA3ICswMTAwCgogICAgQ0ZJOiBzdXBwb3J0IEpFREVDIGZsYXNoIHJvbXMgaW4gQ0ZJLWZsYXNoIGZyYW1ld29yawoKICAgIFRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBub24tQ0ZJIGZsYXNoIFJPTVMsIGJ5IGhvb2tpbmcgaW50byB0aGUKICAgIENGSSBmbGFzaCBjb2RlIGFuZCB1c2luZyBtb3N0IG9mIGl0cyBjb2RlLCBhcyByZWNlbnRseSBkaXNjdXNzZWQgaGVyZSBpbiB0aGUKICAgIHRocmVhZCAiTWl4aW5nIENGSSBhbmQgbm9uLUNGSSBmbGFzaHMiLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzAxYjE3ZGQ4NTZmYTEyMGIyOTcwZjUwZDk1OTg1NDZhNDkyN2VjMwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBOb3YgMjggMjE6MjQ6NTAgMjAwNyAtMDUwMAoKICAgIENvbmRpdGlvbmFsbHkgY29tcGlsZSBmZHRfZml4dXBfZXRoZXJuZXQoKQoKICAgIEZpeCBjb21waWxlciB3YXJuaW5nczogT24gYm9hcmRzIHRoYXQgZG9uJ3QgaGF2ZSBldGhlcm5ldHMgZGVmaW5lZCwKICAgIGRvbid0IGNvbXBpbGUgZmR0X2ZpeHVwX2V0aGVybmV0KCkuCgpjb21taXQgMjQ2ZDRhZTZiYzI4MmJjMTg0MTIyNGUxYzVmYzQ5ZGM5MjVlMGJmNwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBOb3YgMjcgMjE6NTk6NDYgMjAwNyAtMDYwMAoKICAgIENvbnZlcnQgYm9hcmRzIHRoYXQgc2V0IG1lbW9yeSBub2RlIHRvIHVzZSBmZHRfZml4dXBfbWVtb3J5KCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDE1MWM4YjA5YjM1ZWViZThmZDkxMzljYjZjMWQ5MWMyN2IyMmYwNTgKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglNb24gTm92IDI2IDE3OjA2OjE1IDIwMDcgLTA2MDAKCiAgICBBZGRlZCBmZHRfZml4dXBfc3Rkb3V0IHRoYXQgdXNlcyBhbGlhc2VzIHRvIHNldCBsaW51eCxzdGRvdXQtcGF0aAoKICAgIFdlIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzZXJpYWxOIGFsaWFzIGFuZCBDT05GSUdfQ09OU19JTkRFWCB0bwogICAgZGV0ZXJtaW5lIHdoaWNoIHNlcmlhbCBhbGlhcyB3ZSBzaG91bGQgc2V0IGxpbnV4LHN0ZG91dC1wYXRoIHRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgM2M5MjcyODEzZmFkODRjNjkxZDBlNDk4OWJiMThhM2ZmZWJkZWJmYwpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjYgMTQ6NTc6NDUgMjAwNyAtMDYwMAoKICAgIEFkZCBjb21tb24gbWVtb3J5IGZpeHVwIGZ1bmN0aW9uCgogICAgQWRkIHRoZSBmdW5jdGlvbiBmZHRfZml4dXBfbWVtb3J5KCkgdG8gZml4dXAgdGhlIC9tZW1vcnkgbm9kZSBvZiB0aGUgZmR0CgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5YzkxMDllN2ZjZjdhYzJjYTE5Yzk1YjhhYzU0YjhkMWM3NzNiMTU3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIE5vdiAyNiAxMToxOToxMiAyMDA3IC0wNjAwCgogICAgQ29uZGl0aW9uYWxseSBjb21waWxlIGZkdF9zdXBwb3J0LmMKCiAgICBNb2RpZnkgY29tbW9uL01ha2VmaWxlIHRvIGNvbmRpdGlvbmFsbHkgY29tcGlsZSBmZHRfc3VwcG9ydC5jIGJhc2VkCiAgICBvbiBDT05GSUdfT0ZfTElCRkRULgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDg4ZTdiYTA5ODA3NzM0NzllMWE2NGJhZGIyOTMxMTYwNzFiN2VmMApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CU1vbiBOb3YgMjYgMTA6NDE6NDAgMjAwNyAtMDYwMAoKICAgIEZpeCBidWlsZCBicmVha2FnZSBkdWUgdG8gbGliZmR0IGltcG9ydAoKICAgIFRoZSBJRFM4MjQ3IGdvdCBsb3N0IGluIHRoZSB1cGRhdGUgYW5kIG5lZWQgYW4gQVBJIHVwZGF0ZQogICAgZG8gdG8gcmVuYW1lIG9mIGZ1bmN0aW9ucyBpbiBsaWJmZHQuCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCAyOGYzODRiMTcxYmJmMWZiMmRhZmIxMDQ2ZTZkMjU5YTZiMmY4NzE0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJRnJpIE5vdiAyMyAxOTo0MzoyMCAyMDA3IC0wNTAwCgogICAgQWRkIHNwYWNlcyBhcm91bmQgdGhlID0gaW4gdGhlIGZkdCBwcmludCBmb3JtYXQuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAyOTU5MmVjYmEzYjkzMmI5YjE1MmJjZWM2YzBjMDgwNjQxMmRiNGEzCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglGcmkgRGVjIDcgMDE6MjU6MzggMjAwNyArMDkwMAoKICAgIHNoOiBNb3ZlZCBkcml2ZXIgb2YgdGhlIFN1cGVySCBkZXBlbmRlbmNlCgogICAgVGhlIGNvbXBvc2l0aW9uIG9mIHRoZSBkaXJlY3RvcnkgaW4gdGhlIGRyaXZlcnMvIGNoYW5nZWQuCiAgICBJIG1vdmVkIFN1cGVySCBzZXJpYWwgZHJpdmVyIGFuZCBtYXJ1YnVuIFBDTUNJQSBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDQxYmU5NjlmNDk1NzExNWVkN2IxZmU4Yjg5MGJmYWVlOTlkN2E3YTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgRGVjIDYgMTA6MjE6MTkgMjAwNyArMDEwMAoKICAgIFJlbGVhc2UgdjEuMy4xCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZjU5MzNiYTFlOTdhMWNkOGY1ZjI0MDcwZTgyMGYyMWQ5NzZlYWViCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IERlYyA2IDEwOjIxOjAzIDIwMDcgKzAxMDAKCiAgICBBRFM1MTIxIEJvYXJkOiBmaXggY29tcGlsZSBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTI3MDQ0YjE0YTllOTM2NzhhODJkN2IzNWYyMDJiOTNlNzY4N2FiYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IERlYyA2IDA1OjU4OjQzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBoYXJkd2FyZS1maXggZm9yIFBDSS9ETUEgZXJyYXRhIG9uIEFNQ0MgNDQwU1AvU1BlIGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgaGFyZHdhcmUtZml4IGZvciB0aGUgUENJL0RNQSBlcnJhdGEncyAxOSsyMiBieQogICAgc2V0dGluZyB0aGUgRklYRCBiaXQgaW4gdGhlIFNEUjBfTUZSIHJlZ2lzdGVyLiBIZXJlIGEgZGVzY3JpcHRpb24gb2YgdGhlCiAgICBzeW1wdG9tczoKCiAgICBQcm9ibGVtIERlc2NyaXB0aW9uCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIElmIGEgRE1BIGlzIHBlcmZvcm1lZCBiZXR3ZWVuIG1lbW9yeSBhbmQgUENJIHdpdGggdGhlIERNQSAxIENvbnRyb2xsZXIKICAgIHVzaW5nIHByZWZldGNoLCBhbmQgYXMgYSByZXN1bHQgdXNlcyBhIHNwZWNpYWwgcHVycG9zZSBidWZmZXIgc2VsZWN0ZWQgYnkKICAgIHRoZSBQQ0lYbiBCcmlkZ2UgT3B0aW9ucyAxIFJlZ2lzdGVyIChQQ0lYbl9CUkRHT1BUMVtSQlA3XSAtIGJpdHMgMzEtMjkpLAogICAgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHRyYW5zZmVyIHNlcXVlbmNlIGlzIHBlcmZvcm1lZCB0d2ljZS4gVGhlCiAgICBQUEM0NDBTUGUgUENJIENvbnRyb2xsZXIgcmVxdWVzdHMgbW9yZSBkYXRhIHRoYW4gd2FzIG5lZWRlZCBzdWNoIHRoYXQgaW4KICAgIHRoZSBjYXNlIG9mIGVuZm9yY2UgbWVtb3J5IHByb3RlY3Rpb24sIGEgaG9zdCBDUFUgIGV4Y2VwdGlvbiBjYW4gb2NjdXIuCiAgICBObyBkYXRhIGlzIGNvcnJ1cHRlZCwgYmVjYXVzZSBkYXRhIHRyYW5zZmVyIGlzIHN0b3BwZWQgaW4gdGhlIFBDSQogICAgQ29udHJvbGxlci4gUHJlZmV0Y2ggZW5hYmxlIGlzIHNwZWNpZmllZCBieSBzZXR0aW5nIERNQSBDb25maWd1cmF0aW9uCiAgICBSZWdpc3RlciAoSTJPMF9ETUF4X0NGR1tEWEVQRF0gLSBiaXQgMzEpIHRvIDAuCgogICAgQmVoYXZpb3IgdGhhdCBtYXkgYmUgb2JzZXJ2ZWQgaW4gYSBydW5uaW5nIHN5c3RlbQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgMS4gRE1BIHBlcmZvcm1hbmNlIGlzIGRlY3JlYXNlZCBiZWNhdXNlIG9mIHRoZSBkb3VibGUgYWNjZXNzIG9uIHRoZSBQQ0kgYnVzCiAgICBpbnRlcmZhY2UuCiAgICAyLiBJZiBhbiBpbGxlZ2FsIGFjY2VzcyB0byBzb21lIGFkZHJlc3Mgb24gdGhlIFBDSSBidXMgaXMgZGV0ZWN0ZWQgYXQgdGhlCiAgICBzeXN0ZW0gbGV2ZWwsIGEgbWFjaGluZSBjaGVjayBvciBzaW1pbGFyIHN5c3RlbSBlcnJvciBtYXkgb2NjdXIuCgogICAgV29ya2Fyb3VuZHMgQXZhaWxhYmxlCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgMS4gRG8gbm90IHByb2dyYW0gcHJlZmV0Y2guIE5vdGUgdGhhdCBhIHByZWZldGNoIGNvbW1hbmQgY2Fubm90IGJlIHByb2dyYW1tZWQKICAgIHdpdGhvdXQgc2VsZWN0aW5nIGEgc3BlY2lhbCBwdXJwb3NlIGJ1ZmZlci4KICAgIDIuIFRvIGF2b2lkIGNyb3NzaW5nIGEgcGh5c2ljYWwgYm91bmRhcnkgb2YgdGhlIFBDSSBzbGF2ZSBkZXZpY2UsIGFkZCA1MTIKICAgIGJ5dGVzIG9mIGFkZHJlc3MgdG8gdGhlIFBDSSBhZGRyZXNzIHJhbmdlLgoKICAgIFRoaXMgcGF0Y2ggd2FzIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnkgUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgogICAgZnJvbSBBTUNDIGFuZCBzbGlnaGx5IGNoYW5nZWQuCgogICAgU2lnbmVkLW9mZi1ieTogUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE5MDkyMWY3MWQyMjViZjllMGYwZmM3YjhiZWFkZWI4MDAxYmY3OGEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBEZWMgNCAxNjoyOTo0OCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBZb3NlbWl0ZS9ZZWxsb3dzdG9uZTogQWRkIERUVCBBRDc0MTQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4ZDRmMDQwYTNjMTUwMzZhNmVhMjVhOWMzOWU3ZDg5ZmVmYTg0NDBkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIERlYyAzIDAwOjE1OjI4IDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciAxLjMuMS1yYzEKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGUxNWUzMzQzM2U3YzA1MTExOTY4ZGM5YjQzNGE1MmZkNDJjYmQyMjEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBOb3YgMzAgMDc6MTU6NDEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogQWRkIFBDSWUgcmVzZXQgYXNzZXJ0aW9uIHVwb24gcG93ZXItdXAKCiAgICBUaGlzIG1hbnVhbCBQQ0llIHJlc2V0IHRyaWdnZXJpbmcgc29sdmVzIHRoZSBwcm9ibGVtIHNlZW4gd2l0aCB0aGUKICAgIEludGVsIEVQUk8vMTAwMCBjYXJkLCB3aGljaCB3YXMgbm90IGRldGVjdGVkIChsaW5rIG5vdCBlc3RhYmxpc2hlZCkKICAgIHVwb24gcG93ZXItdXAgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI2MGVlYTU2NzZjYTQ2OTAzYTMzNTY4NmNjMDIwYjI5YzRjYTQ2ZmUKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVRodSBOb3YgMjkgMDE6MjE6NTQgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgU3VwZXJIIGJvYXJkcyBtYWludGFpbmVyIHRvIE1BSU5UQUlORVJTIGZpbGUKCiAgICBBZGQgTVM3NzUwU0UgYW5kIE1TNzcyMlNFJ3MgYm9hcmQgbWFpbnRhaW5lciB0byBNQUlOVEFJTkVSUyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBhYTljNGYxZDIyNzAxYTkyMzQ3YzFjODFmMzRkMTJjOGFkM2EzNzQ3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglUaHUgTm92IDI5IDAwOjEzOjA0IDIwMDcgKzA5MDAKCiAgICBzaDogQWRkIG1zNzc1MHNlIHN1cHBvcnQgaW4gTUFLRUFMTAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBjNzE0NDM3MzQyN2ExNzgzMzJiZjk3NTQxMzFjOGMzNGM1MmMyMDBhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyNyAwOTo0NDo1MyAyMDA3ICswMTAwCgogICAgc2g6IEFkZCBzaDMgYW5kIHNoNCBzdXBwb3J0IGluIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDEzMDA4MDg3NGEzZDI4NDUwMDk4NDgxYTI2MmM1ZjdjODU1ZTkwOGQKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBOb3YgMjUgMDI6NTE6MTcgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgZG9jdW1lbnQgZm9yIFN1cGVySC4KCiAgICBUaGlzIGRvY3VtZW50IGlzIGEgc3VtbWFyeSBvZiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIFN1cGVySCBvZiBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDMzZWNkYzJmOWQ2NDkyNmUxYTYwNjdiMjhmM2EwYWVmYzNiNmQyM2QKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBOb3YgMjUgMDI6Mzk6MzEgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgbWFydWJ1bidzIHBjbWNpYSBkcml2ZXIKCiAgICBNYXJ1YnVuIHBjbWNpYSBpcyBhIGNoaXAgZm9yIFBDTUNJQSB1c2VkIHdpdGggU3VwZXJILgogICAgT2YgY291cnNlLCB0aGlzIGNhbiBiZSB1c2VkIGV2ZW4gYnkgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KICAgIFdoZW4gdXNlIHRoaXMgZHJpdmVyLCBjYW1lIHRvIGJlIGFibGUgdG8gdXNlIENvbXBhY3RGbGFzaAogICAgYW5kIEV0aGVybmV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCBmZWJkODZiOTY5Yjk3NTI4OWVkOTQ4ZjFhYzBlYjk3MjJkYTQxY2VkCkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gTm92IDI1IDAyOjMyOjEzIDIwMDcgKzA5MDAKCiAgICBzaDogVXBkYXRlIFN1cGVySCBTQ0lGIGRyaXZlcgoKICAgIC0gQ2hhbmdlZCB2b2xhdGlsZSB1bnNpZ25lZCB0byB2dV8uCiAgICAtIENoYW5nZWQgTWFrZWZpbGUgZm9yIGtjb25maWcuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDhiZTc2MDkwMzY0NWFmMDk4NzFiZTUwYWQwYTZmOWViYjYyYjMxMWQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjcgMTE6NTc6MzUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYSAmIE1ha2FsdTogRml4IGV4dCBJUlEgcGluIG11bHRpcGxleGluZwoKICAgIEFmdGVyIGFuIGVycm9yIGluIHRoZSBBTUNDIDQwNUVYIHVzZXJzIG1hbnVhbCBub3cgY29ycmVjdGx5IGNvbmZpZ3VyZQogICAgSVJRMiAoS2lsYXVlYSkvSVJRMCAoTWFrYWx1KSBhcyBhbHRlcm5hdGUgMiBzaWduYWwgZm9yIGV4dGVybmFsIElSUQogICAgdXNhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE1ZjYwMWZkMWIxMjc4ZGVhZTVhYTlmYzI3YTIzMmIwZDFjMWM3ODgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTm92IDI2IDE5OjE4OjIxIDIwMDcgKzAxMDAKCiAgICBDbGVhbnVwIGNvZGluZyBzdHlsZTsgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgM2RlY2E5ZDQ0NzY3ZWZkMWI4M2Y0YjcwMWYwZGJmMjFhNzU5NWY3YgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMjUgMjI6Mzk6MjUgMjAwNyArMDEwMAoKICAgIE1BS0VBTEw6IGFkZCBtaXNzaW5nIDUxMnggYm9hcmRzIGluIHBwYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgYTM0MGMzMjVlNjY4Y2E3Mzg2YzIyNzYzODc2ODE3MjBiZTljMzc1NwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMjUgMTg6NDU6NDcgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIDogZml4IHRhZ3MgY3RhZ3MgZXRhZ3Mgd2l0aCBuZXcgZHJpdmVycyBvcmdhbml6YXRpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYzMzYyY2ZjNmJhYTk3YWUwZTM3YmEyYzZlY2U1MzBmY2FjOWY3OWUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjYgMTU6MDY6MTQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFrYWx1OiBDaGFuZ2UgRUJDIHNldHVwIGZvciBDUzAgdG8gZW5hYmxlIDQwME1IeiB1c2FnZQoKICAgIEFzIHN1Z2dlc3RlZCBieSBTZW5hbywgdXNlIGEgZGlmZmVyZW50IEVCQ19QQjBBUCBzZXR1cCBmb3IgNDAwTUh6CiAgICBvcGVyYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNhMWNlMjI2Mjg3MjcwYmIwMWUyNWI4ZTM2NzRjNzAxZjEyZWRmMTkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjYgMTU6MDE6NDUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogS2lsYXVlYTogQ29uZmlndXJlIHBpbiBtdXggdG8gdXNlIGV4dCBJUlEyIGFzIGludGVycnVwdAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4N2RkZWRkNmFkODA0NDI3Y2UxMjVjZWFhMDc2ZDdhNGY3NGU5ZDVkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE5vdiAyNSAxODo0NTo0NyAyMDA3ICswMTAwCgogICAgTWFrZWZpbGUgOiBmaXggdGFncyBjdGFncyBldGFncyB3aXRoIG5ldyBkcml2ZXJzIG9yZ2FuaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNTk4MjljYzE4OTM3OGMxNDJjMTNkMmFhOGQ5YTg5N2Q4YmVmMzk2MQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MjY6NTYgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvbXRkIDogbW92ZSBtdGQgZHJpdmVycyB0byBkcml2ZXJzL210ZAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzE4YzBiOTA0MzFmMjY0ODU1MmU1YWRlNzg4MzNmNDI2NTJjZTg1OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MTc6NTUgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvbWlzYyA6IG1vdmUgbWlzYyBkcml2ZXJzIHRvIGRyaXZlcnMvbWlzYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMzNkYWY1Yjc4NTg4MDdjYjRjZTQxNThjMmM1NjUyNDY3MWMxNGMwOApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjE6MTM6NTkgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvYmxvY2sgOiBtb3ZlIGJsb2NrIGRyaXZlcnMgdG8gZHJpdmVycy9ibG9jawoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMGM2OThkY2FhNzAyNzVlYjg4MTRmNjY1YjU0NTU0N2NlZTAxMzg5MgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjA6NTk6NTAgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvcnRjIDogbW92ZSBydGMgZHJpdmVycyB0byBkcml2ZXJzL3J0YwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgZjg2OGNjNWE1MDc1N2Q5NGYzNmMzMTIzOTU0ODFjYjBmMTg3ZDllNgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMjQgMjA6MTQ6NDQgMjAwNyArMDEwMAoKICAgIGRyaXZlcnMvaHdtb24gOiBtb3ZlIGhhcmR3YXJlIG1vbml0b3IgZHJ2aWVycyB0byBkcml2ZXJzL2h3bW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxNmIxOTVjODJhMThjYmZkMTY0ODAwZjE3YTFlZjlkYjJlNDgzMzFhCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTo0Njo0NSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9pbnB1dCA6IG1vdmUgaW5wdXQgZHJpdmVycyB0byBkcml2ZXJzL2lucHV0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlNDU1ODY2NjI5MzM2NGZjM2FmMWMxZDkzODFjYTkzM2ZhMGYxMjc1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTo0MDoxMSAyMDA3ICswMTAwCgogICAgZHJpdmVycy91c2IgOiBtb3ZlIHVzYiBkcml2ZXJzIHRvIGRyaXZlcnMvdXNiCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAxMzc4ZGY3OTJhN2ZmM2FiZDFiZjU0YTYzZjU0NzU3ODRmNWIwODNjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU2F0IE5vdiAyNCAxOTozMzozOCAyMDA3ICswMTAwCgogICAgZHJpdmVycy9zZXJpYWwgOiBtb3ZlIHNlcmlhbCBkcml2ZXJzIHRvIGRyaXZlcnMvc2VyaWFsCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAyNDM5ZTRiZmExMTFiYWJmNGJjMDdiYTIwZWZiZjNlMzYwMzY4MTNlCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE5vdiAyMSAyMToxOToyNCAyMDA3ICswMTAwCgogICAgZHJpdmVycy9uZXQgOiBtb3ZlIG5ldCBkcml2ZXJzIHRvIGRyaXZlcnMvbmV0CgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCAzNTJkMjU5MTMwYjM0OWZlOTU5M2I4ZGFkYTY0MWJkNzhhOTY1OWU1CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDo0MTo0OCAyMDA3ICswMTAwCgogICAgZHJpdmVycy92aWRlbyA6IG1vdmUgdmlkZW8gZHJpdmVycyB0byBkcml2ZXJzL3ZpZGVvCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3MzY0NjIxNzE4NmFhMTdhZmM4ZTMwNWM1ZjA2ZjA2ZGQzMzVlYWFkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDozMzowOSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9wY21jaWEgOiBtb3ZlIHBjbWNpYSBkcml2ZXJzIHRvIGRyaXZlcnMvcGNtY2lhCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5M2E2ODZlZTljNWRkYzZmYTM2OGMzMmNmYmZkZTZmNjcyNDU5OWZjCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJVHVlIE5vdiAyMCAyMDoyODowOSAyMDA3ICswMTAwCgogICAgZHJpdmVycy9wY2kgOiBtb3ZlIHBjaSBkcml2ZXJzIHRvIGRyaXZlcnMvcGNpCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5MTYyMzUyODE3NTc5ODQwZDc4MDJkYTZkODU4NzJiM2NhMDAzYzk3CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJVGh1IE5vdiAyMiAxNzoyMzoyMyAyMDA3IC0wNTAwCgogICAgRml4IGZkdCBwcmludGluZyBmb3IgdXBkYXRlZCBsaWJmZHQKCiAgICBBbHNvIGltcHJvdmUgcHJpbnRpbmcgKGFkb3B0IGR0YyB2MSAiYyBzdHlsZSIgaGV4IGZvcm1hdCksIHdoaXRlc3BhY2UgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDllYjc3Y2VhMWZhMTJkNTk2OWViMjZhMWQxZDgxZGEzODFiZDZiMWMKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDEzOjMwOjE1IDIwMDcgLTA2MDAKCiAgICBBZGQgYWRkaXRpb25hbCBmZHQgZml4dXAgaGVscGVyIGZ1bmN0aW9ucwoKICAgIEFkZGVkIHRoZSBmb2xsb3dpbmcgZmR0IGZpeHVwIGhlbHBlcnM6CiAgICAgKiBkb19maXh1cF9ieV9wcm9we191MzJ9IC0gRmluZCBtYXRjaGluZyBub2RlcyBieSBwcm9wZXJ0eSBuYW1lL3ZhbHVlCiAgICAgKiBkb19maXh1cF9ieV9jb21wYXR7X3UzMn0gLSBGaW5kIG1hdGNoaW5nIG5vZGVzIGJ5IGNvbXBhdAoKICAgIFRoZSBfdTMyIHZhcmlhbnRzIHdvcmsgdGhlIHNhbWUgb25seSB0aGUgcHJvcGVydHkgdGhleSBhcmUgc2V0dGluZwogICAgaXMga25vdyB0byBiZSBhIDMyLWJpdCBpbnRlZ2VyIGluc3RlYWQgb2YgYSBieXRlIGJ1ZmZlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGFiNTQ0NjMzYWJkZDE0ZjRkZDVkOTJlNTAwYjczZWI1OWVmNTdlNjcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDExOjExOjAzIDIwMDcgLTA2MDAKCiAgICBBZGQgZmR0X2ZpeHVwX2V0aGVybmV0IGhlbHBlciB0byBzZXQgbWFjIGFkZHJlc3NlcwoKICAgIEFkZGVkIGEgZml4dXAgaGVscGVyIHRoYXQgdXNlcyBhbGlhc2VzIHRvIHNldCBtYWMgYWRkcmVzc2VzCiAgICBpbiB0aGUgZGV2aWNlIHRyZWUgYmFzZWQgb24gdGhlIGJkX3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGRiYWYwN2NlNjIwYWFiMjQ5ZTM1MDJiMjBhOTg2MjM0YTZhZjFkM2EKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgTm92IDIxIDE0OjA3OjQ2IDIwMDcgLTA2MDAKCiAgICBGaXggd2FybmluZ3MgZnJvbSBpbXBvcnQgb2YgbGliZmR0CgogICAgY21kX2ZkdC5jOiBJbiBmdW5jdGlvbiBmZHRfcHJpbnQ6CiAgICBjbWRfZmR0LmM6NTg2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjEzOiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjM1OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCiAgICBjbWRfZmR0LmM6NjM2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA4ZDA0ZjAyZjYyMjRlNjk4M2Y0ODEyZWE0ZGE3MDQ5NTBlYzg1MzljCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIE9jdCAyNCAxMTowNDoyMiAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGxpYmZkdCBmcm9tIGRldmljZSB0cmVlIGNvbXBpbGVyIChkdGMpCgogICAgVXBkYXRlIGxpYmZkdCB0byBjb21taXQgOGVhZjVlMzU4MzY2MDE3YWEyZTg0NmM1MDM4ZDFhYTE5OTU4MzE0ZSBmcm9tCiAgICB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIgKGR0YykgcHJvamVjdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGU5M2JlY2Y4MGQ3MzJiNjRhZWY4MWIyM2U4YjZlY2UwMmM0MDUzM2QKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglTYXQgTm92IDMgMTk6NDY6MjggMjAwNyAtMDUwMAoKICAgIE1vdmUgZG9fZml4dXAqIGZvciBsaWJmZHQgaW50byBjb21tb24gY29kZQoKICAgIE1vdmVkIHRoZSBnZW5lcmljIGZpeHVwIGhhbmRsaW5nIGNvZGUgb3V0IG9mIGNwdS9tcGM1eHh4IGFuZCBjcHUvbXBjODI2MAogICAgaW50byBjb21tb24vZmR0X3N1cHBvcnQuYyBhbmQgcmVuYW1lZDoKCiAgICBkb19maXh1cCgpCS0+IGRvX2ZpeHVwX2J5X3BhdGgoKQogICAgZG9fZml4dXBfdTMyKCkJLT4gZG9fZml4dXBfYnlfcGF0aF91MzIoKQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZjczOGI0YTc1OTk4ZjQyYTc0MDhkZWZhZGM5YmFhYzdhMzFjOTJkYgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVRodSBPY3QgMjUgMTY6MTU6MDcgMjAwNyAtMDUwMAoKICAgIE1ha2Ugbm8gb3B0aW9ucyB0byBmZHQgcHJpbnQgZGVmYXVsdCB0byAnLycKCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzYzI5MzNlMDI1MDNmZTM2YWRlMmMxYjY1YWY0NmYyYjdhMTY4ZTcKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglXZWQgT2N0IDI0IDEwOjIxOjU3IDIwMDcgLTA1MDAKCiAgICBSZW1vdmVkIHNvbWUgbm9udXNlZCBmZHQgZnVuY3Rpb25zIGFuZCBtb3ZlZCBmZHRfZmluZF9hbmRfc2V0cHJvcCBvdXQgb2YgbGliZmR0CgogICAgUmVtb3ZlZDoKCWZkdF9ub2RlX2lzX2NvbXBhdGlibGUKCWZkdF9maW5kX25vZGVfYnlfdHlwZQoJZmR0X2ZpbmRfY29tcGF0aWJsZV9ub2RlCgogICAgVG8gZWFzZSBtZXJnZSBvZiBuZXdlciBsaWJmZHQgYXMgd2UgYXJlbid0IHVzaW5nIHRoZW0gYW55d2hlcmUgYXQgdGhpcyB0aW1lLgoKICAgIEFsc28gbW92ZWQgZmR0X2ZpbmRfYW5kX3NldHByb3Agb3V0IG9mIGxpYmZkdCBpbnRvIGZkdF9zdXBwb3J0LmMgZm9yIHRoZSBzYW1lCiAgICByZWFzb24uCgogICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KCmNvbW1pdCA5OGUyODY3Y2M4NTQwOWI5MTlmODYyZTZjMTYwMjY0NjFlYzk1NWRmCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgTm92IDIxIDA5OjE5OjM3IDIwMDcgLTA3MDAKCiAgICBbQlVJTERdIFJlbW92ZSBsaWJyYXJpZXMgd2hlbiB1cGRhdGluZyBhdXRvY29uZi5tawoKICAgIEZpeCBsaWJyYXJ5IHByb2JsZW1zIGNhdXNlZCBieSBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gIFVzaW5nCiAgICBhdXRvY29uZi5tayB0byBkZWNpZGUgd2hpY2ggZmlsZXMgdG8gY29tcGlsZSBoYXMgY2F1c2VkIGEgcHJvYmxlbSB3aGVuCiAgICBjaGFuZ2luZyBjb25maWd1cmF0aW9uIGZyb20gb25lIGJvYXJkIHRvIGFub3RoZXIgd2l0aG91dCBjbGVhcmluZyBvdXQKICAgIHRoZSBsaWJyYXJ5ICgqLmEpIGZpbGVzLgoKICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB0aGUgbGlua2VyIHdhcyBhbHdheXMgcGFzc2VkIHRoZSBzYW1lIGxpc3Qgb2YgLm8KICAgIGZpbGVzIHdoZW4gYnVpbGRpbmcgdGhlIC5hIGZpbGVzLiAgSG93ZXZlciwgdGhhdCBpcyBub3QgbG9uZ2VyIHRydWUKICAgIHdpdGggY29uZGl0aW9uYWwgY29tcGlsYXRpb24uICBOb3csIGEgZGlmZmVyZW50IGJvYXJkIGNvbmZpZyB3aWxsIGhhdmUKICAgIGEgZGlmZmVyZW50IGZpbGUgbGlzdCBwYXNzZWQgdG8gdGhlIGxpbmtlci4gIFRoZSBwcm9ibGVtIG9jY3VycyB3aGVuCiAgICBhIGxpYnJhcnkgaGFzIGFscmVhZHkgYmVlbiBidWlsdCBhbmQgdGhlIGJvYXJkIGNvbmZpZyBpcyBjaGFuZ2VkLgoKICAgIFNpbmNlIHRoZSBsaW5rZXIgd2lsbCB1cGRhdGUgaW5zdGVhZCBvZiByZXBsYWNlIGEgcHJlZXhpc3RpbmcgbGlicmFyeSwKICAgIHRoZW4gaWYgdGhlIGZpbGUgbGlzdCBjaGFuZ2VzIHRvIHJlbW92ZSBzb21lIG9iamVjdCBmaWxlcyB0aGUgb2xkCiAgICBvYmplY3RzIHdpbGwgc3RpbGwgZXhpc3QgaW4gdGhlIGxpYnJhcnkuCgogICAgVGhlIHNvbHV0aW9uIGlzIHRvIHJlbW92ZSBhbGwgb2xkIGxpYnJhcnkgZmlsZXMgd2hlbiBhdXRvY29uZi5tayBpcwogICAgbWFkZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZWQxMzUzZDc0YjljZThhN2ZjZDY2MDU3MGI4NDhhMTg0ZDYxNGI1ZgpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVdlZCBOb3YgMjEgMDg6NDk6NTAgMjAwNyAtMDYwMAoKICAgIFtCVUlMRF0gY29uZGl0aW9uYWxseSBjb21waWxlIGxpYmZkdC8qLmMgaW4gbGliZmR0L01ha2VmaWxlCgogICAgTW9kaWZ5IGxpYmZkdC9NYWtlZmlsZSB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlICouYyBmaWxlcyBiYXNlZAogICAgb24gdGhlIGJvYXJkIGNvbmZpZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDRhNDM3MTlhNzczODcxMjgxMWQ4MjJjYTgxMjU0MjdiMjdhNTVjZGMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzEgMjAwNyAtMDYwMAoKICAgIFtCVUlMRF0gY29uZGl0aW9uYWxseSBjb21waWxlIGNvbW1vbi9jbWRfKi5jIGluIGNvbW1vbi9NYWtlZmlsZQoKICAgIE1vZGlmeSBjb21tb24vTWFrZWZpbGUgdG8gY29uZGl0aW9uYWxseSBjb21waWxlIHRoZSBjbWRfKi5jIGZpbGVzIGJhc2VkCiAgICBvbiB0aGUgYm9hcmQgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAyZjE1NWY2YzBhMWY1ZTlhMzA2YTNmMWY0ZmJlMDY3ZGI3Y2VkM2IxCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKCiAgICBbQlVJTERdIEdlbmVyYXRlIGluY2x1ZGUvYXV0b2NvbmYubWsgZnJvbSBib2FyZCBjb25maWcgZmlsZXMKCiAgICBVc2UgY3BwIGFuZCBzZWQgdG8gcG9zdHByb2Nlc3MgY29uZmlnLmggYW5kIGltcG9ydCB0aGUgZGVmaW5lZCB2YWx1ZXMKICAgIGludG8gaW5jbHVkZS9hdXRvY29uZi5tay4gIGF1dG9jb25mLm1rIGlzIHRoZW4gaW5jbHVkZWQgYnkgY29uZmlnLm1rIHRvCiAgICBnaXZlICdtYWtlJyBhY2Nlc3MgdG8gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24uCgogICAgRG9pbmcgdGhpcyBlbmFibGVzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGF0IHRoZSBNYWtlZmlsZSBsZXZlbCBpbnN0ZWFkCiAgICBvZiBieSB3cmFwcGluZyBldmVyeSAuYyBmaWxlIHdpdGggI2lmZGVmLyNlbmRpZiB3cmFwcGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNjhiODg5OTlkYTg3YWI4OGU3MWUxMzA2MTkyOTA1YmUzNDUwMTk4ZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjAgMTU6MDI6MjYgMjAwNyAtMDYwMAoKICAgIDg2MTBIUENEOiBFbmFibGUgdGhlIDg2MTAgRGlzcGxheSBJbnRlcmZhY2UgVW5pdAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzRmODlmYWE5ZDFlNzdlZDk0N2U2MjhkM2VmZmFhNTEzZmUwNWQwNQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjAgMTU6MDA6NTMgMjAwNyAtMDYwMAoKICAgIE1vdmUgODYxMCBESVUgaW50ZXJmYWNlIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0byBoZWFkZXIgZmlsZS4KCiAgICBUaGVzZSB0d28gc3RydWN0dXJlcyBhcmUgc3RpbGwgbmVlZGVkIGR1cmluZyB0aGUKICAgIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBvZiB0aGUgRElVIGhhcmR3YXJlLgogICAgU28gbW92ZSB0aGVtIHRvIHRoZSBmc2xfZGl1X2ZiLmggZmlsZSBmb3Igbm93LgogICAgT2ZmaWNpYWwgImJsYWgiLgoKICAgIE5vdGljZWQtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA4MGM2NDZkYmY0NzRhMTA5YzNmODU3MThmYjAxY2UwNDJhMzhjNDUKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUdWUgTm92IDIwIDIwOjE0OjE4IDIwMDcgKzAxMDAKCiAgICBkcml2ZXJzL2kyYyA6IG1vdmUgaTJjIGRyaXZlcnMgdG8gZHJpdmVycy9pMmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDlhMzM3ZGRjMTU0YTEwYTI2ZjExN2ZkMTQ3YjAwOWFiY2RlYmE3NWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTm92IDE5IDIyOjIwOjI0IDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciAxLjMuMCByZWxlYXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZjMwYWQ0OWIxNmJmOTk4YjAzYzFhNTIyOGI2Yzg2MzY5ZDYxYzI1OApBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTA6MDI6MTMgMjAwNyAtMDUwMAoKICAgIE1vdmUgQ09ORklHX1FFIG91dCBvZiBDT05GSUdfUENJIHdyYXAgZm9yIE1QQzg1NjhNRFMKCiAgICBDT05GSUdfUUUgc2hvdWxkbid0IGJlIGluIHRoZSB3cmFwIG9mIENPTkZJR19QQ0ksIGZpeCBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY4YzMyMDYwOTM2NjE3NmIzMTEwNGQ5YmY1ZTI5NTIzMmUxYzdmMWQKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CU1vbiBOb3YgMTkgMTE6MTQ6MTYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBib2FyZC9ndGgyL2xvd2xldmVsX2luaXQuUzogRml4IGEgYnVpbGQgd2FybmluZwoKICAgIGxvd2xldmVsX2luaXQuUzogQXNzZW1ibGVyIG1lc3NhZ2VzOgogICAgbG93bGV2ZWxfaW5pdC5TOjQxMzogV2FybmluZzogUHJldGVuZGluZyBnbG9iYWwgc3ltYm9sIHVzZWQgYXMgYnJhbmNoIHRhcmdldCBpcyBsb2NhbC4KCiAgICBMb29raW5nIGF0IGNvZGVzLCB0aGUgYG1lbXRlc3QnIGFuZCBgY2xlYXJtZW0nIGFyZSBpbnRlbnRpb25hbCBtaXhlZAogICAgdXNlIG9mIGBnbG9iYWwgc3ltYm9scycgYW5kIGBsYWJlbCcgZm9yIGRlYnVnZ2luZyBwdXJwb3NlLiBUbyBtYWtlIGl0CiAgICBidWlsZCwganVzdCBkaXNhYmxlIGdsb2JhbC1zeW1ib2xzLXVzZSBmb3Igbm93LiBBcyBhIHJlc3VsdCBgbWVtdGVzdCcKICAgIHN0aWxsIHJlbWFpbnMgYXMgdW51c2VkLCBidXQgbGVhdmUgaXQgYmUuLi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgZThkYTU4ZjJiYzA5Mjg5MWU4Y2M5MmI5MjdlZDVjNGJkMGNiMGNhYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMTkgMTI6NTk6MTQgMjAwNyArMDEwMAoKICAgIEZpeCBidWlsZCBwcm9ibGVtcyB3aXRoIG1wMnVzYiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmJmNGM2ODZhZmNhMWU4NmUxYzM4NGQ1OTIxOGY5MTQ2MDU3MTNiZgpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVN1biBOb3YgMTggMTg6MzY6MTEgMjAwNyArMDEwMAoKICAgIHMzYzI0eDA6IEZpeCB1c2Jfb2hjaS5jIG1pc3NpbmcgaW4gTWFrZWZpbGUKICAgIGFuZCB1c2Jfb2hjaS5jIHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDYwNzNmNjFlMDc4ZGE1ZGRiNTIxYjU2MjU2YmNjMzY1MDg1ODk4ODMKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTdW4gTm92IDE4IDEyOjU1OjAyIDIwMDcgKzAxMDAKCiAgICBwYjF4MDAgYm9hcmQ6IEZpeCB1MTYgc3RhdHVzIGRlY2xhcmF0aW9uIHdoZW4gUENNQ0lBIGlzIGRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDg0MTJkODE0Y2U4YmY1NTcwYTJiNzQ3ZjFlN2ZkMzIxMDk3ZmU5ODcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gTm92IDE4IDE3OjExOjA5IDIwMDcgKzAxMDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgZm9yIEFSTSBzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNDA5ZWNkYzBiYjQ3ZGQyOGIwYWY2YzI1ZmZkNjU4ZDIyY2MzNmIzNwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBOb3YgMTggMTY6MzY6MjcgMjAwNyArMDEwMAoKICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBmb3IgUFBDIHN5c3RlbXMuIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2NTM4MTFhM2MyYjM1ODU2YmYxMmUxOTZkY2M4YzQ2OTRlMjhlNDIwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gTm92IDE4IDE0OjQ0OjQ0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgNDA1RVggUENJZSBVVEwgcmVnaXN0ZXIgbWFwcGluZwoKICAgIE1hcCA0ayBtZW0gc3BhY2UgZm9yIFVUTCByZWdpc3RlcnMgZm9yIGVhY2ggcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDc5YzJjNGZhNzFjMGQxZWJlZjM5NDUwOGRmOTA4OGRmOGEzMDhkMwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVNhdCBOb3YgMTcgMTE6MzE6MTAgMjAwNyArMDEwMAoKICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIG5ldC9uZXQuYyBhbmQgbmV0L25mcy5jCgpjb21taXQgN2UxNGZjNjUzNjhjYmQyODYxYjEyMDc0NTNkYTU1YTRmYzdiM2Y4MQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6NDI6NDUgMjAwNyArMDkwMAoKICAgIGd0aDIuYzogRml4IGEgd2FybmluZyBvbiBndGgyIGJ1aWxkLgoKICAgIGd0aDIuYzogSW4gZnVuY3Rpb24gJ21pc2NfaW5pdF9yJzoKICAgIGd0aDIuYzo0MzQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3NldGVudicgZGlmZmVyIGluIHNpZ25lZG5lc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IDIzMDljMTMwYWE0Yzg0YjkxYmQ4NzRhNDEyNjljOTIzZWI2MWI1NTUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMDc6NTg6MjUgMjAwNyArMDEwMAoKICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIGNvbW1vbi9jbWRfc2NzaS5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDllYTYxYjU3OTY4NTU0ZWFmMGY0NzRlYzdlMDg4YjE3ZDM2N2Y0NzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMTQ6NTI6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgS2lsYXVlYSBjb25maWcgZmlsZQoKICAgIC0gVXNlIGdlbmVyaWMgR1BJTyBjb25maWd1cmF0aW9uIGZyYW1ld29yayAoQ0ZHXzR4eF9HUElPX1RBQkxFKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ZTFkODg0YjdjYjYwMjAwNzMyOWM1MTdlYzFjNDUzZTNhNmE1ZDljCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE5vdiAxNyAyMDowNToyNiAyMDA3ICswOTAwCgogICAgW01JUFNdIGNwdS9taXBzL2NvbmZpZy5tazogRml4IEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiBwaWNrZXIKCiAgICBDdXJyZW50IHRyaWNrIHRvIHBpY2sgdXAgR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUKICAgIGxhdGVzdCBiaW51dGlscyAoMjAwNy0wMy0wMSBvciBsYXRlcikgZHVlIHRvICR7UEtHVkVSU0lPTn0gbm93IGRlZmF1bHQgdG8KICAgICIoR05VIEJpbnV0aWxzKSAiLgoKICAgICAgJCBzZGUtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIgogICAgICBHTlUgYXNzZW1ibGVyIDIuMTUuOTQgbWlwc3NkZS02LjAyLjAyLTIwMDUwNjAyCiAgICAgICQgc2RlLWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIgfGF3ayAne3ByaW50ICQzfScKICAgICAgMi4xNS45NAogICAgICAkIHNkZS1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiIHxhd2sgJ3twcmludCAkM30nIHxhd2sgLUYuICd7cHJpbnQgJDJ9JwogICAgICAxNQogICAgICAkCgogICAgICAkIG1pcHMtbGludXgtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIgogICAgICBHTlUgYXNzZW1ibGVyIChHTlUgQmludXRpbHMpIDIuMTgKICAgICAgJCBtaXBzLWxpbnV4LWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIgfGF3ayAne3ByaW50ICQzfScKICAgICAgKEdOVQogICAgICAkIG1pcHMtbGludXgtYXMgLS12ZXJzaW9uIHxncmVwICJHTlUgYXNzZW1ibGVyIiB8YXdrICd7cHJpbnQgJDN9JyB8YXdrIC1GLiAne3ByaW50ICQyfScKICAgICAgKG5vIG91dHB1dCkKICAgICAgJAoKICAgIEFzIGEgcmVzdWx0IG9mIGFib3ZlLCB5b3UnbGwgc2VlIG1hbnkgbm9pc2VzIHdpdGggc3VjaCBiaW51dGlsczoKCiAgICAgIG1ha2UgLUMgY3B1L21pcHMvCiAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKICAgICAgL2Jpbi9zaDogbGluZSAwOiBbOiA6IGludGVnZXIgZXhwcmVzc2lvbiBleHBlY3RlZAogICAgICBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvY3B1L21pcHMnCiAgICAgIG1pcHMtbGludXgtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4QjAwMDAwMDAgIC1JL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL2hvbWUvc2t1cmliYXkvZGV2ZWwvYnVpbGRyb290L2J1aWxkX21pcHMvc3RhZ2luZ19kaXIvdXNyL2Jpbi8uLi9saWIvZ2NjL21pcHMtbGludXgtdWNsaWJjLzQuMi4xL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrYyAtRUIgLWMgLW8gaW5jYWlwX3dkdC5vIGluY2FpcF93ZHQuUwogICAgICAvYmluL3NoOiBsaW5lIDA6IFs6IDogaW50ZWdlciBleHByZXNzaW9uIGV4cGVjdGVkCiAgICAgIG1pcHMtbGludXgtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4QjAwMDAwMDAgIC1JL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL2hvbWUvc2t1cmliYXkvZGV2ZWwvYnVpbGRyb290L2J1aWxkX21pcHMvc3RhZ2luZ19kaXIvdXNyL2Jpbi8uLi9saWIvZ2NjL21pcHMtbGludXgtdWNsaWJjLzQuMi4xL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrYyAtRUIgLWMgLW8gY2FjaGUubyBjYWNoZS5TCiAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKICAgICAgbWlwcy1saW51eC1nY2MgLWcgIC1PcyAgIC1EX19LRVJORUxfXyAtRFRFWFRfQkFTRT0weEIwMDAwMDAwICAtSS9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvaW5jbHVkZSAtZm5vLWJ1aWx0aW4gLWZmcmVlc3RhbmRpbmcgLW5vc3RkaW5jIC1pc3lzdGVtIC9ob21lL3NrdXJpYmF5L2RldmVsL2J1aWxkcm9vdC9idWlsZF9taXBzL3N0YWdpbmdfZGlyL3Vzci9iaW4vLi4vbGliL2djYy9taXBzLWxpbnV4LXVjbGliYy80LjIuMS9pbmNsdWRlIC1waXBlICAtRENPTkZJR19NSVBTIC1EX19NSVBTX18gLUcgMCAtbWFiaWNhbGxzIC1mcGljIC1waXBlIC1tc29mdC1mbG9hdCAtbWFyY2g9NGtjIC1tdHVuZT00a2MgLUVCIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWMgLW8gYXNjX3NlcmlhbC5vIGFzY19zZXJpYWwuYwogICAgICAvYmluL3NoOiBsaW5lIDA6IFs6IDogaW50ZWdlciBleHByZXNzaW9uIGV4cGVjdGVkCgogICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIHRoZSB0cmljayBhbmQgbWFrZXMgaXQgd29yayB3aXRoIGJvdGggdmVyc2lvbnMgb2YgZ2FzLgogICAgSSBhbHNvIHJlcGxhY2UgYW4gZXhwZW5zaXZlIGBhd2sgKG9yIGdhd2spJyB3aXRoIGBjdXQnLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgMTY2NjRmNzI4NTA4NDZlNjQ1NjE2ZGExYzBmYTVhZmNkNmQxNWYxNQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6MDU6MjYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBSZW1vdmUgdXNlbGVzcyBpbnN0cnVjdGlvbnMgZm9yIGluaXRpYWxpemluZyAkZ3AuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAwM2MwMzFkNTY2MGVhOTQ2YzM5YWY2ZTJlMTYyNjdkYTg1N2M2MDlmCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNToyNzowNiAyMDA3ICswOTAwCgogICAgW01JUFNdIE1JUFMgNEsgY29yZTogQ29kaW5nIHN0eWxlIGNsZWFudXBzCgogICAgTm8gbG9naWNhbCBjaGFuZ2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZjVlNDI5ZDM4NjBiYmE0YzZhZThiZWFkOGY3ODM0OWZhMjQ0OTFiMgpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBOb3YgMTcgMjA6MDU6MjAgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBndGgyLmM6IEZpeCBhIHdhcm5pbmcgb24gZ3RoMiBidWlsZC4KCiAgICBndGgyLmM6IEluIGZ1bmN0aW9uICdtaXNjX2luaXRfcic6CiAgICBndGgyLmM6NDM0OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyIG9mICdzZXRlbnYnIGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA0ZmJkMDc0MWIyYjY0NDFkYTEwYmU5M2UxMDI2NzEyMjU4MWI3MDc5CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNToyMjozMyAyMDA3ICswOTAwCgogICAgW01JUFNdIGF1MXgwMF9ldGguYzogRml4ZWQgYSB3YXJuaW5nIG9uIHBiMTAwMCBidWlsZC4KCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfbWlpcGh5X3dyaXRlJzoKICAgIGF1MXgwMF9ldGguYzoxMzk6IHdhcm5pbmc6ICdyZXR1cm4nIHdpdGggbm8gdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgZjAxMzIwNDU5NzM2ZjE1NjcwNzQyNWNmODExMmY5ODYwNjMwMWFhNApBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBPY3QgMjcgMTU6MDA6MjUgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBhdTF4MDBfZXRoLmM6IEZpeCBhdTF4MDBfbWlpcGh5X3tyZWFkLHdyaXRlfSBidWlsZCBlcnJvcgoKICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9lbmV0X2luaXRpYWxpemUnOgogICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6ICdhdTF4MDBfbWlpcGh5X3JlYWQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKICAgIGF1MXgwMF9ldGguYzoyNDY6IGVycm9yOiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikKICAgIGF1MXgwMF9ldGguYzoyNDY6IGVycm9yOiAnYXUxeDAwX21paXBoeV93cml0ZScgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCiAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfbWlpcGh5X3dyaXRlJzoKICAgIGF1MXgwMF9ldGguYzoyOTg6IHdhcm5pbmc6ICdyZXR1cm4nIHdpdGggbm8gdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZAogICAgbWFrZVsxXTogKioqIFthdTF4MDBfZXRoLm9dIEVycm9yIDEKCiAgICBGaXhlZCBieSBtb3ZpbmcgdGhlc2UgdHdvIGZ1bmN0aW9ucyBmb3J3YXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Cgpjb21taXQgYjA5MjU4YzUzOTNlZGQxMDg3YzVmMzlhZTY4MzM4ZjE2YjQ5ZjhiMwpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVNhdCBPY3QgMjcgMTU6MDA6MjUgMjAwNyArMDkwMAoKICAgIE1BS0VBTEw6IEFkZGVkIG1pc3NpbmcgcGIxMDAwIGJvYXJkCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCAyZTRhNmUzNjY3YTFlMzljMGU2ZTk5NDk4Njg2YjE1ZDI3MThiMzY5CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNTowMDoyNCAyMDA3ICswOTAwCgogICAgW01JUFNdIHBiMTAwMDogUmVwbGFjZSBvYnNvbGV0ZSBtZW1zZXR1cC5TIHdpdGggbG93bGV2ZWxfaW5pdC5TCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA2NjJlNWNiMzk3MjQ5YzNlYTg4YTRjMzI1NWU5Y2NmYzQwYjk4ZDgyCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KRGF0ZToJU2F0IE9jdCAyNyAxNTowMDoyNCAyMDA3ICswOTAwCgogICAgW01JUFNdIHUtYm9vdC5sZHM6IENsZWFudXAgX191X2Jvb3RfY21kX3tzdGFydCxlbmR9CgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KCmNvbW1pdCA1OTQ3ZjY5OTlhYWZhN2M1NGMxMzkwOTgzZDI2NGE4NDYzZGZlYThlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE5vdiAxNyAwMjozNDozOCAyMDA3ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPSUcsIHByZXBhcmUgZm9yIC1yYzQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZkMzI5ZTZmMDViYmRmZTZiZDcxYjBlMDlmMGM3NmQzYjBhMDI1YTUKQXV0aG9yOiBMdW90YW8gRnUgPGwuZnVAcGVuZ3V0cm9uaXguZGU+CkRhdGU6CVdlZCBOb3YgMTQgMTg6NTg6MzMgMjAwNyArMDEwMAoKICAgIEZpeCB0aGUgaTJjIGZyZXF1ZW5jeSBhbmQgZGVmYXVsdCBhZGRyZXNzIGluIHJzZHByb3RvIGJvYXJkCgogICAgcnNkcHJvdG8gYm9hcmQgc3VwcG9ydCBoYXMgd3JvbmcgSTJDIGZyZXF1ZW5jeSBhbmQgd3JvbmcgcmV0dXJuIHZhbHVlCiAgICBoYW5kbGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMdW90YW8gRnUgPGwuZnVAcGVuZ3V0cm9uaXguZGU+Cgpjb21taXQgNDI5YzE4MGVkYWQwMzhmOTFjOTg5Y2IxNGI0NzgyMjgwOTJlNzA1NApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMTcgMDE6NDU6MzggMjAwNyArMDEwMAoKICAgIHBvd2VycGM6IEJhY2tvdXQgcmVsb2NhdGlvbiBjaGFuZ2VzIGZvciBNUEM1MTIxLCB0b28uCgogICAgQXBwbHkgR3JhbnQgTGlrZWx5J3MgYmFja291dCB0byBNUEM1MTIxIGNvZGUsIHRvby4KCiAgICBQb2ludGVkIG91dCBieSBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMWMzZGQ0MzMzOGEwNzcxNjVlN2UwMzA5Y2IzOTk0ZTY1ZDJiZGJmOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIE5vdiAxMyAyMjoxODozMyAyMDA3IC0wNzAwCgogICAgcG93ZXJwYzogQmFja291dCByZWxvY2F0aW9uIGNoYW5nZXMuCgogICAgVWdoLiAgSSAqaGF0ZSogdG8gYmFjayB0aGlzIGNoYW5nZSBvdXQsIGJ1dCB0aGVzZSBjb21waWxlciBmbGFncyBkb24ndAogICAgd29yayBmb3IgcmVsb2NhdGlvbiBvbiBhbGwgdmVyc2lvbnMgb2YgR0NDLiAgSSd2ZSBub3QgYmVlbiBhYmxlIHRvCiAgICByZXByb2R1Y2UgdGhlIGVudmlyb25tZW50IGluIG15IHNldHVwIChhbmQgaGVuY2UsIG5vdCBiZWVuIGFibGUgdG8KICAgIGZpbmQgYSBjb21iaW5hdGlvbiB0aGF0ICpkb2VzKiB3b3JrKSwgc28gSSd2ZSBnb3Qgbm8gY2hvaWNlIGJ1dCB0byBnbwogICAgYmFjayB0byB0aGUgb2xkIGdjYyBmbGFncyBhbmQgbGlua2VyIHNjcmlwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWMxNTAxMGVmYWQ5ODBhZDU0OThjYzU2NWZjMWVkNzBkZjJmNTJiNApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVR1ZSBOb3YgMTMgMDk6MTE6MDUgMjAwNyArMDEwMAoKICAgIEZpeGVkIG1pcHNfaW9fcG9ydF9iYXNlIGJ1aWxkIGVycm9ycy4KCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHNlbnQgb246CiAgICAtIDI5IFNlcCAyMDA3CgogICAgQWx0aG91Z2ggbWlwc19pb19wb3J0X2Jhc2UgaXMgY3VycmVudGx5IGEgcGFydCBvZiBJREUgY29tbWFuZCwgaXQgaXMgcXVpdGUKICAgIGZ1bmRhbWVudGFsIGZvciBNSVBTIEkvTyBwb3J0IGFjY2VzcyBzdWNoIGFzIGluW2J3bF0gYW5kIG91dFtid2xdLiBTbyBtb3ZlCiAgICBpdCB0byBNSVBTIGdlbmVyYWwgcGFydCwgYW5kIGludHJvZHVjZSBgc2V0X2lvX3BvcnRfYmFzZSgpJyBmcm9tIExpbnV4LgoKICAgIFRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1pcHNfaW9fcG9ydF9iYXNlJyBidWlsZAogICAgZXJyb3Igb24gZ3RoMiAoYW5kIHRiMDIyOSBhbHNvIG5lZWRzIHRoaXMgZml4LikKCiAgICBib2FyZC9ndGgyL2xpYmd0aDIuYShndGgyLm8pOiBJbiBmdW5jdGlvbiBgbG9nX3NlcmlhbF9jaGFyJzoKICAgIC9ob21lL3NrdXJpYmF5L2RldmVsL3UtYm9vdC5naXQvYm9hcmQvZ3RoMi9ndGgyLmM6NDc6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1pcHNfaW9fcG9ydF9iYXNlJwogICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9pZGUubyk6L2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9jb21tb24vY21kX2lkZS5jOjcxMjogZmlyc3QgZGVmaW5lZCBoZXJlCiAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDZlY2JiN2EzZmE5YjA5NDBlZDMzZTQ5MGQxOTVkNGI2ODMwYjI0MjIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgTm92IDE3IDAxOjMwOjQwIDIwMDcgKzAxMDAKCiAgICBGaXggYSBidWcgaW4gdGhlIHNsYXZlIHNlcmlhbCBwcm9ncmFtbWluZyBtb2RlIGZvciB0aGUgWGlsaW54CiAgICBTcGFydGFuMi8zIEZQR0FzLiBUaGUgb2xkIGNvZGUgdXNlZCAiPCAwIiBvbiBhICJjaGFyIiB0eXBlIHRvIHRlc3QgaWYKICAgIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCB3YXMgc2V0LCB3aGljaCBkaWQgbm90IHdvcmsgb24gYW55CiAgICBhcmNoaXRlY3R1cmUgd2hlcmUgImNoYXIiIGRlZmF1bHRlZCB0byBiZSBhbiB1bnNpZ25lZCB0eXBlLgoKICAgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5nZWxvcyBNYW5vdXNhcmlkaXMgPGFtYW5vdXNAaW5hY2Nlc3NuZXR3b3Jrcy5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkMDhiNzIzM2JjMjUyZmFhZDgzMzllN2NhMGRkZmQ2MmZhNzk5MDNjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjIzOjI5IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggYnJva2VuIHZhcmlhYmxlIHJlZmVyZW5jZSB3aGVuICNkZWYgREVCVUdpbmcuCgogICAgU29tZXRpbWVzIHlvdSBjYW4ndCByZWZlcmVuY2UgdGhlIEREUjIgY29udHJvbGxlciB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmOWQ5MTY0ZDljNmI1YTdmMDM5M2ZkOGQ3ZTI0NmI4YTAzMjZiYzE5CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAyNiAxODozMjowMCAyMDA3ICswODAwCgogICAgbWFrZSA4NjEwIGJvYXJkIHVzZSBwaXhpcyByZXNldAoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGI3NGIzYzFjOTQ4MWE2YmZmYmY4Y2Q0NDVlNWJjYmY2OTA4ZTgzNgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTk6MjY6MjEgMjAwNyArMDgwMAoKICAgIFVuaWZ5IHBpeGlzX3Jlc2V0IGFsdGJhbmsgYWNyb3NzIGJvYXJkIGZhbWlsaWVzCgogICAgQmFzaWNhbGx5LCByZWZhY3RvciB0aGUgQ0ZHX1BJWElTX1ZCT09UX01BU0sgdmFsdWVzCiAgICBpbnRvIHRoZSBzZXBhcmF0ZSBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjRiZjU1NTQ2NWM3OTI2YmUxM2UxMDQ2YWMwZDBmMDVhYzcyODI5YwpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBOb3YgNyAwODoxOToyMSAyMDA3ICswMTAwCgogICAgRml4IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBhc3NpZ25tZW50IGRpZmZlciBpbiBzaWduZWRuZXNzCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA3YTYwZWU3YzYyNDhhOTU4YzU3NTdkMzY2MGExNzAyNzIzYTI3ODZkCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJV2VkIE5vdiA3IDA4OjE5OjE5IDIwMDcgKzAxMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBjb21tb24vY21kX2lkZS5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmMzFkMzhiOWVlYTliMzJmNmExYWM4NDhhMjk4Y2M3MWNhNGM5YTAzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTm92IDE2IDE0OjE2OjU0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA0MDVFWCBQQ0llIFVUTCByZWdpc3RlciBjb25maWd1cmF0aW9uCgogICAgVGlsbCBub3cgdGhlIFVUTCByZWdpc3RlcnMgb24gNDA1RVggd2VyZSBub3QgaW5pdGlhbGl6ZWQgYnV0IGxlZnQgd2l0aAogICAgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuIFRoaXMgcGF0Y2ggbmV3IGluaXRpYWxpemVzIHNvbWUgb2YgdGhlIFVUTAogICAgcmVnaXN0ZXJzIG9uIDQwNUVYLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlY2RjYmQ0ZjhjMWY4Y2VmZDc4NTc1MmY0ZTc1MzZhYWUyYTRlY2Y5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTm92IDE2IDE0OjAwOjU5IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBBTUNDIE1ha2FsdSBmb3IgYm9hcmQgcmV2IDEuMQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBjaGFuZ2VzIG5lZWRlZCBmb3IgTWFrYWx1IHJldiAxLjE6CgogICAgLSBFbmFibGUgMm5kIEREUjIgYmFuayByZXN1bHRpbmcgaW4gMjU2TUJ5dGUgb2YgU0RSQU0KICAgIC0gRW5hYmxlIDJuZCBldGhlcm5ldCBwb3J0IEVNQUMxCiAgICAtIFVzZSBnZW5lcmljIEdQSU8gY29uZmlndXJhdGlvbiBmcmFtZXdvcmsgKENGR180eHhfR1BJT19UQUJMRSkKICAgIC0gUmVzZXQgUENJZSBwb3J0cyB2aWEgR1BJTyB1cG9uIGJvb3R1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZDRmYWFlNjVlMTE1ZTMyNzQyNWNkNTE0YzFhMzUxNDZhODUxNjZiCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKCiAgICBHcm91cCBQQ0kgYW5kIFBDTUNJQSBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNTc5OGY4N2RjMTBhNDk2ZDc5ZDMxNzdiOWY1YTc2NDg4OTg3ZmQzNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMSAyMDA3IC0wNjAwCgogICAgR3JvdXAgYmxvY2svZmxhc2ggZHJpdmVycyBpbiBkcml2ZXJzL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGRmNThjODE1NTE3MDBmMDU4YjQ0Y2FjZjU1YTc5OTdmYTYzYmZlMGEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzEgMjAwNyAtMDYwMAoKICAgIEdyb3VwIFVTQiBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWRiYjZlZDYyMmU1MzliMGM4NDkzZWY3ZTU3OGQzYTUzMzE4MWQyOQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCgogICAgR3JvdXAgaTJjIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlYzAwYzc2ZGUwZTU5NzEyNzM5MDU5OThkNjJkNmJiMTE5MzI0MjE4CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBHcm91cCBjb25zb2xlIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA3NTRmMjMwYWEwMWI4Yzc4OWZjMzFmODAxM2MyNDg3OTU0MDczMzAwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBHcm91cCBuZXR3b3JrIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBmMDAzN2M1NmIwZDEyY2Q0NjIxNTEyNDY2N2I5ZjgzZDYwZWY5MzkxCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKCiAgICBCdWlsZDogc3BsaXQgQ09CSlMgdmFsdWUgaW50byBtdWx0aXBsZSBsaW5lcwoKICAgIFRoaXMgY2hhbmdlIGlzIGluIHByZXBhcmF0aW9uIGZvciBjb25kdGl0aW9uaWFsIGNvbXBpbGUgc3VwcG9ydCBpbiB0aGUKICAgIGJ1aWxkIHN5c3RlbS4gIEJ5IHNwbGl0aW5nIHRoZW0gYWxsIGludG8gc2VwZXJhdGUgbGluZXMgbm93LCBzdWJzZXF1ZW50CiAgICBwYXRjaGVzIHRoYXQgY2hhbmdlICdDT0JKUy15ICs9ICcgaW50byAnQ09CSlMtJChDT05GSUdfPGJsYWg+KSArPSAnIHdpbGwKICAgIGJlIGxlc3MgaW52YXNpdmUgYW5kIGVhc2llciB0byByZXZpZXcKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMWI0YWFmZmU0ZmIyYTVlOTVkOTExMWE1ZDk0ZmQxZjg5MjE1ZGNlNApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCgogICAgQWRkIC5naXRpZ25vcmUgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NTU0MTNmMzVmMDU0YTgyZTQwMDQyZjFkYmNmNTAxYzZhMDU3MTliCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjI3OjUyIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgcmVsb2NhdGlvbiBmaXh1cCBmb3IgbXBjNXh4IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzY0OWNkOTliYTgxNWI2NjAxODY4NzM1NzY1NjAyZjAwZWYzNjkyYi4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBlMTU2MzM4ODhhMDU4YWFjYjMxYTYyZDJjZjEyNzhlMWU0YzIzNmFiCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjI0OjMyIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgTVBDNXh4eCIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDZmNzU3NmIyMGVjZjBkMDQwYzNhYzNiMDMyYjVjYmM4NjBlMzhhOTAuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMTM5MzY1ZmJlNTY2ZDBmYzYxOWExZWQwNDQ1MmVjNTM4OGYwY2VmOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IE5vdiAxNSAwODoyMTowNCAyMDA3IC0wNzAwCgogICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgyMjAiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhODVkZDI1NGMwNTc3ZmNhMTM2MjdjNDZlOTNmYzJhZDRjNGYxZjAwLgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDcwOTIyMzQyMzY5ZTVlMzliMjg2ZmUyMWU3NjhhMjM5Y2EwN2E1MTQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBOb3YgMTUgMDg6MjA6NTcgMjAwNyAtMDcwMAoKICAgIFJldmVydCAiQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjR4IgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgZjNhNTJmZTA1OTIzOTM1ZGI4Njk4NWRhZjk0MzhlMmY3MGFjMzlhYS4KICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA5NjI3OWFiNGNhZDYwY2I1OTcyYWE5MzRmYmU0ODQ1YWMwMmNjNzVhCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgTm92IDE1IDA4OjIwOjUwIDIwMDcgLTA3MDAKCiAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgbXBjODI2MCIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDVhZjYxYjJmNGI4MzhhMDVmNzliZTI3NGYzZTVhNjZlZGQyZDljOTYuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgOTI4ZmUzM2IyNGNkZjM4MmE4ZGM4Njg3ZmVkMjRiMTk2MWNkYjVkNgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IE5vdiAxNSAwODoyMDo0MyAyMDA3IC0wNzAwCgogICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgzeHgiCgogICAgVGhpcyByZXZlcnRzIGNvbW1pdCAwNTcwMDRmNGE0ODYzNTU0ZDU2Y2M1NjI2OGJmYTdjN2Q5NzM4ZTI3LgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGM5Mzk0NWU4ZjllMzAwODYwZDJiZjczYTI1NDljZTU3OTRmOGJkMDAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBOb3YgMTUgMDg6MjA6MjUgMjAwNyAtMDcwMAoKICAgIFJldmVydCAiW01QQzUxMnhdIENvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiIKCiAgICBUaGlzIHJldmVydHMgY29tbWl0IDhkMTc5NzlkMDM1OTQ5MmE4MjJhMGE0MDlkMjZlM2EzNTQ5YjRjZDQuCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYzk2NzJmODFmMWJkYjRlOGRkZjYyYWE3MmNhMDIwNmU4YjcyYWExYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxNSAxNDoyNTowOSAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBTbWFsbCBBTUNDIEtpbGF1ZWEgY2xlYW51cAoKICAgIFJlbW92ZSBub3QgbmVlZGVkIHBjaV90YXJnZXRfaW5pdCgpIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZWU3NDdmMTliNDYwYTBlOWRhMjBmZjIxZTkwZmRhYWMxY2VjMzU5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTm92IDE1IDE0OjIzOjU1IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSA0NDAgR1BJTyBpbml0IHRhYmxlIENGR180NDBfR1BJT19UQUJMRSBmb3IgNDA1IHBsYXRmb3JtcwoKICAgIC0gUmVuYW1lIENGR180NDBfR1BJT19UQUJMRSB0byBDRkdfNHh4X0dQSU9fVEFCTEUKICAgIC0gQ2xlYW51cCBvZiB0aGUgNHh4IEdQSU8gZnVuY3Rpb25zCiAgICAtIE1vdmUgc29tZSBHUElPIGRlZmluZXMgZnJvbSB0aGUgY3B1IGhlYWRlcnMgcHBjNDA1LmgvcHBjNDQwLmggaW50byBncGlvLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGFkYTBlYmYzOGU0MDczYmVlYTAzMDkxODhiMjVkODJhMTEyYTJhZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAxNSAxNDoyMDowOCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBBTUNDIFRhaWh1IGJvYXJkIGNvbmZpZyBmaWxlIGNsZWFudXAKCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBBTUNDIFRhaWh1IGEgbGl0dGxlIG1vcmUgY29tcGF0aWJsZSB0byB0aGUgb3RoZXIKICAgIEFNQ0MgZXZhbCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVlNzFjNTFkNzRjOTYzZDMxNzQwNjBjMDc4ZGNhY2YxM2JkZDAyZWYKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgTm92IDE1IDEzOjM3OjI4IDIwMDcgKzAxMDAKCiAgICBbSU5LQTR4MF0gTkcgaGFyZHdhcmU6IGZsYXNoIHN1cHBvcnQKCiAgICBEaXNhYmxlZCBhbmQgcmVtb3ZlIGlua2E0eDAgY3VzdG9tIGZsYXNoIGRyaXZlciwgdXNlIENGSSBmbGFzaAogICAgZHJpdmVyIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KCmNvbW1pdCA1ZmI2ZDcxOTFlMjA2Y2RkZTBlMjMxNDBmZDgxMTFjYWVkOTNhNTk1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE5vdiAxNSAxMzoyOTo1NSAyMDA3ICswMTAwCgogICAgW0lOS0E0eDBdIE5HIGhhcmR3YXJlOiBTRFJBTSBzdXBwb3J0CgogICAgQWRkIHN1cHBvcnQgZm9yIHRocmVlIG5ldyBERFIgY2hpcHMgdGhhdCBtYXkgIGJlIHByZXNlbnQgb24gYSBORwogICAgSU5LQTR4MCBoYXJkd2FyZTogSFlCMjVENTEyMTYwQkYtNSwgSzRINTExNjM4Qy03Q0IzLCBUNDZWMzJNMTZCTi02SVQuCgogICAgQ2xlYW51cCBib2FyZC9pbmthNHgwL210NDhsYzE2bTE2YTItNzUuaCBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZjIzY2IzNGMzNjdiYjI3NTg1YTRmZGI4YTc1Mjc3MzcwZTdkMDU5NgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBOb3YgMTUgMTM6MjQ6NDMgMjAwNyArMDEwMAoKICAgIFtJTktBNHgwXSBORyBoYXJkd2FyZTogcGxhdGZvcm0gY29kZSB1cGRhdGUKCiAgICAtIENsZWFudXAgY29tcGlsZSB3YXJuaW5ncy4KICAgIC0gQWRkIG1pc3NpbmcgJ1wwJyBpbiBkZWZhdWx0IGVudmlyb25tZW50LgogICAgLSBJbmNyZWFzZSBDRkdfTU9OSVRPUl9MRU4gdG8gMjU2IEtpQi4KICAgIC0gQWRkIHJlcXVpcmVkIENGR19VU0VfUFBDRU5WLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMmFlNjRmNTEzNWU1MWJiMTg3NTM4ODRkMTI2NWI5OWU4OWI1YWVkZApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVRodSBOb3YgMTUgMDg6NTg6MDAgMjAwNyArMDAwMAoKICAgIFJlbW92ZSB3YXJuaW5ncyByZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCiAgICBSZW1vdmUgd2FybmluZ3MgcmUgb25lbmFuZF9yZWFkKCkgJiB3cml0ZSgpCgpjb21taXQgMmRiOTE2ZTE0NDEwZTNlYzE3Mzg1MDhjN2JmNGRmZWIyYjI5OWFlNwpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVRodSBOb3YgMTUgMDg6NDU6MTMgMjAwNyArMDAwMAoKICAgIENvcnJlY3Rpb24gcGF0Y2gKCmNvbW1pdCAxZDhhNDllY2ExYzdiZGM4ZGIxYzQ3YTkyZjkwMTRhMjllYWQwM2FlCkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgU2VwIDEzIDE4OjUyOjI4IDIwMDcgKzA4MDAKCiAgICBFbmFibGUgVUxpMTU3NSBFdGhlcm5ldCBzdXBwb3J0IGluIDg2MTBIUENEIGNvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU0ZmQ2YzkzYzI4YTBhNDUzNTJmZmY1ZGQ5MjY3MzQwMWZmNTYzZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTMgMDg6MTg6MjAgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogbHdtb241OiBDaGFuZ2UgUEhZIHJlc2V0IHNlcXVlbmNlIGZvciBQSFkgTURJTyBhZGRyZXNzIGxhdGNoaW5nCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkMGE0MDY2YjVhNmI2OThlNWZjMWI2NmNmZTk3MDU3NzRiYmNlOTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMTMgMDg6MDY6MTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IDQwNUVYIFBDSWUgVVRMU0VUIHJlZ2lzdGVyIHNldHVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFjZTU1MTUxYzg1ZDA2OGY3MDMxN2E4ZDY1YzYxMDU4Yjg5MWFmYjQKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KRGF0ZToJVHVlIE5vdiAxMyAwNzo1MDoyOSAyMDA3ICswMTAwCgogICAgW1VDMTAxXSBTUkFNIG5vdyB3aXRoIDIgTUIgd29ya2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCAyZDE0Njg0MzQxMTA5YTY5NjE2ZTRkNjAxNmNkNjE0MDJkNTUwODZmCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CUZyaSBOb3YgOSAxNTozNzo1MyAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBVc2UgZ2VuZXJpYyB1c2Itb2hjaSBkcml2ZXIgZm9yIHNlcXVvaWEgYm9hcmQKCiAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBzZXF1b2lhIGJvYXJkIHVzZSB0aGUgZ2VuZXJpYyB1c2Itb2hjaSBkcml2ZXIKICAgIGluc3RlYWQgb2YgY3B1L3BwYzR4eC91c2Jfb2hjaS5jLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDliZTY1OWFjMDg2OGRjMzY3Y2FhOTU3YzVjNzI1ZTQ2YjA3ZjZhNWYKQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KRGF0ZToJRnJpIE5vdiA5IDE1OjM3OjIzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IE1ha2UgVVNCIHdvcmtpbmcgd2l0aCBDT05GSUdfNHh4X0RDQUNIRSBkZWZpbmVkCgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyB0aGUgNDR4IGQtY2FjaGUgb24gJ3VzYiBzdGFydCcgYW5kCiAgICByZWVuYWJsZXMgaXQgb24gJ3VzYiBzdG9wJy4gVGhpcyBzaG91bGQgYmUgc2VlbiBhcyBhCiAgICB0ZW1wb3JhcnkgZml4IHVudGlsIHRoZSBnZW5lcmljIHVzYi1vaGNpIGRyaXZlciBjYW4KICAgIGxpZmUgd2l0aCBkLWNhY2hlIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmJkZTIxNjlkMmM0OGZjYzlmZjAzNDg5NTM0YTc4ZmZiMGE4YTBkNApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgTm92IDkgMTU6MzY6NDQgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHJlZHVuZGFudCBjb2RlIGZyb20gNHh4IG5ldHdvcmsgZHJpdmVyCgogICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgcmVkdW5kYW50IGNvZGUgYW5kIGRlY3JlbWVudHMgdGhlIGVuZAogICAgYWRkcmVzcyBvZiBjYWNoZSBmbHVzaCBhbmQgaW52YWxpZGF0ZSBieSAxLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVjYTk4ODFhYWQ4YzQxM2FjMmE4Mjg2OGE1ZTM3MTkxNzgyNTQ1MDIKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglGcmkgTm92IDkgMTU6MjQ6MjYgMjAwNyArMDAwMAoKICAgIEFkZCBhcG9sbG9uIGJvYXJkIHN1cHBvcnQKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYjUzMzEzZGJmYzc0NTI1ZDg1ZjFlN2UwMTAyZjkwMmQ1Yzg2M2JlYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiA5IDEyOjE5OjU4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBJbjovT3V0Oi9FcnI6IGJvb3Qgb3V0cHV0IGZvciBBTUNDIEtpbGF1ZWEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzdmNjljMzQwMjc3OTM1YTZjMTlhOTU2NDIxODUyZGE5NDRhMzY1ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE5vdiA5IDEyOjE4OjU0IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IE1ha2Ugb3V0cHV0IGEgbGl0dGxlIHNob3J0ZXIgb24gSTJDIGJvb3Ryb20gZGV0ZWN0aW9uCgogICAgTW9zdCA0eHggUFBDIGNhcGFibGUgb2YgdXNpbmcgYW4gSTJDIGJvb3Ryb20gZm9yIGJvb3RzdHJhcCBzZXR0aW5nCiAgICBhbHJlYWR5IHByaW50IGEgbGluZSB3aXRoIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBJMkMgYm9vdHJvbSBpcwogICAgdXNlZCBmb3IgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24uIFNvIHdlIGRvbid0IG5lZWQgdGhpcyBleHRyYSBsaW5lCiAgICB3aXRoICJJMkMgYm9vdCBFRVBST00gZW4tL2Rpcy1hYmxlZCIuCgogICAgVGhpcyBwYXRjaCBhbHNvIGhhcyBhIGxpdHRsZSBjb2RlIGNsZWFudXAgaW50ZWdyYXRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGQ3MzdhMjgxNTJlYzEyODczZjg1NDRjY2ExZmIzOWE0OWU1ZTY5MwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA4IDEyOjUwOjE4IDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSAtIFJlbW92ZSByZXNldCByZWdpc3RlcnMgZnJvbSBDQ00KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2Q3Y2RlYTc2OWE2MGIwYTZlNGMxOGJlZjdmOWQ2NDhmZDE0YjhkNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiA4IDEyOjMxOjExIDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSAtIEFkZCBSZXNldCBzdHJ1Y3R1cmUgdG8gaW1tYXBfNTMyOS5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA5YjI2Y2YwMGQ3NmQ3NWZkZjdmZGM0YjEzZTRkZDkyOTc0M2JjMjEKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgOCAxMjoxOTowMSAyMDA3IC0wNjAwCgogICAgQ29sZEZpcmU6IE1DRjUzMjkgLSByZXZlcnQgaW5jbHVkZS9hc20tbTY4ay9tNTMyOS5oIGZpbGUgbW9kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMjVhMjRiNWUwNjJhZDk0NjI3NDI0NTA4YWU4MTRmNTFkYmUxYTM0CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDcgMTg6MDA6NTQgMjAwNyAtMDYwMAoKICAgIENvbGRGaXJlOiBNQ0Y1NDQ1eCAtIFVwZGF0ZSBjb3JyZWN0IFJBTUJBUiBhbmQgbWlzc2luZyBsaW5rZXIgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjQ4YzdjMTQ4MzVmMzRkNWQ5MTBiNDVlNTYwMDA1MGU1OGNhNmNhYgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA3IDE3OjU2OjE1IDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyeCAtIFVwZGF0ZSBkb19yZXNldCgpIHVzaW5nIGNvcmUgcmVzZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDkyNDBhNWY4MjdlYjNiNDc2YTZiYTI5MzhkMDFmMWE5ZTc2ODhmNApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiA3IDE3OjUxOjAwIDIwMDcgLTA2MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIGNwdSBmbGFnIGZvciA0LjIteHggY29tcGlsZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDcwYmE1NjExNWI0ZGE2M2I0NmU5NzQyODdmYTQ1NTBkNDAyMzM4NgpBdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMzEgMTQ6NTk6MDQgMjAwNyAtMDUwMAoKICAgIDg2MTA6IEFkZCBjb25zb2xlIGZyYW1lIGJ1ZmZlciBzdXBwb3J0IHRvIEZTTCA4NjEwIERJVSBkcml2ZXIuCgogICAgQWRkIGNmYiBjb25zb2xlIHN1cHBvcnQgdG8gRlNMIDg2MTAgRElVIGRyaXZlci4KICAgIEluc3BlY3QgYm9hcmQgdmVyc2lvbiBmcm9tIFBJWElTIHRvIG9idGFpbiBjb3JyZWN0IHBpeGVsIGZvcm1hdC4KCiAgICBVc2UgI2RlZmluZSBDT05GSUdfVklERU8gaW4gY29uZmlnIGZpbGUgdG8gZW5hYmxlIGZiIGNvbnNvbGUuCgogICAgVG8gc3dpdGNoIG1vbml0b3IsIHNldCBtb25pdG9yIHZhcmlhYmxlIHRvCiAgICAwIC0gRFZJLCAxIC0gU2luZ2xlIGxpbmsgTFZEUywgMiAtIERvdWJsZSBsaW5rIExWRFMKICAgIGZvbGxvd2VkIGJ5ICJkaXVmYiBpbml0Ii4KCiAgICBQcmVzZXJ2ZSBsb2dvIGJpdG1hcCBhdCB0aGUgdG9wIG9mIHRoZSBmYiBjb25zb2xlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4Nzc4ODBjNjk0OWU5NDhiZDYzY2Q2ZWE0ZTIxNjU3M2QyZjUzZGQKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjU4OjM5IDIwMDcgLTA1MDAKCiAgICA4NjEwOiBBZGQgODYxMCBESVUgZGlzcGxheSBkcml2ZXIKCiAgICAxMjgweDEwMjQgYW5kIDEwMjR4NzY4IEAgMzIgYnBwIGFyZSBzdXBwb3J0ZWQgbm93LgogICAgRFZJLCBTaW5nbGUtbGluayBMVkRTLCBEb3VibGUtbGluayBMVkRTIGFyZSBhbGwgc3VwcG9ydGVkLgoKICAgIEVudmlyb25tZW50YWwgdmFyaWFibGUgIm1vbml0b3IiIGlzIHVzZWQgdG8gc3BlY2lmeSBtb25pdG9yIHBvcnQuCgogICAgQSBuZXcgY29tbWFuZCAiZGl1ZmIiIGlzIGludHJvZHVjZWQgdG8gcmVpbml0aWFsaXplIG1vbml0b3IKICAgIGFuZCBkaXNwbGF5IGEgQk1QIGZpbGUgaW4gdGhlIG1lbW9yeS4gU28gZmFyLCAxLWJpdCwgNC1iaXQsCiAgICA4LWJpdCBhbmQgMjQtYml0IEJNUCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCgoJZGl1ZmIgaW5pdAoJICAgIC0gaW5pdGlhbGl6ZSB0aGUgZGl1IGRyaXZlcgoJRW5hYmxlIHRoZSBwb3J0IHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSAibW9uaXRvciIKCglkaXVmYiBhZGRyCgkgICAgLSBkaXNwbGF5IGJtcCBmaWxlIGluIG1lbW9yeS4KCVRoZSBibXAgaW1hZ2Ugc2hvdWxkIGJlIG5vIGJpZ2dlciB0aGFuIHRoZSByZXNvbHV0aW9uLCAxMjgweDEwMjQKCWZvciBEVkkgYW5kIGRvdWJsZS1saW5rIExWRFMsIDEwMjR4NzY4IGZvciBzaW5nbGUtbGluayBMVkRTLgoKICAgIE5vdGUsIHRoaXMgZHJpdmVyIGFsbG9jYXRlIG1lbW9yeSBidXQgZG9lc24ndCBmcmVlIGl0IGFmdGVyIHVzZQogICAgSXQgaXMgd3JpdHRlbiBvbiBwdXJwb3NlIC0tIHRvIGF2b2lkIGEgZmFpbHVyZSBvZiByZWFsbG9jYXRpb24KICAgIGR1ZSB0byBtZW1vcnkgZnJhZ2VtZW50LgoKICAgIEVDQyBvZiBERFIgaXMgZGlzYWJsZWQgZm9yIERJVSBwZXJmb3JtYW5jZS4gTDIgZGF0YSBjYWNoZSBpcyBhbHNvIGRpc2FibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gbG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyZTVkZGZlY2RkYTMwOGY3NTc4MmZhZTIwNmI2NzdiMTgxMGY1ZjkKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDMxIDEwOjQzOjU5IDIwMDcgLTA1MDAKCiAgICBGU0w6IEFkZCBhIGZyZWVzY2FsZSBiaXRtYXAgbG9nby4KCiAgICBUaGlzIEZyZWVzY2FsZSBsb2dvIGlzIGEgMzQwIHggMTI4IHggNGJwcCBCTVAgZmlsZQogICAgdGhhdCBjYW4gYmUgZGlzcGxheWVkIGJ5IHRoZSBESVUgRnJhbWVidWZmZXIgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE4MTUzMzhmYmQxYzBmOTRmODI3NmQyODkxYjk5Y2FhNWEwNWY2MjIKQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDEzOjU3OjUzIDIwMDcgLTA1MDAKCiAgICA4NjEwOiBNYWtlIHNvbWUgZXh0cmEgZGVidWcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNvbmRpdGlvbmFsLgoKICAgIE9uZSBtYXkgI2RlZmluZSBFTlZfREVCVUcgdG8gZ2V0IHRoZW0gYmFjayBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc2MTQyMWNjY2E4MGE5ZmIzN2IxOWMzN2FhNjFkNDZlZjc1ZTA2NDcKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDE5OjI2OjIxIDIwMDcgKzA4MDAKCiAgICA4NjEwOiBBY3R1YWxseSBlbmFibGUgcGl4aXNfcmVzZXQgQ09ORklHcwoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjNiY2VhYWIyMzBiNDc0OGQwYWZjNDEwOWI2ODM3MzA4ZjAxOGI0MApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMjYgMTg6MzE6NTkgMjAwNyArMDgwMAoKICAgIEZpeCB0aGUgQkFUIGRlZmluaXRpb24gb2YgUENJIElPIG9uIDg2MTAgYm9hcmQKCiAgICBUaGUgYWRkcmVzcyBpbiB0aGUgQkFUIHJlZ2lzdGVyIGlzIGFsaWduZWQgd2l0aCB0aGUgQkFUIHNpemUuCiAgICBUaGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBhY3R1YWxseSBkaWQgbm90IGRlZmluZSBCQVQgZm9yIFBDSUUyIElPLgogICAgVGhpcyBwYXRjaCBmaXggdGhpcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDlmMjNjYTMzNGE2ZjVmMDIxZWY5ZTlkMGZhZDlkYTgwZDYzYjJkNTYKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gT2N0IDI5IDE5OjI2OjIxIDIwMDcgKzA4MDAKCiAgICBVbmlmeSBwaXhpc19yZXNldCBhbHRiYW5rIGFjcm9zcyBib2FyZCBmYW1pbGllcwoKICAgIEJhc2ljYWxseSwgcmVmYWN0b3IgdGhlIENGR19QSVhJU19WQk9PVF9NQVNLIHZhbHVlcwogICAgaW50byB0aGUgc2VwYXJhdGUgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4MzE4ZWMyMDVjOGU4Nzk0YjVmOWYxYjg1ODRhYmFkYjQ0MGU4YmEKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDI2IDE4OjMyOjAwIDIwMDcgKzA4MDAKCiAgICBtYWtlIDg2MTAgYm9hcmQgdXNlIHBpeGlzIHJlc2V0CgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5Yzg0NzA5ZWVkY2U5YzY4MGRkNjk1OTg0YWI3ZDIzMjhmNGYwNGY1CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAxIDEyOjIzOjI5IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggYnJva2VuIHZhcmlhYmxlIHJlZmVyZW5jZSB3aGVuICNkZWYgREVCVUdpbmcuCgogICAgU29tZXRpbWVzIHlvdSBjYW4ndCByZWZlcmVuY2UgdGhlIEREUjIgY29udHJvbGxlciB2YXJpYWJsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjEwMzEwNWEzNzQ2YWIxMjI3OWI2M2I4YzFkMzcyYzBjZTJjYzU4CkF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gTm92IDUgMTc6Mzk6MjQgMjAwNyArMDgwMAoKICAgIEltcGxlbWVudCBnZW5lcmFsIFVMaSA1MjZ4IEV0aGVybmV0IGRyaXZlciBzdXBwb3J0IGluIFUtYm9vdAoKICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBnZW5lcmFsIFVMaSA1MjZ4IEV0aGVybmV0IGRyaXZlci4KICAgIFVudGlsIG5vdywgaXQgaXMgdGhlIG9ubHkgbmF0aXZlIEV0aGVybmV0IHBvcnQgb24KICAgIE1QQzg2MTBIUENEIGJvYXJkLCBidXQgaXQgY291bGQgYmUgdXNlZCBvbiBvdGhlciBib2FyZHMKICAgIHdpdGggVUxpIDUyNnggRXRoZXJuZXQgcG9ydCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDcxYmM2ZTY0NzRmZWE4ZWY0ODFiOWI0NWQxZWRkN2FkMWY2ZGZiYmQKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJVGh1IE5vdiAxIDA4OjQ2OjUwIDIwMDcgLTA1MDAKCiAgICBORVQ6IEFkZCBFdGhlcm5ldCAxMDAwQkFTRS1YIHN1cHBvcnQgZm9yIFBQQzR4eAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAxMDAwQkFTRS1YIHRvIGZ1bmN0aW9ucyAibWlpcGh5X3NwZWVkICgpIiBhbmQKICAgICJtaWlwaHlfZHVwbGV4KCkiLglJdCBhbHNvIGFkZHMgZnVuY3Rpb24gIm1paXBoeV9pc18xMDAwYmFzZV94ICgpIiwgd2hpY2gKICAgIHJldHVybnMgbm9uLXplcm8gaWZmIHRoZSBQSFkgcmVnaXN0ZXJzIGFyZSBjb25maWd1cmVkIGZvciAxMDAwQkFTRS1YLiAgVGhlCiAgICAibWlpIGluZm8iIGNvbW1hbmQgaXMgbW9kaWZpZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAxMDAwQkFTRS1UIGFuZCAtWC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDI5ODAzNWRmNDk0OGIxMTNkMjlhYzBlNjk0NzE3ZDM0Yjk1YmM1ZGMKQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KRGF0ZToJV2VkIE9jdCAzMSAxMToyMToyOSAyMDA3IC0wNTAwCgogICAgTkVUOiBDb3NtZXRpYyBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCA2NTRmMzhiM2EzODc4ODY5OTZhNWE3NTc3MWZiZmMyOWNiNGYyMjVlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDUgMDc6NDM6MDUgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogTWFrZSBvdXRwdXQgYSBsaXR0bGUgc2hvcnRlciBvbiBQQ0llIGRldGVjdGlvbgoKICAgIE5vdyBub3QgbWF4IDMgbGluZXMgYnV0IDIgbGluZXMgYXJlIHByaW50ZWQgcGVyIFBDSWUgcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTkyNzQyYTViMDlkOTA0MGFkYmQxNTZmYjkwNzU2YWY2NmFkZTMxMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBOb3YgMyAyMzowOToyNyAyMDA3ICswMTAwCgogICAgQ2xlYW51cCBjb2Rpbmcgc3R5bGU7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU4ODFjYjU2M2UzMmY0NTgzMmI3YjZkYjc3YmRjZDAxN2FkY2JiNDEKQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+CkRhdGU6CUZyaSBOb3YgMiAxMzoxNTo0MiAyMDA3IC0wNzAwCgogICAgZml4IHdvcmRpbmcgaW4gUkVBRE1FCgogICAgQ2hhbmdlZCB0aGUgd29yZGluZyB0byBwcm9wZXJseSBkZXNjcmliZSB0aGUgc2hhZG93aW5nCiAgICBvZiB0aGUgZW52aXJvbm1lbnQgZnJvbSBST00gdG8gUkFNCgogICAgU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQWRsZXIgPGJydWNlLmFkbGVyQGFjbS5vcmc+Cgpjb21taXQgYWQ4NDViZWVmMDYyNDU0MjZjNTdiNTNkY2RjMDFiN2RjNzBlMGQ0NQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+CkRhdGU6CVdlZCBPY3QgMzEgMDI6MTg6MTUgMjAwNyArMDkwMAoKICAgIGJsYWNrZmluOiBNb3ZlIGAtRF9fQkxBQ0tGSU5fXycgdG8gJChBUkNIKV9jb25maWcubWsKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgoKY29tbWl0IGVjMjI3NTU3OTk0NjZjOGExMDM2NjRiYjNhNWU2NDdiZjljMjM4ZjQKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJVGh1IE9jdCAyNSAxNjowODoxNCAyMDA3ICswMzAwCgogICAgVHJpbW1lZCBzb21lIHZhcmlhYmxlcyBpbiBuZTIwMDAuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgoKY29tbWl0IGViNmYyMTRkMzY0NGIyYTc3OTY4YzE3NmVkMzZkY2Y4NThjZmU3ZTAKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDI1IDE3OjUxOjI3IDIwMDcgKzA4MDAKCiAgICBGaXggdGhlIGlzc3VlIG9mIHVzYl9rYmQgZHJpdmVyIG1pc3NpbmcgdGhlIHNjYW4gY29kZSBvZiBrZXkgJ3onLgoKICAgIFRoZSBzY2FuIGNvZGUgb2YgdGhlIGtleSAneicgaXMgMHgxZCwgd2hpY2ggc2hvdWxkIGJlIGhhbmRsZWQuCgogICAgVGhlIGNoYW5nZSBoYXMgYmUgdGVzdGVkIG9uIE5PVkFURUsgVVNCIGtleWJvYXJkIGFuZCBVTEkgUENJIE9IQ0kKICAgIGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYmY0Nzk2ZjY0OThmYmFkZTU2ZDU2ZWZmM2EwYTQ5YjI5OWQ5M2U1CkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzozMDowNCAyMDA3ICswODAwCgogICAgRml4IFVTQiBzdXBwb3J0IGlzc3VlIGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGhhcyBhbHJlYWR5IGVuYWJsZWQgVVNCLCBidXQgaXQKICAgIG1pc3NlZCBkZWZpbml0aW9uIG9mIENGR19PSENJX1NXQVBfUkVHX0FDQ0VTUywgdGhlIFVTQgogICAgb24gTVBDODY0MUhQQ04gY2FuIG5vdCB3b3JrIGJlY2F1c2Ugb2YgdGhlIHdyb25nIFVTQgogICAgcmVnaXN0ZXIgZW5kaWFuLgoKICAgIEFuZCBhZGQgdGhlIFVTQiBjb21tYW5kIHRvIFUtQm9vdCBjb21tYW5kcyBsaXN0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGU2MjA0MTAyM2RjM2RlOWQ5OGQ5NzdiYjA4MDIzNWJjNmQwMzVlMApBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CVdlZCBPY3QgMjQgMTg6MTY6MDEgMjAwNyArMDIwMAoKICAgIFVzZSBjb25maWdfY21kX2RlZmF1bHQuaCBpbnN0ZWFkIG9mIGNvbmZpZ19jbWRfYWxsLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDU2NjIyZjg3ODU3NDM5YjFjMjIxZTlkZWVmMTFhOWQ1YmI1ZDQzMDgKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgT2N0IDI0IDAxOjM3OjM2IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBDYWxsIHVzYl9jcHVfaW5pdCgpIGR1cmluZyBib2FyZCBpbml0CgogICAgdXNiX2NwdV9pbml0KCkgY29uZmlndXJlcyBHUFMgVVNCIHBpbnMsIGNsb2NrcywgZXRjLiBhbmQKICAgIGlzIHJlcXVpcmVkIGZvciBwcm9wZXIgb3BlcmF0aW9uIG9mIGtlcm5lbCBVU0Igc3Vic3lzdGVtLgogICAgVGhpcyBzZXR1cCB3YXMgcHJldmlvdXNseSBkb25lIGluIHRoZSBrZXJuZWwgYnkgdGhlIGZpeHVwCiAgICBjb2RlIHdoaWNoIGlzIGJlaW5nIHJlbW92ZWQsIHRodXMgbG93IGxldmVsIGluaXQgbXVzdCBiZQogICAgZG9uZSBieSBVLWJvb3Qgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgMjljMjljMDI2N2ZlODU3ZTcyMDE0Y2U5MGM1ZDM1YjJlZjYzMDJiZApBdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxNjoyNTo1MCAyMDA3ICswMjAwCgogICAgRml4IHR5cG8gaW4gbmZzLmMKCiAgICBBbiBvYnZpb3VzIHR5cG8uIE9yaWdpbmFsbHkgZml4ZWQgaW4gbGlua3N0YXRpb24gdS1ib290IHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgoKY29tbWl0IDU5NTQzZmUwMGE0Y2U3MjBlZjlmNWFhN2ZiMzg3YzZkYWYxYzdkNzgKQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6MzU6MDUgMjAwNyArMDIwMAoKICAgIEZpeCBhIHR5cG8gaW4gY3B1L21wYzgyNHgvaW50ZXJydXB0cy5jCgogICAgU2luY2UgRGVjZW1iZXIgMjAwMyB0aGUgdGltZXJfaW50ZXJydXB0X2NwdSgpIGZ1bmN0aW9uIGluCiAgICBjcHUvbXBjODI0eC9pbnRlcnJ1cHRzLmMgY29udGFpbnMgd2hhdCBzZWVtcyB0byBiZSBhIHN1cGVyZmx1b3VzCiAgICBwYXJhbWV0ZXIuIFJlbW92ZSBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Cgpjb21taXQgYzllN2I5YjlhMTcwMGZlMDA5Njc4ZDFmOWI0MWU2MzY0YWM1ZGYyZApBdXRob3I6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KRGF0ZToJV2VkIE9jdCAxNyAxMToxMzo1MSAyMDA3ICswMjAwCgogICAgYWRkIGZ0X2NwdV9zZXR1cCguLikgb24gbXBjODI2MAoKICAgIEFkZCBmdF9jcHVfc2V0dXAoLi4pLWZ1bmN0aW9uIHRvIGFkYXB0IGl0IGZvciB1c2Ugd2l0aCBsaWJmZHQKICAgIGJhc2VkIG9uIGNvZGUgZnJvbSBtcGM1eHh4CgogICAgU2lnZW5kLW9mZi1ieTogU2VyZ2VqIFN0ZXBhbm92IDxTZXJnZWouU3RlcGFub3ZAaWRzLmRlPgogICAgLS0KCmNvbW1pdCA2YWJkODJlMTlhZTkzYzBiNGQxMDRlNTAxNjVlMjM1OTE1ZWMwODc1CkF1dGhvcjogU2VyZ2VqIFN0ZXBhbm92IDxTZXJnZWouU3RlcGFub3ZAaWRzLmRlPgpEYXRlOglXZWQgT2N0IDE3IDExOjE4OjQyIDIwMDcgKzAyMDAKCiAgICBjaGFuZ2VzIGZvciBJRFM4MjQ3IGJvYXJkIHN1cHBvcnQKCiAgICBUbyBnZXQgdGhlIElEUzgyNDcgYm9hcmQgd29ya2luZyBmb2xsb3dpbmcgYXJlIGRvbmU6CiAgICAgLSBGQ0MyIGlzIGRlYWN0aXZhdGVkCiAgICAgLSBGQ0MxIGlzIGFjdGl2YXRlZAogICAgIC0gSTJDIGlzIGFjdGl2YXRlZAogICAgIC0gQ0ZJIGRyaXZlciBpcyBhY3RpdmF0ZWQKICAgICAtIEFkYXB0ZWQgZm9yIHVzZSB3aXRoIExJQkZEVAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KICAgIC0tCgpjb21taXQgM2Q2Y2IzYjI0YWRkNjQxNWY4NmEwZjAxM2VhNDBmNTYzOWI5MDA0NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE5vdiAzIDEyOjA4OjI4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEFkZCBBTUNDIEtpbGF1ZWEvSGFsZWFrYWxhIE5BTkQgYm9vdGluZyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciB0aGUgQU1DQyA0MDVFWChyKSBldmFsIGJvYXJkcy4KICAgIEFnYWluLCBvbmx5IG9uZSBpbWFnZSBzdXBwb3J0cyBib3RoIHRhcmdldHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhiNjY4NGE2OTg1MDBiZTljMTQyZWMyYzlmNDZjZmMzNDhlMTdmMGMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE9jdCAyNCAxNTo0ODozNyAyMDA3ICswMjAwCgogICAgQVRTVEsxMDAyOiBSZW1vdmUgZGVmYXVsdCBldGhlcm5ldCBhZGRyZXNzZXMKCiAgICBXb2xmZ2FuZyBpcyByaWdodDogSXQncyBub3QgYSBnb29kIGlkZWEgdG8gc2V0IHVwIGRlZmF1bHQgaW5pdGlhbAogICAgZXRoZXJuZXQgYWRkcmVzc2VzIGZvciBhIGJvYXJkLCBldmVuIHRob3VnaCB0aGV5IGJlbG9uZyB0byB0aGUgbG9jYWwKICAgIHJhbmdlLgoKICAgIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGZhaWx1cmUgbW9kZSBmcm9tICJJVCBtYW5hZ2VyIHNjcmVhbXMgYXQgeW91IGZvcgogICAgdXNpbmcgZHVwbGljYXRlIGV0aGVybmV0IGFkZHJlc3NlcyIgdG8gYSBuaWNlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZwogICAgdGhhdCB0aGUgZXRoZXJuZXQgYWRkcmVzcyBoYXNuJ3QgYmVlbiBzZXQgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZTVjNzk0ZTQ5MWE1N2Q4MjliNmQ4NzMzZTJlZDgzNjhhMjI2OWFiZgpBdXRob3I6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTc6NDA6MzUgMjAwNyAtMDQwMAoKICAgIERIQ1AgQ2xpZW50IEZpeAoKICAgIFRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCgogICAgY29tbWl0IGU2ZTUwNWVhZTk0ZWQ3MjFlMTIzZTE3NzQ4OTI5MWZjNDU0NGI3YjgKICAgIEF1dGhvcjogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KICAgIERhdGU6ICAgTW9uIE9jdCAyOSAxNzoxOTowMyAyMDA3IC0wNDAwCgoJRm91bmQgYSBidWcgaW4gdGhlIHdheSB0aGUgREhDUCBSZXF1ZXN0IHBhY2tldCBpcyBidWlsdCwgd2hlcmUgdGhlIElQIGFkZHJlc3MKCXRoYXQgaXMgb2ZmZXJlZCBieSB0aGUgc2VydmVyIGlzIGJvdW5kIHRvIHByZW1hdHVyZWx5LiBUaGlzIHBhdGNoIGlzIGEgZml4IG9mCgl0aGF0IGJ1ZyB3aGVyZSB0aGUgSVAgYWRkcmVzcyBvZmZlcmVkIGJ5IHRoZSBESENQIHNlcnZlciBpcyBub3QgdXNlZCB1bnRpbAoJYWZ0ZXIgdGhlIERIQ1AgQUNLIGZyb20gdGhlIHNlcnZlciBpcyByZWNlaXZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgNWQ5NmQ0MGQzZjM2ZGEzMzM0OGU2OGY5ZWE5OTNmMzgzZTExZjk5NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAyMDo1ODozNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQoKICAgIFNpbmNlIHRoZSBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCBmcm9tIHN0YXJ0LlMgaW50byBjYWNoZS5TCiAgICB0aGUgYWNhZGlhIE5BTkQgYm9vdGluZyBNYWtmaWxlIG5lZWRzIHRvIGJlIGFkYXB0ZWQgYWNjb3JkaW5nbHkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhMmUxNDI4NDM1MzNjYTU5M2ZjYjVjYjNlMWRhZjFiN2Y1ZTU5NDkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMjA6NTc6MTEgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIENPTkZJR180eHhfRENBQ0hFIGNvbXBpbGUgb3B0aW9ucyB0byBlbmFibGUgY2FjaGVkIFNEUkFNCgogICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBDT05GSUdfNHh4X0RDQUNIRSBvcHRpb25zIHRvIHNvbWUgU0RSQU0gaW5pdCBmaWxlcwogICAgYW5kIHRvIHRoZSBTZXF1b2lhIFRMQiBpbml0IGNvZGUuIE5vdyB0aGUgY2FjaGUgY2FuIGJlIGVuYWJsZWQgb24gNDR4CiAgICBib2FyZHMgYnkgZGVmaW5pbmcgQ09ORklHXzR4eF9EQ0FDSEUgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLiBUaGlzCiAgICBvcHRpb24gd2lsbCBkaXNhcHBlYXIsIHdoZW4gbW9yZSBib2FyZHMgdXNlIGlzIHN1Y2Nlc3NmdWxseSBhbmQgbm8KICAgIG1vcmUga25vd24gcHJvYmxlbXMgZXhpc3QuCgogICAgVGhpcyBpcyB0ZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIFNlcXVvaWEgYW5kIEthdG1haS4gVGhlIG9ubHkgcHJvYmxlbSB0aGF0CiAgICBuZWVkcyB0byBiZSBmaXhlZCBpcywgdGhhdCBVU0IgaXMgbm90IHdvcmtpbmcgb24gU2VxdW9pYSByaWdodCBub3csIHNpbmNlCiAgICBpdCB3aWxsIG5lZWQgc29tZSBjYWNoZSBoYW5kbGluZyBjb2RlIHRvbywgc2ltaWxhciB0byB0aGUgNHh4IEVNQUMgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzZGI5M2I4YmVkZDMyZTkxNGIzODk3NjE0MWIzZmRmNGVhM2ZmNzM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjUxOjEwIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEVuYWJsZSBDUFUgUE9TVCB0ZXN0IGZvciA0eHggd2l0aCBkY2FjaGUgZW5hYmxlZAoKICAgIE5vdyB3aXRoIGNhY2hlcyBlbmFibGVkIChpLSBhbmQgZC1jYWNoZSkgb24gNDR4LCB3ZSBuZWVkIGEgY2hhbmNlIHRvCiAgICBkaXNhYmxlIHRoZSBjYWNoZSBmb3IgdGhlIENQVSBQT1NUIHRlc3RzLCBzaW5jZSB0aGVzZSB0ZXN0cyBjb25zaXN0CiAgICBvZiBzZWxmIG1vZGlmeWluZyBjb2RlLiBUaGlzIGlzIGRvbmUgdmlhIHRoZSBuZXcgY2hhbmdlX3RsYigpIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmNzFiMjg4OGI0YjNjODcwOTA5YTAzNDE0MjdiMmE5MTQyNDZmODFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjQ3OjI2IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IENoYW5nZSA0eHggUE9TVCBldGhlcm5ldCB0ZXN0IHRvIGhhbmRsZSBjYWNoZWQgbWVtb3J5IHRvbwoKICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgNHh4IEVNQUMgUE9TVCBkcml2ZXIgdG8gd29yayB0b28sIHdoZW4gZGNhY2hlIGlzCiAgICBlbmFibGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhMjY4NTkwNDA2MWIzNWExNzU4M2Q2NWZlNDdjZGMyNjg2YTY5ZWFhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMxIDIwOjQ1OjUzIDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IFJlbW92ZSB0ZW1wb3JhcnkgVExCIGVudHJ5IGluIFBPU1QgY2FjaGUgdGVzdCBvbmx5IGZvciA0NDAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmY3NjhjYjE2OGQ4MTU3YzI0YTI1MDE2ZGJmYmViNDY1ZTQ3ZjQyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAxODowMToyNCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBDaGFuZ2UgNHh4IGV0aGVybmV0IGRyaXZlciB0byBoYW5kbGUgY2FjaGVkIG1lbW9yeSB0b28KCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIDR4eCBFTUFDIGRyaXZlciB0byB3b3JrIHRvbywgd2hlbiBkY2FjaGUgaXMKICAgIGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDQ4M2UwOWEyMjNjNjY2MjY5ZWY4MWQzNTczYTY1OTFiMTA0NmIwZWYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMTc6NTk6MjIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogQWRkIGNoYW5nZV90bGIgZnVuY3Rpb24gdG8gbW9kaWZ5IEkgYXR0cmlidXRlIG9mIFRMQihzKQoKICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBlaXRoZXIgdHVybiBjYWNoZSBvbiBvciBvZmYgaW4gYSBzcGVjaWZpYwogICAgbWVtb3J5IGFyZWEuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQyNWRmZTA4ZmJkMTIyMGNiOTk0ZTdlNmIxMDUwNDlhYTlhYThlNzkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMzEgMTc6NTc6NTIgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogUmVtb3ZlIGNhY2hlIGRlZmluaXRpb24gZnJvbSA0eHggYm9hcmQgY29uZmlnIGZpbGVzCgogICAgQWxsIDR4eCBib2FyZCBjb25maWcgZmlsZXMgZG9uJ3QgbmVlZCB0aGUgY2FjaGUgZGVmaW5pdGlvbnMgYW55bW9yZS4KICAgIFRoZXNlIGFyZSBub3cgZGVmaW5lZCBpbiBjb21tb24gaGVhZGVycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWI5NGFjNjFkMjE3NjE4NWMzMGFkZjA3OTNlMDc5ZWMzMGU2ODY4NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzMSAxNzo1NTo1OCAyMDA3ICswMTAwCgogICAgcHBjNHh4OiBSZXdvcmsgNHh4IGNhY2hlIHN1cHBvcnQKCiAgICBOZXcgY2FjaGUgaGFuZGxpbmcgZnVuY3Rpb25zIGFkZGVkIGFuZCBhbGwgZXhpc3RpbmcgZnVuY3Rpb25zCiAgICBtb3ZlZCBmcm9tIHN0YXJ0LlMgaW50byBzZXBlcmF0ZSBjYWNoZS5TLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwNjcxMzc3M2RhNGFjM2QzOTBjNjNkODI2NDFlYjU1MzIyNGIyN2MyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDE4OjAzOjEyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGZyb20gcHJldmlvdXMgY29tbWl0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmYTM5N2RmNjdjMGYyNjllNDUyOGJmMTgxYTZlOGM4OGY5NzIzZjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6NDA6MzAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUmVtb3ZlIHRlbXBvcmFyeSBUTEIgZW50cnkgaW4gUE9TVCBjYWNoZSB0ZXN0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEzMzhlNmE4MTgzNDA5OWJhMTk3MzNiNjlhYWZkOGVmNWYwOTgwOTQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTQ6MDU6MDggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIGF1dG9uZWdvdGlhdGlvbiB0aW1lb3V0IGZyb20gNCB0byA1IHNlY29uZHMKCiAgICBJIGxhdGVseSBub3RpY2VkLCB0aGF0IG5ld2VyIDR4eCBib2FyZCB3aXRoIEdCaXQgc3VwcG9ydCBzb21ldGltZXMgZG9uJ3QKICAgIGZpbmlzaCBsaW5rIGF1dG9uZWdvdGlhdGlvbiBpbiA0IHNlY29uZHMuIENoYW5naW5nIHRoaXMgdGltZW91dCB0byA1CiAgICBzZWNvbmRzIHNlZW1zIGZpbmUgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmQ4MzQ3NmE0YzFjOTkxMWQxNThhM2Y4YTQzMTJkMzU0YmMxYmRiNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxNDowMzoxNyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgNHh4X2VuZXQgJiBtaWlwaHkgdG8gdXNlIG91dF9iZTMyKCkgYW5kIGZyaWVuZHMKCiAgICBUaGlzIHBhdGNoIGNoYW5nZXMgYWxsIGluMzIvb3V0MzIgY2FsbHMgdG8gdXNlIHRoZSByZWNvbW1lbmRlZCBpbl9iZTMyLwogICAgb3V0X2JlMzIgbWFjcm9zIGluc3RlYWQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDdkNDdjZWUyY2M1N2Y5MDczODBmMmMwNmY1YjZjNjgzZDAzZTQyM2EKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBPY3QgMjUgMTI6MjQ6NTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IFBPU1QgZXRoZXJuZXQgdGVzdCBmb3IgSGFsZWFrYWxhCgogICAgVGhlIFBPU1QgZXRoZXJuZXQgdGVzdCBuZWVkZWQgdG8gYmUgY2hhbmdlZCB0byBkeW5hbWljYWxseSBkZXRlcm1pbmUKICAgIHRoZSBjb3VudCBvZiBldGhlcm5ldCBkZXZpY2VzLiBUaGlzIGNvZGUgaXMgY2xvbmVkIGZyb20gdGhlIDR4eAogICAgZXRoZXJuZXQgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmMTA0OTNjNmQ3N2ExZTA3YTZjMmZmNGQ3NzI5MzdhNWU3MzU5ZDZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDExOjMxOjA1IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENvcnJlY3QgVUFSVCBpbnB1dCBjbG9jayBjYWxjdWxhdGlvbiBhbmQgcGFzc2luZyB0byBmZHQKCiAgICBXZSBub3cgdXNlIGEgdmFsdWUgaW4gdGhlIGdkIChnbG9iYWwgZGF0YSkgc3RydWN0dXJlIGZvciB0aGUgVUFSVCBpbnB1dAogICAgZnJlcXVlbmN5LCBzaW5jZSB0aGUgUFBDNHh4X1NZU19JTkZPIHN0cnVjdCBpcyBhbHdheXMgcmV3cml0dGVuIGNvbXBsZXRlbHkKICAgIGluIGdldF9zeXNfaW5mbygpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNTNmMjY4OGI0ZTBmYzdiOTY5YmM3MGEwMmJlNGI0MGJmMGRkMTI0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIzIDEwOjEwOjA4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIEFNQ0MgSGFsZWFrYWxhIFBQQzQwNUVYciBldmFsIGJvYXJkIHN1cHBvcnQKCiAgICBUaGUgSGFsZWFrYWxhIGlzIG5lYXJseSBpZGVudGljYWwgd2l0aCB0aGUgS2lsYXVlYSBldmFsIGJvYXJkLiBUaGUgb25seQogICAgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSA0MDVFWHIgb25seSBzdXBwb3J0cyBvbmUgRU1BQyBhbmQgb25lIFBDSWUKICAgIGludGVyZmFjZS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIYWxlYWthbGEgYm9hcmQgYnkgdXNpbmcKICAgIHRoZSBpZGVudGljYWwgaW1hZ2UgZm9yIEtpbGF1ZWEgYW5kIEhhbGVha2FsYS4gVGhlIGRpc3RpbmN0aW9uIGlzIGRvbmUKICAgIGJ5IGNvbXBhcmluZyB0aGUgUFZSLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5Zjc5ODc2NmFhODVlNjJlYjhmYThjNzIxZTE0OGRmNjA5Yjc4MTM3CkF1dGhvcjogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KRGF0ZToJVHVlIE9jdCAyMyAwODoyOToxMCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXhlZCBvZmZzZXQgb2YgcmVmcmVzaCByYXRlIHR5cGUgZm9yIEJhbWJvbyBvbi1ib2FyZCBERFIgU0RSQU0KCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIG5vdGUgdG8gdGhlIGZpeGVkIEREUiBzZXR1cCBmb3IgQmFtYm9vIE5BTkQgYm9vdGluZzoKCiAgICBOb3RlOgogICAgQXMgZm91bmQgb3V0IGJ5IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+LCB0aGUgZml4ZWQKICAgIEREUiBzZXR1cCBoYXMgcHJvYmxlbXMgKFUtQm9vdCBjcmFzaGVzIHJhbmRvbWx5IHVwb24gVEZUUCksIHdoZW4gdGhlIERJTU0KICAgIG1vZHVsZXMgYXJlIHN0aWxsIHBsdWdnZWQgaW4uIFNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIHJlbW92ZSB0aGUgRElNTQogICAgbW9kdWxlcyB3aGlsZSB1c2luZyB0aGUgTkFORCBib290aW5nIGNvZGUgd2l0aCB0aGUgZml4ZWQgU0RSQU0gc2V0dXAhCgogICAgU2lnbmVkLW9mZi1ieTogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZmU5ZmE1OWNiNjNiNGY5ZDE2YmYwMWM5M2ViMjEyZjI1YTM4YzJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE2OjI0OjQ0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBTTlRQIHN1cHBvcnQgdG8gQU1DQyBLYXRtYWksIEtpbGF1ZWEgJiBNYWthbHUgYm9hcmRzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDMyNDhmNjNhZDg5Y2IwMzE0OTFlZGI3MDE2NTg3ZmU2ZTlhMjM4YjkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMjIgMTY6MjI6NDAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUmV3b3JrIG9mIDR4eCBzZXJpYWwgZHJpdmVyICg0KQoKICAgIENoYW5nZSA0eHhfdWFydC5jOgoKICAgIC0gVXNlIGluXzgvb3V0XzggbWFjcm9zIGluc3RlYWQgb2YgaW44L291dDgKICAgIC0gTm8gbmVlZCBmb3IgVUFSVF9CQVNFIG1hcmNvIGFueW1vcmUsIG5vdyByZWFsbHkgaGFuZGxlZCB2aWEgZnVuY3Rpb24KICAgICAgcGFyYW1ldGVyCiAgICAtIHNlcmlhbF9pbml0X2NvbW1vbigpIGludHJvZHVjZWQKICAgIC0gRnVydGhlciBjb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlNjFjYjgxNjNhNjZiOGExMzU2OTZhZTIzMmUyYmVhZDFjZTBhMDQ5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjQ1OjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMykKCiAgICBDaGFuZ2UgYWxsIGxpbmtlciBzY3JpcHRzIHRvIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBkcml2ZXIgbmFtZSBpb3A0ODBfdWFydC5vLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4ODJhZTQxMjc0OTIxZjkwMTYxMzE4MDZiZGViMjdlMTk2MDZmNDdhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjQ0OjM5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMikKCiAgICBDaGFuZ2UgYWxsIGxpbmtlciBzY3JpcHRzIHRvIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBkcml2ZXIgbmFtZSA0eHhfdWFydC5vLgoKICAgIE5vdGU6IEluIG1vc3QgY2FzZWQgYWxsIHRoZXNlIGV4cGxpY2l0IHJlZmVyZW5jaW5nIG9mIHRoZXNlIG9iamVjdCBmaWxlcwogICAgaW4gdGhlIGxpbmtlciBzY3JpcHRzIGlzIG5vdCBuZWNjZXNzYXJ5LiBPbmx5IGZvciBtYW51YWxseSBlbWJlZGRlZAogICAgZW52aXJvbm1lbnQgaW50byB0aGUgVS1Cb290IGltYWdlLCB3aGljaCBpcyBub3QgZG9uZSBpcyBtb3N0IGNhc2VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZDMxZTQwYmVkMDQyY2I2NzBkMDAzNmZlYTk2NDM1MDA3YWZiODM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDE1OjA5OjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMSkKCiAgICBUaGlzIHBhdGNoIHN0YXJ0cyB0aGUgcmV3b3JrIG9mIHRoZSBQUEM0eHggc2VyaWFsIGRyaXZlci4gRmlyc3Qgd2Ugc3BsaXQKICAgIHRoZSBmaWxlIGludG8gdHdvIHNlcGVyYXRlIGZpbGVzLCBvbmUgNHh4X3VhcnQuYyB3aXRoIHRoZSA0MDUvNDQwIFVBUlQKICAgIGhhbmRsaW5nIGNvZGUgYW5kIHRoZSBvdGhlciBvbmUgaW9wNDgwX3VhcnQuYyB3aXRoIHRoZSBVQVJUIGNvZGUgZm9yIHRoZQogICAgUExYLVRlY2ggSU9QNDgwIFBQQyAoUFBDNDAzIGJhc2VkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzY0ZTc0MTdlZTVmNmUyNWIxNzE1NzIwZTdkN2RkMzQ4NzEwOTM4NQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxMDozMDozOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDb3JyZWN0IFVBUlQgaW5wdXQgY2xvY2sgY2FsY3VsYXRpb24gYW5kIHBhc3NpbmcgdG8gZmR0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIxMWVhOTFhYzZjMjI1YmVjN2U2NjhhMDNkMGJhN2Q3MzEwNjc5ZmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMjIgMDc6MzQ6MzQgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBNYWthbHUgNDA1RVggc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYThhZWEyMDQ1NmU2ZjFkYmE0M2Y0NmJjYzcyMDI0ZGQ5NDk5OTk4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDIyIDA3OjMzOjUyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBmcmVxVUFSVCB0byBDUFUgc3BlZWQgZGV0ZWN0aW9uCgogICAgVGhpcyB2YWx1ZSBpcyBuZWVkZWQgbGF0ZXIgZm9yIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uIG9mCiAgICB0aGUgdWFydCBjbG9jay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODM3YzczMGI0ZDdjNmIxZGRmM2QxZTI0N2NiNDQ0NTAwNWQ5YmYwZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAxNDoyNjoyOSAyMDA3ICswMjAwCgogICAgcHBjOiBTbWFsbCBLaWxhdWVhIGNsZWFudXAgb2YgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzU4YzAzN2FlZWFkMzRiNDk2MzFiOGRhM2E5MGIxYmJhMTRjMDQxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwODoxNjoxMiAyMDA3ICswMjAwCgogICAgcnRjOiBBZGQgWGljb3IvSW50ZXJzaWwgWDEyMDUgUlRDIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFhpY29yL0ludGVyc2lsIFgxMjA1IFJUQyB1c2VkIG9uIHRoZQogICAgQU1DQyBNYWthbHUgZXZhbCBib2FyZC4gVGhpcyBkcml2ZXIgaXMgYmFzaWNhbGx5IGNsb25lZCBmcm9tIHRoZSBMaW51eAogICAgZHJpdmVyIHZlcnNpb24gKDIuNi4yMykuCgogICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlIExpbnV4IGJjZC5oIGhlYWRlciBmb3IgdGhlIEJDRDJCSU4vCiAgICBCSU4yQkNEIGNvbnZlcnNpb25zLiBJbiB0aGUgZnV0dXJlIHNvbWUgb2YgdGhlIG90aGVyIFUtQm9vdCBSVEMgZHJpdmVyCiAgICBzaG91bGQgYmUgY29udmVydGVkIHRvIGFsc28gdXNlIHRoaXMgaGVhZGVyIGluc3RlYWQgb2YgaW1wbGVtZW50aW5nCiAgICB0aGVpciBvd24gbG9jYWwgY29weSBvZiB0aGVzZSBmdW5jdGlvbnMvbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwODdkZmRiNzliNWZkMWFiOTlhMjY5OTBjNjJhNzMyYzAxYThjN2Y2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gT2N0IDIxIDA4OjEyOjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENvbnNvbGlkYXRlIHNvbWUgb2YgdGhlIDQwNSBhbmQgNDQwIG1hY3Jvcy9zdHJ1Y3RzIGludG8gNHh4CgogICAgVGhpcyBwYXRjaCBtb3ZlcyBzb21lIGNvbW1vbiA0eHggbWFjcm9zIGFuZCB0aGUgUFBDNDA1X1NZU19JTkZPLwogICAgUFBDNDQwX1NZU19JTkZPIHN0cnVjdHVyZSBpbnRvIHRoZSBjb21tb24gcHBjNHh4LmggaGVhZGVyLgoKICAgIExvdCdzIG9mIG90aGVyIG1hY3JvcyBhcmUgZ29vZCBjYW5kaWRhdGVzIHRvIGJlIGNvbnNvbGlkYXRlZCB0aGlzIHdheQogICAgaW4gdGhlIGZ1dHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzcwYzdhZjU4MDBmNTk4ZDIyNzMwZDFmNGI3MGYxNmM5YjMzNTEyZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwODowNToxOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggc2l6ZSBzZXR1cCBpbiBLaWxhdWVhIEREUjIgaW5pdCByb3V0aW5lCgogICAgVGhlIHNpemUgd2FzIGluaXRpbGl6ZWQgd3JvbmcuIEluc3RlYWQgb2YgMjU2TUIsIHRoZSBERFIyIGNvbnRyb2xsZXIKICAgIHdhcyBzZXR1cCB0byA1MTJNQi4gTm93IHRoZSBjb3JyZWN0IHZhbHVlcyBpcyB1c2VkLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgbGl0dGxlIGNsZWFudXAgYW5kIGFkZHMgYSBjb21tZW50IGhlcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY2YmE5YjU2NjA3ZDRiMjc1NTAzMDFjN2M3ZjZiNTViNjU0ZmQ2MmEKQXV0aG9yOiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgpEYXRlOglUaHUgT2N0IDE4IDE3OjI5OjA0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IERlZmluZSBDT05GSUdfQk9PS0UgZm9yIGFsbCBQUEM0NDAgYmFzZWQgcHJvY2Vzc29ycwoKICAgIENPTkZJR19CT09LRSBtdXN0IGJlIGRlZmluZWQgZm9yIFBQQzQ0MCBwcm9jZXNzb3JzIHNvIHRoYXQgdGhlIHByb3BlciBTUFIKICAgIG51bWJlciBpcyB1c2VkIHRvIGFjY2VzcyBzeXN0ZW0gcmVnaXN0ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYzM2YzY4MTYwMzMzYWM1ZmU0MWVjM2RiMTJhNzI4YjcwNzViMzkxMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxOCAwNzo0MjoyNyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgaW5ib3VuZCBQQ0llIGxvY2F0aW9uIGZvciBlbmRwb2ludCB0ZXN0cyBvbiBLYXRtYWkKCiAgICBPbiBZdWNjYSAmIEthdG1haSwgdGhlIGluYm91bmQgbWVtb3J5IG1hcCBwb2ludGVkIHRvIDB4NC4wMDAwLjAwMDAsIHdoaWNoCiAgICBpcyB0aGUgaW50ZXJuYWwgU1JBTS4gU2luY2UgSSBub3cgcG9ydGVkIGFuZCB0ZXN0ZWQgdGhpcyBlbmRwb2ludCBtb2RlCiAgICBvbiBLaWxhdWVhIHN1Y2Nlc3NmdWxseSB0byBtYXAgdG8gMCAoU0RSQU0pLCBJIGFsc28gY2hhbmdlZCB0aGlzIGZvcgogICAgS2F0bWFpLgoKICAgIFl1Y2NhIHdpbGwgc3RheSBhdCBpbnRlcm5hbCBTUkFNIGZvciBub3cuIE5vdCBzdXJlIGlmIHNvbWVib2R5IHJlbGllcyBvbgogICAgdGhpcyBzZXR1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWNiNGFmNDc5MWY2MTg0MzQzMjE1NTE0MmI2Y2ZhYzkwMWY2NmMxMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxOCAwNzozOTozOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgUENJZSBlbmRwb2ludCBzdXBwb3J0IG9uIEtpbGF1ZWEgKDQwNUVYKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBlbmRwb2ludCBzdXBwb3J0IGZvciB0aGUgQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQuIEl0IGNhbgogICAgYmUgdGVzdGVkIGJ5IGNvbm5lY3RpbmcgYSByZXdvcmtlZCBQQ0llIGNhYmxlIChvbmx5IDF4IGxhbmUgc2luZ2xlcwogICAgY29ubmVjdGVkKSB0byBhbm90aGVyIHJvb3QtY29tcGxleC4KCiAgICBJbiB0aGlzIHRlc3Qgc2V0dXAsIGEgNjRNQiBpbmJvdW5kIHdpbmRvdyBpcyBjb25maWd1cmVkIGF0IEJBUjAgd2hpY2ggbWFwcwogICAgdG8gMCBvbiB0aGUgUExCIHNpZGUuIFNvIGFjY2Vzc2luZyB0aGlzIEJBUjAgZnJvbSB0aGUgcm9vdC1jb21wbGV4IHdpbGwKICAgIGFjY2VzcyB0aGUgZmlyc3QgNjRNQiBvZiB0aGUgU0RSQU0gb24gdGhlIFBQQyBzaWRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNGNiMmQxNzk0NjQ2Njc0MGFmZWIxOTVhNTdkNmNiMjkwYmY0Y2MwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDEzIDE2OjQzOjIzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IER5bmFtaWMgY29uZmlndXJhdGlvbiBvZiA0eHggUENJZSBtb2RlIGFzIHJvb3Qgb3IgZW5kcG9pbnQgbW9kZQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gb2YgUENJZSBwb3J0cyBmb3IgdGhlCiAgICBBTUNDIFBQQzR4eCBib2FyZHMgZXF1aXBwZWQgd2l0aCBQQ0llIGludGVyZmFjZXMuIFRoZXNlIGFyZSB0aGUgUFBDNDQwU1BlCiAgICBib2FyZHMgWXVjY2EgJiBLYXRtYWkgYW5kIHRoZSA0MDVFWCBib2FyZCBLaWxhdWVhLgoKICAgIFRoaXMgZHluYW1pYyBjb25maWd1cmF0aW9uIGlzIGRvbmUgdmlhIHRoZSAicGNpZV9tb2RlIiBlbnZpcm9uZW1lbnQKICAgIHZhcmlhYmxlLiBUaGlzIHZhcmlhYmxlIGNhbiBiZSBzZXQgdG8gIkVQIiBvciAiUlAiIGZvciBlbmRwb2ludCBvcgogICAgcm9vdHBvaW50IG1vZGUuIE11bHRpcGxlIHZhbHVlcyBjYW4gYmUgam9pbmVkIHZpYSB0aGUgIjoiIGRlbGltaXRlci4KICAgIEhlcmUgYW4gZXhhbXBsZToKCiAgICBwY2llX21vZGU9UlA6RVA6RVAKCiAgICBUaGlzIHdheSwgUENJZSBwb3J0IDAgd2lsbCBiZSBjb25maWd1cmVkIGFzIHJvb3Rwb2ludCwgUENJZSBwb3J0IDEgYW5kIDIKICAgIGFzIGVuZHBvaW50LgoKICAgIFBlciBkZWZhdWx0IFl1Y2NhIHdpbGwgYmUgY29uZmlndXJlZCBhczoKICAgIHBjaWVfbW9kZT1SUDpFUDpFUAoKICAgIFBlciBkZWZhdWx0IEthdG1haSB3aWxsIGJlIGNvbmZpZ3VyZWQgYXM6CiAgICBwY2llX21vZGU9UlA6UlA6UkVQCgogICAgUGVyIGRlZmF1bHQgS2lsYXVlYSB3aWxsIGJlIGNvbmZpZ3VyZWQgYXM6CiAgICBwY2llX21vZGU9UlA6UlAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaXJ1bWFsYSBSIE1hcnJpIDx0bWFycmlAYW1jYy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmQ2NzE4MDJiNjdhMGVmMzdhMDYxMjRmYTJjZTg1ZjAwYWEyMmM2ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxMSAxMToxNTo1OSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBFbmFibGUgZGV2aWNlIHRyZWUgc3VwcG9ydCAoZmR0KSBvbiBLaWxhdWVhIHBlciBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBmZHQgc3VwcG9ydCBvbiB0aGUgQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQuCiAgICBBZGRpdGlvbmFsbHkgbm93IEVCQyByYW5nZXMgZmR0IGZpeHVwIGlzIGluY2x1ZGVkIHRvIHN1cHBvcnQgTk9SCiAgICBGTEFTSCBtYXBwaW5nIHZpYSB0aGUgTGludXggcGh5c21hcF9vZiBkcml2ZXIuCgogICAgVGhpcyBLaWxhdWVhIHBvcnQgbm93IHN1cHBvcnQgYm9vdGluZyBhcmNoL3BwYyBhbmQgYXJjaC9wb3dlcnBjCiAgICBMaW51eCBrZXJuZWxzLiBUaGUgZGVmYXVsdCBlbnZpcm9ubWVudCAibmV0X25mcyIgaXMgZm9yIGFyY2gvcHBjCiAgICBhbmQgIm5ldF9uZnNfZmR0IiBpcyBmb3IgYXJjaC9wb3dlcnBjLiBJbiB0aGUgbG9uZyBydW4sIGFyY2gvcHBjCiAgICBzdXBwb3J0IHdpbGwgYmUgcmVtb3ZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDk5NGZmZDg5MGI5ZDk1ZDgwNzM4N2E5YjdiZDhhNDgwM2VlNDA2ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE9jdCAxMSAxMToxMTo0NSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgYWRkaXRpb25hbCBkZWJ1ZyBpbmZvIHRvIDR4eCBmZHQgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkYjMyMzJkZGIwNThkMGVkMGJjMzFmN2M1YzI5Njc0OGExYWZhYzY3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMjE6Mjg6NTggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIG1lcmdlIHByb2JsZW1zIHdpdGggQ1BDSTQ0MCBhbmQgQWNhZGlhIGJvYXJkcwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxOTQxY2NlNzFiMWFlOTc1NjAyODU0MDQ1MDYxZTgyZjk0ZWNkMDEyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMTc6MzU6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IHNtYWxsIG1lcmdlIHByb2JsZW0gaW4gNHh4X2VuZXQuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1NjY4MDZjYTFhMWJmNGQ4OTVkYWFmMGIyYmE1NDk0YWJiZmZlYmFmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMTc6MTE6MzAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBLaWxhdWVhIDQwNUVYIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGJiZDEyNTcyMWFlYTY2NDVmZGI5NjJmMzZiZDQxZjU5ZTI3MmY5ZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE3OjEwOjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBQUEM0MDVFWCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDFkN2I4NzRlOWM5YTdjNjZmNWQ4ZGE5ZWM3OGEzNzMzNzY1ZDNlMzEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNzowOTozNiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDbGVhbnVwIG9mIDR4eCBQQ0kgYW5kIFBDSWUgc3VwcG9ydCAocmVuYW1pbmcpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDRmMTRlZDYyMzBiOWMxMDlhYWM5YTZmYjg3ODQ5N2RhYmQ0NGMyZGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNzowNzo1MCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgaW5pdGlhbCBmZHQgc3VwcG9ydCB0byA0eHggKGZpcnN0IG5lZWRlZCBvbiA0MDVFWCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQyNGE4YmIyOTI0YjkwNzI0Yjk0NDE2NWQzMTQxZjFmYThkZmU1YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE3OjA0OjU3IDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgNDA1RVggc3VwcG9ydCB0byA0eHggVUFSVCBQT1NUIHRlc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGYyZTkyYzExZjZlMjM5MmZjODE4NzgyOTIxMWE1Y2E3ZjBjMWUxMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDE1OjEwOjAyIDIwMDcgKzAyMDAKCiAgICBEVFQ6IFByZXBhcmUgRFMxNzc1IGRyaXZlciBmb3IgdXNlIG9mIGRpZmZlcmVudCBJMkMgYWRkcmVzc2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDE5ZTkzYjFlMTZkMjY3MjIwNDQwZDgyN2I5MjBmYmFkOGFiZmE3MGYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAxNDoyMzo0MyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogQ2hhbmdlIFBDSWUgc3RhdHVzIG91dHB1dCB0byBtYXRjaCBjb21tb24gc3R5bGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZmY2OGY2NmJjYjBkYTg0Nzg0NWFhMmZhYzExZWJhNmMyNTkzOGM5OQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCA1IDA5OjIyOjMzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IDR4eF9wY2llOiBEaXNhYmxlIGRlYnVnIG91dHB1dCBhcyBkZWZhdWx0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDk3OTIzNzcwY2I1MmI2NGQ2OWVlYzk1OGExMWIyZWRhOGQ0NmUwZjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBPY3QgNSAwOToxODoyMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogTW9yZSBnZW5lcmFsIGNsZWFudXAgYW5kIDQwNUVYIFBDSWUgc3VwcG9ydCBhZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0ZGJlZThhOTBkZjYxM2ViNTE3YWFkYmVjZWJkNzBmMTY4OTEzZDMwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDUgMDc6NTc6MjAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogNHh4X3BjaWU6IENoYW5nZSBDRkdfUENJRV9NRU1TSVpFIHRvIDEyOE1CIG9uIFl1Y2NhICYgS2F0bWFpCgogICAgMTI4TUIgc2VlbXMgdG8gYmUgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgbWVtb3J5IHNpemUKICAgIGZvciBvbiBQQ0llIHBvcnQuIFdpdGggdGhpcyBjaGFuZ2Ugbm93IHRoZSBCQVIncyBvZiB0aGUgUENJZSBjYXJkcwogICAgYXJlIGFjY2Vzc2libGUgdW5kZXIgVS1Cb290LgoKICAgIE9uZSBiaWcgbm90ZTogVGhpcyBvbmx5IHdvcmtzIGZvciBQQ0llIHBvcnQgMCAmIDEuIEZvciBwb3J0IDIgdGhpcwogICAgY3VycmVudGx5IGRvZXNuJ3Qgd29yaywgc2luY2UgdGhlIGJhc2UgYWRkcmVzcyBpcyBub3cgMHhjMDAwMDAwMAogICAgKDB4YjAwMDAwMDAgKyAyICogMHgwODAwMDAwMCksIGFuZCB0aGlzIGlzIGFscmVhZHkgb2NjdXBpZWQgYnkKICAgIENGR19QQ0lFMF9DRkdCQVNFLiBCdXQgc29sdmluZyB0aGlzIGlzc3VlIGZvciBwb3J0IDIgd291bGQgbWVhbgogICAgdG8gY2hhbmdlIHRoZSBiYXNlIGFkZHJlc3NlcyBjb21wbGV0ZWx5IGFuZCB0aGlzIGNoYW5nZSB3b3VsZCBoYXZlCiAgICB0b28gbXVjaCBpbXBhY3QgcmlnaHQgbm93LgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBkZWJ1ZyBvdXRwdXQgdG8gdGhlIDR4eCBwY2llIGRyaXZlciB0b28uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZkOTUyODkyODFlZDI5NThlYmY3NmQyYjU1Zjg2YmJkODg1OTFmZDIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAyMToxNjozMiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiA0eHhfcGNpZTogRml4IHByb2JsZW0gd2l0aCBTRFJOIGFjY2VzcyB1c2luZyBwb3J0IG51bWJlciBhcyBpZHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzA0OGJjYmYwYmFkMjYyMzc4YzVhZjY4ZjJiZjY3NzhmYjdkODI5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE9jdCAzIDE1OjAxOjAyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbmFtZSA0MDVncF9wY2kgdG8gNHh4X3BjaSBzaW5jZSBpdHMgdXNlZCBvbiBhbGwgNHh4IHBsYXRmb3JtcwoKICAgIFRoZXNlIGZpbGVzIHdlcmUgaW50cm9kdWNlZCB3aXRoIHRoZSBJQk0gNDA1R1AgYnV0IGFyZSBjdXJyZW50bHkgdXNlZCBvbiBhbGwKICAgIDR4eCBQUEMgcGxhdGZvcm1zLiBTbyB0aGUgbmFtZSBkb2Vzbid0IG1hdGNoIHRoZSBjb250ZW50IGFueW1vcmUuIFRoaXMgcGF0Y2gKICAgIHJlbmFtZXMgdGhlIGZpbGVzIHRvIDR4eF9wY2kuYy9oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5NDI3NmViMGE3YTM1YjllOGMwNTNkNTg5YWUyMjViMGYwMTdhMjM3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMgMTQ6MTQ6NTggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIGEgY29tbWVudCBmb3IgNDA1RVggUENJZSBlbmRwb2ludCBjb25maWd1cmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAzZDM0NGJiNmE1ZjA4MmVhMTBlYzlkNzUzNTU4ZWE3ZGZkMWM2MjYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAxMDozODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBNYWtlIDQ0MFNQZSBQQ0llIGNvZGUgbW9yZSBnZW5lcmljIHRvIHVzZSBvbiBkaWZmZXJlbnQgNHh4IFBQQ3MgKDMpCgogICAgKDMpIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBtYWNyb3MgbGlrZSBTRFJOX1BFU0RSX0RMUFNFVChwb3J0KSB0byBhY2Nlc3MKCXRoZSBTRFIgcmVnaXN0ZXJzIG9mIHRoZSBQQ0llIHBvcnRzLiBUaGlzIG1ha2VzIHRoZSBvdmVyYWxsIGRlc2lnbgoJY2xlYXJlciwgc2luY2UgaXQgcmVtb3ZlZCBhIGxvdCBvZiBzd2l0Y2ggc3RhdGVtZW50cyB3aGljaCBhcmUgbm90CgluZWVkZWQgYW55bW9yZS4KCglBbHNvLCB0aGUgZnVuY3Rpb25zIHBwYzR4eF9pbml0X3BjaWVfcm9vdHBvcnQoKSBhbmQKCXBwYzR4eF9pbml0X3BjaWVfZW50cG9ydCgpIGFyZSBtZXJnZWQgaW50byBhIHNpbmdsZSBmdW5jdGlvbgoJcHBjNHh4X2luaXRfcGNpZV9wb3J0KCksIHNpbmNlIG1vc3Qgb2YgdGhlIGNvZGUgd2FzIGR1cGxpY2F0ZWQuCglUaGlzIG1ha2VzIG1haW50YWluYW5jZSBhbmQgcG9ydGluZyB0byBvdGhlciA0eHggcGxhdGZvcm1zCgllYXNpZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDAyNmY3MTEwNjg3MWYzMWQxN2QwZWEwZGI5YTc1NDdmZjkyOTM0YmMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMyAwNzo0ODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBNYWtlIDQ0MFNQZSBQQ0llIGNvZGUgbW9yZSBnZW5lcmljIHRvIHVzZSBvbiBkaWZmZXJlbnQgNHh4IFBQQ3MgKDIpCgogICAgVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBzZXJpZXMgdG8gbWFrZSB0aGUgNDQwU1BlIFBDSWUgY29kZQogICAgdXNhYmxlIG9uIGRpZmZlcmVudCA0eHggUFBDIHBsYXRmb3Jtcy4gSW4gcHJlcGVyYXRpb24gZm9yIHRoZSBuZXcgNDA1RVgKICAgIHdoaWNoIGlzIGFsc28gZXF1aXBwZWQgd2l0aCBQQ0llIGludGVyZmFjZXMuCgogICAgKDIpIFRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUgZnVuY3Rpb25zIGZyb20gNDQwc3BlXyB0byA0eHhfIHdpdGggYQoJbGl0dGxlIGFkZGl0aW9uYWwgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjN2M2ZGEyMzAyOGYxNDZkOTEyNTE0Yjk1YWVmYTNkYTdjZjM3Njk5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgT2N0IDMgMDc6MzQ6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogTWFrZSA0NDBTUGUgUENJZSBjb2RlIG1vcmUgZ2VuZXJpYyB0byB1c2Ugb24gZGlmZmVyZW50IDR4eCBQUENzICgxKQoKICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHBhdGNoIG9mIGEgc2VyaWVzIHRvIG1ha2UgdGhlIDQ0MFNQZSBQQ0llIGNvZGUKICAgIHVzYWJsZSBvbiBkaWZmZXJlbnQgNHh4IFBQQyBwbGF0Zm9ybXMuIEluIHByZXBlcmF0aW9uIGZvciB0aGUgbmV3IDQwNUVYCiAgICB3aGljaCBpcyBhbHNvIGVxdWlwcGVkIHdpdGggUENJZSBpbnRlcmZhY2VzLgoKICAgICgxKSBUaGlzIHBhdGNoIHJlbmFtZXMgdGhlIGZpbGVzIGZyb20gNDQwc3BlX3BjaWUgdG8gNHh4X3BjaWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjQ1YTM2MmFkM2MwYzFiODRmY2NjOWZlYzdiNjIzZWIxNGY2ZTUwMgpBdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBPY3QgMjQgMDE6Mzc6MzYgMjAwNyArMDIwMAoKICAgIFRRTTUyMDA6IENhbGwgdXNiX2NwdV9pbml0KCkgZHVyaW5nIGJvYXJkIGluaXQKCiAgICB1c2JfY3B1X2luaXQoKSBjb25maWd1cmVzIEdQUyBVU0IgcGlucywgY2xvY2tzLCBldGMuIGFuZAogICAgaXMgcmVxdWlyZWQgZm9yIHByb3BlciBvcGVyYXRpb24gb2Yga2VybmVsIFVTQiBzdWJzeXN0ZW0uCiAgICBUaGlzIHNldHVwIHdhcyBwcmV2aW91c2x5IGRvbmUgaW4gdGhlIGtlcm5lbCBieSB0aGUgZml4dXAKICAgIGNvZGUgd2hpY2ggaXMgYmVpbmcgcmVtb3ZlZCwgdGh1cyBsb3cgbGV2ZWwgaW5pdCBtdXN0IGJlCiAgICBkb25lIGJ5IFUtYm9vdCBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgYjVhZjc3M2Y4ZDkyNjc3ZTA2ZjMyOTViNDU1NTdjOWQwYTQ4N2MyNApBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjUgMTc6NTE6MjcgMjAwNyArMDgwMAoKICAgIEZpeCB0aGUgaXNzdWUgb2YgdXNiX2tiZCBkcml2ZXIgbWlzc2luZyB0aGUgc2NhbiBjb2RlIG9mIGtleSAneicuCgogICAgVGhlIHNjYW4gY29kZSBvZiB0aGUga2V5ICd6JyBpcyAweDFkLCB3aGljaCBzaG91bGQgYmUgaGFuZGxlZC4KCiAgICBUaGUgY2hhbmdlIGhhcyBiZSB0ZXN0ZWQgb24gTk9WQVRFSyBVU0Iga2V5Ym9hcmQgYW5kIFVMSSBQQ0kgT0hDSQogICAgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KCmNvbW1pdCA4NWFjOTg4ZTg2Zjk0MTRmYTY0NWIwMTQ4ZGM2NmMzNTIwYTFlYjg0CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gT2N0IDE1IDExOjU5OjE3IDIwMDcgKzAyMDAKCiAgICBQWEEgVVNCIE9IQ0k6ICJ1c2Igc3RvcCIgaW1wbGVtZW50YXRpb24uCgogICAgU29tZSBVU0Iga2V5cyBuZWVkIHRvIGJlIHN3aXRjaGVkIG9mZiBiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsCiAgICBvdGhlcndpc2UgdGhleSBjYW4gcmVtYWluIGluIGFuIHVuZGVmaW5lZCBzdGF0dXMgd2hpY2ggcHJldmVudHMgdGhlbQogICAgdG8gYmUgY29ycmVjdGx5IHJlY29nbml6ZWQgYnkgdGhlIGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMzE1NDgyNDlkZWNmMThhNmI4NzdhMTg0MzZiNjEzOWRkNDgzZmU0YQpBdXRob3I6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+CkRhdGU6CU1vbiBPY3QgMjkgMTc6NDA6MzUgMjAwNyAtMDQwMAoKICAgIERIQ1AgQ2xpZW50IEZpeAoKICAgIFRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCgogICAgY29tbWl0IGU2ZTUwNWVhZTk0ZWQ3MjFlMTIzZTE3NzQ4OTI5MWZjNDU0NGI3YjgKICAgIEF1dGhvcjogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KICAgIERhdGU6ICAgTW9uIE9jdCAyOSAxNzoxOTowMyAyMDA3IC0wNDAwCgoJRm91bmQgYSBidWcgaW4gdGhlIHdheSB0aGUgREhDUCBSZXF1ZXN0IHBhY2tldCBpcyBidWlsdCwgd2hlcmUgdGhlIElQIGFkZHJlc3MKCXRoYXQgaXMgb2ZmZXJlZCBieSB0aGUgc2VydmVyIGlzIGJvdW5kIHRvIHByZW1hdHVyZWx5LiBUaGlzIHBhdGNoIGlzIGEgZml4IG9mCgl0aGF0IGJ1ZyB3aGVyZSB0aGUgSVAgYWRkcmVzcyBvZmZlcmVkIGJ5IHRoZSBESENQIHNlcnZlciBpcyBub3QgdXNlZCB1bnRpbAoJYWZ0ZXIgdGhlIERIQ1AgQUNLIGZyb20gdGhlIHNlcnZlciBpcyByZWNlaXZlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgZThlZThmM2FkZTJhMDZjMTg5M2RkNWU2OGYyMjMwNzBkNjUwYzdlZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoxNjoyMiAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTQ0NTU6IEZpeCBjb3JyZWN0IGJvb3QgbG9jYXRpb24gZm9yIGF0bWVsIGFuZCBpbnRlbAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ODhlOGViNDE0YWMxMTFjY2E3Y2U2MGJkZjMwZTgwNWFiOWE3YmNiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDI1IDE3OjE0OjAwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogRml4IGJ1aWxkIGVycm9yIHdoZW4gQ09ORklHX1dBVENIRE9HIGlzIGRlZmluZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzY3ZTEyZTcwNWIyMDRjZmU5MTRlM2UzZTY5M2Q2OWE0NDVkY2FiZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoxMjozNiAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTMyOTogQXNzaWduIGNvcnJlY3QgU0RSQU0gc2l6ZSBhbmQgZml4IGNhY2hlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk1ZTlmMmMyMTJhNjU2MTBiMmU1OWE1YzAwZDAxMTMzODNhNGRhMGIKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMjUgMTc6MTA6MjMgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlIDUyNTM6IEFzc2lnbiBjb3JyZWN0IFNEUkFNIHNpemUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmFjZWZhNzJlZTAwMjZmODYyYWI2NTU5N2NhNjg3NDI4ZjYzYTk3MwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzowOToxNyAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmUgNTI4MjogRml4IGV4dGVybmFsIGZsYXNoIGJvb3QgYW5kIHJldHVybiBkcmFtc2l6ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNzg3OTFhZTkxNGQ0ZTdjNWVkY2ExY2RhZDczYjNkYzgxYTRlYjgyCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE9jdCAyNSAxNzoyMDowMSAyMDA3ICswMjAwCgogICAgVFFNNTIwMDogaW5jcmVhc2Uga2VybmVsX2FkZHJfciBhbmQgZmR0X2FkZHJfciAoaGludGVkIGJ5IFdvbGZnYW5nIERlbmspLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgMWEwY2UyMGFhNGNiNGUzMDY4ZGEwNGU3MjkwZWU5OTg2ZmQwYjgzNApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgT2N0IDI0IDA4OjQyOjI1IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBmaXggc3B1cmlvdXMgY2hhcmFjdGVycyBvbiBzZWNvbmQgc2VyaWFsIGludGVyZmFjZQoKICAgIFdpdGggdGhpcyBwYXRjaCBQU0MzIGlzIGNvbmZpZ3VyZWQgYXMgVUFSVC4gVGhpcyBpcyBkb25lLCBiZWNhdXNlIGlmCiAgICB0aGUgcGlucyBvZiBQU0MzIGFyZSBub3QgY29uZmlndXJlZCBhdCBhbGwgKC0+IGFsbCBwaW5zIGFyZSBHUEkpLAogICAgZHVlIHRvIGNyb3NzdGFsaywgc3B1cmlvdXMgY2hhcmFjdGVycyBtYXkgYmUgc2VuZCBvdmVyIHRoZSBSWDIzMl8yX1RYRAogICAgc2lnbmFsIGxpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYmU0YTg3ZjExZTI5N2E1Y2VkZWRiZjdkZDcxYzAyNDhmMzg3NGFjZApBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglXZWQgT2N0IDI0IDA4OjQxOjI3IDIwMDcgKzAyMDAKCiAgICBUUU01MjAwUzogZml4IGNvbW1hbmRzIGZvciBTVEs1Mnh4IGJhc2UgYm9hcmQgYmVjYXVzZSBvZiBtaXNzaW5nIFNNNTAxIGdyYWZpYyBjb250cm9sbGVyCgogICAgU29tZSBjb21tYW5kcyBmb3IgdGhlIFNUSzUyeHggYmFzZSBib2FyZCB0cnkgdG8gYWNjZXNzIHRoZSBTTTUwMSBncmFmaWMKICAgIGNvbnRyb2xsZXIuIEJ1dCB0aGUgVFFNNTIwMFMgaGFzIG5vIGdyYWZpYyBjb250cm9sbGVyIChvbmx5IHRoZSBUUU01MjAwCiAgICBhbmQgdGhlIFRRTTUyMDBCIGhhdmUpLiBUaGlzIHBhdGNoIGRlYWN0aXZhdGVzIHRoZSBjb21tYW5kcyBhY2Nlc3NpbmcKICAgIHRoZSBTTTUwMSBmb3IgdGhlIFRRTTUyMDBTLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGIzMWY2NDM0M2VhZDk0ODJjZDQzOWIxYWRiZTRjMzQwMjZhNjQxYjEKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxNjo0NTo1MyAyMDA3ICswMjAwCgogICAgVFFNNTIwMDogZml4IHNwdXJpb3VzIGNoYXJhY3RlcnMgb24gc2Vjb25kIHNlcmlhbCBpbnRlcmZhY2UKCiAgICBXaXRoIHRoaXMgcGF0Y2ggUFNDMyBpcyBjb25maWd1cmVkIGFzIFVBUlQuIFRoaXMgaXMgZG9uZSwgYmVjYXVzZSBpZgogICAgdGhlIHBpbnMgb2YgUFNDMyBhcmUgbm90IGNvbmZpZ3VyZWQgYXQgYWxsICgtPiBhbGwgcGlucyBhcmUgR1BJKSwKICAgIGR1ZSB0byBjcm9zc3RhbGssIHNwdXJpb3VzIGNoYXJhY3RlcnMgbWF5IGJlIHNlbmQgb3ZlciB0aGUgUlgyMzJfMl9UWEQKICAgIHNpZ25hbCBsaW5lLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDBmYzBmOTFiMjBmZmE4MDJmNWE2NjUzNGNhNWMyODQ0OTEwNTgzZjYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJTW9uIE9jdCAyMiAxNjo0MDowNiAyMDA3ICswMjAwCgogICAgVFFNNTIwMFM6IGZpeCBjb21tYW5kcyBmb3IgU1RLNTJ4eCBiYXNlIGJvYXJkIGJlY2F1c2Ugb2YgbWlzc2luZyBTTTUwMSBncmFmaWMgY29udHJvbGxlcgoKICAgIFNvbWUgY29tbWFuZHMgZm9yIHRoZSBTVEs1Mnh4IGJhc2UgYm9hcmQgdHJ5IHRvIGFjY2VzcyB0aGUgU001MDEgZ3JhZmljCiAgICBjb250cm9sbGVyLiBCdXQgdGhlIFRRTTUyMDBTIGhhcyBubyBncmFmaWMgY29udHJvbGxlciAob25seSB0aGUgVFFNNTIwMAogICAgYW5kIHRoZSBUUU01MjAwQiBoYXZlKS4gVGhpcyBwYXRjaCBkZWFjdGl2YXRlcyB0aGUgY29tbWFuZHMgYWNjZXNzaW5nCiAgICB0aGUgU001MDEgZm9yIHRoZSBUUU01MjAwUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA3YjBhNDIyMTlmMzAyNzdmNzFmNDQwNWNiYWY4YTI2OWY2ZDJkMjI3CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJU3VuIE9jdCAyMSAwOToxNDoyOCAyMDA3ICswMjAwCgogICAgTWlwczogRml4IHN0cmluZyBmdW5jdGlvbnMgZGlmZmVyIHByb3RvdHlwZSBkZWNsYXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgY2I4MjUwZmU0YjNjNGVkNTQ5YjI3MGU4YTIwYmMyMjA2MGU3ZTFkMgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBPY3QgMTkgMTc6NTE6NDAgMjAwNyAtMDUwMAoKICAgIGZzbF9wY2lfaW5pdCBlbmFibGUgQ09NTUFORF9NRU1PUlkgaWYgaW5ib3VuZCB3aW5kb3cKCiAgICBQYXRjaCAxNmUyM2MzZiByZW1vdmVkIFBDU1JCQVIgYWxsb2NhdGlvbi4JQnV0IHBhc3NpbmcgemVybyB3aW5kb3dzCiAgICB0byBwY2lhdXRvX3NldHVwX2RldmljZSBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIG5vdCBnZXR0aW5nCiAgICBDT01NQU5EX01FTU9SWSBzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOWQwZDUyNzk5MjU2NmViZWY5ODI2OTYyZmYxNzQ1YjJmMDgyYjkyCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAxMDo1NToyNCAyMDA3ICswMjAwCgogICAgZGVsdGE6IEZpeCBPSENJX1JFR1NfQkFTRSB1bmRlY2xhcmVkIGFuZCB3YWl0X21zIGltcGxpY2l0IGRlY2xhcmF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCA5YzQ4ODRmNTRkYTk4MmNlOTkwYzdkMTc2MGFjODFiMDcwNGQzYzY0CkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwODoxMDoxNSAyMDA3ICswMjAwCgogICAgZml4IHdhcm5pbmc6IG5vIHJldHVybiBzdGF0ZW1lbnQgaW4gZnVuY3Rpb24gcmV0dXJuaW5nIG5vbi12b2lkCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBlNzgyMjBmNmU1MTQyMDY3NTdhY2ZlMjQ3Mjk3ZmM5YTMyOGE4ODFmCkF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwNjozMzo0NSAyMDA3ICswMjAwCgogICAgeHNlbmdpbmU6IEZpeCBubyBwYXJ0aXRpb24gdHlwZSBzcGVjaWZpZWQsIHVzZSBET1MgYXMgZGVmYXVsdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMTBjZGI4ZGJkNjdhODE4ODIzYWI5ZWM4OGI2OGZjMzQ4OTAzZGI1OQpBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+CkRhdGU6CUZyaSBPY3QgMTkgMDA6MjQ6NTkgMjAwNyArMDIwMAoKICAgIGx1YmJvY2s6IEZpeCBubyBwYXJ0aXRpb24gdHlwZSBzcGVjaWZpZWQsIHVzZSBET1MgYXMgZGVmYXVsdAoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgNDFiNGQyODJkMzhmYTcyMzFjMzE1YzVmNmNmZmY1YmRkMjRlMDE5MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjMgMTY6NTA6MDMgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZToga2VlcCBsaXN0cyBzb3J0ZWQ7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDU4Yjc0YjA1YzYyMWUyODM1ZWNmNGUyZDMyNDMwNDJjZjQxODY3NzcKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgT2N0IDE5IDAwOjA5OjA1IDIwMDcgKzAyMDAKCiAgICBGaXggbWlzc2luZyBkcml2ZXJzIG1ha2VmaWxlIGVudHJpZXMgZHMxNzIyLmMgbXdfZWVwcm9tLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDk2NDU1YmZlYmM5ODg3ODM3MDk1YzkwNTFkMjE2ZjUzYzYxYjVmMTAKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglGcmkgT2N0IDE5IDAwOjA3OjM5IDIwMDcgKzAyMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBib2FyZC9pbm5va29tL2lubm9rb20uYwoKICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Cgpjb21taXQgMmE0NzQxZDlhMTRlYzQ3NWY1MGU5ODU2ZDJjMGE2N2U4YjQyNzFiZApBdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAwMDoyNTozMyAyMDA3ICswMjAwCgogICAgZml4IHB4YTI1NV9pZHAgYm9hcmQKCiAgICBUaGUgcHhhMjU1X2lkcCBiZWluZyBhbiBvbGQgdW5tYWludGFpbmVkIGJvYXJkIHNob3dlZCBzZXZlcmFsIGlzc3VlczoKICAgIDEuIENPTkZJR19JTklUX0NSSVRJQ0FMIHdhcyBzdGlsbCBkZWZpbmVkLgogICAgMi4gTmVpdGhlciBDT05GSUdfTUFDX1BBUlRJVElPTiBub3IgQ09ORklHX0RPU19QQVJUSVRJT04gd2FzIGRlZmluZWQuCiAgICAzLiBTeW1ib2wgZmxhc2hfYWRkciB3YXMgdW5kZWNsYXJlZC4KICAgIDQuIFRoZSBib2FyZHMgbG93bGV2ZWxfaW5pdCBmdW5jdGlvbiB3YXMgc3RpbGwgY2FsbGVkIG1lbXNldHVwLgogICAgNS4gVGhlIFRFWFRfQkFTRSB3YXMgc3RpbGwgMHhhMzAwMDAwMCByYXRoZXIgdGhhbiAweGEzMDgwMDAwLgogICAgNi4gVXNpbmcgLW1hcmNoPWFybXY1IGluc3RlYWQgb2YgLW1hcmNoPWFybXY1dGUgcmVzdWx0ZWQgaW4gbG90cyBvZgogICAgJ3RhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcnIHdhcm5pbmdzIG9uIHJlY2VudCBjb21waWxlcnMuCiAgICA3LiBUaGUgUFhBJ3Mgc2VyaWFsIGRyaXZlciByZWRlZmluZWQgRkZVQVJULCBCVFVBUlQgYW5kIFNUVUFSVCB1c2VkIGFzCiAgICBpbmRleGVzIHJhdGhlciB0aGFuIHRoZSByZWdpc3RlciBkZWZpbml0aW9ucyBmcm9tIHRoZSBweGEtcmVncyBoZWFkZXIKICAgIGZpbGUuIFJlbmFtZWQgdGhlbSB0byBGRlVBUlRfSU5ERVgsIEJUVUFSVF9JTkRFWCBhbmQgU1RVQVJUX0lOREVYIHRvCiAgICBhdm9pZCBhbnkgYW1iaWd1aXRpZXMuCiAgICA4LiBUaGVyZSB3ZXJlIHNldmVyYWwgcmVkZWZpbml0aW9uIHdhcm5pbmdzIGNvbmNlcm5pbmcgSUNNUiwgT1NNUjMsCiAgICBPU0NSLCBPV0VSLCBPSUVSLCBSQ1NSIGFuZCBDQ0NSIGluIHRoZSBQWEEncyBhc3NlbWJseSBzdGFydCBmaWxlLgogICAgOS4gVGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZSB3YXMgcmF0aGVyIG91dGRhdGVkLgogICAgMTAuIFRoZSBwYXJ0IGhlYWRlciBmaWxlIGRlZmluZWQgdGhlIHZlbmRvciwgcHJvZHVjdCBhbmQgcmV2aXNpb24gYXJyYXlzCiAgICBhcyB1bnNpZ25lZCBjaGFycyBpbnN0ZWFkIG9mIGp1c3QgY2hhcnMgaW4gdGhlIGJsb2NrX2Rldl9kZXNjX3QKICAgIHN0cnVjdHVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Cgpjb21taXQgMjk4Y2Q0Y2FmZTgxZmY4YTZjODdiZThmYmM0NDBhMjA3MjBkM2VkNgpBdXRob3I6IFJ1bmUgVG9yZ2Vyc2VuIDxydW5ldEBpbm5vdnN5cy5jb20+CkRhdGU6CVdlZCBPY3QgMTcgMTE6NTY6MzEgMjAwNyAtMDUwMAoKICAgIE1ha2UgTVBDODI2NkFEUyBjb21tYW5kIHNlbGVjdGlvbiBtb3JlIHJvYnVzdAoKICAgIEZpeCBNUEM4MjY2IGNvbW1hbmQgbGluZSBkZWZpbml0aW9uIHNvIGl0IHdvbid0IGJyZWFrIHdoZW4gbmV3IGNvbW1hbmRzCiAgICBhcmUgYWRkZWQgdG8gdS1ib290LgogICAgU2lnbmVkLW9mZi1ieSBSdW5lIFRvcmdlcnNlbiA8cnVuZXRAaW5ub3ZzeXMuY29tPgoKY29tbWl0IGQzYWZhMWVlMTkzNDVhMzFmZDFlYWFkM2U5OGI5N2QxM2NhNDczMTUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDIzIDEzOjE0OjEwIDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBVcGRhdGUgY29uZmlndXJhdGlvbiB0byBhY2NvbW9kYXRlIG5leHQgZ2VuZXJhdGlvbiBib2FyZC4KCiAgICBOZXcgYm9hcmQgaGFzIGZhc3RlciBvc2NpbGxhdG9yIGFuZCBhIGRpZmZlcmVudCBGbGFzaCBjaGlwLiBUaGlzIGFmZmVjdHM6CiAgICAtIENGR19NUEM1WFhYX0NMS0lOCiAgICAtIFNEUkFNIHRpbWluZ3MKICAgIC0gRmxhc2ggQ1MgY29uZmlndXJhdGlvbiAodGltaW5ncykKICAgIC0gRmxhc2ggc2VjdG9yIHNpemUsIGFuZCB0aHVzIE1URCBwYXJ0aXRpb24gbGF5b3V0CiAgICAtIG1hbGxvYygpIGFyZW5hIHNpemUgKGR1ZSB0byBiaWdnZXIgRmxhc2ggc2VjdG9ycykKICAgIC0gc21hbGxlciBtZW1vcnkgdGVzdCByYW5nZSAoZHVlIHRvIGJpZ2dlciBtYWxsb2MoKSBhcmVuYSkKCiAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyBtb3JlIGV4dGVuc2l2ZSBtZW1vcnkgdGVzdGluZyB2aWEgIm10ZXN0Ii4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGVmZjUwMTkwNGRmMmJmMTcyNGE3NTAwNjI2MjhiYTJjNTFkYmIxZjgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDIzIDExOjM2OjA3IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBBZGQgc2V0dGluZyBvZiBTRGVsYXkgcmVnLiB0byBTRFJBTSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24uCgogICAgUGVyIEFOMzIyMSAoTVBDNTIwMEIgU0RSQU0gSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24pLCB0aGUgU0RlbGF5CiAgICByZWdpc3RlciBtdXN0IGJlIHdyaXR0ZW4gYSB2YWx1ZSBvZiAweDAwMDAwMDA0IGFzIHRoZSBmaXJzdCBzdGVwIG9mIHRoZQogICAgU0RSQU0gY29udG9ybGxlciBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgN2E5MzQ4NzI4ZWJkYTYzY2RiYWFjZmZkODMwOTlhYTcxZDlkNGM1NApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBPY3QgMjMgMTA6MjI6MTYgMjAwNyArMDEwMAoKICAgIE1vdmUgUEwwMSogc2VyaWFsIGRyaXZlcnMgdG8gZHJpdmVycy9zZXJpYWwgYW5kIGFkanVzdCBNYWtlZmlsZXMuCgpjb21taXQgMjBkNTAwZDUzMWE2Yjk3MWNlNmNjMWJmMTkxY2IwMDkyY2RjMGFmYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyMyAxMDoxNzo0MiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBsd21vbjU6IFNvbWUgZnVydGhlciBHUElPIGNvbmZpZyBjaGFuZ2VzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRlOWE3MzhmYWE3YzJmNDcyODYxMTljM2JmZWJjM2RmYmZlN2Q4NmQKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJU3VuIE9jdCAyMSAyMjoxMDoxMCAyMDA3ICswOTAwCgogICAgW01JUFNdIEZpeCBVTkNBQ0hFRF9TRFJBTQoKICAgIFBIWVNBRERSIGlzIGZvciBwaHlzaWNhbCBhZGRyZXNzLCBLU0VHMUFERFIgaXMgZm9yIHVuY2FjaGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDAwMTAxZGQ3YTMyZDEyZjY5ODE1MDEyM2U0N2U0YjM0MjAyNzlmODYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVN1biBPY3QgMjEgMjE6MzA6NDIgMjAwNyArMDkwMAoKICAgIFtNSVBTXSBBZGQgUElDLXJlbGF0ZWQgc3dpdGNoZXMgdG8gUExBVEZPUk1fe0NQUCxMRH1GTEFHUyBhbmQgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCBlYjcwMDYzNmRiMDE3ZDMxMGVkYWViNTU5YjEzZDgyNTg4NTYwNjc0CkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglTdW4gT2N0IDIxIDEwOjU1OjM3IDIwMDcgKzA5MDAKCiAgICBbTUlQU10gdS1ib290LmxkczogRGVmaW5lIF9ncCBpbiBhIHN0YW5kYXJkIG1hbm5lcgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCAyMjA2OTIxNWViN2FkZjVhMzg4OGJmN2M3Nzg0ZWE5ZDcwYTcyY2QwCkF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgpEYXRlOglTdW4gT2N0IDIxIDEwOjU1OjM2IDIwMDcgKzA5MDAKCiAgICBbTUlQU10gRml4ICRncCB1c2FnZQoKICAgIE5vdyB3ZSBsb2FkICRncCB3aXRoIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXywgYnV0IHRoaXMgaXMgaW5jb3JyZWN0IHVzZS4KICAgIEFzIGEgZ2VuZXJhbCBwcmluY2lwbGUsIHdlIHNob3VsZCB1c2UgX2dwIGZvciAkZ3AuCgogICAgVGhhbmtzIHRvIGxpbmtlciBzY3JpcHQncyBoZWxwIHdlIGZvcnR1bmF0ZWx5IGhhdmUgX2dwIHdoaWNoIGVxdWFscyB0bwogICAgX0dMT0JBTF9PRkZTRVRfVEFCTEVfLiBCdXQgb25jZSBfZ3AgZ2V0cyBvdXQgb2YgYWxpZ25tZW50LCB3ZSB3aWxsIG5vdAogICAgYmUgYWJsZSB0byBhY2Nlc3MgdG8gR09UIGVudGlyZXMsIGdsb2JhbCB2YXJpYWJsZXMgYW5kIHByb2NlZHVyZSBlbnRyeQogICAgcG9pbnRzLiBUaGUgcmlnaHQgdGhpbmcgdG8gZG8gaXMgdG8gdXNlIF9ncC4KCiAgICBUaGlzIHBhdGNoIGFsc28gaW50cm9kdWNlIGEgbmV3IHN5bWJvbCBgLmdwd29yZCBfR0xPQkFMX09GRlNFVF9UQUJMRV8nCiAgICB3aGljaCBob2xkcyB0aGUgb2Zmc2V0IGZyb20gX2dwLiBXaGVuIHVwZGF0aW5nIEdPVCBlbnRyaWVzLCB3ZSB1c2UgdGhpcwogICAgb2Zmc2V0IGFuZCBfZ3AgdG8gY2FsY3VsYXRlIHRoZSBmaW5hbCBfR0xPQkFMX09GRlNFVF9UQUJMRV8uCgogICAgVGhpcyBwYXRjaCBpcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBieSBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4sIHRoZW4KICAgIEkgbWFkZSBzb21lIGNoYW5nZSB0byBsZWF2ZSBvdmVyIG51bV9nb3RfZW50cmllcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBDYzogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Cgpjb21taXQgY2JmMjMyM2I1YjgyODVlYTAxYWNiYTdiYmI5MDVhMzE2MmQ5YjAyMQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJU3VuIE9jdCAyMSAxMDo1NTozNiAyMDA3ICswOTAwCgogICAgW01JUFNdIHUtYm9vdC5sZHM6IEZpeCBfX2dvdF9zdGFydCBhbmQgX19nb3RfZW5kCgogICAgRW5zdXJlIHRoYXQgX19nb3Rfc3RhcnQgcG9pbnRzIHRvIHRvcCBvZiB0aGUgYC5nb3QnLCBhbmQgX19nb3RfZW5kIHBvaW50cwogICAgdG8gYm90dG9tIGFzIHdlbGwsIHNvIHRoYXQgd2UgbmV2ZXIgZmFpbCB0byBjb3VudCBudW1fZ290X2VudHJpZXMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IGU1ZjMyNWZlYzViNDhhZTcwNWM4OTUyMjkyM2JhNWEyZTM3Y2Q1YzcKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CVN1biBPY3QgMjEgMTA6NTU6MzYgMjAwNyArMDkwMAoKICAgIFtNSVBTXSB1LWJvb3QubGRzOiBSZW1vdmUgZHVwbGljYXRlZCAuc2RhdGEgc2VjdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KCmNvbW1pdCAwNWJmNDkxOWMxY2U0OWNkZWRhZGFjZDU2NGQwNzg2YThlZDc5NmExCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAyMSAwMTowMToxNyAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGZmMjg1Y2EwN2VkYTFlYTRhODkwOTg0OGNjMWNjNjA0ZWM4ZmVjOWMKQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KRGF0ZToJVGh1IE9jdCA0IDIwOjQ3OjEwIDIwMDcgKzAzMDAKCiAgICBGaXggTkUyMDAwIGRyaXZlcjoKCiAgICBGaXhlZCB0eXBvIGluIG5lMjAwMC5oLCB0aGlua28gcmUgbjJrX2luYigpIHVzYWdlLCBkb24ndCB0cnkKICAgIHRvIGRvIGFueXRoaW5nIGluIGV0aF9zdG9wKCkgaWYgZXRoX2luaXQoKSB3YXMgbm90IGNhbGxlZC4KICAgIFNpbXBsaWZpZWQgUlggcGF0aCBpbiBvcmRlciB0byBhdm9pZCB0aW1lb3V0cyBvbiByZWFsbHkgcmVhbGx5CiAgICBmYXN0IE5FMjAwMCBjYXJkcyAocmVhZDogcWVtdSB3aXRoIGludGVybmFsIHRmdHApLCBOZXRMb29wKCkgaXMKICAgIGNsZXZlciBlbm91Z2ggdG8gY29wZSB3aXRoIDEgcGFja2V0IHBlciBldGhfcngoKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KCmNvbW1pdCBkZjkwOTY4YjQ4ZmIzNGZhOTA3MmZhYjE1MGRiMmFjODk2NzhmNTM3CkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDI0IDEzOjMyOjEzIDIwMDcgLTA0MDAKCiAgICBTZXR0aW5nIE1TUltERV0gaW4gZG9fcmVzZXQKCiAgICBIZWxsbywKICAgICAgIFRoaXMgcGF0Y2ggZW5zdXJlcyB0aGUgc29mdCByZXNldCBvZiB0aGUgYm9hcmQgZm9yIHRoZSA4NXh4IGJvYXJkcwogICAgICAgYnkgc2V0dGluZyB0aGUgTVNSW0RFXSBpbiB0aGUgZG9fcmVzZXQgZnVuY3Rpb24uCgogICAgU2lnbmVkLW9mZi1ieTogU3VnaG9zaCBHYW51IDx1cndpdGhzdWdob3NoQGdtYWlsLmNvbT4KCmNvbW1pdCAxZTcwMWU3MDEzMDRiM2MzYTM3NjhjYTgzZGQyYWI3YjllODhjNzdkCkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDI0IDEzOjM2OjAxIDIwMDcgLTA0MDAKCiAgICBNU1Igb3ZlcndyaXRlIGZpeAoKICAgIEhlbGxvLAogICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBNU1Igb3ZlcndyaXRlIGluIHRoZSBzdGFydC5TIHdoZW4gbW92aW5nIG91dCBvZgogICAgICB0aGUgbGFzdCA0SyBwYWdlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN1Z2hvc2ggR2FudSA8dXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20+Cgpjb21taXQgNWM3ZWE2NGJiNzRhODUwYTJiMjMwM2Y4NTNhODI3MDY5NWFkODYwMgpBdXRob3I6IERhbiBXaWxzb24gPGR3aWxzb25AZnVsY3J1bW1pY3JvLmNvbT4KRGF0ZToJRnJpIE9jdCAxOSAxMTozMzo0OCAyMDA3IC0wNTAwCgogICAgdHNlYyBkcml2ZXIgc2hvdWxkIGNsZWFyIFJIQUxUIG9uIHN0YXJ0dXAKCiAgICBUaGlzIHdhcyBjYXVzaW5nIHByb2JsZW1zIGZvciBzb21lIHBlb3BsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGFpbiBHcmF2ZWwgPGFncmF2ZWxAZnVsY3J1bW1pY3JvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhbiBXaWxzb24gPGR3aWxzb25AZnVsY3J1bW1pY3JvLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NjAwZDQ3YjhmNmExMDAxOWU1MzdkYzlhNjJhYTE0OThkZjU4ZDI1CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVGh1IE9jdCAxMSAwMDoyOToxOCAyMDA3IC0wNTAwCgogICAgSW1wcm92ZSBoYW5kbGluZyBvZiBQQ0kgaW50ZXJydXB0IGRldmljZSB0cmVlIGZpeHVwIG9uIE1QQzg1eHggQ0RTCgogICAgT24gdGhlIE1QQzg1eHggQ0RTIHdlIGhhdmUgdHdvIGlzc3VlczoKCiAgICAxLiBUaGUgZGV2aWNlIHRyZWUgZml4dXAgY29kZSBkaWQgbm90IGNoZWNrIHRvIHNlZSBpZiB0aGUgcHJvcGVydHkgd2UgYXJlCiAgICB0cnlpbmcgdG8gdXBkYXRlIGlzIGFjdHVhbGx5IGZvdW5kLiAgSXRzIHBvc3NpYmxlIHRoYXQgaXQgd291bGQgdXBkYXRlCiAgICByYW5kb20gbWVtb3J5IHN0YXJ0aW5nIGF0IDAuCgogICAgMi4gTmV3ZXIgTGludXgga2VybmVsJ3MgaGF2ZSBtb3ZlZCB0aGUgbG9jYXRpb24gb2YgdGhlIFBDSSBub2RlcyB0byBiZQogICAgc2liaWxpbmdzIG9mIHRoZSBzb2Mgbm9kZSBhbmQgbm90IGNoaWxkcmVuLiAgVGhlIGV4cGxpY2l0IFBBVEggdG8gdGhlIFBDSQogICAgbm9kZSB3b3VsZCBub3QgYmUgZm91bmQgZm9yIHRoZXNlIGRldmljZSB0cmVlcy4gIEFkZCB0aGUgYWJpbGl0eSB0byBoYW5kbGUKICAgIGJvdGggcGF0aHMuICBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZG4ndCBoYW5kbGUgc3VjaCBmaXh1cHMgYnkgZXhwbGljaXQgcGF0aC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGEzMDYzZWVjNzc1NzE5YjdlOTEwMjNiYmVjM2Y2NGIzMTE4NzkxZGYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgT2N0IDExIDAwOjE4OjQ4IDIwMDcgLTA1MDAKCiAgICBTZXQgT0ZfU1RET1VUX1BBVEggdG8gbWF0Y2ggdGhlIGRlZmF1bHQgY29uc29sZSBvbiBNUEM4NTY4IE1EUwoKICAgIE9uIHRoZSBNUEM4NTY4IE1EUyB3ZSB1c2UgdHR5UzAsIFVBUlQwLCBldGMuIGFzIHRoZSBzdGFuZGFyZCBjb25maWd1cmVkCiAgICBjb25zb2xlLiAgTWFrZSBpdCBzbyB3ZSBtYXRjaCB0aGF0IGNvbmZpZyB3aGF0IHdlIHRlbGwgTGludXggYXMgdGhlIGVhcmx5CiAgICBTVERPVVQgY29uc29sZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGUxY2UzY2I2MTdiYjA2ZjkxZjgyZjk4OTE1MzkxMTc1YWRkZjNlODIKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUdWUgT2N0IDIgMTE6MTI6MjcgMjAwNyAtMDUwMAoKICAgIFJlbW92ZSBtYWdpYyBudW1iZXJzIGZyb20gY2FjaGUgcmVsYXRlZCBvcGVyYXRpb25zIGZvciBtcGM4NXh4CgogICAgVGhlIG1wYzg1eHggc3RhcnQgY29kZSB1c2VzIHNvbWUgbWFnaWMgbnVtYmVycyB0aGF0IHdlIGFjdHVhbGx5CiAgICBoYXZlICNkZWZpbmVzIGZvciBpbiA8Y29uZmlnLmg+IHNvIHVzZSB0aG9zZSBpbnN0ZWFkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgNTQ0MWY2MWEzZDhiNzAzNGYxOWZjMTM2MTE4M2U5MzYxOThlNmRiYgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgT2N0IDE5IDE2OjQ3OjI2IDIwMDcgKzAyMDAKCiAgICBGaXggdHdvIHR5cG9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDI4MWRmNDU3YzFhYTUwZDI3NTIxNjVkMGM1YzMyODJkNDAyN2I5NzQKQXV0aG9yOiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTggMTc6NDc6MTkgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBjb25maWd1cmUgZW50cnkgZm9yIE1QQzgzeHggQVRNIHN1cHBvcnQKCiAgICBBZGQgTVBDODM2MEVNRFNfQVRNX2NvbmZpZyBhbmQgTVBDODMyWEVNRFNfQVRNX2NvbmZpZyBpbnRvCiAgICBNYWtmaWxlIGFuZCBNQUtFQUxMCgogICAgU2lnbmVkLW9mZi1ieTogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMjY0NjU1NGY1MjlhOTU3NzUxNWVjZWIwZWM1ZWNlZWUxODI0NGJhCkF1dGhvcjogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDE4IDE3OjQ0OjM4IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBwcS1tZHMtcGliLmMgdHlwbyBlcnJvcgoKICAgIENvcnJlY3QgdG8gdmFsOCBmcm9tIHZhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNlMTFhZTgwZmVjMWVlMTIxOTQ5NDA5NTU0MzExODZhYmY2MDA5YzIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBPY3QgMTcgMTU6NDA6MTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIDY2Ny8xMzMgKENQVS9QTEIpIGZyZXF1ZW5jeSBzZXR1cCB0byBTZXF1b2lhIGJvb3RzdHJhcCBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNjODlkNzU0MDllYjI2NjM5ZDM2ZGZhMTFkNGVlM2Q4Yjk2MmRjM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE1OjI3OjQzIDIwMDcgLTA1MDAKCiAgICBJbml0aWFsIG1wYzg2MTBocGNkIE1ha2VmaWxlIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggSmFkZSA8bWFoZXNoLmphZGVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk1NTNkZjg2ZDNhMzE5YzNhMWE3Y2RlN2U0ZWRkNmVlYjVhYTY0YzcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE1OjI2OjUxIDIwMDcgLTA1MDAKCiAgICBJbml0aWFsIG1wYzg2MTBocGNkIGNwdS8sIFJFQURNRSBhbmQgaW5jbHVkZS8gZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2RkMmRiNTNjZWIwZGZmODBmMjVjMmEwN2Y4M2YyOWI5MDdiNDAzZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMTYgMTM6NTQ6MDEgMjAwNyAtMDUwMAoKICAgIEluaXRpYWwgbXBjODYxMGhwY2QgYm9hcmQgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2VlNmJhMWEwNTZlNDA2MWFiNGNmZGUzMDEyN2UzMzJlNzk1N2FmZApBdXRob3I6IHJ1bmV0QGlubm92c3lzLmNvbSA8cnVuZXRAaW5ub3ZzeXMuY29tPgpEYXRlOglUdWUgT2N0IDE2IDE0OjUwOjQwIDIwMDcgLTA1MDAKCiAgICBNYWtlIE1QQzgyNjZBRFMgYm9hcmQgY29tcGlsZSBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSdW5ldCBUb3JnZXJzZW4gPHJ1bmV0QGlubm92c3lzLmNvbT4KCmNvbW1pdCAyNDkxMTY3YzI0NWQ4ZWJlNmYyZGJkOGM0Mjg3YWFhMGQxNGZlOTNhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyNyAxMjo0MTowMyAyMDA3IC0wNTAwCgogICAgODZ4eDogQWxsb3cgZm9yIGZld2VyIEREUiBzbG90cyBwZXIgbWVtb3J5IGNvbnRyb2xsZXIuCgogICAgQXMgYSBkaXJlY3QgY29ycmVsYXRpb24gZXhpc3RzIGJldHdlZW4gRERSIERJTU0gc2xvdHMKICAgIGFuZCBTUEQgRUVQUk9NIGFkZHJlc3NlcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGVtLCB1c2UKICAgIHRoZSBpbmRpdmlkdWFsbHkgZGVmaW5lZCBTUERfRUVQUk9NX0FERFJFU1MqIHZhbHVlcyB0bwogICAgZGV0ZXJtaW5lIGlmIGEgRERSIERJTU0gc2xvdCBzaG91bGQgaGF2ZSBpdHMgU1BECiAgICBjb25maWd1cmF0aW9uIHJlYWQgb3Igbm90LgoKICAgIEVmZmVjdGl2ZWx5LCB0aGlzIG5vdyBhbGxvd3MgZm9yIDEgb3IgMiBESU1NIHNsb3RzCiAgICBwZXIgbWVtb3J5IGNvbnRyb2xsZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDRhOTQ1ZTE4OWEyZjM4NGM2NjQzMjMxNmRhMjc4OGEwYWMxNjA3CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gT2N0IDE1IDExOjU5OjE3IDIwMDcgKzAyMDAKCiAgICBQWEEgVVNCIE9IQ0k6ICJ1c2Igc3RvcCIgaW1wbGVtZW50YXRpb24uCgogICAgU29tZSBVU0Iga2V5cyBuZWVkIHRvIGJlIHN3aXRjaGVkIG9mZiBiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsCiAgICBvdGhlcndpc2UgdGhleSBjYW4gcmVtYWluIGluIGFuIHVuZGVmaW5lZCBzdGF0dXMgd2hpY2ggcHJldmVudHMgdGhlbQogICAgdG8gYmUgY29ycmVjdGx5IHJlY29nbml6ZWQgYnkgdGhlIGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBlMmU5MzQ0MmU1NThjZjE1MDBlOTI4NjFmOTk3MTNiMmYwNDVlYTIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gT2N0IDE1IDExOjM5OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBidWcgaW4gSTJDIGJvb3RzdHJhcCB2YWx1ZXMgZm9yIFNlcXVvaWEvUmFpbmllcgoKICAgIFRoZSBJMkMgYm9vdHN0cmFwIHZhbHVlcyB0aGF0IGNhbiBiZSBzZXR1cCB2aWEgdGhlICJib290c3RyYXAiIGNvbW1hbmQsCiAgICB3ZXJlIHNldHVwIGluY29ycmVjdCByZWdhcmRpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGludGVybmFsIHN5bmMgUENJCiAgICBjbG9jay4gVGhlIHZhbHVlcyBmb3IgUExCIGNsb2NrID09IDEzM01IeiB3ZXJlIHNsaWdobHkgaW5jb3JyZWN0IGFuZCB0aGUKICAgIHZhbHVlcyBmb3IgUExCIGNsb2NrID09IDE2Nk1IeiB3ZXJlIHRvdGFsbHkgaW5jb3JyZWN0LiBUaGlzIGNvdWxkCiAgICBsZWFkIHRvIGEgaGFuZ3VwIHVwb24gYm9vdGluZyB3aGlsZSBQQ0kgY29uZmlndXJhdGlvbiBzY2FuLgoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBhbmQgY29uZmlndXJlcyB2YWxpZCBQQ0kgZGl2aXNvciB2YWx1ZXMKICAgIGZvciB0aGUgc3luYyBQQ0kgY2xvY2ssIHdpdGggcmVzcGVjdCB0byB0aGUgcHJvdmlkZWQgZXh0ZXJuYWwgYXN5bmMKICAgIFBDSSBmcmVxdWVuY3kuCgogICAgSGVyZSB0aGUgdmFsdWVzIG9mIHRoZSBmb3JtdWxhIGluIHRoZSBjaGFwdGVyIDE0LjIgIlBDSSBjbG9ja2luZyIKICAgIGZyb20gdGhlIDQ0MEVQeCB1c2VycyBtYW51YWw6CgogICAgQXN5bmNQQ0lDTEsgLSAxTUh6IDw9IFN5bmNQQ0lDbGsgPD0gKDIgKiBBc3luY1BDSUNsaykgLSAxTUh6CgogICAgMzNNSHogYXN5bmMgUENJIGZyZXF1ZW5jeToKICAgIFBMQiA9IDEzMzoKICAgID0+CSAgICAzMiA8PSA0NC4zIDw9IDY1CSAgICAoZGl2ID0gMykKCiAgICBQTEIgPSAxNjY6CiAgICA9PgkgICAgMzIgPD0gNTUuMyA8PSA2NQkgICAgKGRpdiA9IDMpCgogICAgNjZNSHogYXN5bmMgUENJIGZyZXF1ZW5jeToKICAgIFBMQiA9IDEzMzoKICAgID0+CSAgICA2NSA8PSA2Ni41IDw9IDEzMgkgICAgKGRpdiA9IDIpCgogICAgUExCID0gMTY2OgogICAgPT4JICAgIDY1IDw9IDgzIDw9IDEzMgkgICAgKGRpdiA9IDIpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDVhNTk1OGI3ZGU3MGFlOTlmMGU3Y2JkNWM5N2VjMTM0NmUwNTE1ODcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBPY3QgMTUgMTE6Mjk6MzMgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogRml4IGluY29ycmVjdCAzMy82Nk1IeiBQQ0kgY2xvY2sgbG9nLW1lc3NhZ2Ugb24gU2VxdW9pYSAmIFlvc2VtaXRlCgogICAgVGhlIEJDU1Igc3RhdHVzIGJpdCBmb3IgdGhlIDY2TUh6IFBDSSBvcGVyYXRpb24gd2FzIGNvcnJlY3RseQogICAgYWRkcmVzc2VkIChNU0IvTFNCIHByb2JsZW0pLiBOb3cgdGhlIGNvcnJlY3QgY3VycmVudGx5IHNldHVwCiAgICBQQ0kgZnJlcXVlbmN5IGlzIGRpc3BsYXllZCB1cG9uIGJvb3R1cC4KCiAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgdGhpcyBwcm9ibGVtIG9uIFJhaW5pZXIgJiBZZWxsb3dzdG9uZSwgc2luY2UgdGhlc2UKICAgIGJvYXJkcyB1c2UgdGhlIHNhbWUgc291Y2UgY29kZSBhcyBTZXF1b2lhICYgWW9zZW1pdGUgZG8uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRhM2FhZDU1Y2JkZTgwYWI2ZTMwMWFhZmE4MmEyYzQxMWFhNTNlZmYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJV2VkIFNlcCAyNiAxNzo1NTo1NiAyMDA3ICswMjAwCgogICAgVFFNODYwTTogYWRqdXN0IGZvciBkb3VibGVkIGZsYXNoIHNlY3RvciBzaXplLgoKICAgIEFkanVzdCBmbGFzaCBtYXAgdG8gc3VwcG9ydCB0aGUgbmV3IFMyOUdMeHhOIChOLVR5cGUpIEZsYXNoZXMgd2l0aAogICAgZG91YmxlZCBzZWN0b3Igc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA5ZDI5MjUwZTJlNjJmNGJmMjBjN2EyMGI0MTczZDg0YzQ4ZjExZjVkCkF1dGhvcjogSmVucyBHZWhybGVpbiA8amVucy5nZWhybGVpbkB0cXMuZGU+CkRhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTQgMjAwNyArMDIwMAoKICAgIFRRTTh4eDogRml4IENBTiB0aW1pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgZDQzZTQ4OWJhZjAyYWZhZTQ5MDc3NzkxZmIyMjMzMmQyNDBkODY1NgpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglUaHUgU2VwIDI3IDE0OjU0OjM2IDIwMDcgKzAyMDAKCiAgICBUUU04NjZNOiBmaXggU0RSQU0gcmVmcmVzaAoKICAgIEF0IDEzMyBNSHogdGhlIGN1cnJlbnQgU0RSQU0gcmVmcmVzaCByYXRlIGlzIHRvbyBmYXN0CiAgICAobWVhc3VyZWQgNCAqIDEuMTcgdXMpLgogICAgQ0ZHX01BTVJfUFRBIGNoYW5nZXMgZnJvbSAzOSB0byA5Ny4gVGhpcyByZXN1bHQKICAgIGluIGEgcmVmcmVzaCByYXRlIG9mIDQgKiA3LjggdXMgYXQgdGhlIGRlZmF1bHQgY2xvY2sKICAgIDUwIE1Iei4gQXQgMTMzIE1IeiB0aGUgdmFsdWUgd2lsbCBiZSB0aGVuIDQgKiAyLjkgdXMuCiAgICBUaGlzIGlzIGEgY29tcHJvbWlzZSB1bnRpbCBhIG5ldyBtZXRob2QgaXMgZm91bmQgdG8KICAgIGFkanVzdCB0aGUgcmVmcmVzaCByYXRlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgoKY29tbWl0IDllZjU3YmJlZTFjNjdjYzAxZGEyMDI2YzI0MmM0NjkyZGIzMmJlMzYKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJV2VkIFNlcCAyNiAxNzo1NTo1NSAyMDA3ICswMjAwCgogICAgVFFNODY2TTogYWRqdXN0IGZvciBkb3VibGVkIGZsYXNoIHNlY3RvciBzaXplLgoKICAgIEFkanVzdCBmbGFzaCBtYXAgdG8gc3VwcG9ydCB0aGUgbmV3IFMyOUdMeHhOIChOLVR5cGUpIEZsYXNoZXMgd2l0aAogICAgZG91YmxlZCBzZWN0b3Igc2l6ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCBmOGJmOTA0NjFkOWJhZDJlNmZlZDMxZmNlYmFmMjM1ZjYwZGQ2NzYzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTdW4gT2N0IDE0IDE2OjEyOjI5IDIwMDcgKzAyMDAKCiAgICBbRklYXSBYVVBWMlAgY2hhbmdlIGNvbW1hbmQgaGFuZGxpbmcKICAgIGFuZCByZW1vdmUgY29kZSB2aW9sYXRpb24KCmNvbW1pdCA2MzY0MDAxOTgyMjhkOTY5ODNjMDY2NTdiMTdmNzYwZjU5ODk5NThlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIE9jdCAxNCAwMDoxMzoxOSAyMDA3ICswMjAwCgogICAgUHJlcGFyZSBmb3IgMS4zLjAtcmMzIHJlbGVhc2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDY4ZjE0Zjc3Y2E1ZmU1ZjljYzAyNWM4Y2FlMTAxNjcxZjYyODMwOWYKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglTYXQgU2VwIDI5IDEzOjQxOjM3IDIwMDcgKzAyMDAKCiAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBjcHUvcHhhL21tYy5jCgogICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KCmNvbW1pdCBmYzE5ZTM2Zjc0MWU4YmM3MjdjMGEzMzAxNzBiM2I1ZGI5MDM5OWVmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAxMyAyMzo1MToxNCAyMDA3ICswMjAwCgogICAgRml4IHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MgaW4gYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkZTc0YjllZWFjY2NhZjBhNDJlNWVjYzlhZTc5YTg4ZjdhMzExMjk2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAxMyAyMToxNTozOSAyMDA3ICswMjAwCgogICAgQ29kaW5nIFN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMTg5MzgxNWIwOTk5NDEwZDdhMzI3NTg5NjExYzdiMzhlOTUyOTllCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAxMiAxNTo0OTozOSAyMDA3ICswMjAwCgogICAgR1AzIFNTQTogZW5hYmxlIFJUQwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODAwMjAxMjA0MWYxZmY5Zjk5N2E1NzI3YWJlNTAxNWY3MGNkMmU0NgpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgT2N0IDkgMTM6NTg6MjQgMjAwNyArMDIwMAoKICAgIFthZHM1MTIxXSBFRVBST00gc3VwcG9ydCBhZGRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3YjYyNGFkMjU0Yjk3ZTVhMjVkY2EyMzA0YTM5OGI2NGFlZWRhZmZlCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBPY3QgNiAxODo1NTozNSAyMDA3ICswMjAwCgogICAgQVZSMzI6IEluaXRpYWxpemUgYmlfZmxhc2gqIGluIGJvYXJkX2luaXRfcgoKICAgIFRoZSBBVFNUSzEwMDAtc3BlY2lmaWMgZmxhc2ggZHJpdmVyIGludGlhbGl6ZXMgYmlfZmxhc2hzdGFydCwKICAgIGJpX2ZsYXNoc2l6ZSBhbmQgYmlfZmxhc2hvZmZzZXQsIGJ1dCBvdGhlciBmbGFzaCBkcml2ZXJzLCBsaWtlIHRoZSBDRkkKICAgIGRyaXZlciwgZG9uJ3QuCgogICAgSW5pdGlhbGl6ZSB0aGVzZSBpbiBib2FyZF9pbml0X3IgaW5zdGVhZCBzbyB0aGF0IHRoaW5ncyB3aWxsIHN0aWxsIGJlCiAgICBzZXQgdXAgY29ycmVjdGx5IHdoZW4gd2Ugc3dpdGNoIHRvIHRoZSBDRkkgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJiMmE1ODdkNmQzMDc2Mzg3ZDIyYWM3NDBmNDQwNDRiZjQ2ZTJjYjgKQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgT2N0IDUgMTA6NDA6NTQgMjAwNyArMDIwMAoKICAgIHRxbTUyMDA6IEZpeCBDT05GSUdfQ01EX1BDSSB0eXBvIGluIGJvYXJkIGNvbmZpZyBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgOTI4NjkxOTVlZjgyMTA3NThkMjE3NjIzMGMwYTM2ODk3YWZkNTBlZApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBPY3QgNSAwOTo0NjowNiAyMDA3ICswMjAwCgogICAgQ001MjAwOiBGaXggbWlzc2luZyBudWxsLXRlcm1pbmF0aW9uIGluIGhvc3RuYW1lIG1hbmlwdWxhdGlvbiBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5YWRkOTg4NGIxZmRkYzM0Y2ExODZlMDBhMmY4NjhjY2Q1ZDAyZDg3CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVR1ZSBPY3QgMiAxOTowOTowMSAyMDA3ICswMjAwCgogICAgRml4IG1lbXRlc3QgYnJlYWthZ2UKCiAgICBDRkdfTUVNVEVTVF9TVEFSVCB1c2VzIHdlaXJkIG1hZ2ljIGludm9sdmluZyBnZCwgd2hpY2ggZmFpbHMgdG8KICAgIGNvbXBpbGUuIFVzZSBoYXJkY29kZWQgdmFsdWVzIGluc3RlYWQgKHdlIGFjdHVhbGx5IGtub3cgaG93IG11Y2ggUkFNCiAgICB3ZSBoYXZlIG9uIGJvYXJkLikKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCA3Mzg4MTVjMGNjNDRhYTMyOTA5N2Y4NjhkYzFlZmM0OWVkZTljNWJhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDIgMTE6NDQ6NDYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODdjMTgzM2EzOWU5NDRkYjY2Mzg1Mjg2ZmQ1ZTI4ZjliM2ZjZGQ1MApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyIDExOjQ0OjE5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IGx3bW9uNTogUmVtb3ZlIHdhdGNoZG9nIGZvciBub3csIHNpbmNlIG5vdCBmdWxseSB0ZXN0ZWQgeWV0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJkYjY0Nzg0MDYxYmZjMzRmNGJhNzBlZjFkMmZiZTcxMzNiNTU2NzAKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE9jdCAxIDA5OjUxOjUwIDIwMDcgKzAyMDAKCiAgICBQcm9ncmFtIEVQTEQgdG8gZm9yY2UgZnVsbCBkdXBsZXggbW9kZSBmb3IgUEhZLgoKICAgIEVQTEQgZm9yY2VzIG1vZGVzIG9mIFBIWSBvcGVyYXRpb24uIEJ5IGRlZmF1bHQgZnVsbCBkdXBsZXggaXMgdHVybmVkIG9mZi4KICAgIFRoaXMgZml4IHR1cm5zIGl0IG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDc4NWMxMzQ3N2I3N2RjZDJlNmM1MTI4ZmZmY2RiNGUxOTQzZjQ4MTgKQXV0aG9yOiBUaW1vIEtldG9sYSA8dGltby5rZXRvbGFAZXhlcnR1cy5maT4KRGF0ZToJTW9uIFNlcCAyNCAxNDo1MDozMiAyMDA3ICswMzAwCgogICAgQnVnZml4OiBVc2Ugb25seSBvbmUgUFREIGZvciBvbmUgZW5kcG9pbnQKCiAgICBPcmlnaW5hbCBpc3AxMTZ4LWhjZCBjb2RlIHByZXBhcmVkIG11bHRpcGxlIFBURHMgZm9yIGxvbmdlciB0aGFuIDE2CiAgICBieXRlIHRyYW5zZmVycyBmb3Igb25lIGVuZHBvaW50LiBUaGF0IGlzIHVubmVjZXNzYXJ5IGJlY2F1c2UgdGhlCiAgICBJU1AxMTZ4IGlzIGFibGUgdG8gc3BsaXQgbG9uZyBkYXRhIGZyb20gb25lIFBURCBpbnRvIG11bHRpcGxlCiAgICB0cmFuc2FjdGlvbnMgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBlbmRwb2ludC4gSXQgYWxzbyBjYXVzZWQKICAgIHNlcmlvdXMgcHJvYmxlbXMgaWYgdGhlIGVuZHBvaW50IE5BS2VkIHNvbWUgb2YgdGhlIHRyYW5zYWN0aW9ucy4gSW4KICAgIHRoYXQgY2FzZSBJU1AxMTZ4IHdvdWxkbid0IG5vdGljZSB0aGF0IHRoZSBvdGhlciBQVERzIHdlcmUgZm9yIHRoZSBzYW1lCiAgICBlbmRwb2ludCBhbmQgd291bGQgdHJ5IHRoZSBvdGhlciBQVERzIHBvc3NpYmx5IG91dCBvZiBvcmRlci4gVGhhdCB3b3VsZAogICAgYnJlYWsgdGhlIHdob2xlIHRyYW5zZmVyLgoKICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXNwMTE2eF9zdWJtaXRfam9iIHRvIHVzZSBvbmUgUFREIGZvciBvbmUgdHJhbnNmZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltbyBLZXRvbGEgPHRpbW8ua2V0b2xhQGV4ZXJ0dXMuZmk+CiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgoKY29tbWl0IDg2ZWM4NmMwNDMyNmMzOTEzMTc4YTc2NzlhYTkxMGRlMDcxZGE3NWQKQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgpEYXRlOglUaHUgU2VwIDI3IDIzOjI3OjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggbWlzc2luZyBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiBvbiBDT05GSUdfTFBDMjI5MiBpbiBzZXJpYWwKCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgoKY29tbWl0IDNlOTU0YmViNjE0YjViMTkwZDdmNGY0YzNiNjQxNDM3YTAxMzJlMzUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBTZXAgMTEgMTQ6MTI6NTUgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogbHdtb241OiBDaGFuZ2UgR1BJTyA1OCB0byBkZWZhdWx0IHRvIGxvdyAod2F0Y2hkb2cgdGVzdCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQ4N2FkYmRjZjk1OTRiYjJlYjY4NjMyNWE2Zjk1NDBkYWQxYjcwYQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBTZXAgMjYgMTY6MzU6NTQgMjAwNyAtMDUwMAoKICAgIDg1eHggaW8gb3V0IGZ1bmN0aW9ucyBuZWVkIHN5bmMgYWZ0ZXIgd3JpdGUuCgogICAgVGhpcyBmaXhlcyB0aGUgbWMxNDY4MTggcnRjX3JlYWQvd3JpdGUgZnVuY3Rpb25zIGZvciA4NXh4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGQzOGVmZmM2ZTM1OWU2YjFiMGM3OGQ2NmU4YmMxYTRkYzE1YTJhZQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIFNlcCAyNSAxNTo0ODowNSAyMDA3IC0wNjAwCgogICAgRnBnYTogZml4IGluY29ycmVjdCB0ZXN0IG9mIENGR19GUEdBX1hJTElOWCBtYWNybwoKICAgIENGR19GUEdBX1hJTElOWCBpcyBhIGJpdCB2YWx1ZSB1c2VkIHRvIHRlc3QgYWdhaW5zdCB0aGUgdmFsdWUgaW4KICAgIENPTkZJR19GUEdBLiAgVGVzdGluZyBmb3IgYSB2YWx1ZSB3aWxsIGFsd2F5cyByZXR1cm4gVFJVRS4JSSBkb24ndAogICAgdGhpbmsgdGhhdCBpcyB0aGUgaW50ZW50aW9uIGluIHRoaXMgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgODUzNjQzZDhjZjJjYTgwY2IyZTI1YzUzYWQ1ZGM1ODBhYmFmZTE2NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDo0MTozMCAyMDA3ICswMjAwCgogICAgW0ZJWF0gY2hhbmdlIGNvbW1hbmQgaGFuZGxpbmcgYW5kIHJlbW92aW5nIGNvZGUgdmlvbGF0aW9uCgpjb21taXQgZjI0MDM1NjUwNzAzOGU1Y2U1NWU4YTI0Y2IyNjA3ZTllYWU2ZDEwYwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDozNjowNiAyMDA3ICswMjAwCgogICAgW0ZJWF0gY2hhbmdlIHNldHMgb2YgY29tbWFuZHMKICAgIGJlY2F1c2UgY2hhbmdpbmcgb2YgY29tbWFuZCBoYW5kbGluZyBicmluZ3MKICAgIGNvbXBpbGF0aW9uIHByb2JsZW1zCgpjb21taXQgY2IxYmM2M2I3NWEyMzI1NzFlYjY5YWEyYzhhYTkxOTMyMTY1NTg0NQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDozMDo0MiAyMDA3ICswMjAwCgogICAgW0ZJWF0gRW1haWwgcmVwYXJhdGlvbiAmIENvcHlyaWdodAogICAgQm90aCBjb2RlcyBhcmUgd3JpdHRlbiBieSBteXNlbGYgd2l0aG91dCBhbnkKICAgIHN1cHBvcnQgZnJvbSBDVFUKCmNvbW1pdCAwNzMxY2JhZTZjMmZlYWI5M2IyNDRkODNmZDZhNDNmNWNjOWJmODUyCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjI1OjExIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBtYWNybyBuYW1lIGZvciBVYXJ0TGl0ZQogICAgYmVjYXVzZSBQb3dlclBDIDQwNSBjYW4gdXNlIFVhcnRMaXRlIGFzIGNvbnNvbGUKCmNvbW1pdCAxYzExMDBkMmZjZjQ2YjlkMTFkY2Y3OGQ2ZTVhZWE3NWUyZThiNzE2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjIxOjE5IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBkZXNpZ24gd2l0aG91dCBpbnRlcnJ1cHQgY29udHJvbGxlcgogICAgUG9sbGluZyB0aW1lcgoKY29tbWl0IDA3MzE5MzNlYzhlYzQ1ZDAyYmE4OWI1MmRmNjczZDUyNjg3M2NkZGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBTZXAgMjQgMDA6MTk6NDggMjAwNyArMDIwMAoKICAgIFtGSVhdIHJlc29sdmUgcHJvYmxlbSB3aXRoIGNwdSB3aXRob3V0IGJhcnJlbCBzaGlmdGVyCgpjb21taXQgZGIxNGQ3Nzk5NWNlNTE1YjcyOGIxNzhiNjNmODJiYWJlNjBlM2Q1NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIFNlcCAyNCAwMDoxODo0NiAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVwYWlyIGVtYWlsIGFkZHJlc3MKCmNvbW1pdCA0ODFkNDMyODYxODgwNGFkZDFmODE4YTZjOTYyOTYxMjFjZDA1MjhlCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gU2VwIDI0IDAwOjE3OjQyIDIwMDcgKzAyMDAKCiAgICBbRklYXSByZXBhaXIgTUZTTCBjb21tYW5kcwoKY29tbWl0IGI5MGMwNDVmMDM1YzNjYzliNWQyZWRhZWQ2MDQ4ZGZiNzRlNDA3NjMKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBTZXAgMjQgMDA6MDg6MzcgMjAwNyArMDIwMAoKICAgIHN5bmNocm9uaXppdGlvbiB3aXRoIG1haW5saW5lCgpjb21taXQgZWRhM2UxZTY2MTlhZDBiZWU5NGFlNGIxNmM5OWQ4OGU3N2UyYWYxMwpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjo0MjozOCAyMDA3ICswOTAwCgogICAgc2g6IEFkZCBzdXBwb3J0IGNvbW1hbmQgb2YgaWRlIHdpdGggc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgZDkxZWE0NWQxNWNmOGUwOTg3NDU2YmQyMTFmZmJiNjUwODI0YjZmMQpBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjozODo0MiAyMDA3ICswOTAwCgogICAgc2g6IFVwZGF0ZSBNYWtlZmlsZQoKICAgIEFkZCBzdXBwb3J0IE1TNzcyMlNFMDEgdG8gTWFrZWZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IDZjMGJiZGNjZDM3OWY1Yzg3MDJhZjllMDc2NTI5NGMyZmI3NDcyYTYKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBTZXAgMjMgMDI6MzE6MTMgMjAwNyArMDkwMAoKICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIHNoNzcyMiBwcm9jZXNzb3IgYW5kIEhpdGFjaGkgTVM3NzIyU0UwMSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwNDczNzViZmE0YzMwNTJmYTUwYTc0OGRhN2ZmODllOWRhZDNiMzY0CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpEYXRlOglTdW4gU2VwIDIzIDAyOjE5OjI0IDIwMDcgKzA5MDAKCiAgICBzaDogVXBkYXRlIE1TNzc1MFNFMDEgcGxhdGZvcm0KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNTE2YWQ3NjBkYjM1NTM3NjYyNjdhZGEwMWI3ZDVkNzI3ZmFhNGJiZApBdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KRGF0ZToJU3VuIFNlcCAyMyAwMjoxNzowOCAyMDA3ICswOTAwCgogICAgc2g6IFJlbW92ZSBjb21tZW50IG91dCBjb2RlIGZyb20gaW5jbHVkZS9hc20tc2gvY3B1X3NoNC5oCgogICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgoKY29tbWl0IGIwMmJhZDEyODY2OWU1NjdmY2U4N2Q4ZGY4MjNiMDZhMDE0NGI4ZGIKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CkRhdGU6CVN1biBTZXAgMjMgMDI6MTI6MzAgMjAwNyArMDkwMAoKICAgIHNoOiBVcGRhdGUgY29yZSBjb2RlIG9mIFN1cGVySC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Cgpjb21taXQgNjZkY2FkM2E5YTUzZTA3NjZkOTBlMDA4NDEyM2JkODUyOTUyMmZiMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBTZXAgMjAgMDA6MDQ6MTQgMjAwNyArMDIwMAoKICAgIHYxLjMuMC1yYzIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDEzNWUxOWJjMjc3M2ViY2E0ODdlOWE4MzcxZjY3ZTFiYTIwMjMxM2EKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDE4IDIxOjM2OjM1IDIwMDcgKzAyMDAKCiAgICBBdm9pZCBjb21waWxlciB3YXJuaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGE3ODNhNjU4NTFiYzc0MjFhYjY5ZjQ0MjI2MTIxNWUyMWI4ODkxYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIFNlcCAxOCAxMjoyNDo1NyAyMDA3IC0wNjAwCgogICAgQnVnZml4OiByZW1vdmUgZW1iZWRkZWQgbnVsbCAoXDApIGZyb20gQ0ZHX0JPT1RGSUxFIG1hY3JvIGluIFRRTTg1NDBfY29uZmlnCgogICAgL2Jpbi9iYXNoIGFuZCAvYmluL2Rhc2ggKHdoaWNoIC9iaW4vc2ggaXMgbGlua2VkIHRvIG9uIHVidW50dSkgaGFuZGxlIGVtYmVkZGVkCiAgICBudWxscyBpbiBhIHN0cmluZyBkaWZmZXJlbnRseS4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKCWVjaG8gInRoaXMgaXMgYSBzdHJpbmdcMCIgPiBhZmlsZQogICAgV2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgd2l0aCAvYmluL2Jhc2g6CgkidGhpcyBpcyBhIHN0cmluZ1wwIgogICAgQnV0IHdpdGggL2Jpbi9kYXNoLCB3aWxsIHByb2R1Y2U6CgkidGhpcyBpcyBhIHN0cmluZwoKICAgIEJ1ZyBmaXhlZCBieSBtb3ZpbmcgdGhlIGVtYmVkZGVkIG51bGwgb3V0IG9mIHRoZSBtYWtlZmlsZSBhbmQgaW50byB0aGUKICAgIGNvbmZpZyBoZWFkZXIuICBBbHNvIHJlbmFtZWQgdGhlIG1hY3JvIHRvIGF2b2lkIHVzYWdlIGNvbGlzaW9uIHdpdGggdGhlIHNhbWUKICAgIG1hY3JvIHVzZWQgYnkgb3RoZXIgYm9hcmQgcG9ydHMuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGY4ZDNjYTdiNmZhMzIyYWM1N2U4ZTgzMWYwN2RiZWVhMDM5YTlmMzUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgU2VwIDE4IDE3OjQwOjI3IDIwMDcgKzAyMDAKCiAgICBNQ0MyMDA6IGZpeCBidWlsZCB3YXJuaW5nCgogICAgVGhlIE1DQzIwMCBib2FyZCBjb25maWcgZmlsZSBpbmNsdWRlcyB2ZXJzaW9uLmggZm9yIHNvbWUgY3VzdG9tZXItCiAgICBzcGVjaWZpYyBzZXR0aW5nLCB3aGljaCBjYXVzZXMgd2FybmluZ3Mgd2l0aCAibWFrZSBkZXBlbmQiOyBidWlsZAogICAgdmVyc2lvbi5oIGJlZm9yZSBkZXBlbmQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiZDg2MjIwZjU4Yjk5ZDY4OTYxOThjMzg1ZmRhMTMyZjBjOTgwOTE1CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCAxOCAxMzowNzo1NCAyMDA3ICswMTAwCgogICAgTW92ZSBjb2xvdXJlZCBsZWQgQVBJIHRvIHN0YXR1c19sZWQuaAogICAgSW1wcm92ZSBpbmRlbnRhdGlvbiBpbiBkcml2ZXJzL2F0NDUuYwoKY29tbWl0IGU4MGU1ODViMDBmYmJhYjdhZDFiZjcxNjE5NzQxZjJjNWIwMjlhYjcKQXV0aG9yOiBFaXJpayBBYW5vbnNlbiA8ZWFhQHdwcm1lZGljYWwuY29tPgpEYXRlOglUdWUgU2VwIDE4IDA4OjQ3OjIwIDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgYXRzdGsxMDAyIGJvb3RhcmdzLgoKICAgIFVwZGF0ZXMgdG8gYXRzdGsxMDAyIFUtQm9vdCBoZWFkZXIgZmlsZToKICAgIC0gQ2hhbmdlZCBib290YXJnczoKCSogU2V0IHRoZSBib290YXJncyBmb3IgYXQxMDAyIHRvIHBvaW50IHRvIHRoZSBTRC1jYXJkIHBhcnRpdGlvbiBpbnN0ZWFkCgkqIC4uLiBvZiB0aGUgYm9vdCBmbGFzaC4KCSogUmVtb3ZpbmcgdGhlIHJvb3Rmc3R5cGUgc2luY2UgdGhhdCBhcmd1bWVudCBhcmUgbm90IG5lZWRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFaXJpayBBYW5vbnNlbiA8ZWFhQHdwcm1lZGljYWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYTRmM2FhYjZkZmJlZDZjMjkzNjdjNjg4YmZiOGE0N2VlZjYyYzIyNQpBdXRob3I6IEVpcmlrIEFhbm9uc2VuIDxlYWFAd3BybWVkaWNhbC5jb20+CkRhdGU6CVdlZCBTZXAgMTIgMTM6MzI6MzcgMjAwNyArMDIwMAoKICAgIEFkZCBzb21lIGNvbW1lbnRzIHRvIGNsb2NrcyBpbiBhdHN0azEwMDIuaAoKICAgIFRoaXMgcGF0Y2ggYXBwbGllcyBzb21lIGNsYXJpZnlpbmcgY29tbWVudHMgdG8gaG93IHRoZSBkaWZmZXJlbnQKICAgIGNsb2NrcyBhcmUgc2V0dXAgYWNjb3JkaW5nIHRvIGF0c3RrMTAwMi5oIFNvbWUgb2YgdGhlIHByZXZpb3VzCiAgICBjb21tZW50cyB3aGVyZSBzdGF0aW5nIHdyb25nZnVsIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDk3MjEzZjMyNDE2ZWFkODg1ZGVhZmVhODY3NzRlOTEyZmZkNjBhZDAKQXV0aG9yOiBEYXZpZCBTYWFkYSA8RGF2aWQuU2FhZGFAZWNpdGVsZS5jb20+CkRhdGU6CU1vbiBTZXAgMTcgMTc6MDQ6NDcgMjAwNyArMDIwMAoKICAgIERlc2NyaXB0aW9uOiBBZGQgTkVDJ3MgUENJIE9IQ0kgbW9kdWxlIElEIHRvIHRoZSBVU0IgT0hDSSBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+Cgpjb21taXQgMzAzNjNlOThmYTQ3MGZiZWNlYTVlOGJjMGYxNDQzMzUyNzU0ZjMwMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxNyAwODoyMDo0NyAyMDA3ICswMjAwCgogICAgU21hbGwgd2hpdGVzcGFjZSBjbGVhbnVwIG9mIE9uZU5BTkQgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDdlOGNlMTAxYTRhNDVlZDZlZDQ1NzM5ZmMyZGU1Zjg3YjEzZjdmMQpBdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgpEYXRlOglNb24gU2VwIDEwIDE3OjE1OjE0IDIwMDcgKzA5MDAKCiAgICBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCgogICAgW1BBVENIIDMvM10gT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQoKICAgIE9uZU5BTkQgc3VwcG9ydCBhdCBVLUJvb3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDE3YWEyODAwNDU3ZGYwYzA2YjQxNTE2ZjQ2ZjEyNjcxMmMxOTYyMTkKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIFNlcCAxMCAxNzoxNDozNCAyMDA3ICswOTAwCgogICAgT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQoKICAgIFtQQVRDSCAyLzNdIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKCiAgICBPbmVOQU5EIHN1cHBvcnQgYXQgVS1Cb290CgogICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KCmNvbW1pdCA5MTY1MjdmNDgwOWE3YmNkODExZjFmMWRhZjM0YWYxODRlMzFkZDhjCkF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+CkRhdGU6CU1vbiBTZXAgMTAgMTc6MTM6NDkgMjAwNyArMDkwMAoKICAgIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKCiAgICBbUEFUQ0ggMS8zXSBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCgogICAgT25lTkFORCBzdXBwb3J0IGF0IFUtQm9vdAoKICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Cgpjb21taXQgYjQ5YzkwZGY2ZTdjZmNmYjhiODYyYjhiYmY4NDQ4ZGZmNWVlZDlhNQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIFNlcCAxNiAyMDo1MTo1NyAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVtb3ZlIGZpbGVzIGZvcm0gcmVwb3NpdG9yeQoKY29tbWl0IDY3YzMxMDM2YWNhYWFhOTkyZmMzNDZjYzg5ZGIwOTA5YTdlNzMzYzQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDE2IDE3OjEwOjA0IDIwMDcgKzAyMDAKCiAgICBUUU04eHhbTE1dOiBGaXggYnJva2VuIGVudmlyb25tZW50IGFsaWdubWVudC4KCiAgICBXaXRoIHJlY2VudCB0b29sY2hhaW5zLCB0aGUgZW52aXJvbm1lbnQgc2VjdG9ycyB3ZXJlIG5vIGxvbmdlciBhbGlnbmVkIHRvCiAgICBzZWN0b3IgYm91bmRhcmllcy4gVGhlIHJlYXNvbiB3YXMgYSBjb21iaW5hdGlvbiBvZiB0d28gYnVnczoKCiAgICAxKSBjb21tb24vZW52aXJvbm1lbnQuYyBhc3N1bWVkIHRoYXQgQ09ORklHX1RRTTh4eEwgd291bGQgYmUgZGVmaW5lZAogICAgICAgZm9yIGFsbCBUUU04eHhMIGFuZCBUUU04eHhNIGJvYXJkcy4gQnV0ICJpbmNsdWRlL2NvbW1vbi5oIiwgd2hlcmUKICAgICAgIHRoaXMgZ2V0cyBkZWZpbmVkLCBpcyBub3QgaW5jbHVkZWQgaGVyZSAoYW5kIGNhbm5vdCBiZSBpbmNsdWRlZAogICAgICAgd2l0aG91dCBjYXVzaW5nIGxvdHMgb2YgcHJvYmxlbXMpLgoKICAgICAgIEFkZGVkIGEgbmV3ICNkZWZpbmUgQ0ZHX1VTRV9QUENFTlYgZm9yIGFsbCBib2FyZHMgd2hpY2ggcmVhbGx5CiAgICAgICB3YW50IHRvIHB1dCB0aGUgZW52aXJvbm1lbnQgaXMgYSAiLnBwY2VudiIgc2VjdGlvbi4KCiAgICAyKSBUaGUgbGlua2VyIHNjcmlwdHMganVzdCBpbmNsdWRlIGVudmlyb25tZW50Lm8sIHNpbGVudGx5IGFzc3VtaW5nCiAgICAgICB0aGF0IHRoZSBvYmplY3RzIGluIHRoYXQgZmlsZSBhcmUgcmVhbGx5IGluIHRoZSBvcmRlciBpbiB3aGljaAogICAgICAgdGhleSBhcmUgY29kZWQgaW4gdGhlIEMgZmlsZSwgaS4gZS4gImVudmlyb25tZW50IiBmaXJzdCwgdGhlbgogICAgICAgInJlZHVuZGFuZF9lbnZpcm9ubWVudCIsIGFuZCAiZW52X3NpemUiIGxhc3QuIEhvd2V2ZXIsIGN1cnJlbnQKICAgICAgIHRvb2xjaGFpbnMgKEdDQy00LngpIHJlb3JkZXIgdGhlIG9iamVjdHMsIGNhdXNpbmcgdGhlIGVudmlyb25tZW50CiAgICAgICBkYXRhIG5vdCB0byBzdGFydCBvbiBhIGZsYXNoIHNlY3RvciBib3VuZGFyeToKCiAgICAgICBJbnN0ZWFkIG9mOgkJCQkJd2UgZ290OgoKCTQwMDA4MDAwIFQgZW52aXJvbm1lbnQJCQk0MDAwODAwMCBUIGVudl9zaXplCgk0MDAwYzAwMCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAk0MDAwODAwNCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAoJNDAwMTAwMDAgVCBlbnZfc2l6ZQkJCTQwMDBjMDA0IFQgZW52aXJvbm1lbnQKCiAgICAgICBOb3RlOiB0aGlzIHBhdGNoIGZpeGVzIGp1c3QgdGhlIGZpcnN0IHBhcnQsIGFuZCBjdXJlcyB0aGUgYWxpZ25tZW50CiAgICAgICBwcm9ibGVtIGJ5IG1ha2luZyBzdXJlIHRoYXQgImVudl9zaXplIiBnZXRzIHBsYWNlZCBjb3JyZWN0bHkuIEhvd2V2ZXIsCiAgICAgICB3ZSBzdGlsbCBoYXZlIGEgcG90ZW50aWFsIGlzc3VlIGJlY2F1c2UgcHJpbWFyeSBhbmQgcmVkdW5kYW50CiAgICAgICBlbnZpcm9ubWVudCBzZWN0b3JzIGFyZSBhY3R1YWxseSBzd2FwcGVkLCBpLiBlLiB3ZSBoYXZlIG5vdzoKCgk0MDAwODAwMCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAoJNDAwMGMwMDAgVCBlbnZpcm9ubWVudAoJNDAwMTAwMDAgVCBlbnZfc2l6ZQoKICAgICAgIFRoaXMgc2hhbGwgYmUgZml4ZWQgaW4gdGhlIG5leHQgdmVyc2lvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGViNmRhODA1MDc5N2MyMDRjOWQwMTA1NDg0MjQxODZjN2NlMzJmYzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDE2IDAyOjM5OjM1IDIwMDcgKzAyMDAKCiAgICBUUU04eHgvRlBTOHh4OiBhZGp1c3QgZmxhc2ggcGFydGl0aW9ucyBmb3IgMi42IEFSQ0g9cG93ZXJwYyBrZXJuZWxzCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBjZDJkMTYwMmM1NGNjNjk1N2JkZWYzODcyMjcyYTRiMjY0ODkzOTYwCkF1dGhvcjogdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20gPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgpEYXRlOglNb24gU2VwIDEwIDE0OjU0OjU2IDIwMDcgLTA0MDAKCiAgICBUeXBvIGZpeCBpbiB0c2VjLmMKCiAgICBGaXh1cCBmb3IgdGhlIGJyZWFrIHN0YXRlbWVudCBpbiB3cm9uZyBwbGFjZS4KCiAgICBbUGF0Y2ggYnkgdXJ3aXRoc3VnaG9zaEBnbWFpbC5jb21dCiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieToJV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YmQ3ZmU5YWViNzY5MDYzNzFmNDBiOGZkMDc2MTNmMTA5MjJlM2U3CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBTZXAgMTEgMTc6MDQ6MDAgMjAwNyArMDIwMAoKICAgIEZpeCBkb19kaXYoKSB1c2FnZSBpbiBuYW5kIHByb2Nlc3Mgb3V0cHV0CgogICAgRml4IHVzYWdlIG9mIGRvX2RpdigpIGluIG5hbmQgZXJhc2V8cmVhZHx3cml0ZSBwcm9jZXNzIG91dHB1dC4KCiAgICBUaGUgbGFzdCBwYXRjaCB0byBuYW5kX3V0aWwuYyBpbnRyb2R1Y2VkIGRvX2RpdigpIGluc3RlYWQgb2YgbGliZ2NjJ3MKICAgIGltcGxlbWVudGF0aW9uLiBCdXQgZG9fZGl2KCkgcmV0dXJucyB0aGUgcXVvdGllbnQgaW4gaXRzIGZpcnN0CiAgICBtYWNybyBwYXJhbWV0ZXIgYW5kIG5vdCBhcyByZXN1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYzc1MGQyZTY2OTJhMDAwYTgyZjI5ZGU3YmYyNGUzZGMyMTIzOTE2MQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgU2VwIDEyIDEyOjM2OjUzIDIwMDcgKzAyMDAKCiAgICBOQU5EOiBBZGQgQ0ZHX05BTkRfUVVJRVQgb3B0aW9uCgogICAgVGhpcyBjb25maWcgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQgZm9yIHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbgogICAgb3V0cHV0IGJlaGF2aW9yIHRoYXQgY2FuIGFsc28gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSAncXVpZXQnCiAgICBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCiAgICBUaGUgbGVnYWN5IE5BTkQgY29kZSBkb2VzIG5vdCBwcmludCB0aGUgY3VycmVudCBwcm9ncmVzcyBpbmZvCiAgICBvbiB0aGUgY29uc29sZS4gU28gdGhpcyBvcHRpb24gaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yCiAgICB1bml0cyB0aGF0IGFyZSBpbiB0aGUgZmllbGQgYW5kIHdoZXJlIHNldHRpbmcgdGhlIHF1aWV0IHZhcmlhYmxlCiAgICBpcyBub3QgYW4gb3B0aW9uLiBXaXRoIENGR19OQU5EX1FVSUVUIHNldCB0byAnMScgdGhlIGNvbnNvbGUKICAgIHByb2dyZXNzIGluZm8gaXMgdHVybmVkIG9mZi4gVGhpcyBjYW4gc3RpbGwgYmUgb3ZlcndyaXR0ZW4KICAgIHRocm91Z2ggdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IGRjYjg4NjMwMjkwZDJiY2Q4MDMzODZkZDRjMmJlNzMxNDI5OTRjNGYKQXV0aG9yOiBMaWV3IFRzaSBDaHVuZy1yNWFhaHAgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MDY6MDUgMjAwNyAtMDcwMAoKICAgIENvbGRGaXJlOiBmaXggYnVpbGQgZXJyb3IgYmVjYXN1ZSBvZiBiYWQgdHlwZSBvZiBtaWlfaW5pdCgpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDMxNGQ1YjZjZTUyYTRlZDE5ZGQyOTVkMTM2NGUyNDZjNWU2MDUwMTcKQXV0aG9yOiBMaWV3IFRzaSBDaHVuZy1yNWFhaHAgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MDQ6MDUgMjAwNyAtMDcwMAoKICAgIENvbGRGaXJlOiBGaXggYnVpbGQgZXJyb3IgY2F1c2VkIGJ5IHBpeGlzLmMKCiAgICBNb3ZlZCB0aGUgI2luY2x1ZGUgPGFzbS9jYWNoZS5oPiBpbnNpZGUgdGhlICNpZmRlZiBDT05GSUdfRlNMX1BJWElTLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMjE2NTllMzA2NjBhMTM3N2M0MmFmMTM1YTYxMTRlZmUzOTgwMWQ5CkF1dGhvcjogU2FtIFNwYXJrcyA8U1NwYXJrc0B0d2Fjcy5jb20+CkRhdGU6CUZyaSBTZXAgMTQgMTE6MTQ6NDIgMjAwNyAtMDYwMAoKICAgIFVwZGF0ZSBNUEM4MzQ5SVRYKl9jb25maWcgdG8gcGxhY2UgY29uZmlnLnRtcCBpbiByaWdodCBwbGFjZS4KCiAgICBNUEM4MzRJVFgqX2NvbmZpZyBkb2VzIG5vdCBzdG9yZSBjb25maWcudG1wIGF0IHRoZSBjb3JyZWN0IGxvY2F0YXRpb24sCiAgICBjYXVzaW5nIE1QQzgzNDlJVFhHUCB0byBoYXZlIHRoZSB3cm9uZyBURVhUX0JBU0UuCgogICAgU2lnbmVkLW9mZi1ieTogU2FtIFNwYXJrcyA8U1NwYXJrc0B0d2Fjcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMTIxOGFiZjFiNTgxN2EzOWE4MjM5OWI0YjkyOGIwMDc1MDU3NWJkYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVNhdCBTZXAgMTUgMjA6NDg6NDEgMjAwNyArMDIwMAoKICAgIEZpeCBjYXNlcyB3aGVyZSBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiB3YXMgbm90IGRlY2xhcmVkIGFzIGdsb2JhbAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjZiM2YyNGQ2NjViZTY3OGE5ZGJiMTI1YjFlODQxODU0MDBmNjNiNQpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVNhdCBTZXAgMTUgMTE6NTU6NDIgMjAwNyArMDIwMAoKICAgIE1ha2UgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgZ2xvYmFsIGZvciBEYVZpbmNpCgogICAgQXMgZGlzY3Vzc2VkIGluIFsxXSwgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgaGFzIHRvIGJlIGdsb2JhbCBhbmQgbm90CiAgICBmdW5jdGlvbiBsb2NhbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KCiAgICBbMV0gaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC8zMTgwNQoKY29tbWl0IDk5MWIwODlkMWNlNWFkOTQ1NzI1ZTM2NTdhOGYxMDZkZmEwMmEzOGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBTZXAgMTUgMDA6MDM6MzUgMjAwNyArMDIwMAoKICAgIFN5bmNocm9uaXplIHdpdGggVS1CT09UIG1haW5saW5lCgpjb21taXQgZDdmZWUzMmI3ZTYxZmUxMWM2NGUzNzFjZGU3OWZhYTQ3NjhlODM1MApBdXRob3I6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgpEYXRlOglGcmkgU2VwIDE0IDExOjE0OjQyIDIwMDcgLTA2MDAKCiAgICBVcGRhdGUgTVBDODM0OUlUWCpfY29uZmlnIHRvIHBsYWNlIGNvbmZpZy50bXAgaW4gcmlnaHQgcGxhY2UuCgogICAgTVBDODM0SVRYKl9jb25maWcgZG9lcyBub3Qgc3RvcmUgY29uZmlnLnRtcCBhdCB0aGUgY29ycmVjdCBsb2NhdGF0aW9uLAogICAgY2F1c2luZyBNUEM4MzQ5SVRYR1AgdG8gaGF2ZSB0aGUgd3JvbmcgVEVYVF9CQVNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2ZTdiN2I2ZWExYjZkMDRkYmU5NjI0MmViNmEwYzFjNjY0Yzk4ZThjCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IFNlcCAxMyAxODoyMTo0OCAyMDA3ICswMjAwCgogICAgY201MjAwOiBGaXggYSB0eXBvIGludHJvZHVjZWQgYnkgYWZhYWM4NmZlMjk0OGFjODRjZDlhMTJiYmVkODgzYjNjNjgzZTdkOQoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Cgpjb21taXQgZTFmNjAxYjU3MmRiNWRlOWFhODFhMGI3N2M2OGE4Njk5NGZlMjRjNApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVRodSBTZXAgMTMgMTY6MzM6NTkgMjAwNyArMDIwMAoKICAgIHRxbTUyMDA6IFJlc3RvcmUgY3VzdG9tYXJ5IGVudi4gdmFyaWFibGUgYm9vdCBjb21tYW5kcyBmb3IgcG93ZXJwYyBrZXJuZWxzCgogICAgLSB1cGRhdGUgZGVmYXVsdCBkZWZpbml0aW9ucyBvZiBrZXJuZWxfYWRkciBhbmQgZmR0X2FkZHIgZW52LiB2YXJpYWJsZXMKICAgIC0gbWFrZSBhcmNoL3Bvd2VycGMgYm9vdGluZyB0aGUgZGVmYXVsdCBzY2VuYXJpbwogICAgLSB1cGRhdGUgTVREIHBhcnRpdGlvbiBsYXlvdXQgdG8gbWF0Y2ggdGhlIGFib3ZlCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmMzQwMjRkNGEzMjhlNmVkZDkwNjQ1NmRhOThkMmM1MzcxNTVjNGY3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIFNlcCAxMiAwMDo0ODo1NyAyMDA3ICswMjAwCgogICAgRml4IG1lbW9yeSBjb3JydXB0aW9uIHByb2JsZW0gb24gU1RYIEdQMyBTU0EgQm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkOTRjNzllNDcwMTFhZjVlOGRkMTBlZDYxNjNjMDliNGNmYzc0M2NjCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCAxMSAxNTozNTowMSAyMDA3ICswMTAwCgogICAgRmluYWwgdGlkeQoKY29tbWl0IDM4YWQ4MmRhMGMxMTgwZWNkZWIyMTJhOGY0MjQ1ZTk0NWJjYzU0NmUKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIFNlcCAxMSAxNTo0MjoxMSAyMDA3ICswMjAwCgogICAgW0dQM1NTQV0gQWRkIGRlZmluZSBDT05GSUdfTVBDODVYWF9QQ0kyIGluIGNvbmZpZyBmaWxlIHRvIGFsbG93IHUtYm9vdCB0bwogICAgc2NhbiBvbiBzZWNvbmQgcGNpIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA2YzJmNGYzODhlODE4MTY1NWVhOGI2OTM0M2VhMDBiNjhhYTZlOGQwCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBTZXAgMTEgMTI6NTc6NTIgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEluZGl2aWR1YWwgaGFuZGxpbmcgb2Ygc2RyYW0uYyBmb3IgYmFtYm9vX25hbmQgYnVpbGQKCiAgICBCYW1ib28gaGFzIGEgZmlsZSBzZHJhbS5jIHdoaWNoIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50IHdoZW4gYnVpbGRpbmcgaW4KICAgIHNlcGFyYXRlIGRpcmVjdG9yeS4gSXQgaGFzIHRvIGJlIGxpbmtlZCB0byBidWlsZCBkaXJlY3Rvcnkgb3RoZXJ3aXNlIGl0IGlzCiAgICBub3Qgc2Vlbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBkNDU5NjM4NTRlZmYzOWQ1NzUxMjRkODU5NDE5YmI0OTUzY2UyYzg3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglUdWUgU2VwIDExIDAwOjM3OjA0IDIwMDcgKzAyMDAKCiAgICBbRklYXSBNaWNyb2JsYXplIE1MNDAxIC0gcmVwYXJlIEZMQVNIIGhhbmRsaW5nCgpjb21taXQgMzhjMWVmNzI4ZDE5OTUwNDE0YThhYjFjY2ZjNTM3Njc4NDhmYTM0NgpBdXRob3I6IFNlYW4gTUNHT09HQU4gPHNlYW4ubWNnb29nYW5Ac3QuY29tPgpEYXRlOglNb24gU2VwIDEwIDE2OjU1OjU5IDIwMDcgKzAxMDAKCiAgICBBbGxvY2F0ZSBDUFUgQXJjaGl0ZWN0dXJlIENvZGUgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgU1QyMDAuCgogICAgU2lnbmVkLW9mZi1ieTogU2VhbiBNY0dvb2dhbiA8U2Vhbi5NY0dvb2dhbkBzdC5jb20+CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNvbW1pdCA3NTRiYWM0ODE1NmY4OTU4ZDhmNmE1M2E1MWVkYTg4YWI1NzU4OTI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIFNlcCAxMCAyMDo0MjozMSAyMDA3ICswMjAwCgogICAgVXBkYXRlIHZlcnNpb24gdG8gbWF0Y2ggY3VycmVudCBzdGF0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDdhODg4ZDZiM2MzMmExMjZkYmI1MDRlZjE0NmJiNGMyNjU3NGNhN2IKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIFNlcCAxMCAxNzozOTowOCAyMDA3ICswMjAwCgogICAgW01QQzUxMnhdIFN0cmVhbWxpbmUgZnJhbWUgaGFuZGxpbmcgaW4gdGhlIEZFQyBkcml2ZXIKCiAgICAtIGNvbnZlcnQgZnJhbWUgc2l6ZSBzZXR0aW5ncyB0byBiZSBkZXJpdmVkIGZyb20gYSBzaW5nbGUgYmFzZQogICAgLSBzZXQgZnJhbWUgc2l6ZSB0byB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdCB2YWx1ZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGUyNTFlMDBkMGRiNGIzNmQxZDJiN2UzOGZlYzQzYTcyOTZiNTI5YTIKQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KRGF0ZToJTW9uIFNlcCAxMCAxMTozNDowMCAyMDA3ICswOTAwCgogICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgoKY29tbWl0IDFkOWUzMWUwNDkxMWE2YmI3Y2M2NmRkOTExMzJjNjk5MTAxYzMyZTIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gU2VwIDkgMjE6MjE6MzMgMjAwNyArMDIwMAoKICAgIEZpeCBjb21waWxlIGVycm9yIGluIHNwYzE5MjAgY29uZmlnLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emL8Y2hlciA8bWtAZGVueC5kZT4KICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYTdkN2VjYTc5MWEzN2Y0NTJjOWRhMTBmZWY0YjMxZGQ3YWE5YTYyMgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJRnJpIFNlcCA3IDA5OjI1OjA3IDIwMDcgLTA2MDAKCiAgICBCdWdmaXg6IG1ha2UgYm9vdG0rbGliZmR0IGNvbXBpbGUgb24gYm9hcmRzIHdpdGggbm8gZmxhc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNmVmYzFmYzBiNjNlNTVmOTRjNWJjNjFkOGRkMjNjOTE4ZTNiYzc3OApBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgU2VwIDcgMTg6MzU6MzcgMjAwNyArMDIwMAoKICAgIFtQUEM0NDBTUGVdIFBDSWUgZW52aXJvbm1lbnQgc2V0dGluZ3MgZm9yIEthdG1haSBhbmQgWXVjY2EKCiAgICAtICdwY2ljb25maWdob3N0JyBpcyBzZXQgYnkgZGVmYXVsdCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHNjYW4gYnJpZGdlcwogICAgYmVoaW5kIHRoZSBwcmltYXJ5IGhvc3QvUENJZQoKICAgIC0gJ3BjaXNjYW5kZWxheScgZW52IHZhcmlhYmxlIGlzIHJlY29nbml6ZWQgdG8gYWxsb3cgZm9yIHVzZXItY29udHJvbGxlZAogICAgZGVsYXkgYmVmb3JlIHRoZSBQQ0llIGJ1cyBlbnVtZXJhdGlvbjsgc29tZSBwZXJpcGhlcmFsIGRldmljZXMgcmVxdWlyZSBhCiAgICBzaWduaWZpY2FudCBkZWxheSBiZWZvcmUgdGhleSBjYW4gYmUgc2Nhbm5lZCAoZS5nLiBMU0k4NDA4RSk7IHdpdGhvdXQgdGhlCiAgICBkZWxheSB0aGV5IGFyZSBub3QgZGV0ZWN0ZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA3ZjE5MTM5Mzg5ODRlZjZjNmE0NmNiNTNlMDAzNzE5MTk2ZDljNWRlCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBTZXAgNyAxODoyMDoyMyAyMDA3ICswMjAwCgogICAgW1BQQzQ0MFNQZV0gSW1wcm92ZSBQQ0llIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzCgogICAgLSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gc3BhY2UgbWFwcGluZwogICAgLSBjb3JyZWN0IGJ1cyBudW1iZXJpbmcKICAgIC0gYmV0dGVyIGFjY2VzcyB0byBjb25maWcgc3BhY2UKCiAgICBQcmlvciB0byB0aGlzIHBhdGNoLCB0aGUgNDQwU1BlIGhvc3QvUENJZSBicmlkZ2Ugd2FzIGFibGUgdG8gY29uZmlndXJlIG9ubHkgdGhlCiAgICBmaXJzdCBkZXZpY2Ugb24gdGhlIGZpcnN0IGJ1cy4gV2Ugbm93IGFsbG93IHRvIGNvbmZpZ3VyZSB1cCB0byAxNiBidXNlczsKICAgIGFsc28sIHNjYW5uaW5nIGZvciBkZXZpY2VzIGJlaGluZCB0aGUgUENJZS1QQ0llIGJyaWRnZSBpcyBzdXBwb3J0ZWQsIHNvCiAgICBwZXJpcGhlcmFsIGRldmljZXMgZmFydGhlciBpbiBoaWVyYXJjaHkgY2FuIGJlIGlkZW50aWZpZWQuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Cgpjb21taXQgMTVlZTQ3MzRlNGUwODAwM2Q3M2Q5ZWFkM2NhODBlMmEwNjcyZTQyNwpBdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgpEYXRlOglGcmkgU2VwIDcgMTc6NDY6MTggMjAwNyArMDIwMAoKICAgIFtQUEM0NDBTUGVdIENvbnZlcnQgbWFjaGluZSBjaGVjayBleGNlcHRpb25zIGhhbmRsaW5nCgogICAgQ29udmVydCB1c2luZyBmaXh1cCBtZWNoYW5pc20gdG8gc3VwcHJlc3NpbmcgTUNLIGZvciB0aGUgZHVyYXRpb24gb2YgY29uZmlnCiAgICByZWFkL3dyaXRlIHRyYW5zYWN0aW9uOiB3aGlsZSBmaXh1cHMgd29yayBmaW5lIHdpdGggdGhlIGNhc2Ugb2YgYSBwcmVjaXNlCiAgICBleGNlcHRpb24sIHdlIGlkZW50aWZpZWQgYSBtYWpvciBkcmF3YmFjayB3aXRoIHRoaXMgYXBwcm9hY2ggd2hlbiB0aGVyZSdzCiAgICBhbiBpbXByZWNpc2UgY2FzZS4gSW4gdGhpcyBzY2VuYXJpbyB0aGVyZSBpcyB0aGUgZm9sbG93aW5nIHJhY2UgY29uZGl0aW9uOgogICAgdGhlIGZpeHVwIGlzIChieSBkZXNpZ24pIHNldCB0byBjYXRjaCB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBvbmUKICAgIGFjdHVhbGx5IGNhdXNpbmcgdGhlIGV4Y2VwdGlvbjsgaWYgYW4gaW50ZXJydXB0IChlLmcuIGRlY3JlbWVudGVyKSBoYXBwZW5zCiAgICBiZXR3ZWVuIHRob3NlIHR3byBpbnN0cnVjdGlvbnMsIHRoZSBJU1IgY29kZSBpcyBleGVjdXRlZCBiZWZvcmUgdGhlIGZpeHVwCiAgICBoYW5kbGVyIHRoZSBtYWNoaW5lIGNoZWNrIGlzIG5vIGxvbmdlciBwcm90ZWN0ZWQgYnkgdGhlIGZpeHVwIGhhbmRsZXIgYXMgaXQKICAgIGFwcGVhcnMgYXMgd2l0aGluIHRoZSBJU1IgY29kZS4gSW4gY29uc2VxdWVuY2UgdGhlIGZpeHVwIGFwcHJvYWNoIGlzIGJlaW5nCiAgICBwaGFzZWQgb3V0IGFuZCByZXBsYWNlZCB3aXRoIGV4cGxpY2l0IHN1cHByZXNzaW5nIG9mIE1DSyBkdXJpbmcgYSBQQ0llCiAgICBjb25maWcgcmVhZC93cml0ZSBjeWNsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBmZjc2NDBjOWVhZDg4MDZiNWQ4MjdmMmIyOWY5Y2IyNjMyYWRkNzI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA3IDE3OjQzOjM2IDIwMDcgKzAyMDAKCiAgICBGaXggdHlwbyBpbiBNQUtFQUxMIHNjcmlwdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA4ZTJlNWZjZDJlMDY2NzBiNjJlMTY4MGEzOTM0YzBlNTVjNzI4MTAKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIFNlcCA3IDE3OjA5OjIxIDIwMDcgKzAyMDAKCiAgICBbTVBDNTEyeF0gUHJvcGVyIGhhbmRsaW5nIG9mIGxhcmdlciBmcmFtZXMgaW4gdGhlIEZFQyBkcml2ZXIKCiAgICBXaGVuIGZyYW1lIGxhcmdlciB0aGFuIGxvY2FsIFJYIGJ1ZmZlciBpcyByZWNlaXZlZCwgaXQgaXMgc3BsaXQgYW5kIGhhbmRsZWQKICAgIGJ5IHR3byBidWZmZXIgZGVzY3JpcHRvcnMuIFByaW9yIHRvIHRoaXMgcGF0Y2ggdGhlIEZFQyBkcml2ZXIgZGlzY2FyZGVkCiAgICBjb250ZW50cyBvZiBhIGJ1ZmZlciBkZXNjcmlwdG9yIHdpdGhvdXQgdGhlICdMQVNUJyBiaXQgc2V0LCBzbyB0aGUgZmlyc3QKICAgIHBhcnQgb2YgdGhlIGZyYW1lIHdhcyBsb3N0IGluIGNhc2Ugb2YgbGFyZ2VyIGZyYW1lcy4gVGhpcyBmaXggYWxsb3dzIHRvCiAgICBzYWZlbHkgY29tYmluZSB0aGUgdHdvIHBpZWNlcyBpbnRvIHRoZSB3aG9sZSBmcmFtZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA4ZDE3OTc5ZDAzNTk0OTJhODIyYTBhNDA5ZDI2ZTNhMzU0OWI0Y2Q0CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIFNlcCA3IDE3OjA1OjM2IDIwMDcgKzAyMDAKCiAgICBbTVBDNTEyeF0gQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBhODljYmJkMjdhNjBlNjc0MDc3MjAwMGZkMDY4OGZmYmExYzI1NzZhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIFNlcCA3IDAxOjIxOjI1IDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HLCBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCmNvbW1pdCA1ZTU4MDNlMTE5ZGUzYmViZDc2ZmM5YTU3YmFhYzBiNWFlY2NjOGEzCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMjM6MDE6NDkgMjAwNyArMDIwMAoKICAgIFBYQTI3MDogQWRkZWQgc3VwcG9ydCBmb3IgVHJpemVwc0lWIGJvYXJkLgoKICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBUcml6ZXBzIElWIG1vZHVsZSAoNTIwTWh6KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCA4MDE3MmM2MTgxYzkxMmZiYjM0ZWEzYmEwYzIyYjIzMmI0MTliNDdmCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMjI6NTc6MDQgMjAwNyArMDIwMAoKICAgIFBYQTI3MDogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlcmlhbCBwb3J0cy4KCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VyaWFsIHBvcnRzIHRvIHRoZSBQWEEgdGFyZ2V0LgogICAgRkZVQVJULCBCVFVBUlQgYW5kIFNUVUFSVCBhcmUgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IDI4YmIzZjcyYzY4N2FjNmIyZWIwNzZiMDFkZDIxYTVmZDY1N2Q0NWUKQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAzMCAyMjo0ODo0NyAyMDA3ICswMjAwCgogICAgUFhBMjcwOiBmaXggY29tcGlsZSBpc3N1ZSAoaW52YWxpZCBsdmFsdWUpCgogICAgQ29kZSBpcyBicm9rZW4gZm9yIFBYQTI3MCBkdWUgdG8gImludmFsaWQgbHZhbHVlIGluIGFzc2lnbm1lbnQiLgoKICAgIFRoaXMgcGF0Y2ggZml4IGl0IGluIHB4YS1yZWdzLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KCmNvbW1pdCAxZDJjYTQ0NmUxYTczMWRmNDIwMjA2ZDA0ZmUyNzhjMjdlYTZiOGU4CkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAxODoxOTowNSAyMDA3ICswODAwCgogICAgQWRkIEJVSUxEX0RJUiBzdXBwb3J0IGZvciBiaW9zIGVtdWxhdG9yLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjRkOGE1NTE0NTQ0MmYxMzY5ODI2MzQ4NjIzNDFhM2UwMjAwMmJkYQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDo0MTo1MSAyMDA3ICswOTAwCgogICAgW01JUFNdIFJlbW92ZSBpbmxpbmUgYXNtIHN0cmluZyBmdW5jdGlvbnMKCiAgICBTdG9wIHVzaW5nIGlubGluZSBzdHJpbmcgZnVuY3Rpb25zIG9uIE1JUFMgYXMgb3RoZXIgQVJDSHMgZG8gc28sCiAgICBzaW5jZSB0aGUgb3B0aW1pemVkIGlubGluZSBhc20gdmVyc2lvbnMgYXJlIG5vdCBzbWFsbC4KCiAgICBUaGlzIGNoYW5nZSBpcyB0cmlnZ2VyZWQgYnkgYSBmb2xsb3dpbmcgTUlQUyBidWlsZCBlcnJvcjoKICAgIGNvbW1vbi9saWJjb21tb24uYShleHBvcnRzLm8pKC50ZXh0KzB4ZGMpOiBJbiBmdW5jdGlvbiBganVtcHRhYmxlX2luaXQnOgogICAgY29tbW9uL2V4cG9ydHMuYzozMjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc3RyY21wJwogICAgbWFrZTogKioqIFt1LWJvb3RdIEVycm9yIDEKCiAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Cgpjb21taXQgOGVhMmM0ZTU0ODMzZGVhZWJjMjRjM2NhNmI3ZjIxMzUzYzI1YjBmNQpBdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDo0MTo0NSAyMDA3ICswOTAwCgogICAgW01JUFNdIFVwZGF0ZSBhc20gc3RyaW5nIGhlYWRlcgoKICAgIFRoaXMgcGF0Y2hlcyBjb250YWlucyBzZXZlcmFsIGJ1Z2ZpeGVzIGFuZCBjbGVhbnVwcyBpbiB0aGUgbGF0ZXN0IHVwc3RyZWFtOgoKICAgICAtIERvbid0IGluY2x1ZGUgbGludXgvY29uZmlnLmgKICAgICAtIFJlbW92ZSBidWdneSBpbmxpbmUgdmVyc2lvbiBvZiBtZW1zY2FuLgogICAgIC0gTWVyZ2Ugd2l0aCBMaW51eCAyLjYuMTEtcmMzLgogICAgIC0gRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gc3RyY3B5IGluIGJpbmZtdF9taXNjIGNhdXNlZCBieSBnY2MgMy40LgogICAgIC0gR29vZGJ5ZSBtaXBzNjQuCTMxNzA0IGxpbmVzIG9mIGNvZGUgYml0ZSB0aGUgZHVzdC4KICAgICAtIFJlcGxhY2UgZXh0ZXJuIGlubGluZSB3aXRoIHN0YXRpYyBpbmxpbmUuCiAgICAgLSBGaXggcmV0dXJuIHZhbHVlIG9mIHN0cm5jcHkuCiAgICAgLSBSZW1vdmUgYSBidW5jaCBtb3JlICIkMSIgY2xvYmJlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDViNzI5ZmIzYmQ5OGY0OTg1NWQ2YmZjNjU3YzNmYmFlOTVmMmFkYzIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgU2VwIDQgMTc6MzE6MjIgMjAwNyArMDIwMAoKICAgIEZpeCBkb19ib290bV9saW51eCgpIHNvIHRoYXQgbXVsdGktZmlsZSBpbWFnZXMgd2l0aCBGRFQgYmxvYiBib290LgoKICAgIEZpeCBpbmNvcnJlY3QgYmxvYiBhZGRyZXNzIGNhbGN1bGF0aW9uIGluIGRvX2Jvb3RtX2xpbnV4KCkgdGhhdCBwcmV2ZW50cwogICAgYm9vdGluZyB0aGUga2VybmVsIGZyb20gYSBtdWx0aS1maWxlIGltYWdlIChrZXJuZWwgKyBpbml0cmQgKyBibG9iKS4KCiAgICBBbHNvLCBtYWtlIG1pbm9yIHVwZGF0ZXMgdG8gdGhlIFUtQm9vdCdzIG91dHB1dCBhbmQgdG8gdGhlIGNvZGluZyBzdHlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDA0MWEyNTU0YWQ2MTllODBkY2U1MjBjMWEzMzIxMGFmZmNiNmEzZjIKQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeS5qZW5uZWpvaG5AZnJlZW5ldC5kZT4KRGF0ZToJRnJpIEF1ZyAzMSAxNDoyOTowNCAyMDA3ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFNpbDY4MCBJREUgY29udHJvbGxlci4KCiAgICBvIGFkZCBkcml2ZXJzL3NpbDY4MC5jIHRvIHN1cHBvcnQgdGhlIFNpbDY4MCBJREUtY29udHJvbGxlci4KICAgIG8gZHJpdmVycy9NYWtlZmlsZTogYWRkIHNpbDY4MC5vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgoKY29tbWl0IGU3OTAyMTIyM2JjMzM5ZGY2NTVlMzYwNjQ1YTUyYzQ1N2E3NGIwNjcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVRodSBTZXAgNiAwOTo0Nzo0MCAyMDA3IC0wNjAwCgogICAgYm9vdG0vZmR0OiBPbmx5IHByb2Nlc3MgdGhlIGZkdCBpZiBhbiBmZHQgYWRkcmVzcyB3YXMgcHJvdmlkZWQKCiAgICBCb2FyZHMgd2l0aCBDT05GSUdfT0ZfTElCRkRUIGVuYWJsZWQgYXJlIG5vdCBhYmxlIHRvIGJvb3Qgb2xkLXN0eWxlCiAgICBrZXJuZWxzIHVzaW5nIHRoZSBib2FyZCBpbmZvIHN0cnVjdHVyZSAoaW5zdGVhZCBvZiBwYXNzaW5nIGEgZGV2aWNlIHRyZWUpCiAgICBUaGlzIGNoYW5nZSBhbGxvd3MgdGhlIG9sZCBzdHlsZSBib290aW5nIHRvIGJlIHVzZWQgaWYgdGhlIGZkdCBhcmd1bWVudAogICAgd2FzIG5vdCBwYXNzZWQgdG8gJ2Jvb3RtJy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjZjI4MTdhODRjMmU5YmVhMmM1ZGZjMDg0YmNlMmYyZDI1NjNhYzQzCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUaHUgU2VwIDYgMDk6NDY6MjMgMjAwNyAtMDYwMAoKICAgIE1pZ3JhdGUgNXh4eCBib2FyZHMgZnJvbSBDT05GSUdfT0ZfRkxBVF9UUkVFIHRvIENPTkZJR19PRl9MSUJGRFQKCiAgICBBZmZlY3RzIGJvYXJkczogaWNlY3ViZSAobGl0ZTUyMDApLCBqdXBpdGVyLCBtb3Rpb25wcm8sIHRxbTUyMDAKCiAgICBUZXN0ZWQgb246IGxpdGU1MjAwYgoKICAgIE5vdGU6IHRoZSBmaXh1cCBmdW5jdGlvbnMgaGF2ZSBub3QgYmVlbiBtb3ZlZCB0byBhIGNvbW1vbiBwbGFjZS4gIFRoaXMKICAgIHBhdGNoIGlzIHRhcmdldGVkIGZvciBpbW1lZGlhdGUgbWVyZ2luZyBhcyBpbiBzb2x2ZXMgYSBidWlsZCBpc3N1ZSwgYnV0CiAgICB0aGUgZmluYWwgbmFtZS9sb2NhdGlvbiBvZiB0aGUgZml4dXBzIGlzIHN0aWxsIHN1YmplY3QgdG8gZGViYXRlLiAgSQogICAgcHJvcG9zZSB0byBtZXJnZSB0aGlzIG5vdywgYW5kIG1vdmUgdGhlIGZpeHVwcyBpbiB0aGUgbmV4dCBtZXJnZSB3aW5kb3cKICAgIHRvIGJlIHVzYWJsZSBieSBhbGwgdGFyZ2V0cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNDFiYjc2ZTk0MTkyOWY1NGE3MzIwNmZiMTMyZjdhNGMyNzU1NDNhMwpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVGh1IFNlcCA2IDA5OjQ2OjE3IDIwMDcgLTA2MDAKCiAgICBsaWJmZHQ6IGFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiBmZHRfZmluZF9hbmRfc2V0cHJvcCgpCgogICAgR2l2ZW4gdGhlIHBhdGggdG8gYSBub2RlLCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIGFsbG93cyBhIHByb3BlcnR5IHZhbHVlCiAgICB0byBiZSBzZXQgZGlyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDgwNzY3YTZjZWFkOTk5MGQ5ZTc3ZTYyYmU5NDc4NDNjMmM3MmY0NjkKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgU2VwIDUgMTY6MDQ6NDEgMjAwNyArMDEwMAoKICAgIENoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKICAgIFJlbW92ZWQgY29kZSB1c2luZyBkZXByZWNhdGVkIGlmZGVmIENPTkZJR19CT09UQklORlVOQwogICAgVGlkaWVkIG90aGVyIGNwdS9hcm05MjB0L3N0YXJ0LlMgY29kZQoKY29tbWl0IDU2YTkyNzA1MjFiYWFhMDBlMTI2MzlhOTc4MzAyYTY3ZjYxZWYwNjAKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDMwIDE2OjE4OjE4IDIwMDcgLTA1MDAKCiAgICBGaXggVUxJIFJUQyBzdXBwb3J0IG9uIE1QQzg1NDQgRFMKCiAgICBUaGUgUlRDIG9uIHRoZSBNMTU3NSBVTEkgY2hpcHNldCByZXF1aXJlcyBhIGR1bW15IHJlYWQgYmVmb3JlCiAgICB3ZSBhcmUgYWJsZSB0byB0YWxrIHRvIHRoZSBSVEMuICBXZSBhY2NvbXBsaXNoIHRoaXMgYnkgYWRkaW5nIGEKICAgIHNlY29uZCBtZW1vcnkgcmVnaW9uIHRvIHRoZSBQSEIgdGhlIFVMSSBpcyBvbiBhbmQgcmVhZCBmcm9tIGl0LgoKICAgIFRoZSBzZWNvbmQgcmVnaW9uIGlzIGFkZGVkIHRvIG1haW50YWluIGNvbXBhdGlhYmlsdHkgd2l0aCBMaW51eCdzCiAgICB2aWV3IG9mIHRoZSBQQ0kgbWVtb3J5IG1hcC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGY3NWU4OWU5YjU3MTRkYjJiMGU4MDA3NDA3MWRmYmRkNmY1OTQ4OGEKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDMwIDAxOjU4OjQ4IDIwMDcgLTA1MDAKCiAgICBmdF9ib2FyZF9zZXR1cCB1cGRhdGUgODV4eC84Nnh4IG9mIHBjaS9wY2llIGJ1cy1yYW5nZSBwcm9wZXJ0eS4KCiAgICBwY2llIGlzIG5vdyBkaWZmZXJlbnRpYXRlZCBmcm9tIHBjaS4gIEFkZCA4NjQxIGJ1cy1yYW5nZSB1cGRhdGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWY1YzNkMzcyMGU3NzdhNTcyZGNkYzhhZjIwMDhiNDRjNzI0Mzg4NQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBTZXAgNCAxNjoxODozOCAyMDA3ICswMTAwCgogICAgQWRkIGNvbG91cmVkIGxlZCBpbnRlcmZhY2UgZm9yIEFSTSBib2FyZHMuCiAgICBVc2UgaXQgaW4gY3B1L2FybTkyMHQvc3RhcnQuUyB0byBpbmRpY2F0ZSBVLUJvb3QgY29kZSBoYXMgYmVlbiBlbnRlcmVkLgoKY29tbWl0IDc0NjJmZTBkNWE5ZDQwY2RlMDgzZmIxYTNjZDczOTExOTk2YjVlY2IKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgU2VwIDQgMTQ6NDk6MjggMjAwNyArMDEwMAoKICAgIE1vdmUgaW5jbHVkZS9sZWQuaCB0byBib2FyZC9hdDkxcm05MjAwZGsKCmNvbW1pdCA2ZTRiZjliMjRlNTdjMTVhYmM2NTQyZTY4NWQwNjM4MGJjNjRhZjI3CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIFNlcCA0IDE0OjI1OjUxIDIwMDcgKzAxMDAKCiAgICBSYW4gTGluZGVudCBvbiBkcml2ZXJzL2F0NDUuYwoKY29tbWl0IDU1N2FiODlkMjk0ZjA4ZGQ1MzJmMjFkMTk4NjFiNDAwOTMyMDBhMzMKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgU2VwIDQgMTQ6MjM6NTAgMjAwNyArMDEwMAoKICAgIFJlbmFtZSBDT05GSUdfQ01EX01VWCB0byBDT05GSUdfQ01EX0FUOTFfU1BJTVVYCgpjb21taXQgODFiNzNkZWMxNmZkMTIyNzM2OWExOTFlNzI1ZTEwMDQ0YTlkNTZiOApBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDMxIDE1OjIxOjQ2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IChSZS0pRW5hYmxlIENPTkZJR19QQ0lfUE5QIG9uIEFNQ0MgNDQwRVB4IFNlcXVvaWEKCiAgICBUaGUgNDQwRVB4IGhhcyBhIHByb2JsZW0gd2hlbiB0aGUgUENJX0NBQ0hFX0xJTkVfU0laRSByZWdpc3RlciBpcwogICAgc2V0IHRvIG5vbi16ZXJvLCBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBNUk0gKG1lbW9yeS1yZWFkLQogICAgbXVsdGlwbGUpIGNvcnJlY3RseS4gV2Ugbm93IGFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBjb25maWd1cmUKICAgIHRoaXMgcmVnaXN0ZXIgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLCBzbyB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlCiAgICBvZiA4IGNhbiBiZSBvdmVycmlkZGVuLgoKICAgIEhlcmUgdGhlIGRldGFpbHMgb2YgdGhpcyBwYXRjaDoKCiAgICBvIGRyaXZlcnNfcGNpX2F1dG8uYzogaW50cm9kdWNlIENGR19QQ0lfQ0FDSEVfTElORV9TSVpFIHRvIGFsbG93CiAgICAgIGJvYXJkLXNwZWNpZmljIHNldHRpbmdzLiBBcyBhbiBleGFtcGxlIHRoZSBzZXF1b2lhIGJvYXJkIHJlcXVpcmVzIDAuCiAgICAgIElkZWEgZnJvbSBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+LgogICAgbyBib2FyZC9hbWNjL3NlcXVvaWEvaW5pdC5TOiBhZGQgYSBUTEIgbWFwcGluZyBhdCAweEU4MDAwMDAwIGZvciB0aGUKICAgICAgUENJIElPLXNwYWNlLiBPYnRhaW5lZCBmcm9tIFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4uCiAgICBvIGluY2x1ZGUvY29uZmlncy9zZXF1b2lhLmg6IHR1cm4gQ09ORklHX1BDSV9QTlAgYmFjayBvbiBhbmQgc2V0CiAgICAgIENGR19QQ0lfQ0FDSEVfTElORV9TSVpFIHRvIDAuCgogICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNjAxNzQ3NDZjNjY4YjMwOTM3OGE5MTQ4OGRkZWQ4OThlOTU1M2VhZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMzEgMTA6MDE6NTEgMjAwNyArMDIwMAoKICAgIEZpeCBURlRQIE9BQ0sgY29kZSBmb3Igc2hvcnQgcGFja2V0cy4KCiAgICBUaGUgb2xkIGNvZGUgaGFkIGEgbG9vcCBsaW1pdCBvdmVyZmxvdyBidWcgd2hpY2ggY2F1c2VkIGEgc2VtaS0KICAgIGluZmluaXRlIGxvb3AgZm9yIHNtYWxsIHBhY2tldHMsIGJlY2F1c2UgaW4gImk8bGVuLTgiLCAiaSIgd2FzIHNpZ25lZCwKICAgIGJ1dCAibGVuIiB3YXMgdW5zaWduZWQsIGFuZCAibGVuLTgiIGJlY2FtZSBhIGh1Z2UgbnVtYmVyIGZvciBzbWFsbAogICAgdmFsdWVzIG9mICJsZW4iLgoKICAgIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHdoaWNoIHJlcGxhY2VzIGJyb2tlbiBjb21taXQgOGYxYmMyODQuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2OTZkZDEzMDdjZDhlNzNhMTBlOWJiM2M1MTczMWJmZDZmODM3YmVlCkF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAxNTowMzowNSAyMDA3ICswMjAwCgogICAgUmVkdWNlIEJPT1RERUxBWSB2YXJpYWJsZSB0byAxIHNlY29uZCBieSBkZWZhdWx0IGZvciBTVEsxMDAyCgogICAgU2lnbmVkLW9mZi1ieTogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGM4OGI2ZTFjYmY5YThhZTJhMzRmYjYwMmY3OGExYmY0ZTY2OTJiNmEKQXV0aG9yOiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgpEYXRlOglUaHUgQXVnIDMwIDE1OjAzOjA0IDIwMDcgKzAyMDAKCiAgICBSZW1vdmUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcm91bmQgTUFDIGFkZHJlc3MgZm9yIFNUSzEwMDIKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgZmYxM2FjOGM3YmJlYmIyMzhlMzM5NTkyZGU3NjVjNTQ2ZGJhMTA3MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVRodSBBdWcgMzAgMTQ6NDI6MTUgMjAwNyArMDIwMAoKICAgIEJhY2tvdXQgY29tbWl0IDhmMWJjMjg0IGFzIGl0IGNhdXNlcyBURlRQIHRvIGZhaWwuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOTAwZmJmMjU1YWNiYThiOTRmYjQ0MmExNjQwOGVhODVhMWQ0NmE2CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzMCAwMjoyNjoxNyAyMDA3IC0wNTAwCgogICAgUmV2ZXJ0ICJGaXggTVBDODU0NERTIFBDSWUzIHNjc2kuIgoKICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgOTQ2OGU2ODAuCiAgICBDb21taXQgMTZlMjNjM2Y1ZGEgcmVtb3ZpbmcgYWxsb2NhdGlvbiBvZiBQQ1NSQkFSIGlzIHN1ZmZpY2llbnQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZjFiYzI4NDA4ZGVkMjEzNDE4ZDliYzA3ODBjN2Q4ZmI4YTAzNzc0CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgQXVnIDI5IDE4OjI2OjI0IDIwMDcgLTA2MDAKCiAgICB0ZnRwOiBkb24ndCBpbXBsaWNpdHkgdHJ1c3QgdGhlIGZvcm1hdCBvZiByZWNldmllZCBwYWNrZXRzCgogICAgVGhlIFRGVFAgT0FDSyBjb2RlIHRydXN0cyB0aGF0IHRoZSBpbmNvbWluZyBwYWNrZXQgaXMgZm9ybWF0ZWQgYXMKICAgIEFTQ0lJIHRleHQgYW5kIGNhbiBiZSBwcm9jZXNzZWQgYnkgc3RyaW5nIGZ1bmN0aW9ucy4gSXQgYWxzbyBoYXMgYQogICAgbG9vcCBsaW1pdCBvdmVyZmxvdyBidWcgd2hlcmUgaWYgdGhlIHBhY2tldCBsZW5ndGggaXMgbGVzcyB0aGFuIDgsIGl0CiAgICBlbmRzIHVwIGxvb3Bpbmcgb3ZlciAqYWxsKiBvZiBtZW1vcnkgdG8gZmluZCB0aGUgJ2Jsa3NpemUnIHN0cmluZy4KCiAgICBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgcHJvYmxlbSBieSBmb3JjaW5nIHRoZSBwYWNrZXQgdG8gYmUgbnVsbAogICAgdGVybWluYXRlZCBhbmQgdXNpbmcgc3Ryc3RyKCkgdG8gc2VhcmNoIGZvciB0aGUgc3ViIHN0cmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMDQ2MjU3NjRjYzkzY2U4YTYxNjI1YWMxOWQ3ZmUyYTJjZWVlODE0MwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAxNjozMToxOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBDaGFuZ2UgbHdtb241IGRlZmF1bHQgZW52aXJvbm1lbnQgdG8gc3VwcG9ydCBMaW51eCBSVEMKCiAgICBUaGUgTGludXggUENGODU2MyBSVEMgZHJpdmVyIGRvZXNuJ3QgZG8gYXV0b3Byb2JpbmcsIHNvIHdlIG5lZWQKICAgIHRvIHN1cHBseSB0aGUgUlRDIEkyQyBhZGRyZXNzIGFzIGJvb3RsaW5lIHBhcmFtZXRlci4gVGhpcyBwYXRjaAogICAgYWRkcyBzdXBwb3J0IGZvciB0aGlzIHJ0YyBwcm9iaW5nIHBhcmFtZXRlciB0byB0aGUgYm9vdGFyZ3M6CgogICAgInJ0Yy1wY2Y4NTYzLnByb2JlPTAsMHg1MSIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjYwMmE1YzQwYWUzN2FiOTY1YTRlMjQwODU0ZmRhZmZiNTEzMjhhNApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjkgMDk6MDY6MDUgMjAwNyAtMDUwMAoKICAgIHNiYzg2NDE6IHJlbW92ZSB1bnVzZWQgT0ZfRkxBVF9UUkVFX01BWF9TSVpFCgogICAgdGhpcyBoYWQgc2xpcHBlZCB0aHJvdWdoIHRoZSBjcmFja3MsIHNpbmNlIHRoZSBzYmMgYm9hcmQgd2FzIGFkZGVkCiAgICBhZnRlciBJIHdyb3RlIHRoZSBvcmlnaW5hbCBwYXRjaCB0byByZW1vdmUgYWxsIHRoZXNlIHN5bWJvbHMsIGFuZAogICAgYmVmb3JlIGl0IHdhcyBtZXJnZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNWJkZWQzYzg4ZTQ4YWU2NDhhNzVkMzU3ZGM4MWE4MjU1ZmE4MWYxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAxNDowNTozMCAyMDA3ICswMjAwCgogICAgQWRkIG1paV9pbml0KCkgcHJvdG90eXBlCgogICAgdG8gZ2V0IHJpZCBvZiBhICpsb3QqIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmQxZjIzYWExZTc0ZTRhOGY4ZmZhNjdmMjQ2ZWI5OGM1MjJkZmQ3ZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBdWcgMjkgMTM6MzU6MDMgMjAwNyArMDIwMAoKICAgIERpc2FibGUgbmV0d29yayBzdXBwb3J0IG9uIGNtaV9tcGM1eHggYm9hcmQKCiAgICAuLmJlY2F1c2UgaXQgY2F1c2VkIGNvbXBpbGVyIGVycm9ycyBhbmQgdGhlcmUgc2VlbXMgdG8gYmUgbm8KICAgIGJvYXJkIG1haW50YWluZXIgdG8gdGFrZSBjYXJlIG9mIHRoaXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA5NDY4ZTY4MDRiN2UyNWIwZjZmNTJlNTNmNDdiY2UzMTc1NDAwYTE2CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJTW9uIEF1ZyAyMCAwOTo0NDowMCAyMDA3IC0wNTAwCgogICAgRml4IE1QQzg1NDREUyBQQ0llMyBzY3NpLgoKICAgIDxlZC5zd2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCiAgICBUaGUgcHJvYmxlbSBpcyBwY2lhdXRvX3NldHVwX2RldmljZSgpIGdldHRpbmcgY2FsbGVkIGZyb20gZnNsX3BjaV9pbml0LmMKICAgIGlzIGFsbG9jYXRpbmcgbWVtb3J5IHNwYWNlIGl0IGRvZXNuJ3QgbmVlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRiZjRhYmI4YTRlOTk1NTU1NmIxMjBhMWFhZmEzMGMwM2U3NDAzMmEKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIxIDA5OjM4OjU5IDIwMDcgLTA1MDAKCiAgICA4NTQ4Y2RzIGZpeGVzCgogICAgUmVzdG9yZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTIGRlZmluaXRpb24gd2hpY2ggY29udGFpbnMgdGhlCiAgICBjb3JyZWN0IGNvbnNvbGVkZXYgbmVlZGVkIGZvciBsaW51eCBib290LgogICAgU3RhbmRhcmRpemUgb24gZmR0e2ZpbGUsYWRkcn0gdmFyIHRvIGhvbGQgZHRiIGZpbGUgbmFtZS4KCiAgICBTZXQgUENJIGluYm91bmQgbWVtb3J5IHJlZ2lvbiBmcm9tIENGR19NRU1PUllfe0JVUyxQSFlTfS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdhMWFjNDE5ZmEwZDJkMjNkZGQwOGJkNjFkMTY4OTZhOWYzM2M5MzMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDIzIDE1OjIwOjU0IDIwMDcgLTA0MDAKCiAgICBFbmFibGUgTDIgY2FjaGUgZm9yIE1QQzg1NjhNRFMgYm9hcmQKCiAgICBUaGUgTDIgY2FjaGUgc2l6ZSBpcyA1MTJLQiBmb3IgODU2OCwgcHJpbnQgb3V0IHRoZSBjb3JyZWN0IGluZm9ybWFpdG9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTRjNDdmZGFmMTRjYjI5ZmEzZmI0ZDRkYTJlZmRkOTZjODAzYjQ2YgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjIgMTc6NTQ6NDkgMjAwNyArMDgwMAoKICAgIFJlbW92ZSB0aGUgYmlvcyBlbXVsYXRvciBiaW5hcnkgZmlsZXMgZnJvbSBNQUkgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc2MDhkNzVmOWM4N2M5ZWI1YjNhNDMyMTlkMDUwNmQzZTk3OWExM2YKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIxIDE3OjAwOjE3IDIwMDcgLTA1MDAKCiAgICBzdXBwb3J0IGJvYXJkIHZlbmRvci1jb21tb24gbWFrZWZpbGVzCgogICAgaWYgYSBib2FyZC8kKFZFTkRPUikvY29tbW9uL01ha2VmaWxlIGV4aXN0cywgYnVpbGQgaXQuCgogICAgYWxzbyBhZGQgdGhlIGZpcnN0IHN1Y2ggY2FzZSwgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9NYWtlZmlsZSwgdG8KICAgIGhhbmRsZSBidWlsZGluZyBib2FyZC1zaGFyZWQgRUVQUk9NLCBQSVhJUywgYW5kIE1EUy1QSUIgY29kZSwgYXMKICAgIGRpY3RhdGVkIGJ5IGJvYXJkIGNvbmZpZ3VyYXRpb24uCgogICAgdGh1c2x5IGdldCByaWQgb2YgYWx0ZXJuYXRlIGJ1aWxkIGRpciBlcnJvcnMgc3VjaCBhczoKCiAgICBGQVRBTDogY2FuJ3QgY3JlYXRlIC93b3JrL3dkL3RtcC91LWJvb3QtcHBjL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzYwZW1kcy8uLi9jb21tb24vcHEtbWRzLXBpYi5vOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CgogICAgYnkgcHV0dGluZyB0aGUgY29tbW9uLyBta2RpciBjb21tYW5kIGluIGl0cyBwcm9wZXIgcGxhY2UgKHRoZSBjb21tb24KICAgIE1ha2VmaWxlKS4gQ29tbW9uIGJpdHMgZnJvbSBleGlzdGluZyBpbmRpdmlkdWFsIGJvYXJkIE1ha2VmaWxlcyBoYXZlCiAgICBiZWVuIHJlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlZjhmMjA3NTI3MTJkYzFjZGJkODZmNDdlM2JkNmUzNWY4MWM4M2ZkCkF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMjEgMTU6NTI6MzMgMjAwNyArMDIwMAoKICAgIEZpeDogVEZUUCBpcyBub3Qgd29ya2luZyBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMKCiAgICBURlRQIGRvZXMgbm90IHdvcmsgYW55bW9yZSBhZnRlciBtdWx0aWNhc3QgdGZ0cAogICAgcGF0Y2ggd2FzIGFwcGxpZWQgb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zLgogICAgVGhpcyBwYXRjaCBmaXggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Cgpjb21taXQgNWY0NzA5NDg1NzA1MjZlOTE4NmYwNTNhMzAwM2RhNzcxOTYwNGU5MApBdXRob3I6IHN0ZWZhbm8gYmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUdWUgQXVnIDIxIDE1OjUwOjMzIDIwMDcgKzAyMDAKCiAgICBGaXggTUFDIGFkZHJlc3Mgc2V0dGluZyBpbiBETTkwMDAgZHJpdmVyLgoKICAgIFRoZSBsb2dpYyB0byBjaGVjayBpZiB0aGVyZSBpcyBhIGNvcnJlY3QgTUFDIGFkZHJlc3MgaW4gdGhlIERNOTAwMAogICAgRUVQUk9NLCBhZGRlZCBpbiB0aGUgbGFzdCBwYXRjaCwgaXMgd3JvbmcuIE5vdyB0aGUgTUFDIGFkZHJlc3MgaXMKICAgIGFsd2F5cyB0YWtlbiBmcm9tIHRoZSBlbnZpcm9ubWVudCwgZXZlbiBpZiBhIHN1aXRhYmxlIE1BQyBpcyBwcmVzZW50CiAgICBpbiB0aGUgRUVQUk9NLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IDRhODUyN2VmMDg2ZWM3Yzg5ZjQwNjc0ZWYwMjRhZTZmOTg4YTYxNGEKQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KRGF0ZToJVHVlIEF1ZyAyMSAxMjo0MDozNCAyMDA3ICswMjAwCgogICAgTVBDNXh4eDogZml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgaW4gVVNCIGNvZGUKCiAgICBGaXggdGhlIGZvbGxvd2luZyB3YXJuaW5nczoKICAgIC0gdXNiLmM6eHg6IHdhcm5pbmc6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbid0IGEgcHJvdG90eXBlCiAgICAtIHVzYl9vaGNpLmM6eHh4OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ19fZnN3YWIzMicgbWFrZXMgaW50ZWdlcgogICAgICBmcm9tIHBvaW50ZXIgd2lodG91dCBhIGNhc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3Jhc2VAdHFzLmRlPgoKY29tbWl0IDE2ZTIzYzNmNWRhYjY5MzdmNTEwOTM2NTQxNjgwOGM3ZjE1YzEyMmIKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDIwIDIzOjU1OjMzIDIwMDcgLTA1MDAKCiAgICBmc2xfcGNpX2luaXQgLSBSZW1vdmUgc2VsZiBQQ1NSQkFSIGFsbG9jYXRpb24KCiAgICBDUFUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSB3YXMgYmVpbmcgd2FzdGVkIGJ5IGFsbG9jYXRpbmcgYQogICAgUENTUkJBUiBQQ0kgaW5ib3VuZCByZWdpb24gdG8gaXQncyBtZW1vcnkgc3BhY2UuCgogICAgQXMgYSBydWxlLCBQQ1NSQkFSIHNob3VsZCBiZSBsZWZ0IGFsb25lIHNpbmNlIGl0IGRvZXMgbm90IGFmZmVjdAogICAgdHJhbnNhY3Rpb25zIGZyb20gc2VsZiBhbmQgb3RoZXIgbWFzdGVycyBtYXkgaGF2ZSBjaGFuZ2VkIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8ZWQuc3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGU3MDBjZTAzYTIzYmIxOTIxMTQ5YmM3NzAwOGFjZTcxMDNkNTI4OQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglNb24gQXVnIDIwIDEzOjU2OjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbiBpbmNsdWRlL3MzYzI0MTAuaAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlICJ0eXBlIHF1YWxpZmllcnMgaWdub3JlZCBvbiBmdWN0aW9uIHJldHVybiB0cHllIgogICAgd2FybmluZyBmb3IgaW5jbHVkZS9zM2MyNDEwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KCmNvbW1pdCA5YmI4YjIwOWVkMjA1OGE1NzU2ZWNiZWI1NDRjMDY3ZTQ0YTQyYWVhCkF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KRGF0ZToJTW9uIEF1ZyAyMCAwNzowOTowNSAyMDA3ICswMjAwCgogICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBvbWFwMjQyMGg0X2NvbmZpZy4KCiAgICBvbWFwMjQyMGg0IHN3aXRjaGVkIHRvIGNmaSwgc28gcmVtb3ZlIG9sZCAoYWxyZWFkeSBkaXNhYmxlZCkgZmxhc2guYwogICAgYW5kIGZsYXNoX3Byb2JlKCkgY2FsbHMgaW4gZW52X2ZsYXNoLmMuCgogICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Cgpjb21taXQgM2JiMzQyZmM4NWQ3OWRiYjZiOGMyMDM5ZTdjZGNkZGM4MmI4ZDkwZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTQ6MzQ6MTQgMjAwNyAtMDUwMAoKICAgIGZkdDogcmVtb3ZlIHVudXNlZCBPRl9GTEFUX1RSRUVfTUFYX1NJWkUgcmVmZXJlbmNlcwoKICAgIGFuZCBtYWtlIHNvbWUgbWlub3IgY29ycmVjdGlvbnMgdG8gdGhlIEZEVCBwYXJ0IG9mIHRoZSBSRUFETUUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YWYyZWViMWU5OWMyZGNjNTg0ZDRjNWFiN2ZjYWUzMGEzMjVmNGRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyAyOSAwMTozMjowNSAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhODYxNTU4YzY1ZjY1ZjFjZjEzMDJmM2EzNWU5ZGI3Njg2YjllMWEzCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgQXVnIDI4IDE3OjQwOjMzIDIwMDcgKzAyMDAKCiAgICBbVUMxMDFdIEZpeDogaWYgbm8gQ0YgaW4gdGhlIGJvYXJkLCBVLUJvb3QgcmVzZXRzIHNvbWV0aW1lcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBmOTg5ODRjYjE5NGJiMzRkYmUxZGI5NDI5ZDNiNTExMzNhZjMwZDA3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgQXVnIDI4IDE3OjM5OjE0IDIwMDcgKzAyMDAKCiAgICBJREU6CS0gbWFrZSBpZGVfaW5iICgpIGFuZCBpZGVfb3V0YiAoKSAid2VhayIsIHNvIGJvYXJkcyBjYW4KCSAgICAgIGRlZmluZSB0aGVyZSBvd24gSS9PIGZ1bmN0aW9ucy4KCSAgICAgIChOZWVkZWQgZm9yIHRoZSBwY3M0NDBlcCBib2FyZCkuCgkgICAgLSBUaGUgZGVmYXVsdCBJL08gRnVuY3Rpb25zIGFyZSBhZ2FpbiA4IEJpdCBhY2Nlc3Nlcy4KCSAgICAtIEFkZGVkIENPTkZJR19DTURfSURFIGZvciB0aGUgcGNzNDQwZXAgQm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMmMwNWZkMTI1NzQ0OTgxZTVmMjgyOGQyNGU2NmNjYzIwYTc3ZDI1ZApBdXRob3I6IFNlbWloIEhhemFyIDxzZW1paC5oYXphckBpbmRlZmlhLmNvbT4KRGF0ZToJTW9uIEF1ZyAyMCAxOTowMDowMSAyMDA3ICswMzAwCgogICAgQVZSMzI6IENoYW5nZSBwcm90b3R5cGUgb2YgbWVtc2V0CgogICAgU2lnbmVkLW9mZi1ieTogU2VtaWggSGF6YXIgPHNlbWloLmhhemFyQGluZGVmaWEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOWMwMmRlZmMyOWI1Nzk0NWI2MDA3MTRjZjYxZGRmZDAyYjAyZmIxNApBdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KRGF0ZToJU2F0IEF1ZyAyNSAwNTowNzoxNiAyMDA3ICswMjAwCgogICAgUE9TVDogbGltaXQgbWVtb3J5IHRlc3QgYXJlYSB0byBub3QgdG91Y2ggZ2xvYmFsIGRhdGEgYW55bW9yZQoKICAgIEFzIGV4cGVyaWVuY2VkIG9uIGx3bW9uNSwgb24gc29tZSBib2FyZHMgdGhlIFBPU1QgbWVtb3J5IHRlc3QgY2FuCiAgICBjb3JydXB0IHRoZSBnbG9iYWwgZGF0YSBidWZmZXIgKGJkKS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCiAgICBieSBjaGVja2luZyBhbmQgbGltaXRpbmcgdGhpcyBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NWUxYTg0ZDQ4M2UzNmJlMTBlMjA2ZTUzOWIwMjhjNDg4OWUxMTU4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgQXVnIDI0IDE1OjQxOjQyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBSVEMgUE9TVCB0ZXN0IHRvIGx3bW9uNSBib2FyZCBjb25maWd1cmF0aW9uCgogICAgU2luY2UgdGhpcyBSVEMgUE9TVCB0ZXN0IGlzIHRha2luZyBxdWl0ZSBhIHdoaWxlIHRvIGNvbXBsZXRlCiAgICBpdCdzIG9ubHkgaW5pdGlhdGVkIHVwb24gc3BlY2lhbCBrZXlwcmVzcyBzYW1lIGFzIHRoZSBjb21wbGV0ZQogICAgbWVtb3J5IFBPU1QuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ3YmZhNjIwMDM3YTZkMjIxMDE1OTM4NzU3MWJkZjkzYWEzMmMxNjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMjQgMTU6MTk6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2hhbmdlIEdQSU8gc2lnbmFsIGZvciB3YXRjaGRvZyB0cmlnZ2VyaW5nIG9uIGx3bW9uNQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjMjVkZDhmYzI1ZTljYTM2OTVkYjk5NmEyNTdkOWJhNGRhYjQxNGRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIzIDExOjAyOjM3IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciAybmQgSTJDIEVFUFJPTSBvbiBsd21vbjUgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIDJuZCBFRVBST00gKEFUMjRDMTI4KSBvbiB0aGUgbHdtb241CiAgICBib2FyZC4gTm93IHRoZSAiZWVwcm9tIiBjb21tYW5kIGNhbiBiZSB1c2VkIHRvIHJlYWQvd3JpdGUgZnJvbS90byB0aGlzCiAgICBkZXZpY2UuIEFkZGl0aW9uYWxseSBhIG5ldyBjb21tYW5kIHdhcyBhZGRlZCAiZWVwcm9td3AiIHRvIGVuLS9kaXNhYmxlCiAgICB0aGUgd3JpdGUtcHJvdGVjdCBvZiB0aGlzIDJuZCBFRVBST00uCgogICAgVGhlIDFzdCBFRVBST00gaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMgd3JpdGUtcHJvdGVjdCBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNjRmYjMwZTRjNTk3NjAwN2Q1NmZjMTc4OWM3YTA2NjYwODJiNTM2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXVnIDIyIDA4OjU2OjA5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgb3B0aW9uIENGR19JTklUX1JBTV9PQ00KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2FkNjM4Nzg3MzdhNWEyYjFlNjA4MjViZjBhN2Q2MDFkN2E2OTVlNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAyMSAxNjoyNzo1NyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgbWF0cml4IGtiZCBzdXBwb3J0IHRvIGx3bW9uNSBib2FyZCAoNDQwRVB4IGJhc2VkKQoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgbWF0cml4IGtleWJvYXJkIG9uIHRoZSBsd21vbjUgYm9hcmQuCiAgICBTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlIGRzUENJIGlzIGtpbmQgb2YgY29tcGF0aWJsZSB3aXRoIHRoZQogICAgIm9sZCIgbHdtb24gYm9hcmQsIG1vc3Qgb2YgdGhlIGNvZGUgaXMgY29waWVkIGZyb20gdGhlIGx3bW9uCiAgICBib2FyZCBkaXJlY3RvcnkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNlNjZjMDc4MDAzNjA3YTdkMWQyMTRjMTVhNWYyNjJiYzFiNDAzMmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXVnIDE5IDEwOjI3OjM0IDIwMDcgKzAyMDAKCiAgICBGaXggc29tZSBidWlsZCBlcnJvcnMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAwNTY3NTczNWVmNzdkYzIzYjVlMGViNzgyYmFkMWZmNDc3YjU1ZTg2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEF1ZyAxOCAyMjowMDozOCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCA3OWYyNDBmN2VjYzA1MDZiNDNhYzUwZDFlYTQwNWZmNjU0MGQ0ZDU3CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAyMjo1MjozOSAyMDA3IC0wNTAwCgogICAgbGliX3BwYzogbWFrZSBib2FyZF9hZGRfcmFtX2luZm8gd2VhawoKICAgIHBsYXRmb3JtcyB3aXNoaW5nIHRvIGRpc3BsYXkgUkFNIGRpYWdub3N0aWNzIGluIGFkZGl0aW9uIHRvIHNpemUsCiAgICBjYW4gZG8gc28sIG9uIG9uZSBsaW5lLCBpbiB0aGVpciBvd24gYm9hcmRfYWRkX3JhbV9pbmZvKCkKICAgIGltcGxlbWVudGF0aW9uLgoKICAgIHRoaXMgY29uc2VxdWVudGx5IGVsaW1pbmF0ZXMgQ09ORklHX0FERF9SQU1fSU5GTy4KCiAgICBUaGFua3MgdG8gU3RlZmFuIGZvciB0aGUgaGludC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxNWI1YmQ1YjE4NTY5OTE3YzNlMDRiOTc1NzUxMWU2ZWQyM2I5ZjYKQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CkRhdGU6CUZyaSBBdWcgMTcgMTI6NDM6NDQgMjAwNyArMDkwMAoKICAgIFBDSV9SRUFEX1ZJQV9EV09SRF9PUDogRml4ICp2YWwgdW5pbml0aWFsaXplZCBidWcKCiAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHNlbnQgb246CiAgICAtIDYgSnVuIDIwMDcKCiAgICBNYW55IHVzZXJzIG9mIFBDSSBjb25maWcgcmVhZCByb3V0aW5lcyB0ZW5kIHRvIGlnbm9yZSB0aGUgZnVuY3Rpb24KICAgIHJldCB2YWx1ZSwgYW5kIGFyZSBvbmx5IGNvbmNlcm5lZCBhYm91dCB0aGUgY29udGVudHMgb2YgKnZhbC4gQmFzZWQKICAgIG9uIHRoaXMsIHBjaV9ob3NlX3JlYWRfY29uZmlnX3tieXRlLHdvcmR9X3ZpYV9kd29yZCBzaG91bGQgaW5pdGlhbGl6ZQogICAgdGhlICp2YWwgb24gZHdvcmQgcmVhZCBlcnJvci4KCiAgICBXaXRob3V0IHRoaXMgZml4LCBmb3IgZXhhbXBsZSwgd2UnbGwgZ28gb24gc2Nhbm5pbmcgYnVzIHdpdGggdmVuZG9yIG9yCiAgICBoZWFkZXJfdHlwZSB1bmluaXRpYWxpemVkLiBUaGlzIGJyaW5ncyBtYW55IHVubmVjZXNzYXJ5IGNvbmZpZyB0cmlhbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgoKY29tbWl0IDI2NjY3YjdmYTA1YThiZjJmYzY1ZmI5ZjMyMzBiMDJiMWExMGMzNjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBBdWcgMTggMTQ6Mzc6NTIgMjAwNyArMDIwMAoKICAgIENvbGRGaXJlOiBGaXggc29tZSByZW1haW5pbmcgcHJvYmxlbXMgd2l0aCBDRkdfQ01EXwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4MjgwZjZhMWM0MzI0NzYxNmI2ODIyNDY3NTE4OGU1Y2NkMTI0NjUwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgQXVnIDE4IDE0OjMzOjAyIDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0YTQ0MmQzMTg2YjMxODkzYjRmNzdjNmU4MmY2M2M0NTE3YTUyMjRiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE5OjIzOjUwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIE01MjM1RVZCIFBsYXRmb3JtIGZvciBNQ0Y1MjN4CgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjYzFjZDU5NDE4MjdhMDRjZjVjNTFhMDdmY2M0MmU4OTQ1ODk0YWEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDE3IDA5OjMwOjAwIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggdHlwbyBpbiBERFIyIHByb2dyYW1taW5nCgogICAgaW50cm9kdWNlZCBpbiB0aGUgaW1wbGVtZW50IGJvYXJkX2FkZF9yYW1faW5mbyBwYXRjaCBhcyBJIHdhcyBjbGVhbmluZyBvdXQgdGhlCiAgICBtYWdpYyBudW1iZXJzLiAgc29ycnkuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNThmZTk1Nzg0ZDI1MTRmYzljMjEwMjhkYzU5ZjJiMzE5YTM1ZDgwCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAyMjo1MzowOSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogbW92ZSBmcmVlc2NhbGUgYm9hcmRzIHRvIGJvYXJkcy9mcmVlc2NhbGUKCiAgICBpbmNsdWRlcyBidWlsZCBmaXhlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVhYTRhZDhkOGU3ZTk0NjgyMTk5OTBjNzg3NWQ1ZmRjOWU5NjJmNDcKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDIyOjUyOjU5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBzdXBwcmVzcyB1bnVzZWQgdmFyaWFibGUgJ3ZhbDgnIHdhcm5pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJiZWE0NmY3NmY3NjdiOTE5MDcwYjQ4MjliZjM0Yzg2YmQyMjMyNDgKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDIyOjUyOjQ4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBpbXBsZW1lbnQgYm9hcmRfYWRkX3JhbV9pbmZvCgogICAgYWRkIGJvYXJkX2FkZF9yYW1faW5mbywgdG8gbWFrZSBtZW1vcnkgZGlhZ25vc3RpYyBvdXRwdXQgbW9yZQogICAgY29uc2lzdGVudC4gdS1ib290IGJhbm5lciBvdXRwdXQgbm93IGxvb2tzIGxpa2U6CgogICAgRFJBTTogIDI1NiBNQiAoRERSMSwgNjQtYml0LCBFQ0Mgb24pCgogICAgYW5kIGZvciBib2FyZHMgd2l0aCBTRFJBTSBvbiB0aGUgbG9jYWwgYnVzLCBhIGxpbmUgc3VjaCBhcyB0aGlzIGlzCiAgICBhZGRlZDoKCiAgICBTRFJBTTogNjQgTUIgKGxvY2FsIGJ1cykKCiAgICBhbHNvIHJlcGxhY2VkIHNvbWUgbWFnaWMgbnVtYmVycyB3aXRoIHRoZWlyIGVxdWl2YWxlbnQgZGVmaW5lIG5hbWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTQ3Nzg1ODVkMTM4OWQ4NmQ1ODQ2ZWZlYzI5ZTVmY2U4OTI2ODBjZQpBdXRob3I6IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAxNyAxMDozNTo1OSAyMDA3ICswODAwCgogICAgbXBjODN4eDogU3BsaXQgUElCIGluaXQgY29kZSBmcm9tIHBjaS5jIGFuZCBhZGQgUW9jMyBBVE0gY2FyZCBzdXBwb3J0CgogICAgVGhlIHBhdGNoIHNwbGl0IHRoZSBQSUIgaW5pdCBjb2RlIGZyb20gcGNpLmMgdG8gYSBzaW5nbGUgZmlsZSBib2FyZC9mcmVlc2NhbGUvY29tbW9uL3BxLW1kcy1waWIuYwogICAgQW5kIGFkZCBRb2MzIEFUTSBjYXJkIHN1cHBvcnQgZm9yIE1QQzgzNjBFTURTIGFuZCBNUEM4MzJYRU1EUyBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YWUxNThjZDg3YTRhMjU3MjJiMjc4MzUyNjFiNmZmMGZhMmFhNmE3CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE1OjA1OjExIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogQWRkIE01NDQ1NUVWQiBmb3IgTUNGNTQ0NXgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTE0MzZhODQyNjU0YThkMzkyN2QwODJhOGFlOWVlMGExMGRhNjJkNwpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAxMzoyMDo1MCAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTI1M0VWQkUgcGxhdGZvcm0gZm9yIE1DRjUyeDIKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTYwNWFhY2Q4MzI0MDk0MTk5NDAyODE2Y2M2ZDkxMjRhYmE1N2I4ZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAwNTowNDozMSAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IEFkZCBNNTI0OUVWQiBwbGF0Zm9ybSBmb3IgTUNGNTJ4MgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMjhlMWJkOWRhYTZkZTVlYjMzYWU0ODIyYmRhNmIwMDhjY2I0ZTllCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjMyOjA2IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEZyZWVzY2FsZSBNQ0Y1MngyIHBsYXRmb3JtcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NzA0NzBkYmY2ZjRiYjk4NjRlMGQ5N2FlZWRiYzE3YzE2N2M2ZDFjCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjU1OjEwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogVXBkYXRlIEVCK01DRi1FVjEyMyBwbGF0Zm9ybQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYTkzZDg1OWQ5YjFmY2Q4ZWVhNTJkNTFiMDZlODZjMzhmNzIxMTFiCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjQ2OjM4IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogdXBkYXRlIFRBU1JFRyBwbGF0Zm9ybSBmb3IgTUNGNTJ4MgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTUwNTUxMGJmNTZhOWI1NTU4MjQ4ZGQ4YjczZWM5ZDlhMTU1NmEyCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE5OjQ1OjUxIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogdXBkYXRlIHI1MjAwIHBsYXRmb3JtIGZvciBNQ0Y1MngyCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZjZmQzYzdiYzgxM2ZiMzE3YWI3YzA3ODFmMGQxODc0YjFjMDg3N2MKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6NDM6MjAgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBpZG1yIHBsYXRmb3JtIE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY3MDY0MjRkMGJiODUxZmI1MmFmMDBjZDFjMzMwMWU5MWVlN2YyYjAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6NDE6MDYgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBjb2JyYTUyNzIgcGxhdGZvcm0gZm9yIE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2MTE1NjY1YjRhNjRjMTBjMDE0NDBjNTc3NDliMjY1ZTA5MDhmYTQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTk6Mzg6MTUgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBNQ0Y1MngyIEhlYWRlciBmaWxlcyB1cGRhdGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODNlYzIwYmM0MzgwZWViZGRmZGU0NWRhNmUzYTY5YTkyZDRkYjIxZApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAxOToyMToyMSAyMDA3IC0wNTAwCgogICAgQ29sZEZpcmU6IE1DRjUyeDIgdXBkYXRlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1MmU3ODMwNGRjYzBhYzQ1OWMwZWExZmE1YmUyNzVjN2QxNjQyY2YKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTg6NDY6MTEgMjAwNyAtMDUwMAoKICAgIENvbGRGaXJlOiBNQ0Y1MzI5IHVwZGF0ZSBjYWNoZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MTcxOTc3ZmI4ZmQ3N2NmYjY2NzY5NTNmYTlhMDU3ODljNDUwNTEzCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjQwOjIwIDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSBoZWFkZXIgZmlsZSBjbGVhbiB1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjc3YmM1NDdiYTU2MWMyNWVhMzQ0NTdlZDE3YWEwYjJmN2MyNzIzCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjM5OjE3IDIwMDcgLTA1MDAKCiAgICBDb2xkRmlyZTogTUNGNTMyOSBVcGRhdGUgYW5kIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTAzMjdkYzU1NDFmOTQ3YzBjZjdlMzFmZWY4NmM0NzA2MTY5NjA3YQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAxNiAxNjozNTowMiAyMDA3IC0wNTAwCgogICAgQWRkIENPTkZJR19IQVNfRVRIMCB0byBhbGwgYm9hcmRzIHdpdGggVFNFQwoKICAgIFRoZSA4NXh4IGNvZGUgbm93IHJlbGllcyBvbiBDT05GSUdfSEFTX0VUSDAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKICAgIHRvIHVwZGF0ZSBUU0VDMSdzIGRldmljZS10cmVlIG5vZGUsIHNvIHdlIG5lZWQgdG8gYWRkIGl0CiAgICB0byBhbGwgdGhlIGJvYXJkcyB3aXRoIFRTRUNzLiAgRG8gdGhpcyBmb3IgODN4eCBhbmQgODZ4eCwgdG9vLAogICAgc2luY2UgdGhleSB3aWxsIGV2ZW50dWFsbHkgZG8gc29tZXRoaW5nIHNpbWlsYXIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ2NGVlOTA4YTFiNTI1ZTViYjJiNGNiZWI1YzQ0OWFkNmE0Njk2NjYKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDE2IDE1OjA1OjA0IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgTVBDODU0NCBEUyBQQ0kgbWVtb3J5IG1hcAoKICAgIFRoZSBQQ0llIGJ1cyB0aGF0IHRoZSBVTEkgTTE1NzUgaXMgY29ubmVjdGVkIHRvIGhhcyBubyBwb3NzaWJsZSB3YXkgb2YKICAgIG5lZWRpbmcgbW9yZSB0aGFuIHRoZSBmaXhlZCBhbW91bnQgb2YgSU8gJiBNZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IHRoZSBVTEkuCgogICAgU28gbWFrZSBpdCB1c2UgZmFyIGxlc3MgSU8gJiBtZW1vcnkgc3BhY2UgYW5kIGhhdmUgaXQgdXNlIHRoZSBzaGFyZWQgTEFXLiAgVGhpcwogICAgZnJlZSdzIHVwIGEgTEFXIGZvciBQQ0llMSBJTyBzcGFjZS4gIEFsc28gcmVkdWNlIHRoZSBhbW91bnQgb2YgSU8gc3BhY2UgbmVlZGVkCiAgICBieSBlYWNoIGJ1cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IGVhNTg3N2UzMWVkNjNhZGU5NDhmZDEyOTM4OTVlYzIzZmUwMTQ3MmUKQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgpEYXRlOglUaHUgQXVnIDE2IDExOjAxOjIxIDIwMDcgLTA1MDAKCiAgICBGaXggdXAgc29tZSBmZHQgaXNzdWVzIG9uIDg1NDREUwoKICAgIEl0IGxvb2tzIGxpa2Ugd2UgaGFkIGEgbWVyZ2UgaXNzdWUgdGhhdCBkdXBsaWNhdGVkIGEgYml0IG9mIGNvZGUKICAgIGluIGZ0X2JvYXJkX3NldHVwLglBbHNvLCB3ZSBuZWVkIHRvIHNldCBDT05GSUdfSEFTX0VUSDAgdG8gZ2V0CiAgICB0aGUgTUFDIGFkZHJlc3MgcHJvcGVybHkgc2V0IGluIHRoZSBkZXZpY2UgdHJlZSBvbiBib290IGZvciBUU0VDMQoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMDdiYzIwNTYwY2I5ZDNkMTg2Y2NhMjY4YzA1YzgyNzYyZThjNTVhZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVRodSBBdWcgMTYgMTU6MTY6MDMgMjAwNyArMDIwMAoKICAgIFBQQzR4eDpIQ1U0LzUgY2xlYW51cAoKICAgIE1pbm9yIGNsZWFudXBzIHRvIGNvbmZpcm0gdG8gdGhlIHUtYm9vdCBjb2Rpbmcgc3R5bGUuCiAgICBTb21lIGdlcm1hbiBleHByZXNzaW9ucyAtPiBlbmdsaXNoLgogICAgSENVNSBlbmZvcmNlcyBhIHVuaXF1ZSBJUCBhZHJlc3MgZm9yIGEgZ2l2ZW4gc2xvdCBpbiB0aGUgcmFjay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDFlNmIwN2M2NDk2N2MxZWIyY2Q4NGZhYTRjMzJiZjJhNzY5YmM4ZWIKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgpEYXRlOglUaHUgQXVnIDE2IDE1OjE2OjAyIDIwMDcgKzAyMDAKCiAgICBQUEM0eHg6SENVNC81IGNsZWFudXAgZWNjL3NkcmFtIGluaXQKCiAgICBNYWtlIGVjYyBpbml0aWFsaXNhdGlvbiByb2J1c3QsIGFzIEREUjItRUNDIGVycm9ycyBtYXkgYmUgZ2VuZXJhdGVkCiAgICB3aGlsZSB6ZXJvaW5nIHRoZSBSQU0uCgogICAgUmV0dXJuIDE2IGJ5dGVzIChhIGNhY2hlbGluZSkgbGVzcyB0aGFuIHRoZSBhdmFpbGFibGUgbWVtb3J5LCBhcyB0aGUKICAgIGJvYXJkIGFuZC9vciBQUEM0NDBFUHggbWlnaHQgaGF2ZSBwcm9ibGVtcyBhY2Nlc3NpbmcgdGhlIGxhc3QgYnl0ZXMuCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCBkMzViNTA4YTU1NTA4NTM1YjZlODQ0NWI3MTg1ODVkMjdkZjczM2QzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMjoyOTo1NiAyMDA3IC0wNTAwCgogICAgZmR0OiBzdXBwcmVzcyB1bnVzZWQgdmFyaWFibGUgJ2JkJyB3YXJuaW5nCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MmJkOWVlNzc0OTA1ODhkNGRhNzg1ZDc1ODI5Y2E2M2QwMTc2YmFmCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjA2OjUwIDIwMDcgLTA1MDAKCiAgICBGaXggd2FybmluZ3MgZnJvbSBvZl9kYXRhIGNvcHkgZml4CgogICAgRm9yZ290IHRvIGNhc3Qgb2ZfZmxhdF90cmVlIHRvIHVsb25nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NjEzYWZkYTc3ZDVlZWMwZjQ3ZDMwMzAyNWIwYzY2MWI3MGU0YzczCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIwOjAzOjQ0IDIwMDcgLTA1MDAKCiAgICBEb24ndCB3YWl0IGZvciBkaXNjb25uZWN0ZWQgVFNFQ3MKCiAgICBUaGUgVFNFQyBkcml2ZXIncyBQSFkgY29kZSB3YWl0cyBhIGxvbmcgdGltZSBmb3IgYXV0b25lZ290aWF0aW9uIHRvCiAgICBjb21wbGV0ZSwgZXZlbiBpZiB0aGUgbGluayBpcyBkb3duLiAgVGhlIFBIWSBrbm93cyB0aGUgbGluayBpcwogICAgZG93biBvciB1cCBiZWZvcmUgYXV0b25lZ290aWF0aW9uIGNvbXBsZXRlcywgc28gd2UgY2FuIHNob3J0LWNpcmN1aXQKICAgIHRoZSBwcm9jZXNzIGlmIHRoZSBsaW5rIGlzIGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5NmM4M2Q0YWU0NzVhNzBlZjI2MzVjZDBlNzQ4MTc0YzQ0Yzg2MDEKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjA6MDM6MzQgMjAwNyAtMDUwMAoKICAgIEZpeCBudW1lcm91cyBidWdzIGluIHRoZSA4NTY4IFVFQyBzdXBwb3J0CgogICAgQWN0dWFsbHksIGZpeGVkIGEgbGFyZ2UgYnVnIGluIHRoZSBVRUMgZm9yICphbGwqIHBsYXRmb3Jtcy4KICAgIEhvdyBkaWQgdGhpcyBldmVyIHdvcms/CgogICAgdWVjX2luaXQoKSBkaWQgbm90IGZvbGxvdyB0aGUgc3BlYyBmb3IgZXRoX2luaXQoKSwgYW5kIHJldHVybmVkCiAgICAwIG9uIHN1Y2Nlc3MuICBTd2l0Y2ggaXQgdG8gcmV0dXJuIHRoZSBsaW5rIGxpa2UgdHNlY19pbml0KCkKICAgIChhbmQgMCBvbiBlcnJvcikKCiAgICBUaGUgaW1tYXAgZm9yIHRoZSA4NTY4IHdhcyBkZWZpbmVkIGJhc2VkIG9uIE1QQzg1NjgsIHJhdGhlciB0aGFuCiAgICBDT05GSUdfTVBDODU2OAoKICAgIENPTkZJR19RRSB3YXMgb2ZmCgogICAgQ09ORklHX0VUSFBSSU1FIHdhcyBzZXQgdG8gIkZyZWVzY2FsZSBHRVRIIi4gIE5vdyBpcyAiRlNMIFVFQzAiCgogICAgRml4ZWQgYSBjb21tZW50IGFib3V0IHRoZSByYW5nZXMgZm9yIENPTkZJR19FVEhQUklNRSBpZiBUU0VDX0VORVQgaXMKICAgIGVuYWJsZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2E3OTAxM2UyYWRkYTUzMzMyZGZkMGI1MTEwNjZhODA1ZTkyOWE5ZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMDowMzoyNSAyMDA3IC0wNTAwCgogICAgRGVmaW5lIHRzZWMgZmxhZyB2YWx1ZXMgaW4gY29uZmlnIGZpbGVzCgogICAgVGhlIHRzZWNfaW5mbyBzdHJ1Y3R1cmUgYW5kIGFycmF5IGhhcyBhICJmbGFncyIgZmllbGQgZm9yIGVhY2gKICAgIGV0aGVybmV0IGNvbnRyb2xsZXIuICBUaGlzIGZpZWxkIGlzIHRoZSBvbmx5IHJlYXNvbiB0aGVyZSBhcmUKICAgIHNldHRpbmdzLiAgU3dpdGNoIHRvIGRlZmluaW5nIFRTRUNuX0ZMQUdTIGZvciBlYWNoIGNvbnRyb2xsZXIKICAgIGluIHRoZSBjb25maWcgaGVhZGVyLCBhbmQgd2UgY2FuIGdyZWF0bHkgc2ltcGxpZnkgdGhlIGFycmF5LCBhbmQKICAgIGFsc28gc2ltcGxpZnkgdGhlIGFkZGl0aW9uIG9mIGZ1dHVyZSBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVjNzIzODIyOTUwN2U3ZjQ3NTMzYTYxMWVhOGM1MzMxOWQyMzRjZjMKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjA6MDM6MTMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBhbGwgYm9hcmRzIHdpdGggYSBUU0VDCgogICAgQ2hhbmdlcyB0byB0aGUgVFNFQyBkcml2ZXIgYWZmZWN0IGFsbW9zdCBhbGwgODN4eCwgODV4eCwgYW5kIDg2eHggYm9hcmRzLgogICAgTm93IHdlIGNhbiBkbyBhIE1BS0VBTEwgdGVzdCBvbiBhbGwgb2YgdGhlbSEKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTBhYWY3MTZjYjBkYzY2MTRkZjU0ZWY3OGJlZDUxNDRhZmQyM2VmOApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAxNzozMDo1NiAyMDA3IC0wNTAwCgogICAgRml4IG9mX2RhdGEgY29weWluZyBmb3IgQ09ORklHX09GX0ZMQVRfVFJFRS11c2luZyBib2FyZHMKCiAgICBUaGUgZml4LCAiRml4IHdoZXJlIHRoZSAjaWZkZWYgQ0ZHX0JPT1RNQVBTWiBpcyBwbGFjZWQiCiAgICBuZWdsZWN0ZWQgdG8gKmFsc28qIHB1dCB0aGUgY29kZSBpbnNpZGUgdGhlIHNpbWlsYXIgI2lmZGVmCiAgICBmb3IgQ09ORklHX09GX0ZMQVRfVFJFRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzhmOWZlZjdmNDA2MDc4YzhiZjcxOTFlNjY1YTczZjc5NTE1Nzc0NgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDE1OjQ2OjQ2IDIwMDcgLTA1MDAKCiAgICBtcGM4ODVhZHM6IERvbid0IGRlZmluZSBDT05GSUdfQlpJUDIuCgogICAgYnppcDIgcmVxdWlyZXMgYSBzaWduaWZpY2FudCBjaHVuayBvZiBtYWxsb2Mgc3BhY2UsIGFuZCB0aGVyZSBpc24ndAogICAgZW5vdWdoIHJvb20gb24gbXBjODg1YWRzICh3aXRoIG9ubHkgOE1CIFJBTSkgZm9yIGJvdGggYnppcDIncyBtYWxsb2MgYXJlYQogICAgYW5kIGEgZG93bmxvYWRlZCBpbWFnZSBhdCAweDQwMDAwMC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwMDIyNzVhM2VkOGIxMTQ4ODVmNjcwMmQ2ZDU0NGQwNzgwZGZlNjg5CkF1dGhvcjogTWljaGFsIFNpbWVrIDxNb25zdHJAc2V6bmFtLmN6PgpEYXRlOglUaHUgQXVnIDE2IDA4OjU0OjEwIDIwMDcgKzAyMDAKCiAgICBCaW9zIGVtdWxhdG9yIC0gZml4IG1pY3JvYmxhemUgdG9vbGNoYWluIHByb2JsZW0KCiAgICBtaWNyb2JsYXplIENQVSBoYXZlIHByb2JsZW0gd2l0aCBiaW9zX2VtdWxhdG9yIGNvZGUuCiAgICBNaWNyb2JsYXplIHRvb2xjaGFpbiBkb2Vzbid0IHN1cHBvcnQgUFJBR01BIFBBQ0suCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgoKY29tbWl0IGE1YTM4ZjRmZDdlNTM2NmQ3MDZmZjZhOTg1ZjliNjcxNWRkYmM5OGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDExOjUxOjA0IDIwMDcgKzAyMDAKCiAgICBNaW5vciBDb2RpbmcgU3R5bGUgZml4OyBVcGRhdGUgQ0hBTkdFTE9HIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ZmI2ZTgwYzA2ODQ5ZTMwMTNhYzVjOTM1MGQ4ZWQ5ZTUyOTY3OTkxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDExOjIxOjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFJlbW92ZSAjd2FybmluZyBpbiBlc2QgYXV0b191cGRhdGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZDc4MDc0ZDJlODA2ZWRjMzgwYzE0NjRlYjllNWRmMzM1ZWNlNjVlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDIyIDE3OjMyOjI4IDIwMDcgKzAyMDAKCiAgICBwcGM3eHg6IFVwZGF0ZSBDUENJNzUwIGJvYXJkCgogICAgVGhpcyBzbWFsbCBDUENJNzUwIHVwZGF0ZSBleHRlbmRzIHRoZSBib2FyZCBzcGVjaWZpYyBjb21tYW5kCiAgICAic2hvd19jb25maWciIHRvIGRpc3BsYXkgdGhlIE1hcnZlbGwgc3RyYXBwaW5nIHJlZ2lzdGVycyBhbmQKICAgIGV4dGVuZHMgdGhlIFBDSSBJREUgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzhjZmY1MGVkYmE2YjE1MDhlYjE1YzJmNTNjZTk2NmFjODkxZWI5ZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVGh1IEF1ZyAxNiAxMDo0NjoyOCAyMDA3ICswMjAwCgogICAgW0ZJWF0gQ2hhbmdlcyBmb3IgYmlvc19lbXVsYXRvciBjb2RlIGZvciBvdGhlcnMgYXJjaGl0ZWN0dXJlCgpjb21taXQgNmUwZTIyNTNmMDM5MzQ0ZjhlYmQyNzg3Mjg1ZmRiYTkwZTY3MTRlOApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVGh1IEF1ZyAxNiAxMDo0NTowOSAyMDA3ICswMjAwCgogICAgW0ZJWF0gUmVtb3ZlIHVudXNlZCBpbmNsdWRlIGZpbGUKCmNvbW1pdCA5ZGU0NjliZDk2MGNjMTg3MGJiNDBkNjY3MmVkNDI3MjZiOGI1MGQ3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDE2IDEwOjE4OjMzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IE9ubHkgZW5hYmxlIFBPU1QgRlBVIHRlc3Qgb24gU2VxdW9pYSBhbmQgbm90IFJhaW5pZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmRhMGM1YmQ0YTUzZTQwZWI0ZjdlYjcyYTRjMDUxZWNhYmFkNzgzYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAxNiAwOTo1NDo1MSAyMDA3ICswMjAwCgogICAgQWRkIG1pc3NpbmcgcmFpbmllciAoUFBDNDQwR1J4KSB0YXJnZXQgdG8gTUFLRUFMTCBhbmQgTUFJTlRBSU5FUnMgZmlsZXMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDJiYTcwMjJmNjJiYjc1OTA4Mjk2YzU4YzYzODY2ZTFkMjk0YjY5YQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAxNiAwOTo1MjoyOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgU2VxdW9pYS9SYWluaWVyIGJvb3RzdHJhcCBjb21tYW5kCgogICAgQXMgc3VnZ2VzdGVkIGJ5IERhdmlkIE1pdGNoZWxsLCBoZXJlIGFuIHVwZGF0ZSBmb3IgdGhlIFNlcXVvaWEvUmFpbmllcgogICAgYm9vdHN0cmFwIGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM1Y2M0ZTQ4MjM2NjhlODc0NTg1NDg5OWNmYWVkZDQ0ODliZWIwZWYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjM5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBlbmFibGUgbGliZmR0IGJ5IGRlZmF1bHQgb24gZnJlZXNjYWxlIGJvYXJkcwoKICAgIHRoaXMgZW5hYmxlcyBsaWJmZHQgY29kZSBieSBkZWZhdWx0IGZvciB0aGUKICAgIGZyZWVzY2FsZSBtcGM4MzEzZXJkYiwgbXBjODMyeGVtZHMsIG1wYzgzNDllbWRzLAogICAgbXBjODM0OWl0eCBhbmQgZ3AgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2ZkZTllOGIyMmNmYmQ3YWY0ODkyMTQ3NThmOTgzOWEyMDY1NzZjYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjI6MzA6MzMgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IG1pZ3JhdGUgcmVtYWluaW5nIGZyZWVzY2FsZSBib2FyZHMgdG8gbGliZmR0CgogICAgdGhpcyBhZGRzIGxpYmZkdCBzdXBwb3J0IGNvZGUgZm9yIHRoZSBmcmVlc2NhbGUKICAgIG1wYzgzMTNlcmRiLCBtcGM4MzJ4ZW1kcywgbXBjODM0OWVtZHMsIG1wYzgzNDlpdHgsCiAgICBhbmQgZ3AgYm9hcmRzLgoKICAgIEJvYXJkcyByZW1haW4gY29tcGF0aWJsZSB3aXRoIE9GX0ZMQVRfVFJFRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZhMTZlMGRmY2M0MTE5YjQ2YWRiMWRjZTJkNmM4ZmIzYzVkMTA4ZTEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjI2IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBtb3ZlIGNvbW1vbiAvbWVtb3J5IG5vZGUgdXBkYXRlIG1lY2hhbmlzbSB0byBjcHUuYwoKICAgIGFsc28gYWRkcyBjb21tb24gcHJvdG90eXBlcyB0byBpbmNsdWRlL2NvbW1vbi5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOGY5ZTBlOWYzMzlhZWU0Y2UzMWEzMzhkNWYyNzM1NmViNTQ1N2Y4NQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMjI6MzA6MTkgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IHJlbWFpbmluZyA4MzYwIGxpYmZkdCBmaXhlcwoKICAgIFBDSSBjbG9ja3MgYW5kIFFFIGZyZXF1ZW5jaWVzIHdlcmVuJ3QgYmVpbmcgdXBkYXRlZCwgYW5kIHRoZSBjb3JlIGNsb2NrCiAgICB3YXMgYmVpbmcgdXBkYXRlZCBpbmNvcnJlY3RseS4gIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgL21lbW9yeSBub2RlIGlmCiAgICBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QgcHJpb3IgdG8gdXBkYXRlLgoKICAgIHBsdXMgc29tZSBjb3NtZXRpYyB0cmltbWluZyB0byBzaW5nbGUgbGluZSBjb21tZW50cy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY0YjJhYzVlZDlhYWZmOTkyMGQ0ODdiZmY4YTU5Njk2YzA4M2E1MjQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDIyOjMwOjEyIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggVUVDMi0+MSB0eXBvIGluIGxpYmZkdCBzZXR1cCBjb2RlCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxOWZhMWMzNTM2ODQ4NGQ0ZWQxMGRkY2U4YTc3OTNjMjE4NjJlM2EzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNSAyMjozMDowNSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogYWRkIE1BSU5UQUlORVIgYW5kIE1BS0VBTEwgZW50cmllcyBmb3IgdGhlIG1wYzgzMjNlcmRiCgogICAgYW5kIHJlb3JkZXIgdGhlIGV4aXN0aW5nIDgzeHggbWFpbnRhaW5lcnMgYWxwaGEuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YjRkZTkzMDlkN2EwM2FhMWRiMmU1MzkxYWI2OTYzNjMzOTFmNDYwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjE1OjA1IDIwMDcgKzAyMDAKCiAgICBbRklYXSBSZXNvbHZlIHByb2JsZW0gd2l0aCB3YXJuaW5ncwogICAgbWljcm9ibGF6ZSB0b29sY2hhaW4gZG9uJ3Qgc3VwcG9ydCBQUkFHTUEgUEFDSy4KCmNvbW1pdCBkMWVkMjhjZjM2YWI2YjFkNGM0Nzk4MDlkZTcyNTJiZjUzZDJmMmQ0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjA1OjA3IDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgc2V0dGluZyBmb3IgTWljcm9ibGF6ZSBib2FyZHMKCmNvbW1pdCA3YWE2M2Q4Y2QzMGFiMjBhYzJmZDFhYjg2ZTYwNDcxZGU4YjFmMWU1CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglXZWQgQXVnIDE1IDIxOjAzOjQxIDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgZGVmaW5pdGlvbgoKY29tbWl0IDMwYjUyZGY5ZTkwNmJmMGU0NjU5MTZjMmM2YmI1MTkyYjQzOGUwYjgKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDE1IDExOjU1OjM1IDIwMDcgLTA1MDAKCiAgICA4Nnh4OiBGaXggbGluZ2VyaW5nIENGR19DTURfKiByZWZlcmVuY2VzIGluIHNiYzg2NDFkLmgKCiAgICBSZW1vdmUgYSBsZWZ0b3ZlciBpbiBuZXQvdGZ0cC5jIHdoaWxlIHdlJ3JlIGF0IGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGNlOTE3NzQyYjFlNDhmYWE5YmY5YTk3NTc1NDVlNTZmYjRjZmU0NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTI6MjA6NDAgMjAwNyAtMDUwMAoKICAgIE1vdmUgdGhlIE1QQzg2NDFIUENOIGJvYXJkIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZS4KCiAgICBNaW5vciBwYXRoIGNvcnJlY3Rpb25zIG5lZWRlZCB0byBlbnN1cmUgYnVpbGRhYmlsaXR5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODY2MjU3N2ZlMzZmZGI2YTQ0YjU1Yjk5OGQ5ZGFhYzYzOTJhNzM2YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTE6NDY6MjIgMjAwNyAtMDUwMAoKICAgIDg2eHg6IEZpeCBsaW5nZXJpbmcgQ0ZHX0NNRF8qIHJlZmVyZW5jZXMgaW4gc2JjODY0MWQuaAoKICAgIFJlbW92ZSBhIGxlZnRvdmVyIGluIG5ldC90ZnRwLmMgd2hpbGUgd2UncmUgYXQgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMTBmNDYzYzcxOTE3YjdhNDQ5NWMyMTAzYzIyOGI5YzE3OWFlNjRkCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglXZWQgQXVnIDE1IDExOjEzOjE1IDIwMDcgLTA0MDAKCiAgICBGaXggd2hlcmUgdGhlICNpZmRlZiBDRkdfQk9PVE1BUFNaIGlzIHBsYWNlZC4KCiAgICBDb21taXQgMDczZTFiNTA5OTgwY2VmZTZmNTNjMmQ3ZmJiY2QxMzVkZjFlMzkyNCAiRml4IGluaXRyZC9kdGIKICAgIGludGVyYWN0aW9uIiBwdXQgdGhlIG5ldyBjb2RlIG91dHNpZGUgb2YgdGhlICNpZiBkZWZpbmVkKENPTkZJR19PRl9MSUJGRFQpCiAgICB3aGVuIGl0IHNob3VsZCBoYXZlIGdvbmUgaW5zaWRlIG9mIHRoZSBjb25kaXRpb25hbC4gIEFzIGEgcmVzdWx0LCBpdAogICAgYnJva2Ugbm9uLUxJQkZEVCBib2FyZCBidWlsZHMuCgogICAgQWxzbyBhZGRlZCBhIG1pc3NpbmcgIm5vdC4iIHRvIHRoZSBjb21tZW50LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMGUxOTIwOTc2NzE5NGE5N2NlYzZkOTNkYmE5ZTY0ZDFkYThkNTQ4ZQpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+CkRhdGU6CVdlZCBBdWcgMTUgMTI6MTQ6MjMgMjAwNyArMDIwMAoKICAgIFBQQzR4eDpIQ1U0LzUtQm9hcmQgZml4IGNvbXBpbGUgd2FybmluZwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgNTk0ZTc5ODM4Y2U1MDc4YTkwZDBjMjdhYmIyYjJkNjFkNWY4ZThhNwpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTQ6MDY6NDUgMjAwNyAtMDUwMAoKICAgIEZpeCBtYWxsb2Mgc2l6ZSBlcnJvciBpbiBhaGNpX2luaXRfb25lLgoKICAgIFR5cGljYWxseSB0aGlzIGNhdXNlcyBzY3NpIGluaXQgdG8gY29ycnVwdCB0aGUKICAgIGRldmxpc3QgYW5kIGJyZWFrIHRoZSBjb25pbmZvIGNvbW1hbmQuCiAgICBGaXggYSBjb21waWxlciBzaXplIHdhcm5pbmcuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIzNjFhY2Q2NGZkMjUyNWMwODFiOWIyODhiMDgwNGVmZTIwOWMwZTkKQXV0aG9yOiBrc2lAa29pOC5uZXQgPGtzaUBrb2k4Lm5ldD4KRGF0ZToJVHVlIEF1ZyAxNCAxMDowMjoxNiAyMDA3IC0wNzAwCgogICAgVEkgRGFWaW5jaSAtIGZpeCB1bnN1cHBvcnRlZCAlaGh4IGZvcm1hdAoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgoKY29tbWl0IGYwMWRiYjU0MjRhODE0NTNjODExOTBkZDMwZTk0NTg5MTQ2NmY2MjEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE4OjQyOjM2IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA3M2UxYjUwOTk4MGNlZmU2ZjUzYzJkN2ZiYmNkMTM1ZGYxZTM5MjQKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTA6MzI6NTkgMjAwNyAtMDUwMAoKICAgIEZpeCBpbml0cmQvZHRiIGludGVyYWN0aW9uCgogICAgVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgd3JvbmdseSByZWxvY2F0ZSB0aGUgYmxvYiB0byBiZSByaWdodCBiZWZvcmUKICAgIHRoZSBpbml0cmQgaWYgaXQgZXhpc3RlZC4gIFRoZSBibG9iICptdXN0KiBiZSB3aXRoaW4gQ0ZHX0JPT1RNQVBTWiwKICAgIGlmIGl0IGlzIGRlZmluZWQuICBTbyB3ZSBtYWtlIHR3byBjaGFuZ2VzOgoKICAgIDEpIGZsYWcgdGhlIGJsb2IgZm9yIHJlbG9jYXRpb24gd2hlbmV2ZXIgaXRzIGFkZHJlc3MgaXMgYWJvdmUgQk9PVE1BUFNaCgogICAgMikgSWYgdGhlIGJsb2IgaXMgYmVpbmcgcmVsb2NhdGVkLCByZWxvY2F0ZSBpdCBiZWZvcmUga2JkLCBub3QgaW5pdHJkCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1NGI5NzAxNzM3NjkzMDdhMTE2YmQzNDAyOGI2ZDBjMmVlYTJhNGUKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgQXVnIDE0IDE1OjQwOjAwIDIwMDcgKzAxMDAKCiAgICBTdXBwbHkgc3BpIGludGVyZmFjZSBpbiBhdDQ1LmMKCmNvbW1pdCA0Y2U4NDZlYzU5ZjM2Yjg1ZDY2NDRhNzY5NjkwYWQzZmViNjY3NTc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE1OjEyOjAxIDIwMDcgKzAyMDAKCiAgICBQT1NUOiBGaXggbWVyZ2UgcHJvYmxlbQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MjlkOTU3MWY2MDYzMWFlOGEyZmUxMmIxMWJlNGM3NWIwYzJiMzdjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE1OjAzOjE3IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NzllOTc1MTE3YTc1ZTkxZmNlYmUyMjZhNjMxMDRkYmZiOTI0YWIxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE0OjQ0OjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBpbml0aWFsIFpldXMgKFBQQzQwNUVQKSBib2FyZCBzdXBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM1YTE3MmE1ZmQ2MzZjMTI0Njc0MjllM2Y3OTEwZTUzNzczOTc5YzYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTQgMTQ6NDE6NTUgMjAwNyArMDIwMAoKICAgIFBPU1Q6IEFkZCBvcHRpb24gZm9yIGV4dGVybmFsIGV0aGVybmV0IGxvb3BiYWNrIHRlc3QKCiAgICBXaGVuIENGR19QT1NUX0VUSEVSX0VYVF9MT09QQkFDSyBpcyBkZWZpbmVkLCB0aGUgZXRoZXJuZXQgUE9TVAogICAgaXMgbm90IGRvbmUgdXNpbmcgYW4gaW50ZXJuYWwgbG9vcGJhY2sgY29ubmVjdGlvbiwgYnV0IGJ5IGFzc3VtaW5nCiAgICB0aGF0IGFuIGV4dGVybmFsIGxvb3BiYWNrIGNvbm5lY3RvciBpcyBwbHVnZ2VkIGludG8gdGhlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYjJiNDAxMGFlNDI2MjQ1MTcyOTg4ODA0ZWU4ZDkxOTNmYjQxMDM4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDE0IDE0OjM5OjQ0IDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgcHBjNDA1IHN1cHBvcnQgdG8gY2FjaGUgYW5kIFVBUlQgUE9TVAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwYzQyZjM2ZjE1MDc0YmQ5ODA4YTdkYmQ3ZWY2MTFmYWQ5YmY1MzdjCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDo0NjozMiAyMDA3ICswMTAwCgogICAgUmVwbGFjZSBsb3N0IGVuZCBvZiBhdDQ1LmMuCgpjb21taXQgNjVkN2FkYTY0NTU3ZTc2MDk0YjRmZDNiYWQzMGEwZjE4ZjVmYjJiMgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMTA6MzA6MDYgMjAwNyArMDEwMAoKICAgIFVwZGF0ZSBNYWtlZmlsZXMgZm9yIG1lcmdlZCBhbmQgc3BsaXQgYXQ0NS5jLgoKY29tbWl0IDM0NTRjZWNlMmRiNTdjYjllYjcwODc5OTVmN2U3MzA2NmExNjNmNzEKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglUdWUgQXVnIDE0IDEwOjIxOjA2IDIwMDcgKzAxMDAKCiAgICBEZWxldGUgdGhlIG1lcmdlZCBmaWxlcy4KCmNvbW1pdCBkY2JmZDJlNTY0OWY5N2FhMDRmYmJjNmVhMmIwMDhhYTQ0ODZlMjI1CkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDoxNDowNSAyMDA3ICswMTAwCgogICAgQWRkIHRoZSBmaWxlcy4KCmNvbW1pdCBkNGZjNjAxMmZkMGE1YzIxMWI4MjU2OTFmNDRiMDZmODAzMmMwNTUxCkF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNCAxMDoxMDo1MiAyMDA3ICswMTAwCgogICAgQWRkIE1BQ0hfVFlQRSByZWNvcmRzIGZvciBzZXZlcmFsIEFUOTEgYm9hcmRzLgogICAgTWVyZ2UgdG8gdHdvIGF0NDUuYyBmaWxlcyBpbnRvIGEgY29tbW9uIGZpbGUsIHNwbGl0IHRvIGF0NDUuYyBhbmQgc3BpLmMKICAgIEZpeCBzcGVsbGluZyBlcnJvciBpbiBETTkxNjEgUEhZIFN1cHBvcnQuCiAgICBJbml0aWFsaXplIGF0OTFybTkyMDAgYm9hcmQgKGFuZCBzZXQgTEVEKS4KICAgIEFkZCBQSU8gY29udHJvbCBmb3IgYXQ5MXJtOTIwMGRrIExFRHMgYW5kIE11eC4KICAgIENoYW5nZSBkYXRhZmxhc2ggcGFydGl0aW9uIGJvdW5kYXJpZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIExpbnV4IDIuNi4KCiAgICBTaWduZWQtb2ZmLWJ5OglQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgogICAgU2lnbmVkLW9mZi1ieToJVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+Cgpjb21taXQgNGVmMzVlNTNjNjkzNTU2YzU0YjBjMjJkNmY4NzNkZTg3YmFkZTI1MwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBBdWcgMTQgMDk6NTQ6NDYgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4NWViNWNhZjZiOTA2ZjdlYzViNTQ4MTRlOGM3Yzc0ZjU1OTg2YmI3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNCAwOTo0NzoyNyAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHJlYnVpbGQgQ0hBTkdFTE9HCgpjb21taXQgN2YzZjJiZDJkYzA4ZTBiMDVlMTg1NjYyY2EyZTJkMjgzNzU3MTA0YQpBdXRob3I6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBsaW51eGJveC4obm9uZSk+CkRhdGU6CVR1ZSBGZWIgMjcgMTk6NDI6MjIgMjAwNyAtMDcwMAoKICAgIDg1eHhDRFM6IEFkZCBtYWtlIHRhcmdldHMgZm9yIGxlZ2FjeSBzeXN0ZW1zLgoKICAgIFRoZSBQQ0kgSUQgc2VsZWN0IHZhbHVlcyBvbiB0aGUgQXJjYWRpYSBtYWluIGJvYXJkIGRpZmZlciBkZXBlbmRpbmcKICAgIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBoYXJkd2FyZS4gVGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gc3VwcG9ydHMKICAgIFJldiAzLjEuIFRoZSBsZWdhY3kgdGFyZ2V0IHN1cHBvcnRzIFJldiAyLnguCgogICAgU2lnbmVkLW9mZi1ieSBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KCmNvbW1pdCBlNDEwOTRjN2UzODE3N2M3NTVmYmQ5YjE4MjAxODA2OTYxNGYwODBkCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE0IDAxOjUwOjA5IDIwMDcgLTA1MDAKCiAgICA4NXh4Q0RTOiBFbmFibGUgdGhlIFZJQSBQQ0ktdG8tSVNBIGJyaWRnZS4KCiAgICBBdXRob3I6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBsaW51eGJveC4obm9uZSk+CgogICAgRW5hYmxlIHRoZSBQQ0ktdG8tSVNBIGJyaWRnZSBpbiB0aGUgVklBIFNvdXRoYnJpZGdlIGxvY2F0ZWQgb24gdGhlCiAgICBBcmNhZGlhIG1haW4gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogUmFuZHkgVmluc29uIDxydmluc29uQG12aXN0YS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhOWQ0NjEwZDc2ZTUyYzRkMjBhOGYzZDg0MzM0MzlhN2ZjZjViNzEKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMDA6MTQ6MjUgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBVRUMgdG8gODU2OAoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzU5ZTQwOTFmZmUwMTQ4Mzk4YjllOWZmMTRhMDE5ZWEwMzhiNzQzMgpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTkgMTQ6MTg6MzQgMjAwNyAtMDQwMAoKICAgIEFkZCBQQ0kgc3VwcG9ydCBmb3IgTVBDODU2OE1EUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggaXMgYWdhaW5zdCB1LWJvb3QtbXBjODV4eC5naXQgb2Ygd3d3LmRlbnguY29tCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVib255IFpodSA8ZWJvbnkuemh1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDExMWQ2MzgyYzk5ZmRlYTA4YzIzMTJlZWVhZTg3ODY5NDVlMTg5YQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMTkgMTQ6MTg6MzIgMjAwNyAtMDQwMAoKICAgIEVtcGlyaWNhbGx5IHNldCBjcG8gYW5kIGNsa19hZGp1c3QgZm9yIG1wYzg1eHggRERSMiBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBpcyBhZ2FpbnN0IHUtYm9vdC1tcGM4NXh4LmdpdCBvZiB3d3cuZGVueC5jb20KCiAgICBTZXR0aW5nIGNwbyB0byAweDkgZm9yIGZyZXF1ZW5jaWVzIGhpZ2hlciB0aGFuIDMzM01IeiBpcyB2ZXJpZmllZCBvbgogICAgYm90aCBNUEM4NTQ4Q0RTIGJvYXJkIGFuZCBNUEM4NTY4TURTIGJvYXJkLCBlc3BlY2lhbGx5IGZvciBzdXBwb3J0aW5nCiAgICA1MzNNSHogRERSMi4KCiAgICBTZXR0aW5nIGNsa19hZGp1c3QgdG8gMHg2KDMvNCBsYXRlIGN5Y2xlKSBmb3IgTVBDODU2OE1EUyBib2FyZCBpcyBmb3IKICAgIEREUjIgb24gYWxsIGN1cnJlbnQgYm9hcmQgdmVyc2lvbnMgZXNwZWNpYWxseSB2ZXIgMS45MiBvciBsYXRlciB0byBicmluZwogICAgdXAuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZGIwYmVmNTllYWIxMTU1ODAxNjE4Y2VmNWM0ODFlOTc1NTNiNTk3CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEF1ZyA3IDE4OjA3OjI3IDIwMDcgLTA1MDAKCiAgICBVc2UgYW4gYWJzb2x1dGUgYWRkcmVzcyB3aGVuIGp1bXBpbmcgb3V0IG9mIDRrIGJvb3QgcGFnZQoKICAgIE9uIGU1MDAgd2hlbiB3ZSBsZWF2ZSB0aGUgNGsgYm9vdCBwYWdlIHdlIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgYWRkcmVzcyBzaW5jZQogICAgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgYm9hcmQgY29kZSBtYXkgd2FudCB1cyB0byBiZSByZWFsbHkgcnVubmluZyBhdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgoKY29tbWl0IDM5OTgwYzYxMGM5YTRjMzgxOTA3YzllMWQxYjljMGUxYzBkY2E1N2EKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgMTMgMTQ6NDk6NTkgMjAwNyAtMDUwMAoKICAgIE1QQzg1eHggQkEgYml0cyBub3Qgc2V0IGZvciAzLWJpdCBiYW5rIGFkZHJlc3MgRElNTQoKICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHNldCB0aGUgbnVtYmVyIG9mIGJhbmsgYWRkcmVzcyBiaXRzCiAgICAoQkEpIGluIHRoZSBwcm9jZXNzb3IuIFRoZSBkZWZhdWx0IGFzc3VtZXMgMiBsb2dpY2FsIGJhbmsgYml0cy4gVGhpcwogICAgd29ya3MgZmluZSBmb3IgYSBESU1NIHRoYXQgdXNlcyBkZXZpY2VzIHdpdGggNCBpbnRlcm5hbCBiYW5rcyAoU1BECiAgICBieXRlMTcgPSAweDQpIGJ1dCBuZWVkcyB0byBiZSBzZXQgYXBwcm9wcmlhdGVseSBmb3IgYSBESU1NIHRoYXQgdXNlcwogICAgZGV2aWNlcyB3aXRoIDggaW50ZXJuYWwgYmFua3MgKFNQRCBieXRlMTcgPSAweDgpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyZWcgRGF2aXMgPERhdmlzR0BlbWJlZGRlZHBsYW5ldC5jb20+Cgpjb21taXQgNmM1NDM1OTdiYjRiMWVjZjVkODU4OWY3YWJiMGYzOTkyOWZiN2ZkMQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxMyAxNDozODowNiAyMDA3IC0wNTAwCgogICAgRml4IG1pbm9yIDg1eHggd2FybmluZ3MKCiAgICBTb21lIHBhdGNoZXMgaGFkIGluc2VydGVkIHdhcm5pbmdzIGludG8gdGhlIGJ1aWxkOgogICAgKiBtcGM4NTYwYWRzIGRlY2xhcmVkIGRhdGEgd2l0aG91dCB1c2luZyBpdAogICAgKiBjcHVfaW5pdCBkZWNsYXJlZCBlY20gYW5kIGltbWFwIHdpdGhvdXQgdXNpbmcgaXQgaW4gYWxsIENPTkZJR3MKICAgICogTVBDODU0OENEUy5oIGhhZCBpdHMgZGVmYXVsdCBmaWxlbmFtZXMgY2hhbmdlZCBzbyB0aGF0IHRoZXkgY29udGFpbmVkCiAgICAgICJcbSIgaW4gdGhlIHBhdGhzLiAgTWFkZSB0aGUgZGVmYXVsdHMgbm90IFdpbmRvd3Mtc3BlY2lmaWMgKG9yCiAgICAgIGFueXRoaW5nLXNwZWNpZmljKQoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMmNmZjZiMTA0ZjgyYjk5M2JlZjYwODZjZTBjOTcxNTliYmUxYWRkCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAwMTo1MDo1MiAyMDA3IC0wNTAwCgogICAgODU0OGNkcyBQQ0lFIHN1cHBvcnQuCgogICAgTWFrZSB0aGUgZWFybHkgTDEgY2FjaGUgc3RhY2sgcmVnaW9uIGd1YXJkZWQgdG8gcHJldmVudCBzcGVjdWxhdGl2ZQogICAgZmV0Y2hlcyBvdXRzaWRlIHRoZSBsb2NrZWQgcmFuZ2UuCgogICAgVXNlIF9QSFlTIGRlZmluZXMsIG5vdCBfTUVNIGZvciBjcHUtc2lkZSBQQ0kgbWVtb3J5IG1hcHBlZCByZWdpb25zLgogICAgaW5pdC5TIHdoaXRlc3BhY2UgY2xlYW51cC4KCiAgICBBbGxvdyBURVhUX0JBU0UgdmFsdWUgdG8gYmUgc3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4gIFRoaXMgYWxsb3dzIGl0CiAgICB0byBiZSBzZXQgdG8gMHhmZmZjMDAwMCB3aGljaCBjdXRzIHRoZSB1Ym9vdCBiaW5hcnkgaW4gaGFsZi4KCiAgICBDbGVhciBhbmQgZW5hYmxlIGxiYyBhbmQgZWNtIGVycm9ycy4KCiAgICBVcGRhdGUgbGFzdF9idXNubyBpbiBkZXZpY2UtdHJlZSBmb3IgcGNpIGFuZCBwY2llLgoKICAgIFJlbW92ZSBsb2FkIG9mIG9ic29sZXRlIGNwdS9tcGM4NXh4L3BjaS4wCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODM3ZjFiYTA1Y2ZiMjQ4YWJhNWFiOGUxZmIxYmZlZWZhMDdkNTk2MgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NTEgMjAwNyAtMDUwMAoKICAgIDg1NDRkcyBQQ0lFIHN1cHBvcnQKCiAgICBQQ0kxIExBVyBtYXBwaW5nIHNob3VsZCB1c2UgQ0ZHX1BDSTFfTUVNX1BIWSBhbmQgbm90IF9CQVNFIGFkZHJlc3MuCgogICAgRW5hYmxlIExCQyBhbmQgRUNNIGVycm9ycyBhbmQgY2xlYXIgZXJyb3IgcmVnaXN0ZXJzLgoKICAgIEFkZCB0ZnRwZmxhc2ggZW52IHZhciB0byBnZXQgdWJvb3QgZnJvbSB0ZnRwIHNlcnZlciBhbmQgZmxhc2ggaXQuCgogICAgQWRkIHBjaS9wY2llIGNvbnZlbmllbmNlIGVudiB2YXJzIHRvIGRpc3BsYXkgcmVnaXN0ZXIgc3BhY2U6CiAgICAgICJydW4gcGNpZTNyZWdzIiB0byBzZWUgYWxsIHBjaWUzIGNjc3IgcmVnaXN0ZXJzCiAgICAgICJydW4gcGNpZTNjZmciIHRvIHNlZSBhbGwgY2ZnIHJlZ2lzdGVycwogICAgV2hpdGVzcGFjZSBjbGVhbnVwIGFuZCBNUEM4NTQ0RFMuaAoKICAgIEVuYWJsZSBDT05GSUdfSU5URVJSVVBUUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MWEyMWU5ODBhN2I5MTg4NDI0ZDA0ZjFjMjY1ZmRjNWMyMWM3ZTg1CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE0IDAxOjM0OjIxIDIwMDcgLTA1MDAKCiAgICA4NXh4IHN0YXJ0LlMgY2xlYW51cCBhbmQgZXhjZXB0aW9uIHN1cHBvcnQKCiAgICBGcm9tOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgoKICAgIFN1cHBvcnQgZXh0ZXJuYWwgaW50ZXJydXB0cyBmcm9tIHBsYXRmb3JtIHRvIGVsaW1pbmF0ZSBzeXN0ZW0gaGFuZ3MuCiAgICBEZWZpbmUgQ09ORklHX0lOVEVSUlVQVFMgYm9hcmQgY29uZmlndXJlIG9wdGlvbiB0byBlbmFibGUuCiAgICBFbmFibGUgZWNtLCBkZHIsIGxiYywgYW5kIHBjaS9wY2llIGVycm9yIGludGVycnVwdHMgaW4gUElDLgoKICAgIFJlbW92ZSBleHRyYSBjcHUgaW5pdGlhbGl6YXRpb24gcmVkdW5kYW50IHdpdGggaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uCiAgICBXaGl0ZXNwYWNlIGNsZWFudXAuCgogICAgRGVmaW5lIGFuZCB1c2UgX1NUQVJUX09GRlNFVCBjb25zaXN0ZW50IHdpdGggb3RoZXIgcHJvY2Vzc29ycyB1c2luZwogICAgcHBjX2FzbS50bXBsCgogICAgTW92ZSBhZGRpdGlvbmFsIGNvZGUgZnJvbSAudGV4dCB0byBib290IHBhZ2UgdG8gbWFrZSByb29tIGZvcgogICAgZXhjZXB0aW9uIHZlY3RvcnMgYXQgc3RhcnQgb2YgaW1hZ2UuCgogICAgSGFuZGxlIE1hY2hpbmUgQ2hlY2ssIEV4dGVybmFsIGFuZCBDcml0aWNhbCBleGNlcHRpb25zLgoKICAgIEZpeCBlNTAwIG1hY2hpbmUgY2hlY2sgZXJyb3IgZGV0ZXJtaW5hdGlvbiBpbiB0cmFwcy5jCgogICAgVEVYVF9CQVNFIGNhbiBub3cgYmUgMHhmZmZjXzAwMDAgLSB3aGljaCBjdXRzIGJpbmFyeSBpbWFnZSBpbiBoYWxmLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdiZDMwZmM0YTY0NzViNDFkNjY3OWFlM2FhZmM5ZmE1MDUyNjBjNDcKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTQgMDE6MzM6MTggMjAwNyAtMDUwMAoKICAgIEFkZCBNUEM4NTQ0RFMgUkVBRE1FCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQwYzdmOWIwZGU0ZTMwMDM3MGFkZmM3MDQxMjhmYTBmNzlhMTQzYjYKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ4IDIwMDcgLTA1MDAKCiAgICA4NXh4IGFsbG93IGRlYnVnZ2VyIHRvIGNvbmZpZ3VyZSBkZHIuCgogICAgT25seSBjaGVjayBmb3IgbXBjODU0OCByZXYgMSB3aGVuIGNvbXBpbGVkIGZvciA4NTQ4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI5MzcyZmYzOGM1YmFhYjdkMGUzYThjMTRmZTExZmExOTRhMzg3MDQKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ3IDIwMDcgLTA1MDAKCiAgICBtcGM4NXh4IEwyIGNhY2hlIHJlcG9ydGluZyBhbmQgU1JBTSByZWxvY2F0aW9uIG9wdGlvbi4KCiAgICBBbGxvdyBkZWJ1Z2dlciB0byBvdmVycmlkZSBmbGFzaCBjczAvY3MxIHNldHRpbmdzIHRvIGVuYWJsZSBhbHRlcm5hdGUKICAgIGJvb3QgcmVnaW9ucwoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQxZjBmOGZiMWFiOTJmMGNiYTdkMzI5ZGU5MDA3MGY4MjJmODI5OWYKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ2IDIwMDcgLTA1MDAKCiAgICBlNTAwIG5lZWRzIHBwY19hc20udG1wIE1DS19FWENFUFRJT04KCiAgICBBbHdheXMgZGVmaW5lIE1DS19FWENFUFRJT04gbWFjcm8gLSBzbyBlNTAwIGNhbiB1c2UgaXQgdG9vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUzYTVjNDI0YmY4NjU1YjdiNGUyYzMwNWE0NDE5NjMyNTlhMjZhODEKQXV0aG9yOiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTA6NDE6MDcgMjAwNyAtMDUwMAoKICAgIG11bHRpY2FzdCB0ZnRwOiBSRkMyMDkwCgogICAgSW1wbGVtZW50ZWQgSUVURiBSRkMyMDkwLCBNdWx0aWNhc3QgVEZUUC4gIEluaXRpYWwgaW1wbGVtZW50YXRpb24KICAgIG9uIFJlYWx0ZWsgUlRMODEzOSBhbmQgRnJlZXNjYWxlIFRTRUMuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgVXBkZWdyYWZmIDxkYXZlQGNyYXkuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgNWQxMTBmMGFhNjlmMDY1ZWUzODZlYzE4NDBkZmVlMWU4Y2M0NmJjMQpBdXRob3I6IFdpbHNvbiBDYWxsYW4gPHdjYWxsYW5Ac2F2YW50YXYuY29tPgpEYXRlOglTYXQgSnVsIDI4IDEwOjU2OjEzIDIwMDcgLTA0MDAKCiAgICBOZXcgQ09ORklHX0JPT1RQX1NFUlZFUklQIG9wdGlvbgoKICAgIEFkZGVkIENPTkZJR19CT09UUF9TRVJWRVJJUCB0byBhbGxvdyB0aGUgdGZ0cCBzZXJ2ZXIgdG8gYmUgZGlmZmVyZW50CiAgICBmcm9tIHRoZSBib290cCBzZXJ2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBXaWxzb24gQ2FsbGFuIDx3Y2FsbGFuQHNhdmFudGF2LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDUwY2NhOGI5NzZlYzc0MDY5ODYwMjA4YzM2ZTY0Y2U4ZjRkNWU0YzEKQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgpEYXRlOglTdW4gQXVnIDEyIDA4OjQ4OjI3IDIwMDcgKzAzMDAKCiAgICBBZGQgYWJpbGl0eSB0byB0YWtlIE1BQyBhZGRyZXNzIGZyb20gdGhlIGVudmlyb25tZW50IHRvIERNOTAwMCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Cgpjb21taXQgYmU1ZDcyZDEwZDQ3NjA5MzI2MjI2MjI1MTgxZTMwMWZiOWEzM2I1OApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgMTMgMjE6NTc6NTMgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgY2NhMzQ5NjdjYmQxM2ZmNmJkMzUyYmUyOWUzZjFjYzg4YWIyNGMwNQpBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CVNhdCBBdWcgMTEgMDY6NTQ6NTggMjAwNyAtMDUwMAoKICAgIE1vZGlmeSBTQkM4NjQxRCB0byB1c2UgbmV3IEZyZWVzY2FsZSBQQ0kgcm91dGluZXMKCiAgICBQQ0ktRXhwcmVzcyBzb2NrZXRzIDEgYW5kIDIgdmVyaWZpZWQgd29ya2luZyB3aXRoIEludGVsIFByby8xMDAwIFBUCiAgICBhZGFwdGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBTaWduZGUtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGEwODQ1ODMwM2U3ZjlkYjY3ZjI5Njk4MDAzNmQzMjkyYzM1Y2I0NWMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEp1biAyOSAxODozODo1MSAyMDA3ICswMjAwCgogICAgYXRtZWxfbWNpOiBGaXggZGF0YSB0aW1lb3V0IHZhbHVlCgogICAgQ2FsY3VsYXRlIHRoZSBkYXRhIHRpbWVvdXQgYmFzZWQgb24gdmFsdWVzIGZyb20gdGhlIENTRCBpbnN0ZWFkIG9mCiAgICBqdXN0IHVzaW5nIGEgaGFyZGNvZGVkIERUT1IgdmFsdWUuIFRoaXMgaXMgYSBiYWNrcG9ydCBvZiBhIHNpbWlsYXIgZml4CiAgICBpbiBCU1AgMi4wLCB3aXRoIG9uZSBhZGRpdGlvbmFsIGZpeDogdGhlIERUT0NZQyB2YWx1ZSBpcyByb3VuZGVkIHVwCiAgICBpbnN0ZWFkIG9mIGRvd24uCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMGJhOGVlZDI4YjU3NTYyNmIxN2UwYTc4ODJmOTIzYjgzZTBkNzU4NApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglNb24gQXVnIDEzIDE3OjIyOjMxIDIwMDcgKzAyMDAKCiAgICBBVlIzMjogSW5jbHVkZSA8ZGl2NjQuaD4gaW5zdGVhZCBvZiA8YXNtL2RpdjY0Lmg+CgogICAgaW5jbHVkZS9hc20tYXZyMzIvZGl2NjQuaCB3YXMgcmVjZW50bHkgbW92ZWQgdG8gaW5jbHVkZS9kaXY2NC5oLCBidXQKICAgIGNwdS9hdDMyYXAvaW50ZXJydXB0cy5jIHdhc24ndCBwcm9wZXJseSB1cGRhdGVkIChhbiBlYXJsaWVyIHZlcnNpb24gb2YKICAgIHRoZSBwYXRjaCB3YXMgbWVyZ2VkIHBlcmhhcHM/KQoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjcHUvYXQzMmFwL2ludGVycnVwdHMuYyBzbyB0aGF0IHRoZSBhdnIzMiBwb3J0CiAgICBjb21waWxlcyBhZ2Fpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmMGQxMjQ2ZWQ3Y2I1YTg4NTIyMjQ0YzU5NmQ3YWU3ZTZmMTYxMjgzCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBKdW4gMjcgMTM6MzQ6MjYgMjAwNyArMDIwMAoKICAgIGF0bWVsX21jaTogVXNlIDUxMiBieXRlIGJsb2Nrc2l6ZSBpZiBwb3NzaWJsZQoKICAgIEluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIHRoZSBsYXJnZXN0IGJsb2Nrc2l6ZSB0aGUgY2FyZCBzdXBwb3J0cywgY2hlY2sKICAgIGlmIGl0IGNhbiBzdXBwb3J0IHNtYWxsZXIgYmxvY2sgc2l6ZXMgYW5kIHVzZSA1MTIgYnl0ZXMgaWYgcG9zc2libGUuCiAgICBNb3N0IGNhcmRzIGRvIHN1cHBvcnQgdGhpcywgYW5kIG90aGVyIHBhcnRzIG9mIHUtYm9vdCBzZWVtIHRvIGhhdmUKICAgIHRyb3VibGUgd2l0aCBibG9jayBzaXplcyBkaWZmZXJlbnQgZnJvbSA1MTIgYnl0ZXMuCgogICAgQWxzbyBlbmFibGUgdW5kZXJydW4vb3ZlcnJ1biBwcm90ZWN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgogICAgQWNrZWQtYnk6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Cgpjb21taXQgMjczZGI3ZTFiZGQxOTM3ZTMyZjFkNDUwNzMyMWJiNzIxZWJkMzExOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEF1ZyAxMyAwOTowNTozMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiBQTEwgY2xvY2sgY2FsY3VsYXRpb24KCiAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGwgcHJvdmlkZWQgYnkgRGF2aWQgTWl0Y2hlbGwgPGRtaXRjaGVsbEBhbWNjLmNvbT4KICAgIGFuZCBmaXhlcyBhIGJ1ZyBpbiB0aGUgUExMIGNsb2NrIGNhbGN1bGF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5OTg2YmMzZTQwZTg5OWJlYTM3MmE5OWEyYmNhNDA3MWJkZjJlMjRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAyMTozNDo1MCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDc3ZDE5YThiZjNiMGIxZTQwMWNiOWYyM2M4MWUyZWY0MTk3MDVjMWEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTdW4gQXVnIDEyIDIxOjM0OjM0IDIwMDcgKzAyMDAKCiAgICBNaW5vciBhbGlnbm1lbnQgb2Ygb3V0cHV0LCAybmQgdHJ5LgogICAgQWxzbyB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2YjMwOWYyMmE3MjRmYWQ4NDE4ZTgxMTc1MWEwNzQxYjg5MzQxOWNmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAyMDozNTo0OSAyMDA3ICswMjAwCgogICAgTWlub3IgYWxpZ25tZW50IG9mIG91dHB1dAoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNmY2ZDdiOWM4NTU5ZTI0MWU4ZDIzMjYyMTU0MmI4YjU5Njk5YjA3YgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTg6Mjg6MTggMjAwNyArMDIwMAoKICAgIENsZWFudXAgb3V0cHV0IG9uIEFEUzUxMjEgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rCgpjb21taXQgYTRkMjYzNmYyYTg1OTI0NWVkM2E0MDFmMjYxODlkYTJkZmRhNGNlYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTU6MTE6MzggMjAwNyArMDIwMAoKICAgIEFkYXB0IGJvYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGZpeCBrZXJuZWwgY3Jhc2ggb24gTUNDMjAwIGJvYXJkLgoKICAgIFRoZSB1cGRhdGUgcHJvY2VkdXJlIHdhcyBtb2RpZmllZCB0byB0dXJuIG9mZiB0aGUgVVNCIHN1YnN5c3RlbQogICAgYmVmb3JlIGV4aXQgZm9yIE1DQzIwMCBhbmQgVFJBQi4gVGhpcyBpcyBuZWNlc3NhcnkgYXMgb3RoZXJ3aXNlIHRoZQogICAgVVNCIGNvbnRyb2xsZXIgY29udGludWVzIHRvIHdyaXRlIHBlcmlvZGljYWxseSB0byBzeXN0ZW0gbWVtb3J5IQoKICAgIE1DQzIwMC1zcGVjaWZpYyBub3RlczoKICAgIC0gdGhlIHBhdGNoIGRpc2FibGVzIHRoZSBtYWdpYyBrZXkgY2hlY2sgZm9yIE1DQzIwMAogICAgLSB0aGUgcGF0Y2ggY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBtYWRlCiAgICAgIGZvciB0aGUgbmV3IHJldmlzaW9uIG9mIHRoZSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBlMjdmM2E2ZWZiOWRiNWE1MzMyMjNiMDVjNjI5ZmY0YWM4ZDkyMWJmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU3VuIEF1ZyAxMiAxNDo0Nzo1NCAyMDA3ICswMjAwCgogICAgQWRqdXN0IGRlZmF1bHQgY29uZmlndXJhdGlvbiBvZiBBRFM1MTIxIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgYWZhYWM4NmZlMjk0OGFjODRjZDlhMTJiYmVkODgzYjNjNjgzZTdkOQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVN1biBBdWcgMTIgMTQ6Mjc6MzkgMjAwNyArMDIwMAoKICAgIENsZWFuIHVwIHNvbWUgcmVtYWluaW5nIENGR19DTURfIC0+IENPTkZJR19DTURfIGlzc3Vlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDVmZTZiZTYyMDhkZGE4NTJjMzU2NGUzODRiZDc4ZDc1Nzg0ZGVhM2UKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgQXVnIDcgMjE6MTQ6MjIgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZXJyb3IgcHJpbnQgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA5OWRmZmNhM2I3NTkwYTE2YTAwYmM0NzVjODYwYjY3YjJhM2YxNDYyCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxNyAxMzo1NzowNCAyMDA3IC0wNTAwCgogICAgZmR0OiBhbGxvdyBmb3IgYnVpbGRzIHRoYXQgZG9uJ3Qgd2FudCBlbnYgYW5kIGJkX3Qgbm9kZXMKCiAgICBwcm90ZWN0IGZkdF9lbnYgYW5kIGZkdF9iZF90IGludm9jYXRpb25zLCBmaXggY29kaW5nc3R5bGUgd2hpbGUgaW4gdGhlCiAgICBhcmVhLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTExNDhiZjdhZWJhMTQyZDZmMzQ4ODA1ZGI3NjI1ZGI3ZGE2NGQ2ZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTcgMTM6NTY6NTMgMjAwNyAtMDUwMAoKICAgIGZkdDogZG8gYm9hcmQgc2V0dXAgYmFzZWQgb24gZmR0IGFkZHJlc3Mgc3BlY2lmaWVkIG9uIGJvb3RtIGxpbmUKCiAgICBUaGUgbGFzdCBmZHQgcGF0Y2ggdG8gYm9vdG0gZGlkIGJvYXJkIHNldHVwIGJhc2VkIG9uIHRoZSBhZGRyZXNzCiAgICBzcGVjaWZpZWQgYnkgYSBwcmlvciBmZHQgYWRkcmVzcyBjb21tYW5kIGludm9jYXRpb24uICBUaGUgYm9vdG0KICAgIGNvZGUsIGFzIGl0cyBjYWxsIHRvIGZkdF9jaG9zZW4gZG9lcywgc2hvdWxkIHVzZSB0aGUgZmR0IHNwZWNpZmllZAogICAgYnkgdGhlIHVzZXIgb24gdGhlIGJvb3RtIGNvbW1hbmQuICBOb3RlIHRoaXMgcmVzdG9yZXMgZnVsbAogICAgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIDgzNjAncyBleGlzdGluZyBkZWZhdWx0IGJvb3QgZW52aXJvbm1lbnQKICAgIHZhbHVlcywgZS5nLiAncnVuIG5mc2Jvb3QnIChpLmUuIG5vIGhhdmluZyB0byAnZmR0IGFkZHIgJGZkdGFkZHInCiAgICBiZWZvcmUgYm9vdGluZyBhIGtlcm5lbCkuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlMTI1YTJmZmMyMDlkZDM0Nzk0ZTMyNmM3MTc1NjU4MjUzYmVhZGYzCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAyMDo0MDozOSAyMDA3IC0wNDAwCgogICAgQ2FsbCBmdF9ib2FyZF9zZXR1cCgpIGZyb20gdGhlIGJvb3RtIGNvbW1hbmQuCgogICAgSW4gdGhlIHBhdGNoIHRpdGxlZCAiQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLi4uIiBJIHJlbW92ZWQgdGhlCiAgICBjYWxsIHRvIGZ0X2JvYXJkX3NldHVwKCkgZnJvbSB0aGUgcm91dGluZSBmZHRfY2hvc2VuKCksIGJ1dCBJIGZvcmdvdAogICAgdG8gYWRkIGEgZGlyZWN0IGNhbGwgYmFjayBpbnRvIGNtZF9ib290bS5jCgogICAgVGhpcyBmaXhlcyB0aGUgb3ZlcnNpZ2h0IGJ5IGFkZGluZyB0aGUgZGlyZWN0IGNhbGwgdG8gdGhlIGJvb3RtIGNvbW1hbmQuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBmZDYxZTU1ZGQ4Y2I1MmNlM2ZmOTFiMzkxN2FmMjZlMjRiNmIwODQ1CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAyMzoyNToyOCAyMDA3IC0wNDAwCgogICAgQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLCBmaXggYnVnIHBhcnNpbmcgW10gZm9ybSBvZiBzZXQgdmFsdWVzLgoKICAgIFByZXZpb3VzbHkgZnRfYm9hcmRfc2V0dXAoKSB3YXMgY2FsbGVkIGJ5IGZkdF9jaG9zZW4oKSB3aGljaCB3YXMgbm90CiAgICByZWFsbHkgY29ycmVjdGx5IHN0cnVjdHVyZWQuICBUaGlzIHNwbGl0cyBmdF9ib2FyZF9zZXR1cCgpIG91dCBieSBjcmVhdGluZwogICAgYSBuZXcgZmR0IGJvYXJkc2V0dXAgY29tbWFuZC4KCiAgICBGaXggYSBidWcgd2hlbiBwYXJzaW5nIGZkdCBzZXQgY29tbWFuZCB2YWx1ZXMgd2hpY2ggaGF2ZSB0aGUgc3F1YXJlCiAgICBicmFja2V0IGZvcm0gWzAwIDExIDIyIDMzXSAtIHRoZSBsZW5ndGggd2FzIHVwZGF0ZWQgaW5jb3JyZWN0bHkgaW4gd2hlbgogICAgcGFyc2luZyB0aGF0IGZvcm0uCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA2ZjM1ZGVkOWU4NTQ5MzU5NWUwZWI2NmE4MmI1MDJhOTUzMjZkMDQ5CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAyMDo1NTo1OCAyMDA3IC0wNDAwCgogICAgVGlnaHRlbiB1cCB0aGUgZXJyb3IgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCBjNDU4NzRiMDVhYWU4OTdhNmMyOWQxYTk3ZDRiYjcwOGZjYTI3NTZjCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxOTo1MjoyMyAyMDA3IC0wNDAwCgogICAgQXN0aGV0aWMgaW1wcm92ZW1lbnRzOiBlcnJvciBtZXNzYWdlcyBhbmQgbGluZSBsZW5ndGhzLgoKICAgIFRpZ2h0ZW4gdXAgdGhlIGVycm9yIG1lc3NhZ2VzLCBzcGxpdCBvdmVybGVuZ3RoIGxpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgMzVlYzM5OGYxNmUxN2RmNjAwZWRjMWIzOGMxZTllNjJjMTVjOWFhMQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBNYXkgMjUgMjI6MDg6NTcgMjAwNyAtMDQwMAoKICAgIEZpeCBmZHRfY2hvc2VuKCkgdG8gY2FsbCBmdF9ib2FyZF9zZXR1cCgpLCBjbGVhbiB1cCBsb25nIGxpbmVzLgoKICAgIFRoZSBmZHRfY2hvc2VuKCkgZnVuY3Rpb24gd2FzIGFkZGluZy9zZXRpbmcgc29tZSBwcm9wZXJ0aWVzIGFkLWhvYwogICAgICBpbXByb3Blcmx5IGFuZCBkdXBsaWNhdGVkIChwb29ybHkpIHdoYXQgd2FzIGRvbmUgaW4gZnRfYm9hcmRfc2V0dXAoKQoKICAgIENsZWFuIHVwIGxvbmcgbGluZXMgKHNldHRpbmcgcHJvcGVydGllcywgcHJpbnRpbmcgZXJyb3JzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDA2ZTE5YTA3NzAxYzk2OGYxNWQ3MmMwODNiNTg3MmExYTExYzdiMDEKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglNb24gTWF5IDIxIDIzOjI3OjE2IDIwMDcgLTA0MDAKCiAgICBGb3IgZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCksIGhhbmRsZSB0aGUgcm9vdCBwYXRoIHByb3Blcmx5LgoKICAgIEFsc28gcmVtb3ZlcyB0aGUgc3BlY2lhbCBjYXNlIHJvb3QgcGF0aCBkZXRlY3Rpb24gaW4gY21kX2ZkdC5jIHNpbmNlIGl0CiAgICBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgOTY3NWVlNzIwOGFiOTY1ZDEzZWE4ZDgyNjJkNzdhYzQxNjBlZjU0OQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVRodSBNYXkgMTcgMjM6NTQ6MzYgMjAwNyAtMDQwMAoKICAgIEFkZCBmZHRfZmluZF9ub2RlX2J5X3R5cGUoKSBhbmQgZmR0X2ZpbmRfY29tcGF0aWJsZV9ub2RlKCkgdG8gTElCRkRUCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+CiAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAxYTg2MTE2OWJjMzc1OGY5ZGUzYWVhZDYyYjA1ODczNmM2ODkxMjQ2CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJV2VkIEp1biA2IDIyOjQ3OjU4IDIwMDcgLTA0MDAKCiAgICBSZXBsYWNlIGZkdF9ub2RlX29mZnNldCgpIHdpdGggZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCkuCgogICAgVGhlIG5ldyBuYW1lIG1hdGNoZXMgbW9yZSBjbG9zZWx5IHRoZSBrZXJuZWwncyBuYW1lLCB3aGljaCBpcyBhbHNvCiAgICBhIG11Y2ggYmV0dGVyIGRlc2NyaXB0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgogICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYWRkZDhjZTgzMDc4YzI1ZjBlY2E1ZjIzYWRiZGZjNjRjYTUwYTI0MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBNYXkgMTYgMjI6Mzk6NTkgMjAwNyAtMDQwMAoKICAgIEZpeCBjbWRfZmR0IGxpbmUgbGVuZ3RocywgcmVmYWN0b3IgY29kZS4KCiAgICBCcmVhayBsaW5lcyB0aGF0IHdlcmUgZ3JlYXRlciB0aGFuIDgwIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLgogICAgTW92ZSB0aGUgZmR0IHByaW50IGFuZCBwcm9wZXJ0eSBwYXJzaW5nIGNvZGUgdG8gc2VwYXJhdGUgc3RhdGljIGZ1bmN0aW9ucwogICAgICB0byByZWR1Y2UgY29kaW5nIGNsdXR0ZXIgaW4gdGhlIGZkdF9jbWQgaGFuZGxpbmcgYm9keS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDI1MTE0MDMzYWIyMTc4ODgxMGM0OGJhNGRmMTAzYjY0OWRhMTIyM2IKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgTWF5IDEyIDA5OjQ3OjI1IDIwMDcgLTA0MDAKCiAgICBGRFQgY29tbWFuZCBpbXByb3ZlbWVudHMuCgogICAgRml4ICJmZHQgc2V0IiBzbyB0aGF0IGl0IHdpbGwgY3JlYXRlIGEgbm9uLWV4aXN0aW5nIHByb3BlcnR5LgogICAgQWRkICJmZHQgbWtub2RlIiB0byBjcmVhdGUgbm9kZXMuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCAzOGViNTA4ZThlODExZTJlNTc2MjhmNDQ1ZGUzYTI0YTIzYzdkODA0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1heSAxMiAwOTo0NTo0NiAyMDA3IC0wNDAwCgogICAgUmVvcmdhbml6ZSBhbmQgZml4IHByb2JsZW1zIChyZXR1cm5zKSBpbiB0aGUgYm9vdG0gY29tbWFuZC4KCiAgICBEbyAqTk9UKiByZXR1cm4gYWZ0ZXIgdGhlICJwb2ludCBvZiBubyByZXR1cm4iIGhhcyBiZWVuIHBhc3NlZC4KICAgICAgSWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIHRoZSBib2FyZCBtdXN0IGJlIHJlc2V0IGFmdGVyIHRoYXQgcG9pbnQuCiAgICBNb3ZlIHRoZSAiVHJhbnNmZXJyaW5nIGNvbnRyb2wgdG8gTGludXgiIGRlYnVnIG1lc3NhZ2UgYmFjayB0byB3aGVyZSBpdAogICAgICBiZWxvbmdzOiBqdXN0IGJlZm9yZSB0cmFuc2ZlcnJpbmcgY29udHJvbCB0byBsaW51eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDg5Yzg3NTdkOGYyMTNjNDc3MDliZGM0ZWZlMDY5NTI2M2E2MDgwYTYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglUdWUgTWF5IDggMjE6Mjc6MzUgMjAwNyAtMDQwMAoKICAgIEZpeCBidWdzIGluIHRoZSBDT05GSUdfT0ZfTElCRkRUCgogICAgU3R1cGlkIGNvZGluZyBtaXN0YWtlcyAoaWRlbnRpZmllZCBieSBUaW11ciBUYWJpLCB0aGFua3MpLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgNmJlMDdjYzFjYTQ1ODI3OGM4NWVjZGJmMWEwNTM2Y2ZmNGM3MDFlYwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBBcHIgMjUgMjI6NDc6MTUgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZmR0IG1vdmUgbGVuZ3RoIGhhbmRsaW5nLgoKICAgIE1ha2UgdGhlIGxlbmd0aCBwYXJhbWV0ZXIgb3B0aW9uYWw6IGlmIG5vdCBzcGVjaWZpZWQsIGRvIHRoZSBtb3ZlIHVzaW5nCiAgICB0aGUgY3VycmVudCBzaXplIHVuY2hhbmdlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IGJiOTMwZTc2ZmVhNmNmODljYTJkOThlMmY3YzdhNjA0M2Q3OTMyN2QKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglXZWQgQXByIDI1IDIyOjIzOjM2IDIwMDcgLTA0MDAKCiAgICBNaW5vciBjb2RlIGNsZWFuIHVwLgoKICAgIERlY2xhcmUgdGhlIHZhcmlhYmxlIGZkdCBwcm9wZXJseSBhcyBleHRlcm4uCiAgICBDYWxsIHRoZSAic2V0X2ZuIiBmdW5jdGlvbiBwb2ludGVyIHRoZSAic2hvcnQgd2F5IiB3aXRob3V0IHRoZSBmdWxsCiAgICAgIGRlcmVmZXJlbmNpbmcgc3ludGF4LgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgYmEyNGUyYWMzYmRiNWM0ODlmM2M3ODdlNzU0MmI2NDc0YzRkNjVjNgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVdlZCBBcHIgMjUgMjE6MjQ6MjcgMjAwNyAtMDQwMAoKICAgIEltcHJvdmUgZXJyb3IgbWVzc2FnZXMsIG1vcmUgaW5mb3JtYXRpdmUuCgogICAgUHJpbnQgbW9yZSB0aGFuIHRoZSByYXcgbGliZmR0IGVycm9yIG1lc3NhZ2Ugc3RyaW5ncy4gIFRoaXMgaXMgZXNwZWNpYWxseQogICAgdXNlZnVsIGZvciBjbHVpbmcgaW4gdGhlIHVzZXIgd2hlbiB0aGUgYm9vdG0gY29tbWFuZCBhYm9ydHMgZHVlIHRvCiAgICBibG9iIHByb2JsZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Cgpjb21taXQgODA5NmIzYjhmNzcyYzE4OTRkZGVkYTlkYmNlZmY2YTg4MjY0NzNhNApBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMjI6NDY6NTMgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogQ29uZGl0aW9uYWxseSBjb21waWxlIGJhc2VkIG9uIENPTkZJR19PRl9MSUJGRFQKCiAgICBUaGlzIGlzIHRoZSB3YXkgdS1ib290IHJlZHVjZXMgY29uZmlndXJlZC1vdXQgY29kZS4gIEF0IFdvbGZnYW5nCiAgICBHcmFuZGVnZ2VyIGFuZCBXb2xmZ2FuZyBEZW5rJ3MgcmVxdWVzdCwgbWFrZSBsaWJmZHQgY29uZm9ybS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgoKY29tbWl0IDkyM2VmZDI4NjQxMWVkMDUyZDllMDc0ZjU5Zjg5ODZkNjA4MTA2MWMKQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTQ6NTQ6NDcgMjAwNyAtMDcwMAoKICAgIGFkZCBpbWFnZSBzaXplIGFuZCBkZXNjcmlwdG9ycyBmb3IgU3BhcnRhbiAzRSBGUEdBIGNoaXBzCgogICAgU3BhcnRhbiAzRSBpbWFnZSBzaXplcyB0YWtlbiBmcm9tIFRhYmxlIDEtNCBpbiBYaWxpbnggVUczMzIgKHYxLjEpCgogICAgU2lnbmVkLW9mZiBieTogQnJ1Y2UgQWRsZXIgPGJydWNlLmFkbGVyQGNjcHUuY29tPgoKY29tbWl0IGZiNTY1NzlmZmU3ZWYzMjc1YjcwMzZiYjdiOTI0ZTVhMGQzMmJkNzAKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgQXVnIDEwIDE1OjM0OjQ4IDIwMDcgLTA1MDAKCiAgICBtYWtlIE1BS0VBTEwgbW9yZSBpbW11bmUgdG8gbWVyZ2UgY29uZmxpY3RzCgogICAgLi5ieSBwbGFjaW5nIGJvYXJkIGVudHJpZXMgb25lIHBlciBsaW5lLCBhcyBzdWdnZXN0ZWQgYnkgamRsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjYyODExNGVjNTY0Zjk2OWYzNGI1ZjcxMDVmYmQxNjhjYjhjOWMzZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTM6Mjg6MjUgMjAwNyAtMDUwMAoKICAgIFJFQURNRTogUmVtb3ZlIG91dGRhdGVkIGNwdSB0eXBlLCBib2FyZCB0eXBlLCBhbmQgTkFNRV9jb25maWcgbGlzdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ5YmI1OTkxMmQyMWFhY2I1MDdlYjgxZmQyMWZiN2FmNjUwYzcwNmMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMTAgMTU6NDg6NTkgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IFN1cHByZXNzIHRoZSB3YXJuaW5nICdidXJzdGxlbicKCiAgICBzdXBwcmVzcyB0aGUgd2FybmluZyAnYnVyc3RsZW4nIG9mIHNwZF9zZHJhbS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NDZiYmE2NDY1YTQ1YzYwNzQ2ZDRjYzE2MDJjZDA2YzE5NjBmMmQKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgQXVnIDkgMTU6MTE6MDMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBTQkM4NjQxRC4gQ29uZmlnIGZpbGVzLgoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODY0MUQgcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhhYzI3MzI3MWQ1NzMyMWY5MDUwNWM3YTUxY2RiMWVmMjExM2I2MjgKQXV0aG9yOiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgpEYXRlOglUaHUgQXVnIDkgMTU6MTA6NTMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBTQkM4NjQxRC4gIEJvYXJkIGZpbGVzLgoKICAgIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3MgU0JDODY0MUQgcmVmZXJlbmNlIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CiAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGMyYzBhYjRhZmY4NjYyMmI4MzdhNDhhMGU1NjAzNTFmOWFmYWZiOTUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBBdWcgMTAgMjA6MzQ6NTggMjAwNyArMDIwMAoKICAgIENvbmRpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjNzRiMjEwOGUzMWZlMDliZDFjNWQyOTFjM2NmMzYwNTEwZDRmMTNlCkF1dGhvcjogU2VyZ2V5IEt1YnVzaHluIDxrc2lAa29pOC5uZXQ+CkRhdGU6CUZyaSBBdWcgMTAgMjA6MjY6MTggMjAwNyArMDIwMAoKICAgIFtBUk1dIFRJIERhVmluY2kgc3VwcG9ydCwgaG9wZWZ1bGx5IGZpbmFsCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgRGFWaW5jaSBib2FyZHM6CiAgICAtIERWX0VWTQogICAgLSBTQ0hNT09HSUUKICAgIC0gU09OQVRBCgogICAgQ2hhbmdlczoKCiAgICAtIFNwbGl0IGludG8gc2VwYXJhdGUgYm9hcmQgZGlyZWN0b3JpZXMKICAgIC0gUmVtb3ZlZCBjaGFuZ2VzIHRvIE1URF9ERUJVRyAob3Igd2hhdGV2ZXIgaXQncyBjYWxsZWQpCiAgICAtIE5ldyBDT05GSUdfQ01EIHBhcnR5IGxpbmUgZm9sbG93ZWQKICAgIC0gU29tZSBjb3NtZXRpYyBmaXhlcywgY2xlYW51cCBldGMuCiAgICAtIFBhdGNoZXMgYWdhaW5zdCB0aGUgbGF0ZXN0IFUtQm9vdCB0cmVlIGFzIG9mIG5vdy4KICAgIC0gRml4ZWQgQ09ORklHX0NNRF9ORVQgaW4gbmV0IGZpbGVzLgogICAgLSBGaXhlZCBDT05GSUdfQ01EX0VFUFJPTSBmb3Igc2NobW9vZ2llLgogICAgLSBNYWRlIHN1cmUgaXQgY29tcGlsZXMgYW5kIHdvcmtzIChmb3JjZWVudigpIGxpbmsgcHJvYmxlbSkgb24gU0NITU9PR0lFIGFuZAogICAgICAgRFZfRVZNLiBDYW4ndCBjaGVjayBpZiBpdCB3b3JrcyBvbiBTT05BVEEsIGRvbid0IGhhdmUgYSBib2FyZCBhbnkgbW9yZSwKICAgICAgIGJ1dCBpdCBhdCBsZWFzdCBjb21waWxlcy4KCiAgICBIZXJlIGlzIGFuIGV4Y2VycHQgZnJvbSBzZXNzaW9uIGxvZyBvbiBTQ0hNT09HSUUuLi4KCiAgICBVLUJvb3QgMS4yLjAtZzZjMzNjNzg1LWRpcnR5IChBdWcgIDcgMjAwNyAtIDEzOjA3OjE3KQoKICAgIERSQU06ICAxMjggTUIKICAgIE5BTkQ6ICAxMjggTWlCCiAgICBJbjogICAgc2VyaWFsCiAgICBPdXQ6ICAgc2VyaWFsCiAgICBFcnI6ICAgc2VyaWFsCiAgICBBUk0gQ2xvY2sgOiAyOTdNSHoKICAgIEREUiBDbG9jayA6IDE2Mk1IegogICAgRVRIIFBIWSAgIDogRFA4Mzg0OCBAIDB4MDEKICAgIFUtQm9vdCA+IGlwcm9iZQogICAgVmFsaWQgY2hpcCBhZGRyZXNzZXM6IDFCIDM4IDNBIDNEIDNGIDUwIDVEIDZGCiAgICBVLUJvb3QgPiBwaW5nIDE5Mi4xNjguMjUzLjEwCiAgICBob3N0IDE5Mi4xNjguMjUzLjEwIGlzIGFsaXZlCiAgICBVLUJvb3QgPgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgogICAgQWNrZWQtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgogICAgQWNrZWQtYnk6IFphY2ggU2FkZWNraSA8WmFjaC5TYWRlY2tpQHJpcGNvZGUuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZTRkOTRmMWUzYzI5NjE0Mjg5NjdhMzNiNmZmMjUyMDU2ODM5MWIzCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAwMTo1MDo0NSAyMDA3IC0wNTAwCgogICAgZnNsX3BjaV9pbml0IGNsZWFudXAuCgogICAgRG8gbm90IGVuYWJsZSBub3JtYWwgZXJyb3JzIGNyZWF0ZWQgZHVyaW5nIHByb2JlIChtYXN0ZXIgYWJvcnQsIHBlcnIsCiAgICBhbmQgcGNpZSBJbnZhbGlkIENvbmZpZ3VyYXRpb24gYWNjZXNzKS4KCiAgICBBZGQgQ09ORklHX1BDSV9OT1NDQU4gYm9hcmQgb3B0aW9uIHRvIHByZXZlbnQgYnVzIHNjYW4uCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTM2YjNlNjliNjY3YzNlYjlhNjFlY2U0ZTc4NjQ3ZDNmY2U5ZmMyYQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDQgMjAwNyAtMDUwMAoKICAgIHBjaWF1dG9fc2V0dXBfZGV2aWNlIGJhcnNfbnVtIGZpeAoKICAgIFBhc3NpbmcgYmFyc19udW09MCB0byBwY2lhdXRvX3NldHVwX2RldmljZSBzaG91bGQgYXNzaWduIG5vIGJhcnMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmMGIxODVlNThjYTBhZWM4YWUyYjJhODgwNGVjMGVmNThlZTIxZDQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXVnIDYgMTc6Mzk6NDQgMjAwNyAtMDUwMAoKICAgIDg2NDFocGNuOiBEbyBjb3JyZWN0IHNpemVkIHBvaW50ZXIgbWF0aC4KCiAgICBXaGVuIEkgcmViYXNlZCBFZCdzIHBhdGNoIGFuZCBjbGVhbmVkIHVwIGEgZmV3IGNvbXBpbGF0aW9uCiAgICBwcm9ibGVtcywgSSBhcHBhcmVudGx5IHJlYmFzZWQgbXkgYnJhaW4gb24gY3JhY2sgZmlyc3QuCiAgICBGaXggdGhhdCBieSBkb2luZyAoY2hhciAqKSBzaXplZCBwb2ludGVyIG1hdGggYXMgbmVlZGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2ZjN2E3ZjViYjMyNzNjOTk1MTE3M2M3ODgwMDFkNDUxMThmMTQxZgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMiAxNDo0MjoyMCAyMDA3IC0wNTAwCgogICAgY3B1Lzg2eHggZml4ZXMuCgogICAgUmVtb3ZlIHJldiAxIGZpeGVzLgogICAgQWx3YXlzIHNldCBQSUNHQ1JfTU9ERS4KICAgIEVuYWJsZSBtYWNoaW5lIGNoZWNrIGFuZCBwcm92aWRlIGJvYXJkIGNvbmZpZyBvcHRpb24KICAgIHRvIHNldCBhbmQgaGFuZGxlIFNvQyBlcnJvciBpbnRlcnJ1cHRzLgoKICAgIEluY2x1ZGUgTVNTU1IwIGluIGVycm9yIG1lc3NhZ2UuCgogICAgSXNvbGF0ZSBhIFJBTUJPT1QgYml0IG9mIGNvZGUgd2l0aCAjaWZkZWYgQ0ZHX1JBTUJPT1QuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzVkMjJmOTU3YTg1YTIyYmIzY2QxYWQwODRmYTU0MDQ2MjBkMWM0MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxMCAxMDo0MjoyNSAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2E2ZDU2YzIwOTg5ZmUyNzM2MGFmZTc0M2JkMmE3YWQ0ZDc2ZTQ4ZgpBdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+CkRhdGU6CVRodSBBdWcgMiAxNzo0MjowOCAyMDA3ICswMjAwCgogICAgTWFrZSB1c2Ugb2YgZ2VuZXJpYyA2NGJpdCBkaXZpc2lvbiBpbiBuYW5kX3V0aWwuYwoKICAgIFVzZSBnZW5lcmljIDY0Yml0IGRpdmlzaW9uIGluIG5hbmRfdXRpbC5jLiBUaGlzIG1ha2VzIG5hbmRfdXRpbC5jCiAgICBpbmRlcGVuZGVudCBvZiBhbnkgdG9vbGNoYWluIDY0Yml0IGRpdmlzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IGY3YzA4NmU5NGU4Y2U5YWFkNzI2OGFmOTdmNzNhYTY4ODQ2ODZmMjcKQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgpEYXRlOglUaHUgQXVnIDIgMTc6NDE6MTQgMjAwNyArMDIwMAoKICAgIE1vdmUgNjRiaXQgZGl2aXNpb24gZnJvbSBhdnIzMiB0byBnZW5lcmljIGxpYgoKICAgIE1vdmUgdGhlIDY0Yml0IGRpdmlzaW9uIGZyb20gbGliX2F2cjMyIHRvIGxpYl9nZW5lcmljLiBXaXRoIHRoaXMsIGFsbAogICAgYm9hcmRzIGNhbiBkb19kaXYvX19kaXY2NF8zMiBpZiBuZWVkZWQsIG5vdCBvbmx5IGF2ciBvbmUuIENvZGUgaXMgcHV0CiAgICB0byBsaWJfZ2VuZXJpYywgc28gbm8gbGFyZ2VyIG1lbW9yeSBmb290cHJpbnQgaWYgbm90IHVzZWQuIE5vIGNvZGUKICAgIG1vZGlmaWNhdGlvbnMuIFRoYW5rcyBmb3IgcHJvcG9zYWwgYnkgSMOldmFyZCBTa2lubmVtb2VuLgoKICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgoKY29tbWl0IDE1N2NkYTRkMGMzZDU5MmNjYmIxOWJiZmMwN2Q5MjUxODk0ZjA4OTQKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgpEYXRlOglGcmkgSnVsIDI3IDExOjMxOjIyIDIwMDcgKzAyMDAKCiAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBIQ1U1IGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA2ZTVkZTI2YzZlNzU4MGZhZjE2ZTg3NzQ1Y2Q0ODhiOTJiNDkyZDBjCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMTozMDozMyAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNCBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgZTgzOTdmYzc4YzkzOTRkNzFkZTIzM2E0ZDgxMGZiYzkwNDdlNGM3NgpBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mzg6MjYgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IGNvbW1vbiBmaWxlcwoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgYWM5ODJlYTVhNGYyZjk5M2VmY2Y1MmRjYTEyMmY1YTU5ZGYwNDdkOApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mjg6NDQgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IG1ha2UgcmVsYXRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgMTM3ZmRkOWY0NzRlY2I4NTNlZmRhY2U1MjAwNTc2MzA4YzY3ZjE4ZApBdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+CkRhdGU6CUZyaSBKdWwgMjcgMTE6Mjg6MDMgMjAwNyArMDIwMAoKICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IEhDVTUgY29uZmlnCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA3MTRiYzU1YjM1YjZmNmE2NWNjODc0MGEzODQyYTU0M2U4OGNkZWYyCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMToyNzoxNSAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNCBjb25maWcKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgoKY29tbWl0IDE4OTRkZDM4MTEyNGJkYmZiZGFlN2NmM2E2Y2E1MmE4ZWIxZjQ0MjEKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgpEYXRlOglGcmkgSnVsIDI3IDExOjI1OjMxIDIwMDcgKzAyMDAKCiAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBSRUFETUVzCgogICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KCmNvbW1pdCA2NDFjY2E5NTY5Y2UzNTFkZGIyODdmZDMzNDNkOGIxZGNiNTkxZGI0CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJRnJpIEp1bCAyNyAxMTozNzo0MCAyMDA3ICswMjAwCgogICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSW5mcmFzdHJ1Y3R1cmUKCiAgICBUaGlzIHNlcmllcyBvZiBwYXRjaGVzIGFkZHMgc3VwcG9ydCBmb3IgMiBib2FyZHMgZnJvbSBOZXRzdGFsIE1hc2NoaW5lbi4KCiAgICBUaGUgSENVNCBoYXMgYSBQUEM0MDVHcHIgYW5kCiAgICB0aGUgSENVNSBoYXMgYSBQUEM0NDBFUFguCgogICAgVGhlIEhDVTQgaGFzIGEgc29tZWhvdyBjb21wbGljYXRlZCBmbGFzaCBzZXR1cCwgYXMgdGhlIGJvb3RlcHJvbSBpcwogICAgb25seSA4IGJpdHMgYW5kIHRoZSBDRkkgMTYgYml0cyB3aWRlLCB3aGljaCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHVzZSBhIG1vcmUKICAgIGVsZWdhbnQgc29sdXRpb24uCgogICAgVGhlIEhDVTUgaGFzIG9ubHkgYSBib290ZXByb20gYXMgdGhlIHdob2xlIGNvZGUgd2lsbCBiZSBkb3dubG9hZGVkIGZyb20gYQogICAgZGlmZmVyZW50IGJvYXJkIHdoaWNoIGhhcyBIRCwgQ0QtUk9NLCBldGMgYW5kIHdoZXJlIGFsbCBjb2RlIGlzIHN0b3JlZC4KCiAgICBUaGlzIGlzIG15IHRoaXJkIHRyeS4gSSBpbmNvcnBvcmF0ZWQgYWxsIHN1Z2dlc3Rpb25zIG1hZGUgYnkgV29sZmdhbmcgYW5kIFN0ZWZhbi4KICAgIFRoYW5rcyB0aGVtIGEgbG90LgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Cgpjb21taXQgM2U0YzkwYzYyMzM2MThmYzE4MDZlNjNmZGU2OGRmNWYzZDZhMDE3MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEF1ZyAxMCAwODo0Mjo1NSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgbHdtb241IFBPU1QgY29uZmlndXJhdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyOWNiMjVkYTU2YWZlMThjZjVlNzA3MmE5MmE5ZDk4ZWE4YWYxZmQ0CkF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgpEYXRlOglGcmkgQXVnIDEwIDA4OjI1OjIyIDIwMDcgKzAyMDAKCiAgICBQT1NUOiBBZGQgcHBjNHh4IFVBUlQgUE9TVCBzdXBwb3J0IHdpdGhvdXQgZXh0ZXJuYWwgdWFydCBjbG9jayAobHdtb241KQoKICAgIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFVBUlQgUE9TVCBvbiBwcGM0NHgtYmFzZWQgYm9hcmRzIHdpdGggbm8KICAgIGV4dGVybmFsIHNlcmlhbCBjbG9ja3MgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTljMmZkYWI5MWJjNjMzZTQ2ZmI0MWRiYWE2MjlmODdjY2Y2ZTAwZgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgNiAxODoxODozNCAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogZml4IElUWFtHUF0gTz1idWlsZGRpciBidWlsZHMKCiAgICBtYWtlOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgL3dvcmsvd2QvdG1wL2JvYXJkL21wYzgzNDlpdHgvdS1ib290LmxkcycsIG5lZWRlZCBieSBgL3dvcmsvd2QvdG1wL3UtYm9vdCcuICBTdG9wLgoKICAgIEJvdGggdGhlIElUWCBhbmQgSVRYLUdQIGZhaWwgd2hlbiB5b3UgdXNlICJtYWtlIE89PHNvbWUgZGlyPiAuLi4iIG9yCiAgICAiQlVJTERfRElSPTxzb21lIGRpcj4gLi9NQUtFQUxMIC4uLiIKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ3ZThiYzg0Njc1OWUwMzdiOGFmMGU1ZjljOWY5Y2ZhN2ExMDUwYzMKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMSAxNTowMDo1OSAyMDA3ICswODAwCgogICAgbXBjODN4eDogQ29ycmVjdCB0aGUgUkVBRE1FIGZvciBERFIgRUNDCgogICAgVXBkYXRlIHRoZSBSRUFETUUgZm9yIEREUiBFQ0MsIGNoYW5nZSB0aGUgbmFtZQogICAgdG8gUkVBRE1FLm1wYzgzeHguZGRyZWNjLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRhYWI4YzY3ZDJkZWZlZjczZGMyNmFiMDdmMGMzYWZkMWIwNWQwMTkKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMSAxNTowMDoxNSAyMDA3ICswODAwCgogICAgbXBjODN4eDogQ29uc29saWRhdGUgdGhlIEVDQyBzdXBwb3J0IG9mIDgzeHgKCiAgICBSZW1vdmUgdGhlIGR1cGxpY2F0ZWQgc291cmNlIGNvZGUgb2YgZWNjIGNvbW1hbmQgb24gdGhlIDxib2FyZD4uYywKICAgIGZvciByZXVzZWQsIG1vdmUgdGhlc2UgY29kZSB0byBjcHUvbXBjODN4eCBkaXJlY3RvcnkuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDM2NTc1YzU0NGNmMWI2OTY1NGQ4ZmIzMzRiZGE2OWM2ZmYzZGEzNgpBdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEF1ZyA0IDEzOjM3OjM5IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBDb3JyZWN0IHRoZSBidXJzdCBsZW5ndGggZm9yIEREUjIgd2l0aCAzMiBiaXRzCgogICAgVGhlIGJ1cnN0IGxlbmd0aCBzaG91bGQgYmUgNCBmb3IgRERSMiB3aXRoIDMyIGJpdHMgYnVzCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxYzI3NGM0ZTA1YjZkYzliMjRlZGM4YWE2MThiMDJmNjA3ZWU2ZWVkCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAyNSAxOToyNTozMyAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzIzRSBSREIKCiAgICBNUEM4MzIzRSBiYXNlZCBib2FyZCB3aXRoIDY0TUIgZml4ZWQgU0RSQU0sIDE2TUIgZmxhc2gsCiAgICBmaXZlIDEwLzEwMCBldGhlcm5ldCBwb3J0cyBjb25uZWN0ZWQgdmlhIGFuIElDUGx1cyBJUDE3NUMKICAgIHN3aXRjaCwgb25lIFBDSSBzbG90LCBhbmQgc2VyaWFsLiAgRmVhdHVyZXMgbm90IHN1cHBvcnRlZAogICAgaW4gdGhpcyBwYXRjaCBhcmUgU0QgY2FyZCBpbnRlcmZhY2UsIDIgVVNCIHBvcnRzLCBhbmQgdGhlCiAgICB0d28gcGhvbmUgcG9ydHMuCgogICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM0M2Q5MTAwOWQ1NWZjNWIzZmY4Y2M5NDA1OTdhZjZjNmFhMWQzNTkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDI1IDE5OjI1OjI4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXh1cCBnZW5lcmljIHBjaSBmb3IgbGliZmR0CgogICAgYWRkIGxpYmZkdCBzdXBwb3J0IHRvIHRoZSBnZW5lcmljIDgzeHggcGNpIGNvZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1N2FjN2E3YjM3MTA5MjQ1YjY5ZGI4MDgzOWViZWUyNjE3OTk2NmEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDI1IDE5OjI1OjIyIDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBmaXggODM2MCBhbmQgY3B1IGZ1bmN0aW9ucyB0byB1cGRhdGUgZmR0IGJlaW5nIHBhc3NlZAoKICAgIC4uYW5kIG5vdCB0aGUgZ2xvYmFsIGZkdC4gUmVuYW1lIGxvY2FsIGZkdCB2YXJzIHRvIGJsb2Igc28gYXMgbm90IHRvCiAgICBiZSBjb25mdXNlZCB3aXRoIHRoZSBnbG9iYWwgdmFyIHdpdGggdGhlIHNhbWUgdGhyZWUtbGV0dGVyIG5hbWUuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmU0MDQ0NTlhNmI3Mzk1NDE1YTU3YmIzNWU4Mzc3ZTNiMmI1YWNiCkF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjE6MzQ6MjQgMjAwNyAtMDQwMAoKICAgIG1wYzgzeHg6IEZpeCBlcnJvcnMgd2hlbiBDT05GSUdfT0ZfTElCRkRUIGlzIGVuYWJsZWQKCiAgICBTZXZlcmFsIG5vZGUgc3RyaW5ncyB3ZXJlIG5vdCBjb3JyZWN0ICh0cmFpbGluZyBzbGFzaGVzIGFuZCBwcm9wZXJ0aWVzCiAgICAgIGluIHRoZSBzdHJpbmdzKQogICAgQWRkZWQgc2V0dGluZyBvZiB0aGUgdGltZWJhc2UtZnJlcXVlbmN5LgogICAgSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMgYW5kIHVzZSBkZWJ1ZygpIGluc3RlYWQgb2YgcHJpbnRmKCkuCgogICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjZkMDJjOWJiYWMxNzUxYzVlMTkyOTRmMDAwMTAwYjQ4ZDQzYTkyMApBdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIxOjI3OjMwIDIwMDcgLTA0MDAKCiAgICBtcGM4M3h4OiBSZXBsYWNlIGZkdF9ub2RlX29mZnNldCgpIHdpdGggZmR0X2ZpbmRfbm9kZV9ieV9wYXRoKCkuCgogICAgVGhlIG5ldyBuYW1lIG1hdGNoZXMgbW9yZSBjbG9zZWx5IHRoZSBrZXJuZWwncyBuYW1lLCB3aGljaCBpcyBhbHNvCiAgICBhIG11Y2ggYmV0dGVyIGRlc2NyaXB0aW9uLgoKICAgIFRoZXNlIGFyZSB0aGUgbXBjODN4eCBjaGFuZ2VzIG1hZGUgbmVjZXNzYXJ5IGJ5IHRoZSBmdW5jdGlvbiBuYW1lIGNoYW5nZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5YmUzOWE2N2M5ZjhmZWY3MTA3ZjVkZjA5ZDY3MzAwNWYwNGQwOTYzCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxMDo0MTo1NiAyMDA3ICswODAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBkaXNwbGF5IG9mIHJlc2V0IHN0YXR1cwoKICAgIDgzeHggcHJvY2Vzc29yIGZhbWlseSBoYXMgbWFueSByZXNldCBzb3VyY2VzLCBzdWNoIGFzCiAgICBwb3dlciBvbiByZXNldCwgc29mdHdhcmUgaGFyZCByZXNldCwgc29mdHdhcmUgc29mdCByZXNldCwKICAgIEpUQUcsIGJ1cyBtb25pdG9yLCBzb2Z0d2FyZSB3YXRjaGRvZywgY2hlY2sgc3RvcCByZXNldCwKICAgIGV4dGVybmFsIGhhcmQgcmVzZXQsIGV4dGVybmFsIHNvZnR3YXJlIHJlc2V0LgogICAgc29tZXRpbWVzLCB0byBmaWd1cmUgb3V0IHRoZSBmYXVsdCBvZiBzeXN0ZW0sIHdlIG5lZWQgdG8KICAgIGtub3cgdGhlIGNhdXNlIG9mIHJlc2V0IGVhcmx5IGJlZm9yZSB0aGUgcHJvbXB0IG9mCiAgICB1LWJvb3QgcHJlc2VudC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZjk2NThkNzA0OWJmOGM4ZThlMGEwNWRiZTVlOWY3ZTkxYWE1YTVkCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1biAyNSAxMDo0MTowNCAyMDA3ICswODAwCgogICAgbXBjODN4eDogRml4IHRoZSBhbGlnbiBidWcgb2YgU0RNQSBidWZmZXIKCiAgICBBY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCB1c2VyIG1hbnVhbCwgdGhlIFNETUEgdGVtcG9yYXJ5CiAgICBidWZmZXIgYmFzZSBhZGRyZXNzIG11c3QgYmUgNEtCIGFsaWduZWQuCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjZkYzJjMmRjNTFmOGI4OGJiOGUyMzFiYzgwY2Q5MmVhZTFkNjQ3NgpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMjUgMTM6MjE6MTIgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IFJldmlzZSB0aGUgTVBDODM2MEVNRFMgcmVhZG1lIGRvYwoKICAgIFdoZW4gdGhlIHJldjIueCBzaWxpY29uIG1vdW50IG9uIHRoZSBNUEM4MzYwRU1EUyBiYW9yZCwKICAgIGFuZCBpZiB5b3UgYXJlIHVzaW5nIHRoZSB1LWJvb3QgdmVyc2lvbiBhZnRlciB0aGUgY29tbWl0CiAgICAzZmMwYmQxNTkxMDNiNTM2ZTFjNTRjNmY0NDU3YTA5YjNhYmE2NmNhLgogICAgdG8gbWFrZSB0aGUgZXRoZXJuZXQgaW50ZXJmYWNlIHVzYWJsZSwgd2UgaGF2ZSB0byBzZXR1cAogICAgdGhlIGp1bXBlcnMgY29ycmVjdGx5LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU3MzliYzk1Nzk3YWFjNGZlZmM0Yzc1YjU1YzdjNzhlNTlkM2VhOWMKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDMgMTM6NDY6MzIgMjAwNyAtMDUwMAoKICAgIEZTTCBJMkMgZHJpdmVyIHByb2dyYW1zIHRoZSB0d28gSTJDIGJ1c3NlcyBkaWZmZXJlbnRseQoKICAgIFRoZSBpMmNfaW5pdCgpIGZ1bmN0aW9uIGluIGZzbF9pMmMuYyBwcm9ncmFtcyB0aGUgdHdvIEkyQyBidXNzZXMgZGlmZmVyZW50bHkuCiAgICBUaGUgc2Vjb25kIEkyQyBidXMgaGFzIGl0cyBzbGF2ZSBhZGRyZXNzIHByb2dyYW1tZWQgaW5jb3JyZWN0bHkgYW5kIGlzCiAgICBtaXNzaW5nIGEgNS11cyBkZWxheS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZjMzZjZiNGQ2ZDYzNjkzZGQ5MjAwODA4YjI0MmRlMWI4NmNiOGU4CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAzIDEzOjA0OjM0IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgU0NDUiBwcm9ncmFtbWluZyBpbiBjcHVfaW5pdF9mKCkgdG8gc3VwcG9ydCBhbGwgODN4eCBwcm9jZXNzb3JzCgogICAgVXBkYXRlIHRoZSBjcHVfaW5pdF9mKCkgZnVuY3Rpb24gaW4gY3B1L21wYzgzeHgvY3B1X2luaXQuYyB0byBwcm9ncmFtIHRoZQogICAgYml0ZmllbGRzIGZvciBhbGwgODN4eCBwcm9jZXNzb3JzLglUaGUgY29kZSB0byB1cGRhdGUgc29tZSBiaXRmaWVsZHMgd2FzCiAgICBjb21waWxlZCBvbmx5IG9uIHNvbWUgcHJvY2Vzc29ycy4gIE5vdywgdGhlIGJpdGZpZWxkcyBhcmUgcHJvZ3JhbW1lZCBhcyBsb25nCiAgICBhcyB0aGUgY29ycmVzcG9uZGluZyBDRkdfU0NDUiBvcHRpb24gaXMgZGVmaW5lZCBpbiB0aGUgYm9hcmQgaGVhZGVyIGZpbGUuCiAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIGJvYXJkIGhlYWRlciBmaWxlIHNob3VsZCBub3QgZGVmaW5lIGFueSBDRkdfU0NDUiBtYWNyb3MKICAgIGZvciBiaXRmaWVsZHMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGF0IHByb2Nlc3Nvciwgb3RoZXJ3aXNlIHRoZSBTQ0NSIHdpbGwgYmUKICAgIHByb2dyYW1tZWQgaW5jb3JyZWN0bHkuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTU0NjI2Njk5OWYwYjliNTEzNzI2MzY2MTQyMTFiODhkOTBmMGYyNQpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgpEYXRlOglGcmkgSnVuIDIyIDEzOjA0OjIyIDIwMDcgKzAyMDAKCiAgICBUUU04MzR4OiBjbGVhbnVwIGNvbmZpZ3VyYXRvbgoKICAgIFJlbW92ZSBpcnJpdGF0aW5nICN1bmRlZiBERUJVRwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1ZDQ5N2U2YmYwZjViZjYzNzI5YjRhNDdiM2ZkNzg2ZDNjNzdhMWJjCkF1dGhvcjogZGF2aWQuc2FhZGEgPERhdmlkLlNhYWRhQGVjaXRlbGUuY29tPgpEYXRlOglNb24gSnVuIDE4IDA5OjA5OjUzIDIwMDcgLTA3MDAKCiAgICBNUEM4M3h4OiBGaXggbWFrZWZpbGUgdG8gZ2VuZXJhdGUgY29uZmlnLmggZmlsZSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5CgogICAgTVBDODN4eDogRml4IHRoZSBNYWtlZmlsZSBjb25maWcgc2VjdGlvbnMgdG8gZ2VuZXJhdGUgdGhlIGluY2x1ZGUvY29uZmlnLmgKICAgIGZpbGUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFNhYWRhIDxkYXZpZC5zYWFkYUBlY2l0ZWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWRlZDAyNDJlNDM3MjU5MzY2NzkyZDUyYjdlOWQxZTE5MzFkOGZhNQpBdXRob3I6IExlZSBOaXBwZXIgPExlZS5OaXBwZXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxNCAyMDowNzozMyAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIDgzNjAgc2lsaWNvbiByZXZpc2lvbiAyLjEKCiAgICBUaGlzIGNoYW5nZSBhZGRzIDgzNjAgc2lsaWNvbiByZXZpc2lvbiAyLjEgc3VwcG9ydCB0byB1LWJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogTGVlIE5pcHBlciA8bGVlLm5pcHBlckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMjI4MDY0NjlhOGYyYjY5YzgyOWY0ZmQ1MzYxZmRlYmQwY2IwMWI0CkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJV2VkIEF1ZyA4IDA0OjE0OjI4IDIwMDcgLTA1MDAKCiAgICBUcmVhdCBwcGM2NCBob3N0IGFzIHBwYwoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgMGRjNDI3OWIwOGZmODI0NzJiZWMyZTJjOTA4NTg2MDI0NTlmZWJlOApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOCAwOTowMTo0NiAyMDA3ICswODAwCgogICAgTWlub3IgZml4IGZvciBiaW9zIGVtdWxhdG9yIG1ha2VmaWxlCgogICAgQWRkICQob2JqKSB0byBMSUIgYXZvaWRpbmcgb2JqZWN0cyBiZSBidWlsdCBpbiB0aGUgc291cmNlIGRpcgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2U5ODFkYzg1N2FkZmM4MDM2Y2EyZjZkNWQ1YTA2YzJhOGFhNzdkNgpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOCAwODozMzoxMSAyMDA3ICswODAwCgogICAgQWRkIENPTkZJR19CSU9TRU1VIGRlZmluZSB0byBndWFyZCBhbGwgdGhlIGJpb3MgZW11bGF0b3IgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CgogICAgVGhpcyBwYXRjaCBmaXggdGhlIGNvbXBpbGUgaXNzdWUgb24gdGhlIGJvYXJkIHRoYXQgZGlkIG5vdCBlbmFibGUgdGhlIGJpb3MgZW11bGF0b3IKCmNvbW1pdCBlZDgxMDY0MzM1MjJmMmVhODkzM2U5ODA4MzQ2ODYwZDA2MWQ3NzMxCkF1dGhvcjogWmFjaCBTYWRlY2tpIDxaYWNoLlNhZGVja2lAcmlwY29kZS5jb20+CkRhdGU6CVR1ZSBKdWwgMzEgMTI6Mjc6MjUgMjAwNyAtMDUwMAoKICAgIHRzZWM6IGZpeCBtdWx0aXBsZSBQSFkgc3VwcG9ydAoKICAgIFRoZSBjaGFuZ2UgZW50aXRsZWQgIlJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3giCiAgICBicm9rZSBtdWx0aXBsZSBQSFkgc3VwcG9ydCBpbiB0c2VjLmMuICBUaGlzIGZpeGVzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFphY2ggU2FkZWNraSA8WmFjaC5TYWRlY2tpQHJpcGNvZGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkY2I4NGI3MjA4YWRlMGJiZWJiZWI1NmJlYzljMmM2NGY4YjJlZWRlCkF1dGhvcjogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KRGF0ZToJVGh1IEF1ZyA5IDA5OjA4OjE4IDIwMDcgLTA1MDAKCiAgICB0c2VjOiBBbGxvdyBUZW4gQml0IEludGVyZmFjZSBhZGRyZXNzIHRvIGJlIGNvbmZpZ3VyYWJsZQoKICAgIEFsbG93IHRoZSBhZGRyZXNzIG9mIHRoZSBUZW4gQml0IEludGVyZmFjZSAoVEJJKSB0byBiZSBjaGFuZ2VkIGluIHRoZQogICAgZXZlbnQgb2YgYSBjb25mbGljdCB3aXRoIGFub3RoZXIgZGV2aWNlLgoKICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Cgpjb21taXQgM2JhNGMyZDY4ZjY1NDFkYjQ2NzdiNGFlYTEyMDcxZjU2ZTZmZjZlNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEF1ZyA4IDA5OjU0OjI2IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNDFkZTFmMGQzNzNlMDljNzgyZGVhNTU4Mzg1YTA2MjQ3MTExYmE1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDU6MTU6MTggMjAwNyAtMDUwMAoKICAgIFBvcnQgZW5hYmxlZCBmb3IgSTJDIHNpZ25hbHMgYW5kIGNoaXBzZWxlY3RzIHBvcnQgY29uZmlndXJhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWEzM2NlNjVhNGM1MWE2OTE5MGRkOGM0MDhmOWUxYzYyYTY2ZTk0ZgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDA0OjMxOjE4IDIwMDcgLTA1MDAKCiAgICBBZGRlZCBOQU5EIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWFmOWU0NDdiZWIzZTQ5ODgxOGVmOGFkMGI4YzE1OTdjZDUwNjE0OQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDA0OjExOjIwIDIwMDcgLTA1MDAKCiAgICBBZGRlZCBJMkMgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5OWMwM2MxNzVkMjY4OTA5MzE3NmZhY2YxN2M1OGNlMmNiMzIwMDAxCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDM6NTg6NTIgMjAwNyAtMDUwMAoKICAgIENoYW5nZWQgQ0ZHX0NMSyB0byBnZC0+YnVzX2NsayBmb3IgQ0ZHX1RJTUVSX1BSRVNDQUxFUi4gQWRkZWQgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgZm9yIHRpbWUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZDFkNjZhZjU0ZDMwNWRlMjlkMGJiZjRhYThjOWU2Mzc1ZjdmNzMxCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gQXVnIDUgMDM6NTU6MjEgMjAwNyAtMDUwMAoKICAgIEFkZGVkIHVhcnRfZ3Bpb19jb25mKCkgaW4gc2VyaWFsX2luaXQoKSwgc2VwZXJhdGVkIHVhcnQgcG9ydCBjb25maWd1cmF0aW9uIGZyb20gY3B1X2luaXQoKSB0byB1YXJ0X2dwaW9fY29uZigpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZmZGU4NGE0NGI3ZTU3NWVhODBmZTBlMmQ1YmUzYjZmNzNkMWU2MzAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgNSAwMzo0MzozMCAyMDA3IC0wNTAwCgogICAgTW92ZWQgc3luYygpIGZyb20gYm9hcmQgZmlsZSB0byBpbmNsdWRlL2FzbS1tNjhrL2lvLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWU3MzdkODQ3NmU3ZDZhNTk2ZDE2Y2FhZjZhMzg1M2E5YTExOTBhMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEF1ZyA1IDAzOjMwOjQ0IDIwMDcgLTA1MDAKCiAgICBEZWNsYXJlZCBhdHRyaWJ1dGVzIG9mIHZvaWQgX19taWlfaW5pdCh2b2lkKSBhcyBhbiBhbGlhcyBmb3IgaW50IG1paV9pbml0KHZvaWQpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk5OThiZDM3ZWFkODVlOTM5NTM1NTk3MjA3MTBkM2IwNjg1YzgxZTYKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBBdWcgNSAwMzoxOToxMCAyMDA3IC0wNTAwCgogICAgUmVuYW1lZCBDT05GSUdfTUNGU0VSSUFMIHRvIENPTkZJR19NQ0ZVQVJUCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdjNGMzNzIyYTM4ZDQwYjBjZjUzN2RkYWU3MmIwNGY0MDg4YjE5MGMKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDcgMTY6MTc6MDYgMjAwNyArMDgwMAoKICAgIEFkZCBDT05GSUdfQklPU0VNVSBkZWZpbmUgdG8gZ3VhcmQgYWxsIHRoZSBiaW9zIGVtdWxhdG9yIGNvZGUKCiAgICBUaGlzIHBhdGNoIGZpeCB0aGUgY29tcGlsZSBpc3N1ZSBvbiB0aGUgYm9hcmQgdGhhdCBkaWQgbm90IGVuYWJsZSB0aGUgYmlvcyBlbXVsYXRvcgoKY29tbWl0IGJmMTA2MGVhNGY5ZWFhN2U3ZDE2NGE3MGE3ZDZmMjg5Mzk4ODIwNTMKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXVnIDcgMTY6MDI6MTMgMjAwNyArMDIwMAoKICAgIEZpeCBtaXNzaW5nIGJyYWNlIGVycm9yIGluIGZzL2ZhdC9mYXQuYwogICAgW3BvaW50ZWQgb3V0IGJ5IFJvZGVyaWsgV2lsZGVuYnVyZ10KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDcwNjcxNGQ5N2EwZDA4ZDU5ZWRhNGRlMjI2OGMzOWY1MDQ2ODgzMjkKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBBdWcgNiAyMzo0MTo1MyAyMDA3ICswMjAwCgogICAgW0ZJWF0gcmVtb3ZlIGN1dGUgY29kZQoKY29tbWl0IGY1MDBkOWZkZWI1NzYyODg2NTZkYWM0MjcwNTJhZDJjNWNhMGFkMWEKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBBdWcgNiAyMzozNToyNiAyMDA3ICswMjAwCgogICAgW0ZJWF0gRml4IHJvbWZzIGNvZGUKCmNvbW1pdCBhYjRiOTU2ZDMxNDNmOGY4MTc0MDg5MDUzZjVkZmFiYmIwNDc2MmIwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gQXVnIDYgMjM6MzE6NDkgMjAwNyArMDIwMAoKICAgIFtGSVhdIENvZGluZyBzdHlsZSBjbGVhbnVwIC0gV29sZmdhbmcncyBzdWdnZXN0aW9ucwoKY29tbWl0IDZjMzNjNzg1NTdjYTZmOGRhNjhjMDFjZTMzZTI3ODY5NTE5N2QzZjQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMjM6MjE6MDUgMjAwNyArMDIwMAoKICAgIEZpeGVkIHR5cG8gaW4gUkVBRE1FIChwb2ludGVkIG91dCBieSBNYXJ0aW4gSm9zdCkuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MzcyMjNhZmE2MWY2NDQ4MGRmMzFjZTQ0MGE5Y2IzODZkZjRhODE0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMjE6MTA6MTcgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIFJFQURNRSBkb2MvUkVBRE1FLmJhbWJvbwoKICAgIEFzIHN1Z2dlc3RlZCBieSBFdWdlbmUgTydCcmllbiA8RXVnZW5lLk8nQnJpZW5AYWR2YW50ZWNoYW10LmNvbT4sCiAgICBoZXJlIGFuIHVwZGF0ZWQgQmFtYm9vIFJFQURNRS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWM3ZTRiMDYyMTRkYjYxYmIyMWYxYmNiZTU3Yzk3NTE5NjY5YmFhZQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CU1vbiBBdWcgNiAwMjoxNzozNiAyMDA3ICswMjAwCgogICAgQ29kaW5nIHN0eWxlIGNsZWFudXAuIFVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAyMjE4MzhjYzdlYjE3ODM3MGZmNjJhYTA1OTIwYTU4MmUxMmFjMzIyCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAwOTowMzoyMiAyMDA3ICswODAwCgogICAgUmVtb3ZlIHRoZSBiaW9zIGVtdWxhdG9yIGZyb20gTUFJIGJvYXJkLgoKICAgIFRoZSBiaW9zIGVtdWxhdG9yIGluIHRoZSBNQUkgYm9hcmQgY2FuIG5vdCBwYXNzIGNvbXBpbGUKICAgIGFuZCBoYXZlIGEgbG90IG9mIGNyYXAgaW4gaXQuIHJlbW92ZSBpdCBhbmQgd2lsbCBoYXZlIGEKICAgIGNsZWFuIGFuZCBzbWFsbCBiaW9zIGVtdWxhdG9yIGluIHRoZSBkcml2ZXJzIGRpcmVjdG9yeQogICAgd2hpY2ggY2FuIGJlIHVlc2VkIGZvciBldmVyeSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2MTgzMzI0MDliYjk2ZjQ0NDhkMTcxMjg5OTM2OWZjODBjMGI0ODkKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDEzIDEyOjE0OjU5IDIwMDcgKzA4MDAKCiAgICBGaXggc29tZSBjb21waWxlIGlzc3VlcyBmb3IgTUFJIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGY0NjBhMWVlMTQ4YjY0OGVlMjQyYzMxNTc2NTAyODdkNDI5NjI2MApBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMTMgMTI6MTQ6NTggMjAwNyArMDgwMAoKICAgIENvbmZpZ3VyYXRpb25zIGZvciBBVEkgdmlkZW8gY2FyZCBCSU9TIGVtdWxhdG9yCgogICAgVGhpcyBwYXRjaCBhZGQgZGVmaW5pdGlvbiBvZiB0aGUgQklPUyBlbXVsYXRvciBhbmQgdGhlIEFUSSBmcmFtZWJ1ZmZlcgogICAgZHJpdmVyIGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlY2U5MmY4NTA1M2I4ZGY2MTNlZGNmMDViMjZhNDE2Y2JjM2Q2MjljCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCA2IDA4OjM0OjU2IDIwMDcgKzA4MDAKCiAgICBUaGlzIGlzIGEgQklPUyBlbXVsYXRvciwgcG9ydGluZyBmcm9tIFNjaVRlY2ggZm9yIHUtYm9vdCwgbWFpbmx5IGZvcgogICAgQVRJIHZpZGVvIGNhcmQgQklPUy4gYW5kIGNhbiBiZSB1c2VkIGZvciB4ODYgY29kZSBlbXVsYXRpb24gYnkgc29tZQogICAgbW9kaWZpY2F0aW9ucy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUwNzIxODhhY2FiZGUzMTc4ZmFjN2Y1YTU5NzE1MGU2ZTc0ZmQ0MGMKQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDYgMDg6MzM6MzMgMjAwNyArMDgwMAoKICAgIFRoaXMgaXMgYSBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIEFUSSB2aWRlbyBjYXJkLCBjYW4gd29yayBmb3IgUENJOTIwMCwKICAgIFgzMDAsIFg3MDAsIFg4MDAgQVRJIHZpZGVvIGNhcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU3MjhiZTM4OWU2NWZkNDdmMzRiMzNjMjU5NjI3MWViNGRiNzUxYWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gQXVnIDYgMDE6MDE6NDkgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgODA5MmZlZjRjMjliMzk1OTU4YmI2NDk2NDdkYTdlMzc3NTczMTUxNwpBdXRob3I6IE1hcnRpbiBLcmF1c2UgPE1hcnRpbi5LcmF1c2VAdHFzLmRlPgpEYXRlOglUdWUgRGVjIDEyIDE0OjI2OjAxIDIwMDYgKzAxMDAKCiAgICBBZGQgZnVuY3Rpb25zIHRvIGxpc3Qgb2YgZXhwb3J0ZWQgZnVuY3Rpb25zCgogICAgQWRkaXRpb25hbGx5IGV4cG9ydCB0aGUgZm9sbG93aW5nIGZ1Y3Rpb25zICh0byBtYWtlIHRyYWJfY29uZmlnIGJ1aWxkIGFnYWluKToKICAgIC0gc2ltcGxlX3N0cnRvbCgpCiAgICAtIHN0cmNtcCgpCgogICAgQWxzbyBidW1wIHRoZSBBQkkgdmVyc2lvbiB0byByZWZsZWN0IHRoaXMgY2hhbmdlCgogICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Cgpjb21taXQgNjNjZWM1ODE0ZmFiNWQyYjFjODY5ODIzMjc0MzM4MDdhNWFjMDI0OQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMiAxNDowOTo0OSAyMDA3IC0wNTAwCgogICAgTWFrZSBNUEM4NjQxJ3MgUENJL1BDSS1FIGRyaXZlciBhIGNvbW1vbiBkcml2ZXIgZm9yIG1hbnkgRlNMIHBhcnRzLgoKICAgIEFsbCBvZiB0aGUgUENJL1BDSS1FeHByZXNzIGRyaXZlciBhbmQgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0CiAgICB3YXMgaW4gdGhlIE1QQzg2NDFIUENOIHBvcnQgaGFzIG5vdyBiZWVuIG1vdmVkIGludG8gdGhlIGNvbW1vbgogICAgZHJpdmVycy9mc2xfcGNpX2luaXQuYy4gIEluIGEgc3Vic2VxdWVudCBwYXRjaCwgdGhpcyB3aWxsIGJlCiAgICB1dGlsaXplZCBieSB0aGUgODV4eCBwb3J0cyBhcyB3ZWxsLgoKICAgIENvbW1vbiBQQ0ktRSBJTU1BUCByZWdpc3RlciBibG9ja3MgZm9yIEZTTCA4NXh4Lzg2eHggYXJlIGFkZGVkLgoKICAgIEFsc28gZW5hYmxlIHRoZSBzZWNvbmQgUENJLUV4cHJlc3MgY29udHJvbGxlciBvbiA4NjQxCiAgICBieSBnZXR0aW5nIGl0cyBCQVRTIGFuZCBDRkdfIHNldHVwIHJpZ2h0LgoKICAgIEZpeGVkIGEgdTE2IHZlbmRvciBjb21waWxlciB3YXJuaW5nIGluIEFIQ0kgZHJpdmVyIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTI3NGNhNGY2ZDY4ODMwZTdjOTE2Zjg5NzU2MWNmZjhjNDEwMWMzOApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEF1ZyA1IDIyOjMzOjA1IDIwMDcgKzAyMDAKCiAgICBbRklYXSBDb2Rpbmcgc3R5bGUgY2xlYW51cAoKY29tbWl0IGFmODM3N2Q0ZWIzYTBhYzVhODMxODMwZDVjZTYzZmJmNjVmZWNiN2YKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBBdWcgNSAxNjoxMzozMSAyMDA3ICswMjAwCgogICAgW0ZJWF0gWGlsaW54IFVhcnRsaXRlIGRyaXZlcgogICAgQmVjYXVzZSBQUEM0MDUgY2FuIHVzZSBVQVJUTElURSBzZXJpYWwgaW50ZXJmYWNlIGFuZAogICAgTWljcm9ibGF6ZSBjYW4gdXNlIFVhcnQxNjU1MCBzZXJpYWwgaW50ZXJmYWNlIG5vdCBvbmx5IFVhcnRsaXRlLgoKY29tbWl0IDk4ODg5ZWRkNTBhYWRmODYyMDcxZWI1NjY0NzQ3YWQwZDU2OGEyMGUKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVN1biBBdWcgNSAxNTo1NDo1MyAyMDA3ICswMjAwCgogICAgW0ZJWF0gQ2hhbmdlIGNvbmZpZ3VyYXRpb24gZm9yIFhVUFYyUCBNaWNyb2JsYXplIGJvYXJkCgpjb21taXQgNTM3MDkxYjRlZWQ5MzAyODY1ZDAzZmVmM2Y3MjEyYjRmZTVjZjI4ZgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEF1ZyA1IDE1OjUzOjUwIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEFkZGVkIHN1cHBvcnQgZm9yIFhpbGlueCBFbWFjIGNvbW11bml0eSBkcml2ZXIKCmNvbW1pdCA4NmIxMTZiMWIxZTE2NWNhNDg0MGRhZWZlZDM2ZDJlM2I4NDYwMTczCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEF1ZyAzIDEyOjA4OjE2IDIwMDcgKzAyMDAKCiAgICBjbTFfcXAxIC0+IGNtNTIwMDogc2luZ2xlIFUtQm9vdCBpbWFnZSBmb3IgbW9kdWxlcyBmcm9tIHRoZSBjbTUyMDAgZmFtaWx5LgoKICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgbW9kdWxlcyBmcm9tIHRoZSBTY2hpbmRsZXIgY201MjAwIGZhbWlseSB0byB1c2UgYQogICAgc2luZ2xlIFUtQm9vdCBpbWFnZToKICAgIC0gcmVuYW1lIGNtMV9xcDEgdG8gY201MjAwCiAgICAtIGFkZCBydW4tdGltZSBtb2R1bGUgZGV0ZWN0aW9uCiAgICAtIHBhcmFtZXRyaXplIFNEUkFNIGNvbmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBtb2R1bGUgd2UgYXJlIHJ1bm5pbmcgb24KCiAgICBGZXcgbWlub3IsIGJvYXJkLXNwZWNpZmljIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2g6CiAgICAtIGJldHRlciBNQUMgYWRkcmVzcyBoYW5kbGluZwogICAgLSB1cGRhdGVkIGRlZmF1bHQgZW52aXJvbm1lbnQgKCd1cGRhdGUnIGNvbW1hbmQgdXNlcyAre2ZpbGVzaXplfSBub3cpCiAgICAtIGltcHJvdmVkIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhdXRvLXVwZGF0ZSBjb2RlCiAgICAtIGFsbG93IGJvb3RpbmcgVS1Cb290IGZyb20gUkFNIChDRkdfUkFNQk9PVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM3ZTcxN2ViYzJiMDQ0ZDdhNzEwNjI1NTJjOWRjMGY1NGVhOWI3NzkKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBdWcgMyAwNDowNToyNSAyMDA3IC0wNTAwCgogICAgQWRkIE1hcnZlbGwgMTE0OSBQSFkgc3VwcG9ydCB0byB0aGUgVFNFQwoKY29tbWl0IGIxYjU0ZTM1MjAyOGVkMzcwYzNhYTk1ZDZmZGViOWQ2NGM1ZDJmODYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIgMjE6Mjc6NDYgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA2M2UyMjc2NGQyZjg2NTNmNjg4ODhjNjY3ZWI2NWIzOTk2YjUyNjgwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyIDEwOjExOjE4IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjbGVhbnVwIG9mIDxib2FyZD5fbmFuZCBidWlsZCBydWxlcy4KCmNvbW1pdCA5Y2E4ZDc5ZGUwOTZjNjViOWI5Yzg2NzI1OWIzZmY0Njg1Zjc3NWVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgQXVnIDIgMDg6MzM6NTYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGM5MjQwOTgxMjIwNmFjNjdhN2ZhN2FhZTI5ODUzOWE5YzM4MDRhNDYKQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEp1bCAzMSAxODo1MTo0OCAyMDA3ICswMjAwCgogICAgW3BwYzQ0MFNQZV0gR3JhY2VmdWwgcmVjb3ZlcnkgZnJvbSBtYWNoaW5lIGNoZWNrIGR1cmluZyBQQ0llIGNvbmZpZ3VyYXRpb24KCiAgICBEdXJpbmcgY29uZmlnIHRyYW5zYWN0aW9ucyBvbiB0aGUgUENJZSBidXMgYW4gYXR0ZW1wdCB0byBzY2FuIGZvciBhCiAgICBub24tZXhpc3RlbnQgZGV2aWNlIGNhbiBsZWFkIHRvIGEgbWFjaGluZSBjaGVjayBleGNlcHRpb24gd2l0aCBjZXJ0YWluCiAgICBwZXJpcGhlcmFsIGRldmljZXMuIEluIG9yZGVyIHRvIGF2b2lkIGNyYXNoaW5nIGluIHN1Y2ggc2NlbmFyaW9zIHRoZQogICAgaW5zdHJ1bWVudGVkIHZlcnNpb25zIG9mIHRoZSBjb25maWcgY3ljbGUgcmVhZCByb3V0aW5lcyBhcmUgaW50cm9kdWNlZCwgc28KICAgIHRoZSBleGNlcHRpb25zIGZpeHVwcyBmcmFtZXdvcmsgY2FuIGdyYWNlZnVsbHkgcmVjb3Zlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGRlYzk5NTU4YjllYTc1YTM3OTQwZDA3ZjQxYTM1NjVhNTBiNTRhZDEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSnVsIDMxIDE4OjE5OjU0IDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBTZXBhcmF0ZSBzZXR0aW5ncyBmb3IgUENJZSBidXMgbnVtYmVyaW5nIG9uIDQ0MFNQZSByZXYuQQoKICAgIFRoaXMgYnJpbmdzIGJhY2sgc2VwYXJhdGUgc2V0dGluZ3MgZm9yIFBDSWUgYnVzIG51bWJlcnMgZGVwZW5kaW5nIG9uIGNoaXAKICAgIHJldmlzaW9uLCB3aGljaCBnb3QgZWxpbWluYXRlZCBpbiAyYjM5M2IwZjBhZjg0MDJlZjQzYjI1YzE5NjhiZmQyOTcxNGRkZmZhCiAgICBjb21taXQuIDQ0MFNQZSByZXYuIEEgZG9lcyBOT1Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSBzYW1lIHNldHRpbmdzIGFzIGZvcgogICAgdGhlIHJldi4gQiAobm8gZGV2aWNlcyBhcmUgc2VlbiBvbiB0aGUgYnVzIGR1cmluZyBlbnVtZXJhdGlvbikuCgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjZGQ5MTdhNDNkYTZmYTdmYzhmNTRhM2NjOWY0MjBjZTVlY2YzMTk3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEF1ZyAyIDAwOjQ4OjQ1IDIwMDcgKzAyMDAKCiAgICBGaXggYnVpbGQgZXJyb3JzIGFuZCB3YXJuaW5ncyAvIGNvZGUgY2xlYW51cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGQyZjY4MDA2NjI3ZWRhNmNiNmM3ZjM2NGJkZGY2MjFkYmZkMmZjNjgKQXV0aG9yOiBFdWdlbmUgT0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+CkRhdGU6CVR1ZSBKdWwgMzEgMTA6MjQ6NTYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIDQ0MEVQIHN1cHBvcnQKCiAgICBDaGFuZ2VkIHN0b3JhZ2UgdHlwZSBvZiBjZmdfc2ltdWxhdGVfc3BkX2VlcHJvbSB0byBjb25zdAogICAgQ2hhbmdlZCBzdG9yYWdlIHR5cGUgb2YgZ3Bpb190YWIgdG8gc3RhY2sgc3RvcmFnZQogICAgKENhbm5vdCBhY2Nlc3MgZ2xvYmFsIGRhdGEgZGVjbGFyYXRpb25zIGluIC5ic3MgdW50aWwgYWZlciBjb2RlIHJlbG9jYXRpb24pCgogICAgSW1wcm92ZWQgU0RSQU0gdGVzdHMgdG8gY2F0Y2ggcHJvYmxlbXMgd2hlcmUgZGF0YSBpcyBub3QgdW5pcXVlbHkgYWRkcmVzc2FibGUKICAgIChlLmcuIGluY29ycmVjdGx5IHByb2dyYW1tZWQgU0RSQU0gcm93IG9yIGNvbHVtbnMpCgogICAgQWRkZWQgQ09ORklHX1BST0dfU0RSQU1fVExCIHRvIHN1cHBvcnQgQmFtYm9vIFNJTU0vRElNTSBtb2R1bGVzCiAgICBGaXhlZCBBTTI5TFYzMjBEVCAoT3BDb2RlIEZsYXNoKSBzZWN0b3IgbWFwCgogICAgU2lnbmVkLW9mZi1ieTogRXVnZW5lIE9CcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGVhOWY2YmNlMzgzY2M5ZmJjZGVlMjhiNTgzNjEwOWIxYTZkYmE1NzQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMzEgMDg6Mzc6MDEgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIDQ0MEVQeCBsd21vbjUgYm9hcmQgc3VwcG9ydAoKICAgIC0gQ2xlYXIgRUNDIHN0YXR1cyByZWdzIGFmdGVyIEVDQyBQT1NUIHRlc3QKICAgIC0gU2V0IGRjYnogZm9yIEVDQyBnZW5lcmF0aW9uIHdpdGggY2FjaGVzIGVuYWJsZWQgYXMgZGVmYXVsdAogICAgLSBDb2RlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMjdhNTI4ZmI0MTQzM2M0YzFlMmI1ZDZiZDNmZDhkNzg2MDZmYzcyNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEp1bCAzMCAxMTowNDo1NyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBPbmx5IHByaW50IEVDQyByZWxhdGVkIGluZm8gd2hlbiB0aGUgZXJyb3IgYmlzIGFyZSBzZXQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTM2MjIwYTRiYWYxZjE4OGJhNjBmMTdlOWQwZjA0MzA2OWIxMzYyYQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglGcmkgSnVsIDI3IDE2OjQ0OjMxIDIwMDcgKzAyMDAKCiAgICBuZXcgRlBHQSBpbWFnZSBmb3IgUExVNDA1IGJvYXJkCgogICAgbmV3IEZQR0EgaW1hZ2UgZm9yIFBMVTQwNSBib2FyZCB3aXRoIGltcHJvdmVkIENvbXBhY3RGbGFzaCB0aW1pbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA4OTkzZTU0YjZmMzk3OTczNzk0ZjNkNmY0N2QzYjNjMGM5OGRkNGY2CkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1bCAyNyAxNDo0Mzo1OSAyMDA3ICswMjAwCgogICAgW0FEUzUxMjFdIFN1cHBvcnQgZm9yIHRoZSBBRFM1MTIxIGJvYXJkCgogICAgVGhlIGZvbGxvd2luZyBNUEM1MTIxZSBzdWJzeXN0ZW1zIGFyZSBzdXBwb3J0ZWQ6CgogICAgLSBsb3ctbGV2ZWwgQ1BVIGluaXQKICAgIC0gTk9SIEJvb3QgRmxhc2ggKGNvbW1vbiBDRkkgZHJpdmVyKQogICAgLSBERFIgU0RSQU0KICAgIC0gRkVDCiAgICAtIEkyQwogICAgLSBXYXRjaGRvZwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+Cgpjb21taXQgMTg2M2NmYjdiMTAwYmEwZWUzNDAxNzk5NDU3YTAxZGMwNTg3NDVmOApBdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKdWwgMjcgMTQ6MjI6MDQgMjAwNyArMDIwMAoKICAgIFtQUENdIFJlbW92ZSB1bnVzZWQgTVNSX1VTRVIgZGVmaW5pdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Cgpjb21taXQgZDQwMjRiYjcyZGQ4MTY5NWVjMDk5YjIxOTllZGEwZDI3YzYyM2U2MgpBdXRob3I6IEpvaG4gT3RrZW4gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KRGF0ZToJVGh1IEp1bCAyNiAxNzo0OToxMSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgc3VwcG9ydCBmb3IgQU1DQyA0MDVFUCBUYWlodSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gT3RrZW4gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KCmNvbW1pdCBiNjYwOTFkZTZjNzM5MDYyMDMxMmMyNTAxZGIyM2Q4MzkxZTdjYWJiCkF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDI2IDE1OjA4OjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IGx3bW9uNTogVXBkYXRlIExpbWUgaW5pdGlhbGl6YXRpb24KCiAgICBDaGFuZ2UgTGltZSBTRFJBTSBpbml0aWFsaXphdGlvbiB0byBub3cgc3VwcG9ydCAxMDBNSHogYW5kCiAgICAxMzNNSHogKGlmIGVuYWJsZWQpLiBBbHNvIHRoZSBmcmFtZWJ1ZmZlciBpcyBpbml0aWFsaXplZCB0bwogICAgZGlzcGxheSBhIGJsdWUgcmVjdGFuZ2xlIHdpdGggYSB3aGl0ZSBib3JkZXIuCgogICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlmMjRhODA4ZjE3ZmMwZjM3YjdmYjQ4MDVmNzM0NzQxMzM1Y2FlY2MKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdWwgMjQgMDk6NTI6NTIgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogbHdtb241OiBTdXBwb3J0IGZvciAxMjggTUJ5dGUgTk9SIEZMQVNIIGFkZGVkCgogICAgVGhlIHVzZWQgSW50ZWwgTk9SIEZMQVNIIGNoaXBzIGhhdmUgaW50ZXJuYWxseSB0d28gZGllcywgYW5kIGFyZSBub3cKICAgIHRyZWF0ZWQgYXMgdHdvIHNlcGVyYXRlIGNoaXBzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhZWRmNWJkZTE3OWVjZmJkMGE5NjEzMGQxODk5NmE5NjUxOGI3ODVmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDI0IDA3OjIwOjA5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBsd21vbjUgaW50ZXJydXB0IGNvbnRyb2xsZXIgc2V0dXAgKHBvbGFyaXR5LCB0cmlnZ2VyLi4uKQoKICAgIEFzIHN1Z2dlc3RlZCBieSBIYWthbiBFcnlpZ2l0LCBoZXJlIGFuIHVwZGF0ZWQgc2V0dXAgZm9yIHRoZSBsd21vbjUKICAgIGludGVycnVwdCBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBhNzFkOTZlYWM4MTMwYjUzYTkxZjkzY2QxMGM3MGZjYTBkYjE4ZDUyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDIwIDE1OjAzOjQ0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBidWcgd2l0aCBkZWZhdWx0IEdQSU8gb3V0cHV0IHZhbHVlCgogICAgQXMgc3BvdHRlZCBieSBNYXR0aGlhcyBGdWNocywgdGhlIGRlZmF1bHQgb3V0cHV0IHZhbHVlcyBmb3IgYWxsIEdQSU8xCiAgICBvdXRwdXRzIHdlcmUgbm90IHNldHVwIGNvcnJlY3RseS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1MzFlM2U4YjgzMWYzNTcwNTY0NDhmYTU3MzEzN2Q1ZmIzNzAwMGZkCkF1dGhvcjogUGF2ZWwgS29sZXNuaWtvdiA8Y29uY29yZEBlbWNyYWZ0LmNvbT4KRGF0ZToJRnJpIEp1bCAyMCAxNTowMzowMyAyMDA3ICswMjAwCgogICAgUE9TVDogQWRkIEVDQyBQT1NUIGZvciB0aGUgbHdtb241IGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIEVDQyBQb3N0IHRlc3QgZm9yIHRoZSBMd21vbjUgYm9hcmQgYmFzZWQKICAgIG9uIFBQQzQ0MEVQeCB0byBVLUJvb3QuCgogICAgU2lnbmVkLW9mZi1ieTogUGF2ZWwgS29sZXNuaWtvdiA8Y29uY29yZEBlbWNyYWZ0LmNvbT4KICAgIEFja2VkLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjMzAyM2I5Zjk1ZDdhYzk1OWE3NjQ0NzFhNjUwMDEwNjJhZWNmNDEKQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgSnVsIDE5IDE3OjEyOjI4IDIwMDcgKzAyMDAKCiAgICBGaXggYnJlYWthZ2Ugb2YgOHh4IGJvYXJkcyBmcm9tIHJlY2VudCBjb21taXQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgbmVnYXRpdmUgY29uc2VxdWVuY2VzIGZvciA4eHggb2YgdGhlIHJlY2VudAogICAgInBwYzR4eDogQ2xlYW4gdXAgNDQwIGV4Y2VwdGlvbnMgaGFuZGxpbmciIGNvbW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM4ODNmNmVhMzJkY2U5MWYwNzY3MGIzYWFmZWNmNmM5OWIxZTUzNDEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTM6MTE6MTIgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg4NDhlYzg1OGY3NGVkNmRhYjA2ZmI2ZDVkZGM5MzNlMGExMzI4YmYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTA6MDI6MTIgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ29kZSBjbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDJhNDlmYzE3ZDA5MDIwZTdlYmQ5NTM2Njk0ZDk5ZDIwZTQxOWZjYjgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgMTYgMTA6MDE6MzggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQU1DQyBMdWFuIHVzZXMgdGhlIG5ldyBib2FyZHNwZWNpZmljIEREUjIgY29udHJvbGxlciBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZjNmMTc0MjJhZWIwM2ZiODFhN2FjOGM3OGQyYjA1ZDA1YWE0Y2Y5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDEwOjAwOjQzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFN1cHBvcnQgZm9yIFl1Y2NhIGJvYXJkIHdpdGggNDQwU1BlIFJldiBBIGFkZGVkIHRvIDQ0eF9zcGRfZGRyMi5jCgogICAgVGhlIG5ldyBib2FyZHNwZWNpZmljIEREUjIgY29udHJvbGxlciBjb25maWd1cmF0aW9uIGlzIHVzZWQgZm9yIHRoZSBZdWNjYQogICAgYm9hcmQuIE5vdyB0aGUgWXVjY2EgYm9hcmQgd2l0aCA0NDBTUGUgUmV2LiBBIGNoaXBzIGlzIGFsc28gc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2ZWQxNGFkZGY5N2M4Y2Q4ZjUzMWU5YWU3YjJkM2UyMjJmZmZkNTNlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDA5OjU3OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBuZXcgd2VhayBmdW5jdGlvbnMgdG8gc3VwcG9ydCBib2FyZHNwZWNpZmljIEREUjIgY29uZmlndXJhdGlvbgoKICAgIFRoZSBuZXcgIndlYWsiIGZ1bmN0aW9ucyBkZHJfd3JkdHIoKSBhbmQgZGRyX2Nsa3RyKCkgYXJlIGFkZGVkIHRvIGJldHRlcgogICAgc3VwcG9ydCBub24gZGVmYXVsdCwgYm9hcmRzcGVjaWZpYyBERFIoMikgY29udHJvbGxlciBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1NzQzYTkyMDdhMzcwYjkwZjA5YjIwZWJkNjExNjdjODA2YjkzN2YzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVsIDE2IDA4OjUzOjUxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCByZW1vdmVfdGxiKCkgZnVuY3Rpb24gdG8gcmVtb3ZlIGEgbWVtIGFyZWEgZnJvbSBUTEIgc2V0dXAKCiAgICBUaGUgbmV3IGZ1bmN0aW9uIHJlbW92ZV90bGIoKSBjYW4gYmUgdXNlZCB0byByZW1vdmUgdGhlIFRMQidzIHVzZWQgdG8KICAgIG1hcCBhIHNwZWNpZmljIG1lbW9yeSByZWdpb24uIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIHRoZSBERFIoMikKICAgIHNldHVwIHJvdXRpbmVzIHdoaWNoIGNvbmZpZ3VyZSB0aGUgU0RSQU0gYXJlYSB0ZW1wb3JhcmlseSBhcyBhIGNhY2hlZAogICAgYXJlYSAoZm9yIHNwZWVkdXAgb24gYXV0by1jYWxpYnJhdGlvbiBhbmQgRUNDIGdlbmVyYXRpb24pIGFuZCBsYXRlcgogICAgbmVlZCB0aGlzIGFyZWEgdW5jYWNoZWQgZm9yIG5vcm1hbCB1c2FnZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGMwYTljZGExYmRlMzcxMDY1MjA0NzZlZDQ4NmJkNjdlYjhkMzBhZQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIEp1bCAxNiAwMDozMTowNyAyMDA3ICswMjAwCgogICAgW1BBVENIXSBTdXBwb3J0IGZvciBYaWxpbnggRW1hY0xpdGUgY29udHJvbGxlcgoKY29tbWl0IDNhNmNhYjg0NGNmNzRmNzY2MzlkNzk1ZTBiZTg3MTdlMDJjODZhZjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglTYXQgSnVsIDE0IDIyOjUxOjAyIDIwMDcgKzAyMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1MjgwZjM1MmM4ZGEzM2IxZDdmYmY0NDg3Njg3MTdkOWUxNmZmOWExCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgSnVsIDE0IDEzOjExOjI4IDIwMDcgKzAyMDAKCiAgICBbRklYXSBzdXBwb3J0IGZvciBzaW1wbHkgbWVhc3VyaW5nIHRpbWUKCmNvbW1pdCA5MWJiNGNhNjY1ZDJlMGNmN2Y2MGM0YjViMzcwOTkwMjUwZWMwYzQzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgSnVsIDE0IDEyOjQxOjIzIDIwMDcgKzAyMDAKCiAgICBbRlNdIEFkZGVkIHN1cHBvcnQgZm9yIFJPTUZTCgpjb21taXQgMDExNTk1MzA3NzMxYTdhNjdhNzQ0NWQxMDdjMjc5ZDAzMWU4YWI5NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IEp1bCAxNCAwMTowNjo1OCAyMDA3ICswMjAwCgogICAgW1BDUzQ0MEVQXQktIGZpeCBjb21waWxlIGVycm9yLCBpZiBCVUlMRF9ESVIgaXMgdXNlZAoKY29tbWl0IDVhMmYxMDk4ZDgxYWQ1OGIzMDllNWU1NThkMDQ5MjY0MzE2NmE3OTkKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBKdWwgMTQgMDA6MTg6NDggMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gU3VwcG9ydCB0aW1lIHdpdGhvdXQgdGltZXIKCmNvbW1pdCBhNDc2Y2EyYWMyMjE3ZGRkMDVhMmJmMGM1MTQwNzU4MTRiMTBhM2MwCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDEzIDIxOjQzOjU1IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSBwcm9ibGVtIHdpdGggZGlzYWJsZWQgQkFSUkVMIFNISUZURVIKCmNvbW1pdCA1NWUyNmFkNjIxMDdkMmYxNGY3NTdkZTNhZTBiMTRiOWFhN2FlZDk0CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgSnVsIDEzIDIxOjQxOjQ0IDIwMDcgKzAyMDAKCiAgICBbRklYXSBjb3JyZWN0IGhlbHAgZm9yIHJzcHIKCmNvbW1pdCBmYWQ2MzQwNzE1NGY0NjI0NmNlODBkNTNhOWM2NjlhNDQzNjJhYzY3CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgSnVsIDEzIDA5OjU0OjE3IDIwMDcgKzAyMDAKCiAgICBtYWtlIHNob3dfYm9vdF9wcm9ncmVzcyAoKSB3ZWFrLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDkwNzkwMjQ3MjM5MWI2Y2ExODc2ZWMzMDA2ODc1NjJlY2FmNDU5YjEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBKdWwgMTMgMDg6MjY6MDUgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JLSBUaGUgRElBRyBMRURzIGFyZSBub3cgYmxpbmtpbmcsIGlmIGFuIGVycm9yIG9jY3VyCgkJLSBmaXggY29tcGlsZSBlcnJvciwgaWYgQlVJTERfRElSIGlzIHVzZWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBhMmUxYzcwOThjZjk1NzQzODZiMGM5Njg0MWRmYzhlYTVjYzkzNTc4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDEyIDE2OjMyOjA4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSByZWNlaXZlIGJ1ZmZlciBoYW5kbGluZyBpbiB0aGUgNHh4IGVtYWMgZHJpdmVyCgogICAgVGhpcyBjaGFuZ2UgZml4ZXMgYSBidWcgaW4gdGhlIHJlY2VpdmUgYnVmZmVyIGhhbmRsaW5nLCB0aGF0CiAgICBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIHVwb24gaGlnaCBuZXR3b3JrIHRyYWZmaWMgKGJyb2FkY2FzdHMuLi4pLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyMzlmMDVlZTRkZDRjZmUwYjUwZjI1MWI1MzNkY2ViZTllNjdjMzYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCAxMiAwMTo0NTozNCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRywgbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1YTU2YWYzYjUyMmJhNDdmYjMzYTNmZWU4NGQyM2JmMWU1NDI5NjU0CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVuIDggMTY6NDE6MTggMjAwNyAtMDUwMAoKICAgIFJlbW92ZSBlcnJvbmVvdXMgZXJyYXRhIGNvZGUgZnJvbSBNYXJ2ZWwgODhFMTExMVMgZHJpdmVyCgogICAgVGhlIE1hcnZlbCA4OEUxMTExUyBkcml2ZXIgZm9yIHRoZSBUU0VDIHdhcyBjb3BpZWQgZnJvbSB0aGUKICAgIDg4RTExMDEgZHJpdmVyLCBhbmQgaW5jbHVkZWQgYSBmaXggZm9yIGFuIGVycmF0dW0gd2hpY2ggZG9lcyBub3QKICAgIGV4aXN0IG9uIHRoYXQgcGFydC4gIE5vdyBpdCBpcyByZW1vdmVkCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk4MmVmY2YyM2ZkMDM2NDdlMDFlMmZiZTI4YTdhMzYyMzkxNTZjYzAKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gNSAxNjozODo0NCAyMDA3IC0wNTAwCgogICAgRnJvbTogZXJhbiBsaWJlcnR5IDxlcmFuLmxpYmVydHlAZ21haWwuY29tPgoKICAgIGFkZHMgdGhlIHJlc2V0IHJlZ2lzdGVyIHRvIDg1eHggaW1tYXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBFcmFuIExpYmVydHkgPGVyYW4ubGliZXJ0eUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNlYzBkOTQzYTA0NWJkYjk5ZTE1OWU3YmJjNzc0MzBlMDlmMTFkNwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE1heSAxMCAxNzo1MDowMSAyMDA3IC0wNTAwCgogICAgUG9saXNoZWQgdGhlIDg1eHggQURTIGNvbmZpZyBmaWxlcwoKICAgIE1hZGUgdGhlIGJvb3QgY29tbWFuZHMgdXNlIGRldmljZSB0cmVlcyBieSBkZWZhdWx0LgogICAgQWxzbyBtb3ZlZCB0aGUgcmFtZGlzayB0byAxMDAwMDAwIChJIHRoaW5rIHRoZSBwcmV2aW91cyBhZGRyZXNzCiAgICB3YXMgZ2V0dGluZyBvdmVycmlkZGVuIGR1cmluZyBib290KS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmZiMzdiMzJkMWIwYjAzZjE4MDc3ZGJhNDljYzY2YTZlNzZmYTAzOApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgOSAxMTowMzozMiAyMDA3IC0wNTAwCgogICAgODU0NGRzOiBGaXggTWFrZWZpbGUgYWZ0ZXIgbW92aW5nIHBpeGlzIHRvIGJvYXJkL2ZyZWVzY2FsZS4KCiAgICBUaGUgT0JKVFJFRSAhPSBTUkNUUkVFIGJ1aWxkIHNjZW5hcmlvIHdhcyBicm9rZW4uCiAgICBUaGlzIGZpeGVzIGl0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJhM2NlZTQzYzNiNzFmYTViOGQ5MWRiMTlmMDUwNjc4NjUyOTBmM2UKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgOSAwMDo1NDoyMCAyMDA3IC0wNTAwCgogICAgdHNlYzogRml4IFBIWSBjb2RlIHRvIG1hdGNoIGZpcnN0IGRyaXZlcgoKICAgIEphcnJvbGQgV2VuIG5vdGljZWQgdGhhdCB0aGUgZ2VuZXJpYyBQSFkgY29kZSBhbHdheXMgbWF0Y2hlcwogICAgdW5kZXIgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uICBDaGFuZ2UgaXQgc28gdGhlIGZpcnN0IG1hdGNoCiAgICB3aW5zLCBhbmQgKm9ubHkqIHVua25vd24gUEhZcyB0cmlnZ2VyIHRoZSBnZW5lcmljIGRyaXZlcgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjY2MwOTFhYWM2MWEzOGNkOTk4ZDU3NWQ5MmY3MjMyZTI1NmQ2MzEyCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDggMTc6Mjc6NDMgMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBDUE0gZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiB0byA4NTYwIEFEUwoKICAgICogQWRkcyBjb2RlIHRvIG1vZGlmeSBDUE0gZnJlcXVlbmNpZXMKICAgICogQ2xlYW5zIHVwIHRoZSBjb25maWcgZmlsZSB0byAjZGVmaW5lIFRTRUMgYW5kIChmb3Igbm93KSAjdW5kZWYgRkNDCiAgICAqIEFkZHMgdGhlIE1JSSBjb21tYW5kIGZvciBhbGwgODU2MCBBRFMgY29uZmlndXJhdGlvbnMKICAgICogVXBkYXRlcyBjb25maWcgZmlsZSB0byBwcm92aWRlIGNvbnZlbmllbmNlIGNvbW1hbmRzIGZvciBib290aW5nCiAgICAgIHdpdGggYSBkZXZpY2UgdHJlZQoKICAgIFNpZ25lZC1vZmYtYnk6IFZpdGFseSBCb3JkdWcgPHZib3JkdWdAcnUubXZpc3RhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3NTA3ZDU2Y2NhZjdhYWUxYzQ3NDM0MmE5YTU1NDAxNjVjZDdlOWQ5CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDggMTc6MjM6MDIgMjAwNyAtMDUwMAoKICAgIEZpeCBNYXJ2ZWxsIDg4ZTExNDUgUEhZIGluaXQgY29kZQoKICAgIEZpeCBhIGJ1ZyBpbiB0aGUgTWFydmVsbCA4OGUxMTQ1IFBIWSBpbml0IGNvZGUgaW4gdGhlIFRTRUMgZHJpdmVyCiAgICB3aGVyZSB0aGUgcmVzZXQgd2FzIGJlaW5nIGRvbmUgYWZ0ZXIgdGhlIGVycmF0YSBjb2RlIGluc3RlYWQgb2YKICAgIGJlZm9yZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkYzIxMGRlYzViYWNlOThhNTBiNmJhOTA1MzQ3ODkwMDkxYTliYjAKQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDExIDE0OjUyOjE2IDIwMDcgLTA1MDAKCiAgICBBZGQgc2ltcGxlIGFnZW50L2VuZC1wb2ludCBjb25maWd1cmF0aW9uIGluIFBDSSBBdXRvQ29uZmlnIGZvciBQQ0lfQ0xBU1NfUFJPQ0VTU09SX1BPV0VSUEMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlOGI4NWYzYmE0Y2Q4OTMwZTBhMmZlYTIxMDBjODE1ZDY0MjAxNzY1CkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAxNDo1MjowOCAyMDA3IC0wNTAwCgogICAgcGNpYXV0byBzZXR1cCBicmlkZ2UKCiAgICBUaGUgUDJQIGJyaWRnZSBidXMgbnVtYmVycyBwcm9ncmFtbWVkIGludG8gdGhlIGRldmljZSBhcmUgcmVsYXRpdmUgdG8KICAgIGhvc2UtPmZpcnN0X2J1c25vLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTcxZjQ5ZmE3MTcwMDRjYTQyNjhiNGUyNDA1N2VmYzdiZjlmOTg3YgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMTEgMTQ6NTI6MDEgMjAwNyAtMDUwMAoKICAgIFN1cHBvcnQgUENJZSBleHRlbmRlZCBjb25maWcgcmVnaXN0ZXJzCgogICAgRlNMIFBDSWUgYmxvY2sgaGFzIGV4dGVuZGVkIGNmZyByZWdpc3RlcnMgaW4gdGhlIDEwMCBhbmQgNDAwIHJhbmdlLgogICAgRm9yIGV4YW1wbGUsIHRvIHJlYWQgdGhlIExUU1NNIHJlZ2lzdGVyOiBwY2kgZGlzcGxheSA8YnVzbj4uMCA0MDQgMQoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmE1ZmViMTI1ODFiYjI5MTJjZTMwMWU0ODY2YjcxZjg0NmU5ZmMwNwpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdWwgMTEgMTQ6NTE6NDggMjAwNyAtMDUwMAoKICAgIE1pbm9yIGltcHJvdmVtZW50cyB0byBkcml2ZXJzL3BjaV9hdXRvLmMKCiAgICAtIE1ha2UgcGNpYXV0b197cHJlLHBvc3R9c2Nhbl9zZXR1cF9icmlkZ2Ugbm9uLXN0YXRpYwogICAgLSBBZGRlZCBwaHlzaWNhbCBhZGRyZXNzIGRpc3BsYXkgaW4gZGVidWcgbWVzc2FnZXMuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0MGU4MWFkZGFiN2JiNzRkMjBkZGY2ODFjZTliYWJjODgwYTgyOGVlCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAxNDo1MTozNSAyMDA3IC0wNTAwCgogICAgU3RhcnQgcGNpIGhvc2Ugc2NhbiBmcm9tIGhvc2UtPmN1cnJlbnRfYnVzbm8uCgogICAgRW5zdXJlIGhvc2UtPmN1cnJlbnRfYnVzbm8gaXMgbm90IGxlc3MgdGhhbiBmaXJzdF9idXNuby4gIFRoaXMgZml4ZXMKICAgIGJyb2tlbiBib2FyZCBjb2RlIHdoaWNoIGxlYXZlcyBjdXJyZW50X2J1c25vPTAgd2hlbiBmaXJzdF9idXNubyBpcwogICAgZ3JlYXRlciB0aGFuIDAgZm9yIHRoZSBjYXNlcyB3aXRoIG11bHRpcGxlIGNvbnRyb2xsZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzg2NWIxZmI3ODQzYTA4YWQ0OWE2MzE5YTM2NDE1NzUyMjc2ZmY0OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCAxMSAxMjoxMzo1MyAyMDA3ICswMjAwCgogICAgRml4IHNvbWUgY29tcGlsZSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IHRoZSBsYXRlc3QgQ0ZHX0NNRF94eHggY2xlYW51cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBmYTFkZjMwODkyNmE2ZjcwZTM1MDRjNTc1MTRlZjI3YWMzMWZkMTNhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEp1bCAxMSAyMDoxMTowNyAyMDA3ICswMjAwCgogICAgQ00xLlFQMTogU3VwcG9ydCBmb3IgdGhlIFNjaGluZGxlciBDTTEuUVAxIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDk2ZTFkNzViZTgxOTNjYTc5ZTQyMTVhMzY4YmY5ZDdmMjM2MjQ1MGYKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBKdWwgMTEgMTg6Mzk6MTEgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JLSBTaG93IG9uIHRoZSBESUFHIExFRHMsIGlmIHRoZSBTSEExIGNoZWNrIGZhaWxlZAoJCS0gbm93IHRoZSBGbGFzaCBTVCBNMjlXMDQwQiBpcyBzdXBwb3J0ZWQgKG5vdCB0ZXN0ZWQpCgkJLSBmaXggdGhlICJsZWQiIGNvbW1hbmQKCQktIGZpeCBjb21waWxlIGVycm9yLCBpZiBCVUlMRF9ESVIgaXMgdXNlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGU5NTE0NzUxY2ZhNWNjZTYxZWE2OTlmYTBkM2ViMzc4OThhNWVlYjUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVN1biBKdWwgOCAxMzo0NDoyNyAyMDA3ICswMjAwCgogICAgRml4IG1hbGxvYyBwcm9ibGVtIGludHJvZHVjZWQgd2l0aCB0aGUgcmVsb2NhdGlvbiBmaXh1cCBmb3IgdGhlIFBQQyBwbGF0Zm9ybQoKICAgIFRoZSByZWxvY2F0aW9uIGZpeHVwIGRpZG4ndCBoYW5kbGUgdGhlIG1hbGxvYyBwb2ludGVyIGluaXRpYWxpemF0aW9uCiAgICBjb3JyZWN0bHkuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtLiBUZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIDR4eC4KICAgIFRoZSByZWxvY2F0aW9uIGZpeHVwIHBhdGNoZXMgZm9yIDR4eCB3aWxsIGZvbGxvdyBzb29uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwZGNhODc0ZGI2MjcxOGU0MTI1MzY1OWU2MGYzYTFkZTdlYjQxOGNlCkF1dGhvcjogVHNpQ2h1bmcgPHRjbGlld0BHb2t1Lihub25lKT4KRGF0ZToJVHVlIEp1bCAxMCAxNTo0NTo0MyAyMDA3IC0wNTAwCgogICAgQ2FjaGUgdXBkYXRlIGFuZCBhZGRlZCBDRkdfVU5JRllfQ0FDSEUKCiAgICBFbmFibGVkIGNhY2hlIGluIGNwdV9pbml0X2YoKSBmb3IgZmFzdGVyIGZsYXNoIHRvIG1lbSBhbGxvY2F0aW9uLiBVcGRhdGVkIGNhY2hlIGhhbmRsaW5nIGluIHN0YXJ0LlMuIEFwcGxpZWQgY2FjaGUgaW52YWxpZGF0ZSBpbiBmZWNfc2VuZCgpIGFuZCBmZWNfcmVjdigpLiBBZGRlZCBDRkdfVU5JRllfQ0FDSEUgZm9yIENGIFYzIG9ubHkuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgPHRjbGlld0BHb2t1Lihub25lKT4KCmNvbW1pdCA1MmIwMTc2MDRhOGY0ZDRhNzk1ODgwZWY2ZTc4NjFkN2YyZjFiMDA1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MzY6MTYgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZS4gSW5jbHVkZSBkdGltZXJfaW50cl9zZXR1cCgpLiBDaGFuZ2VkIHRpbWVyIGRpdmlkZXIgdG8gZ2xvYmFsIGRlZmluZS4KCiAgICBJbmNsdWRlIGltbWFwLmggYW5kIHRpbWVyLmguIE1vdmVkIGR0aW1lciBpbnRlcnJ1cHQgc2V0dXAgdG8gZHRpbWVyX2ludHJfc2V0dXAoKSBmcm9tIGNwdS9tY2Y1MzJ4L2ludGVycnVwdHMuYy4gQ2hhbmdlZCAoQ0ZHX0NMSyAvMTAwMDAwMCkgLTEgPDwgOCB0byBDRkdfVElNRVJfUFJFU0NBTEVSCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVjZGMwN2M3ZWY4ZjA4ZWE1NWQzYzQ3ZWQ5MjIxZDkxYWE2ZDVmYWMKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzozMToyNSAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlcwoKICAgIEluY2x1ZGUgaW1tYXAuaCBhbmQgcmVuYW1lZCBtY2ZydGMuaCB0byBydGMuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyODcwZTk4YWM4ZTU1NTNlOTE4N2IxMmE0N2U1ZjQ2YmFiYjUzOTkwCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6Mjk6MjEgMjAwNyAtMDUwMAoKICAgIEFkZCBtY2ZmZWNfaW5pdGlhbGl6ZSgpCgogICAgQWRkZWQgbWNmZmVjX2luaXRpYWxpemUoKSBpbiBldGhfaW5pdGlhbGl6ZSgpCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1YTI1YmZkMGM1MmY4YTNmYTEzNzIxNmJjOTRkMzJmOTBiZWRjNWQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoyNzo0MCAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlIGFuZCBjbGVhbiB1cAoKICAgIEluY2x1ZGUgaW1tYXAuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwY2VlOWM2NjMxODYwMmM4NTZhODk5YWU1ZmE3NTc5Y2NiYTY0NDNhCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MjM6MTUgMjAwNyAtMDUwMAoKICAgIE5ldyB1YXJ0IHN0cnVjdHVyZSBhbmQgZGVmaW5lcwoKICAgIFNlcGVyYXRlZCBmcm9tIG1jZnVhcnQuaAoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTBlNzlkZThkOTllOWM5ZDY5ZDYwYmZmZjlmMjRjMzM3MTY1OTAwCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MjI6MzEgMjAwNyAtMDUwMAoKICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMKCiAgICBTZXBlcmF0ZWQgZnJvbSBtY2Z0aW1lci5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUwNGFjYjJlYmE0NzgyNDg5NDE3MjQwZWZmNzZlMjBlMTc2YWVjMTAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoyMTowOSAyMDA3IC0wNTAwCgogICAgUmVuYW1lIG1jZnJ0YyB0byBydGMKCiAgICBTaW5jZSBpdCBpcyBhbHJlYWR5IGluIG02OGsgZm9sZGVyLCB1bi1uZWNlc3NhcnkgdG8gcGFkIG1jZi4gUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHRvIGltbWFwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmJkODA2ZmU0ZmMyMzk1OGI4Zjc4Nzc4MTk5ZTdhNmUzZjhmNmFkNQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIzOjE3OjM2IDIwMDcgLTA1MDAKCiAgICBSZW5hbWUgbWNmc2VyaWFsLmMuIFVwZGF0ZSBpbmNsdWRlIGhlYWRlcgoKICAgIFJlbmFtZWQgbWNmc2VyaWFsLmMgdG8gbWNmdWFydC5jLiBNb2RpZmllZCBNYWtlZmlsZSBmb3IgbWNmdWFydC5vIGZyb20gbWNmc2VyaWFsLm8uIFJlcGxhY2UgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHRvIGltbWFwLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjIyMDhmYmMyZWI5ZGUzZjQyODViZmFhMDIxYzZlYmFlMTZjOWIwZQpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIzOjEzOjU4IDIwMDcgLTA1MDAKCiAgICBIZWFkZXIgZmlsZSB1cGRhdGUsIGNsZWFuIHVwIGFuZCBjYWNoZSBoYW5kbGluZwoKICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIEluY2x1ZGVkIGNhY2hlX2ludmFsaWQuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDJlM2YyNWFlOTA4MmRhYTlmNWQxODFkYjQ1ZGZiYzJlNTJjZTBmOTcKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzoxMDo0MCAyMDA3IC0wNTAwCgogICAgQ3JlYXRlIGludGVycnVwdHMuYyBhbmQgbW9kaWZ5IE1ha2VmaWxlCgogICAgaW50ZXJydXB0X2luaXQoKSBhbmQgZHRpbWVyX2ludHJfc2V0dXAoKSBhcmUgcGxhY2VkIGluIGludGVycnVwdHMuYy4gQWRkZWQgaW50ZXJydXB0cy5vIHRvIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGRkZDEwNGYxZWQ2NTVlZGE1MGMwNmJhNjM2MjM3YTgzZWQ5NDNmMzQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzowNjo1NSAyMDA3IC0wNTAwCgogICAgRW5hYmxlIEljYWNoZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiOWJmM2RlMzc3YjJiYWU3MGM5ODNjOWI5N2ZlYWU5MTQ5OTllNzM1CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MDU6MzEgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgc29tZSBjbGVhbiB1cAoKICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIFJlbW92ZWQgd2hpdGVzcGFjZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg0YTAxNWI1MmVjODIwYTVhZTE3MzcxN2Q3ODUxNmRlNzMxYzg5YzIKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMzowMzoyOCAyMDA3IC0wNTAwCgogICAgVXBkYXRlIGhlYWRlciBmaWxlIGFuZCBlbmFibGUgaWNhY2hlCgogICAgUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHdpdGggaW1tYXAuaC4gRW5hYmxlZCBpY2FjaGVfZW5hYmxlKCkgaW4gY3B1X2luaXRfcigpLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YTE3ZTc1OWM3YThiNThlOTEwZGFmNTRkZjYxMWU5NGZjOGNhMDc0CkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjM6MDE6MjIgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgcmVtb3ZlZCBpbnRlcnJ1cHRfaW5pdCgpCgogICAgUmVwbGFjZSBpbW1hcF81MzI5LmggYW5kIG01MzI5Lmggd2l0aCBpbW1hcC5oLiBSZW1vdmVkIGludGVycnVwdF9pbml0KCkgYW5kIHBsYWNlZCBpdCBpbiBpbnRlcnJ1cHRzLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2I2MzU0OTJjOTViZDBkNmUwOGY5M2Y2OTk4MjFjYmExZjYwMmE2NApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjU3OjQ2IDIwMDcgLTA1MDAKCiAgICBVcGRhdGUgZm9yIGZsYXNoLm8gYW5kIG1paS5vCgogICAgUmVtb3ZlZCBmbGFzaC5vIGFuZCBhZGRlZCBtaWkubwoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNWRlZDI3NWQ4MzllNGZmNzlmNDE3MThkNTBhODM1ZDk4OWY1N2JjCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjI6NTY6MTkgMjAwNyAtMDUwMAoKICAgIE1JSSBmdW5jdGlvbnMgY2FsbHMuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQyN2M4MTQxMDQ1NjBlMjliZGExNDk1NWM2NzcwMzI0NWFhYWE1YjQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo1NDo0MiAyMDA3IC0wNTAwCgogICAgUmVtb3ZlZCBNSUkgZnVuY3Rpb25zIGFuZCByZXBsYWNlZCBpbW1hcF81MzI5LmggYW5kIG01MzI5Lmggd2l0aCBpbW1hcC5oLgoKICAgIFRoZSByZW1vdmVkIE1JSSByb3V0aW5lcyB3aWxsIGJlIHBsYWNlZCBpbiBtaWkuYy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDFhNzkzZmRhMDljNjNkZjVhNDk2ZjA5ZGMxYzdjYjI2ZTY3NTFhMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjUxOjA1IDIwMDcgLTA1MDAKCiAgICBEdXBsaWNhdGUgY29kZQoKICAgIFRoZXJlIGlzIGEgQ29tbW9uIEZsYXNoIEludGVyZmFjZSBEcml2ZXIgZXhpc3RlZC4gVG8gdXNlIHRoZSBDRkkgZHJpdmVyLCBkZWZpbmUgQ0ZHX0ZMQVNIX0NGSSBpbiBjb25maWd1cmF0aW9uIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI3NDQzNTRhODQzN2I4Zjc4ZGIxNzhlMzA2NjAyMTU2ODhiZmY1NzAKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo0NjozOCAyMDA3IC0wNTAwCgogICAgU2VwZXJhdGUgb2xkIHN0cnVjdHVyZSBkZWZpbmVzIGFuZCBuZXcgc3RydWN0dXJlIGRlZmluZXMKCiAgICBSZW1vdmVkIG5ldyB1YXJ0IHN0cnVjdHVyZSBhbmQgZGVmaW5lcyB0byB1YXJ0LmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmJkNTg2MDhkYmNmZjg4OTBjYTlhMGM1OWU4NjFhYzI0ZjhiYjIzMApBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjQ1OjAxIDIwMDcgLTA1MDAKCiAgICBTZXBlcmF0ZSBvbGQgc3RydWN0dXJlIGRlZmluZXMgYW5kIG5ldyBzdHJ1Y3R1cmUgZGVmaW5lcwoKICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMgd2lsbCBtb3ZlIHRvIG5ldyB0aW1lci5oCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhjZDVjZDZkZTRmZjkyZTAzOTc4MzM4ZWQ3YWViM2NlN2I3Yjk3ODQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjo0MjoyMyAyMDA3IC0wNTAwCgogICAgQ2xlYW4gdXAKCiAgICBSZW1vdmVkIHdoaXRlc3BhY2UKCiAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNTE0ODcxZjU2NWRkOGJkMTEyMWU0YTNhYzE2NjVhNzkwZTIwYjhmMgpBdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDIyOjQxOjI0IDIwMDcgLTA1MDAKCiAgICBDbGVhbiB1cAoKICAgIFJlcGxhY2VkIHdoaXRlc3BhY2Ugd2l0aCB0YWJzCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ4ZGJmZWFiYzdhZmZmZTMwNjA5YTQ0ODlmMTBjMjJjYjY3ZWY3ZGQKQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAyMjozOTowNyAyMDA3IC0wNTAwCgogICAgQ3JlYXRlIG5ldyBoZWFkZXIgZmlsZSBhbmQgbW92ZSBwZXJpcGhlcmFscyBiYXNlIGFkZHJlc3MgZnJvbSBjb25maWdzIGZpbGUgdG8gbmV3IGhlYWRlciBmaWxlLgoKICAgIENyZWF0ZSBuZXcgaGVhZGVyIGZpbGUgdG8gaW5jbHVkZSBpbW1hcF81eHh4LmggYW5kIG01eHh4LmggYW5kIHRvIHNoYXJlIGFtb25nIGRyaXZlcnMgd2l0aG91dCB1cGRhdGUgaW4gZHJpdmVyIGZpbGUgZWFjaCBwcm9jZXNzb3IgaXMgYWRkZWQuIE1vdmVkIHBlcmlwaGVyYWxzIGJhc2UgYWRkcmVzcyBhbmQgZGVmaW5lcyBmcm9tIGNvbmZpZ3MgZmlsZSB0byBpbW1hcC5oLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZTI5NmUzMWM0NDExZjk2ZDljYjNkMmFmYzhmY2IwMDY4NjdhYmZhCkF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMjI6MjQ6NTggMjAwNyAtMDUwMAoKICAgIFJldmVydCBmaWxlIG1vZGUKCiAgICBDaGFuZ2VkIE1BS0VBTEwgZmlsZSBtb2RlIHRvIGV4ZWN1dGFibGUsIHJlbW92ZWQgZXhlY3V0YWJsZSBmaWxlIG1vZGUgZnJvbSBNYWtlZmlsZQoKICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiM2FmZjBjYjllY2YyMzZkN2U4YzkzNzYxZGQxZGFkZjY4MzdhNTgyCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMToxOTo1MCAyMDA3IC0wNTAwCgogICAgZGlzay8gZG9jLyBsaWJfKi8gYW5kIHRvb2xzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGI1ZDg2ZjAyMTViY2I2YzI5MzUxMGM1MGViMDUwZTkyODgzYjdhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMToxMzoyMSAyMDA3IC0wNTAwCgogICAgZHJpdmVycy86IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBGaXhlZCBzb21lIGJyb2tlbiBpbnN0YW5jZXMgb2YgIiNpZmRlZiBDTURfQ0ZHX0lERSIgdG9vLgogICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAogICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjQwYTdmM2UzODg4YjQyYTQzNjc0YjA5OWU1NDcwMDIyYzhjNTQ0YwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTE6MDc6NTYgMjAwNyAtMDUwMAoKICAgIGZzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MTBmMmU5YzI4YTljMTAxZTA5ZmExYjc4MTQzY2Y1ZjAwZWQxNTkzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMTowNTowMiAyMDA3IC0wNTAwCgogICAgbmV0LzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MDI1MzE3ODgzNzYwNDZkYTIxMmFmZDE2NjFjZmZiNjJmM2RhYTFjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMTowMjo0NCAyMDA3IC0wNTAwCgogICAgY29tbW9uLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCiAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCiAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMzliNTc0MTU4MzhjNzNmYjBhMzdlY2E4NGRlM2M2OGJhOTkwNTg2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1bCAxMCAxMDo0ODoyMiAyMDA3IC0wNTAwCgogICAgYm9hcmQvW2otel0qOiBSZW1vdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMgdG8gQ0ZHX0NNRF8qIHN5bWJvbHMuCgogICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KICAgIFRob3NlIGFsd2F5cyBldmFsdWF0ZWQgVFJVRSwgYW5kIHRodXMgd2VyZSBhbHdheXMgY29tcGlsZWQKICAgIGV2ZW4gd2hlbiBJREUgcmVhbGx5IHdhc24ndCBkZWZpbmVkL3dhbnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDc3YTMxODU0NWQ1N2FlZmE4NDQ3NTI0NjViOTRjN2UwOWEzZjI2ZDAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDEwOjM5OjEwIDIwMDcgLTA1MDAKCiAgICBib2FyZC9bQS1aYS1pXSo6IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBGaXhlZCBzb21lIGJyb2tlbiBpbnN0YW5jZXMgb2YgIiNpZmRlZiBDTURfQ0ZHX0lERSIgdG9vLgogICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAogICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDY4YjYwYTBlYjdlNzNiMjQzY2E1NTM5OWYyYTdkZjc2ZTJjM2YzZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTA6Mjc6MzkgMjAwNyAtMDUwMAoKICAgIGNwdS8gcnRjLyBpbmNsdWRlLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMDc5YTEzNmMzNTg4ODE0Nzg0NTYxZDZlNDg1Njk3MGVlODJkNmUyYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdWwgMTAgMTA6MTI6MTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bcC16XSogKyBtaXNjOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdmNWMwMTU3NzQwMGM3NGNjNWJhYzc0ZjQxZGQwZDNjNzlkZjYyM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjM4OjAyIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2ctb10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgwZmY0Zjk5Yjg0YjY0ZWRjYTNmZDEwZGEzNjVlYzE0OTNiZTFjOTUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjI5OjAxIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2EtZV0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGExYWEwYmI1MDJlMjVmZDU5OGI1ZTBjY2RmYjJjMTc0OTIxZDcxNGEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjIyOjIzIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW1AtWl0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY1OWUyZjY3MzYyMzJhMDhhY2NhODc4NWMyMDZlMmI0ZDljZDA3ZDcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjEwOjQ5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0otT10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDExNzk5NDM0YzVmZjE1YTYxMjU3N2JiMWFkMWY0ZWExYTA1OTVlNGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVsIDEwIDA5OjAyOjU3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0EtSV0qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgoKICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAogICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgoKICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmZTgwZDc5YzVjNGU1MmQzNDEwYTdhYjRiODUxNWRhMDk1Y2RhYjMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjI6MDg6MzQgMjAwNyAtMDUwMAoKICAgIEZpbmFsbHkgcmV0aXJlIGNtZF9jb25mZGVmcy5oIGFuZCBDT05GSUdfQk9PVFBfTUFTSyEKCiAgICBBbGwgb2YgdGhlIGNob2ljZXMgZm9yIENPTkZJR19CT09UUF8gYXJlIG5vdyBkb2N1bWVudGVkIGluCiAgICB0aGUgUkVBRE1FIGZpbGUuICBZb3UgbXVzdCBub3cgaW5kaXZpZHVhbGx5IHNlbGVjdCBleGFjdGx5CiAgICB0aGUgc2V0IHRoYXQgeW91IHdhbnQgdXNpbmcgYSBzZXJpZXMgb2YKCSNkZWZpbmUgQ09ORklHX0JPT1RQXzx4PgogICAgc3RhdGVtZW50cyBpbiB0aGUgYm9hcmQgcG9ydCBjb25maWcgZmlsZXMgbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDNiOGMxYTc0M2RjZDMxNjI1Yzk5ZTZhNDQ1OTBmMjA3ZWIwMDAyOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAyMTo1NzozMSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzL1ttLXpdKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZmQ5MGNlNTc1YjAyZDE4OWNiZjQ0M2M4NTMwOWJjZDAwMWFhMzkzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDIxOjQ4OjI2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW2EtbV0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM3ZDRiYjcwNTg2NjU5ZGVkZWYxNjU4Y2UxYmVkMDcxYmUwOThhZWMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjE6Mzg6MDIgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bVC1aXSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTgyMjVlOGRkMTk1MGJkNmRiZjM1MDExZTQzNmRiN2Y0NzRjMTg3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAyMTozMToyNCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzL1tQLVNdKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3YmUwNDRlNGVhNjQ0YjBlZjFjNDg2ZGFkYzFhNGMyNjY1YjQzNzRkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDIxOjI0OjE5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3MvW0gtTl0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVkMmViZTFiM2VmMDA1NWM2NjFiYjFhMGQyNTJiZjI1MjM4MDA2OWYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMjE6MTY6NTMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlncy9bQS1HXSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjU1ZjdmOGQ4M2YzNjAyMWFiMWYwZTNkNzM4ZjVkOGM4MDgzYTdlMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxOToxMjozMCAyMDA3IC0wNTAwCgogICAgUmV0aXJlIENPTkZJR19DT01NQU5EUyBmaW5hbGx5LgogICAgU3RyaXAgb2xkIENGR19DTURfKiBzeW1ib2xzIG91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI1NTAxZjdkNzIwZmVkOTlhYjBiNDJjODNmNWRlYTUyODY4Y2UwMDcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTk6MTA6MDMgMjAwNyAtMDUwMAoKICAgIFVwZGF0ZSBSRUFETUUuKiB0byByZWZlcmVuY2UgbmV3IENPTkZJR19DTURfKiBuYW1lcyBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NDMxMjgzYzdlNmQ1NGFlMTgwZDQ2NmU1MWJmMmQ5NzQ3MWEwYWQ5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE5OjA2OjAwIDIwMDcgLTA1MDAKCiAgICBjcHUvbSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2ExZWQxZTFmOTIyYzQxOWJiNzFmN2RmNDk0OWQ3ODNhZGUzNjlmYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODo1NzoyMiAyMDA3IC0wNTAwCgogICAgY3B1L1s3YS1sbi16XSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYWIzYWJjYmFiZDg0MDkyOGZiMWViNTEyMjExOGNhNDY2YjVlNTAxMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODo0NToxNiAyMDA3IC0wNTAwCgogICAgYm9hcmQvW3Etel0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDNmZTAwMTA5YTVmMTJkZTU1YjZlMjViMWY5OGRmYzI0YmM5MDkwYzkKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6Mzg6MzkgMjAwNyAtMDUwMAoKICAgIGJvYXJkL1ttLXBdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjNTA4YTRjZWZkOGE5NTNmYzY0OTU3NjUwNTA2YTAzNWU2ZTNkOWQxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE4OjMxOjI4IDIwMDcgLTA1MDAKCiAgICBib2FyZC9bZi1sXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjkzMDcyNjJmOGE5ZjNiNWM5ZTE1YTYwNjdlYWRjMTc0MDcxNDZmNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxODoyNDo1NSAyMDA3IC0wNTAwCgogICAgYm9hcmQvW2QtZV0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZjZWMyZWI5M2UxMjY0MDAwMDk3MjkzMjhlNzk3ZjEyYmM5NGYxZmQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MTk6MDkgMjAwNyAtMDUwMAoKICAgIGJvYXJkL1tBLVphLWNdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTkzODE0ZjJiZTBjOWNkYzMxMzNjZDU1MGIxNjdiOGE5ODgzMjhmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE4OjEwOjUwIDIwMDcgLTA1MDAKCiAgICBydGMvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY3MzUwNTY4ZjlkNDZlNjZjMjE4MjlmMzUxM2IzZGIwY2FlYjk0OGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MDU6MzggMjAwNyAtMDUwMAoKICAgIGxpYl97YXJtLGF2cjMyLGJsYWNrZmluLGdlbmVyaWMsaTM4Nn0vOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDdkZWY2YjM0ZjkxMGYwOGQ3ZWYwYTE0NjQ2ZGEwNjc3MTkyMzdjYTIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTg6MDI6MTEgMjAwNyAtMDUwMAoKICAgIGxpYl97bTY4ayxtaWNyb2JsYXplLG1pcHMscHBjfS86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGQ2MGQxMjIzYjk5YTg4YTcyMTZmM2UwNDFmZTQwNjM0YWQ0YzJiYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdWwgOSAxNzo1Njo1MCAyMDA3IC0wNTAwCgogICAgZnMvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM5MTg5OGJiYzUwNWFmZjNlMTJhODA3YWY4OGU3NmRhMThlZmI3ZWUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6NDY6MDkgMjAwNyAtMDUwMAoKICAgIHRvb2xzLzogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2NDNkMWFiMjM5NjA5NTBiNTJlMGEyODAzYzJkM2VhNGM1NThmYTAxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEp1bCA5IDE3OjQ1OjE0IDIwMDcgLTA1MDAKCiAgICBuZXQvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNiNTFjMGJmODhmOTVhMWJjYTY4MzI0YjAxMjZmOGVlZDhiNDMyNzMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6Mzk6NDIgMjAwNyAtMDUwMAoKICAgIGRyaXZlcnMvW24tel0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA3ZDM4YTE3ZTk2NGFlYzRjNzgyN2YwZWU5YTU4M2JjOGNjMWFkNmIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MzA6MDEgMjAwNyAtMDUwMAoKICAgIGRyaXZlcnMvW2EtbV0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNkZTVjNjRkMTdjZjQ4MzRhYTdiNWMzNzNmMjg4YmM3ZGFkMjdiMjkKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MjI6MzcgMjAwNyAtMDUwMAoKICAgIGRpc2svOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDYzOTIyMWM3NmM4ODIxNWJkNTVhZjgzYWQxNzRmYzMwZDE5NDBmOGYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSnVsIDkgMTc6MTU6NDkgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKICAgIE1vc3RseSByZW1vdmVkIGZyb20gY29tbWVudHMgaGVyZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRlZjIxOGY2ZmRmOGQ3NDdmNDU4OWRhNTI1MmIwMDRlN2QyYzI4NzYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgSnVsIDEwIDAwOjAxOjI4IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGM4NjAzY2ZiZDQ1NzMzNzlhNjA3NmM5YzIwODU0NWJhMmJiZjAxOWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBKdWwgOSAxMTowMDoyNCAyMDA3ICswMjAwCgogICAgU21hbGwgY29kaW5nIHN0eWxlIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGY5MmM3ZTdjOWE2Mjc1NWIxNDU3ZDNjNDZmOTNjOGMxZjZjMTlmYwpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglNb24gSnVsIDkgMTA6MTA6MDggMjAwNyArMDIwMAoKICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KCiAgICBSZW1vdmUgdW51c2VkIENGR19OQU5EX0xFR0FDWSBkZWZpbmUKCiAgICBUaGVzZSBib2FyZHMgdG8gbm90IGhhdmUgTkFORC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBiZDg0ZWU0YzIwMjBjM2E2ODYxZjRiYjJlN2VhMGZiNDlmODJlODAzCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBKdWwgOSAxMDoxMDowNiAyMDA3ICswMjAwCgogICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQoKICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KCiAgICAtY2xlYW51cAogICAgLXVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycyAoaW4vb3V0X2JlMzIoKSkKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBlMDlmN2FiNTc0OWMzNDVmOTI0ZGEyNzJiZWEwNTIxYTczYWY1YjExCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CU1vbiBKdWwgOSAxMDoxMDowNCAyMDA3ICswMjAwCgogICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQoKICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhlIG1pZ3JhdGlvbiBmcm9tIHRoZSBsZWdhY3kgTkFORCBkcml2ZXIKICAgIHRvIFUtQm9vdCdzIG5ldyBOQU5EIHN1YnN5c3RlbSBmb3IgZXNkIGJvYXJkcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBjMzUxN2Y5MTlkMGY2MTY1MGNmMzAyN2ZkNGZhZjBmNjMxMTQyZjZjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE4OjEwOjA4IDIwMDcgLTA1MDAKCiAgICBjb21tb24vKiBub24tY21kKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZDliY2FhMzViZTY0ZmU0MWE0MjIzZmRiNmVjZGJhZDUyNDcwYjM5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE4OjA1OjM5IDIwMDcgLTA1MDAKCiAgICBjb21tb24vY21kX1twLXhdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYzc2ZmU0NzQyNWFmYzdkNWQ2NzBmZjA1Mzk4MjNjODVkNjVkOWM0MgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxODowMjoyMyAyMDA3IC0wNTAwCgogICAgY29tbW9uL2NtZF9baS1uXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhYTI2ZGI0MTEzNjc5YjgwOTcwZmY0NDdkOTFjYzEwMjE3NzQyYTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTc6NTE6MzkgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2FmXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFmMDc1ZWU5NmU1MmRkYTdiNmJjYTZjOTM3NTg4YWVhYWVjNWYyY2QKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTc6MDI6MDEgMjAwNyAtMDUwMAoKICAgIENsZWFyIHVwIGNvbmZ1c2lvbiBvdmVyIHRoZSBDTURfUE9TVCBhbmQgUE9TVF9ESUFHIG1lc3MuCgogICAgRm9yIHNvbWUgcmVhc29uLCBDT05GSUdfUE9TVCBwZXJtZWF0ZWQgYXMgQ09ORklHX0NNRF9QT1NUX0RJQUcKICAgIHdoZW4gaXQgcmVhbGx5IG1lYW5zIGp1c3QgQ09ORklHX0NNRF9ESUFHLglUaGVyZSBpcyBubyBDTURfUE9TVC4KICAgIENsZWFyIHRoaXMgbWVzcyB1cCBzb21lLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjM2MzE0ODcxMDVhNTdhYjdjYmFkZmMyNmVmYmFmOTY3NjI3NTAxOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNTo0NTowOCAyMDA3IC0wNTAwCgogICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBjbWRfY29uZmRlZnMuaCBpbmNsdWRlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhMjJkNGRhOTVlMjAwNDliNGRhYTFjMmEwMjJmNjFlOGE3MmYyZmI2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjQyOjU5IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IENhdGNoIHNvbWUgQ09ORklHX0NNRF8qIGNvbnZlcnNpb24gc3RyYWdnbGVycy4KCiAgICBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBsd21vbjUuaCBib2FyZCBjb25maWcgZmlsZS4KICAgIEZpeCBDT05GSUdfQ01EXyogdHlwbyBicmFpbmRhbWFnZSBpbiBvbWFwMTUxMGlubi5oCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNTU2MjkwMTY2MWJkNDI4ZjdlNWZlYjMzM2Y3OTYzNzJjYjgxMDE5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjMxOjU3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW1RVVldaWVpdKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZTdmNzgyZDViOGM2NGEwMTk1YzY4YzMxYTBhMTFkNGY2NDEzNTVlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE1OjAyOjQ0IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgUyogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTlhMGY4ZjE1YzExZjMzNzk2N2FhMDYwMGFkNmU4YWYzMzAzN2Y1MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNToxMjo0MCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIFIqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEyYWE5ZmQyM2Q3MjRiZDZhYjg4ZTFiYWEwZGIzNTEzM2EyNzMwM2YKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTQ6NTU6MDcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBRKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhY2YwMjY5Nzc5NDIyZjNlMTQ3ZDJkZGZiNDk5YzlmNmZmMTBhZDVlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDE0OjQ5OjQ0IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgUCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTE4YTEwNjFhODYzMGNiNjc5OTVmZGY5OWFmZDNmYjUwZDFiMTg3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVN1biBKdWwgOCAxNDoyMTo0MyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIFtOT10qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgzNTNlMTM5YmZhZDkwNTljNTRmNWIyNDIxZjFhMzA5MGUxNWEyZTIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglTdW4gSnVsIDggMTQ6MTQ6MTcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBNKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzNDhmMjU4ZjI0MjUzNDMzZTRhMjMwMmEwYmJjZWI2NzQwYTY3MjQ2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDEzOjQ2OjE4IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW0lKS0xdKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2YzRmNGRhOWJmYzlmOTQwM2Y1NGZjZTY3OGVkMDM2NGI3Yzg2YTZhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU3VuIEp1bCA4IDEwOjA5OjM1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgSCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjBhMDg3NmI1MTA2YjM0MjIwZTQ1OWMyMDhiYmY2NDgwNzMzMDZjMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBKdWwgNyAyMTowNDoyNiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEYqIGFuZCBHKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkY2FhNzE1NjI4MjZhMjQ2NmU4OTRjODY4ZDEzMjUwOWRjZGE4NDQ0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEp1bCA3IDIwOjU2OjA1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgRSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgM2MzMjI3ZjNjNzM3NTAyMzExYjI1YjcyMDg0NTczOTAxY2JiZjE3ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVNhdCBKdWwgNyAyMDo0MDo0MyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEQqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ5Y2Y3ZThlZTdlZjk0M2ZkZmU4NjZjZTI4NDEwYjBiZmJmNmEyNmMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVsIDUgMTk6NTI6MzUgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBDKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZThiMmE2ZTMzMjk4ZGNkYjEwYmRkYTQ4ZGIyNWU1M2MzMDg5ZWJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1bCA1IDE5OjMyOjA3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgQiogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDk4ZmY5YTIyODQ4NWJkNGI5ZjIzZDA2NmJhZGEyNjhmOWFkZDFkZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgNSAxOToxMzo1MiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEEqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaW5jZSBBRFM4NjAuaCBpbmNsdWRlcyAiYm9hcmQvZmFkcy9mYWRzLmgiIHdpdGggcmFtaWZpY2F0aW9ucwogICAgb24gdGhlIENPTkZJR19DT01NQU5EIHRyZWF0bWVudCwgaXQgdG9vIGhhcyB0byBiZSBhZGp1c3RlZCB0bwogICAgZXhjbHVkZSBhbHJlYWR5IGNvbmZpZ3VyZWQgY29tbWFuZHMgaW4gdGhpcyBzYW1lIGNvbW1pdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEwZTAzODkzMmYyMmVlODBlYmQ1M2RlMzEyNTMxZTcwZTY1OTBhMmYKQXV0aG9yOiBUaG9tYXMgS25vYmxvY2ggPGtub2Jsb2NoQHNpZW1lbnMuY29tPgpEYXRlOglGcmkgSnVsIDYgMTQ6NTg6MzkgMjAwNyArMDIwMAoKICAgIFtOQU5EXSBCYWQgYmxvY2sgc2tpcHBpbmcgZm9yIGNvbW1hbmQgbmJvb3QKCiAgICBUaGUgb2xkIGltcGxlbWVudGF0aW9uIG9mIGNvbW1hbmQgbmJvb3QgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHRoZSBpbWFnZSBmcm9tCiAgICBOQU5EIGZsYXNoIHdpdGggc2tpcHBpbmcgb2YgYmFkIGJsb2Nrcy4gVGhlIHBhdGNoIGltcGxlbWVudHMgYSBuZXcgdmVyc2lvbiBvZgogICAgdGhlIG5ib290IGNvbW1hbmQ6IGJ5IGNhbGxpbmcgbmJvb3QuamZmczIgZnJvbSB0aGUgdS1ib290IGNvbW1hbmQgbGluZSB0aGUKICAgIGNvbW1hbmQgd2lsbCBsb2FkIHRoZSBpbWFnZSBmcm9tIE5BTkQgZmxhc2ggd2l0aCByZXNwZWN0IHRvIGJhZCBibG9ja3MgKGJ5IHVzaW5nCiAgICBuYW5kX3JlYWRfb3B0cygpKS4gVGhpcyBpcyBzaW1pbGFyIHRvIGUuZy4gdGhlIE5BTkQgcmVhZCBjb21tYW5kOiAibmFuZAogICAgcmVhZC5qZmZzMiAuLi4iLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBLbm9ibG9jaCA8a25vYmxvY2hAc2llbWVucy5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzM0MDQzZjYwMWE5MGFjNTNlNWVjYzg0NmZiYjczYTFlZjM4Y2IxZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1bCA2IDEyOjI2OjUxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgZGVmYXVsdCBlbnZpcm9ubWVudAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1ZDE4NzQzMGEwNTVkNjJmMTdjYTg0ZDc1ZTcyNDU0MzlkMWY3ZTc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMTE6NDg6MjQgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIGx3bW9uNSBib2FyZAoKICAgIEFkZCB1bmxvY2s9eWVzIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRlZmF1bHQgdmFyaWFibGVzIHRvIHVubG9jawogICAgdGhlIENGSSBmbGFzaCBieSBkZWZhdWx0LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2YjBhMTc0YTFlNmY1NWUxZjVhMWZiYjIyM2NkYWQ3NjQ1YTQ2NDZlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMDk6NDU6NDcgMjAwNyArMDIwMAoKICAgIEZpeCBwcm9ibGVtIHdpdGggZ2V0L3NldGRjciBjb21tYW5kcyBpbnRyb2R1Y2VkIGJ5IGNmZyBwYXRjaGVzCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGYxMTUyZjhjMjhkYjRhMjIwODdjMjFjNjE4YTNmN2JhYTQ4ZTlhNGYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglGcmkgSnVsIDYgMDI6NTA6MTkgMjAwNyArMDIwMAoKICAgIENvZGUgY2xlYW51cCBhbmQgZGVmYXVsdCBjb25maWcgdXBkYXRlIGZvciBTVEMgR1AzIFNTQSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IGU0ZGJlMWIyMTVmNWM2YzQ2MmU3NjkwOWQyNDBiZDk2NDcyYjg0ZGUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgSnVsIDUgMTc6NTY6MjcgMjAwNyArMDIwMAoKICAgIEZpeGluZyBzb21lIHR5cG9zIGV0Yy4gaW50cm9kdWNlZCBtYWlubHkgYnkgY2ZnIHBhdGNoZXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBiNmI0Njg0NTQ2ODA5Zjg5YzhiYWM3Mjg2M2NhNDliNWZkOGFjMGNkCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IEp1bCA1IDExOjEyOjE2IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCBkY2EzYjNkNmQ2Mzk2YjY3ZTVlODRhZjUzNDUyMTY0OTIzYzczNDQzCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjQ2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW3Ytel0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZjMThlYjk4MDRiNTI1ZjNlNGYzYmIzZDAxNGRkNjlhMjAwZDlmYTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MzggMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyB0KiBhbmQgdSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDZkYTFlOTZiN2RiMTRmNGZjZDJjOTI1NDRlN2MwODYyMDI0YmM3NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzozMCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIHMqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkwY2MzZWI2ZDJiZTg1NmQ5ZGRkODE0MzZkZTljZjM0M2JjNmI1YzgKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MjMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBxKiBhbmQgciogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjZhMzQ1NjBkNTZhOWRmNWJjMmFlMjM1MjVkOTIyOTczNjEzNDc1NwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzoxNyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIHAqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE1Y2IyMzA5MmE3ZDMxNDkwYTMzZDRlYzg3MTQ2OGI2M2JhYmZhM2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzM6MTMgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBvKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MjlhMmJmZDE0MjczNzAwM2E4ZmMzMmUxYjg2ZTFmMmMxODUwMjU3CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjA3IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbiogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWRjMTFhNTExOTYwZDQ5MGY3ZjAxZmZkNzQ2ZWRmZTYyNzdmOTliMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMzowMSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIG0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDliYmIxYzA4MjBjMWZiZDM4MTFhYjZlZTRiYTBmNmM2Zjc2YjI3ZTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6NTcgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBsKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiYzIzNGMxMjlmYTA0ZmI5ZmEzMzUzMDkzMGU1Y2JjNjA4NGNkNDdhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjUxIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgaiogYW5kIGsqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFkMmM2YmM0OTE5NjlmOGQ4ZmIzNGM4ZTMwZThiZWE3YTJhZjljMzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6MzIgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBpKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OGQ1ZDEwMmEyZjJlNjE5YzkyMDUwYjlhZWRiYjY5Njg5MTg1YmMwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjI1IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgaCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzJlYjBlZmFlZDcwNDhhZmNjNjFmYzZmMDA4NWM0OTM5NGI1ZGMzNgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMjoxOSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGcqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFiZWMzZDMwMDJkM2JiYmFlNmYyNDY4YTBmNzM3NmRiMTEyMGQzM2UKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzI6MTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBlKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhYjk5OWJhMWIzMWViZTc4ZGQxNjM3NDM5NGE1NWQ3YzZlNWFhNmU0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMyOjAzIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgZCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzdlNGYyNGI4N2ZhMjU1YWU0NTZkMTkzYjdjZDIzYzE4ZGQxZDU2YgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTo1NiAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGMqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJhMjM1MWY5ZDFlODQxYmQwMGVhNmRhZDFlM2MxNmQwMjU5YWQyNjQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzE6NDkgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBiKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwYjM2MWM5MTY2MTdhZmY3OWU2NDdiNDBmMGU0MzM2MWUwYmJhY2NmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMxOjQyIDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgYSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjczMGNkYTgyZTM2MmRmNmEyMmY0YzU5YzBhOWI5N2U4ODViMTAxNApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTozNSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBtcGM1eHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDc5NGNmZWZlYWQ1ZmMxNzdjZjRmNDExNjRlODAzODJlOWM5NDg0YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMToxNSAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIDUyMDAgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWYwZGY1MmFiNDllZWE0YTMwYzE1MDg3ZmQyN2Q1NGMxZDk0NmYyYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMTowNyAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBTVHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODY2ZTMwODliZmM4MjZiYjRkYzc0NjM3ZjhhYWQ4N2EzYmFiNzlmYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdWwgNCAyMjozMDo1OCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBzYmMqIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI2OTQ2OTBlMjg1YWNhYTM0OTIyZjU1ZjRiNWFlMDMwZGE2MGM1NWEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzA6NTAgMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gVFFNIGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFjYzRjNDU4MzI5NzY1YjU4ZTU4NGExOTgyMWU3OTZiM2MxMGU5NzYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVsIDQgMjI6MzA6MjggMjAwNyAtMDUwMAoKICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gODJ4eCBib2FyZCBjb25maWcgZmlsZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZWE1NDk5YWZkYWJhMGFjZjYwOTIzZGQ5OTAwMWMzOTlkNGE3YzhlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1bCA0IDIyOjMwOjA2IDIwMDcgLTA1MDAKCiAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIDgzeHggYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjQ0ODk2MjE1YTA5YzYwZmE0MGNhZTkwNmY3ZWQyMDdiYmMyYzQ5MgpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVRodSBKdWwgNSAwODoxNzozNyAyMDA3ICswMjAwCgogICAgTWVyZ2VkIFBPU1QgZnJhbWV3b3JrIHdpdGggdGhlIGN1cnJlbnQgVE9ULgoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Cgpjb21taXQgYjI0NjI5ZmEzNzcyMTRkNjNiYjQwZDEzNjBlMzU0YjZkM2U0YWY1NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CVdlZCBKdW4gMTMgMTM6MjM6MTUgMjAwNyAtMDUwMAoKICAgIG1wYzg2eHg6IFJlbW92ZSBvbGQgQ0ZHX0NNRF8qIHJlZmVyZW5jZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NjE3NWQ5NzY0ZGExMjliYjRmZDM0MWNkMjU1NGRjN2Q1NWY1YjJhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1biAxMyAxMzoyMjo1NCAyMDA3IC0wNTAwCgogICAgQWRkIE1QQzg1NjhNRFMgdG8gTUFLRUFMTCA4NXh4IHRhcmdldC4KCiAgICBJdCB3YXMgbWlzc2luZyBmcm9tIHRoZSBvcmlnaW5hbCBwb3J0IHN1Ym1pc3Npb24uCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyODM1ZTUxOGM5NjllNTEyNGJhMTE3NGVlZjNlODM3NWUxMmZhN2Q1CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIEp1biAxMyAxMzoyMjowOCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiA4NXh4IGJvYXJkIGNvbmZpZyBmaWxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDU2YjMwNGFjMjA5MTY4OTUwNjA4OGE5YWU2N2Y2M2ZkNjMwMGNmMTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDEzIDEzOjIxOjM3IDIwMDcgLTA1MDAKCiAgICBGaXggI2lmIHR5cG8gaW4gQ09ORklHX0NNRF8qIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNzgwYjgzMzE2ZDlhZjFmNjFkNzFjYzg4YjE5MTdiMzg3YjliOTk1CkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KRGF0ZToJV2VkIEp1biAyNyAxODoxMTozOCAyMDA3ICswMjAwCgogICAgcmVzdWJtaXQ6IHBwYzR4eDogUmVtb3ZlIHNlcXVvaWEvc2VxdWlvYS5oLiBDbGVhbnVwIHBwYzQ0MC5oIGZvciBQUEM0NDBFUFgKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+Cgpjb21taXQgMDRlNmMzOGI3NjZlYWEyZjMyODc1NjE1NjNjOWUyMTVlMGMzYTBkNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCA0IDEwOjA2OjMwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgYm9hcmQKCiAgICAtIEFkZCBvcHRpb25hbCBFQ0MgZ2VuZXJhdGlvbiByb3V0aW5lIHRvIHByZXNlcnZlIGV4aXN0aW5nCiAgICAgIFJBTSB2YWx1ZXMuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgTGludXggbG9nLWJ1ZmZlciBzdXBwb3J0CiAgICAtIEFkZCBvcHRpb25hbCBERFIyIHNldHVwIHdpdGggQ0w9NAogICAgLSBHUElPNTAgbm90IHVzZWQgYW55bW9yZQogICAgLSBMaW1lIHJlZ2lzdGVyIHNldHVwIGFkZGVkCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDY4MTBhMzQ2NzdkYmM0NDYzMzRmNWU0NTFmMTY4MjQyNmRkMzNiNDkKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDoxNzoyOCAyMDA3IC0wNjAwCgogICAgRml4IE1ha2VmaWxlIHRvIHVzZSAkKE1LQ09ORklHKSBtYWNybyBmb3IgYWxsIGJvYXJkIHBvcnRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDkwYjFiMmQ2OWI5Mzk2ZmYyZjAxMTY1ZWJjMTZjOWE1OTRlYjU5MjYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDoxNzoyOCAyMDA3IC0wNjAwCgogICAgRml4IE1ha2VmaWxlIHRvIHVzZSAkKE1LQ09ORklHKSBtYWNybyBmb3IgYWxsIGJvYXJkIHBvcnRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDA1NzAwNGY0YTQ4NjM1NTRkNTZjYzU2MjY4YmZhN2M3ZDk3MzhlMjcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDo0OSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4M3h4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVhZjYxYjJmNGI4MzhhMDVmNzliZTI3NGYzZTVhNjZlZGQyZDljOTYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDo0NCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjYwCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGYzYTUyZmUwNTkyMzkzNWRiODY5ODVkYWY5NDM4ZTJmNzBhYzM5YWEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDozOSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjR4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGE4NWRkMjU0YzA1NzdmY2ExMzYyN2M0NmU5M2ZjMmFkNGM0ZjFmMDAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDozNCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjIwCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDZmNzU3NmIyMGVjZjBkMDQwYzNhYzNiMDMyYjVjYmM4NjBlMzhhOTAKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDoyOSAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBNUEM1eHh4CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDM2NDljZDk5YmE4MTViNjYwMTg2ODczNTc2NTYwMmYwMGVmMzY5MmIKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozNDoyNCAyMDA3IC0wNjAwCgogICAgQ29ycmVjdCByZWxvY2F0aW9uIGZpeHVwIGZvciBtcGM1eHgKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjgyYjNiNjMwNGI2MjBlZjdlMjhiZmFhMWVhODg3YTJhZDJmYTMyNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjE5IDIwMDcgLTA2MDAKCiAgICBEb24ndCBzZXQgZ2QtPnJlbG9jX29mZiBpZiByZWxvY2F0aW9uIG9mIC5maXh1cCB3b3JrcyBjb3JyZWN0bHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZTFhNjE0NGMzMmRjN2RlNzNiY2RkMzM5OTVkZTAxNDhjYmQwYmQyOApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjE0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODN4eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAxN2UzMmZjMzkwOGJmNzA4OWQzZjE2ZmM4MmExYzNhZTY3NGRkNjViCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzQ6MDkgMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgyNjAgbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYWY3ZDM4YjM5MzY5MGQ3ZWVhZjQxOGFjODVhMWU4MzFhNTBkNWZkMApBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjA0IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBmOTRhM2FlY2ViYzQwY2EwOTM5YzdkNjZkMDEwMDA5Y2Y1MWJlOWUyCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6NTkgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjR4IGxpbmtlciBzY3JpcHRzICgzIG9mIDQpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGE3MWMwODRmM2FjN2ZlZGYxNDQ1MzdkYjJiMmRhNDczMjMwNjg4MzMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzo1MyAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzgyNHggbGlua2VyIHNjcmlwdHMgKDIgb2YgNCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjY3MGExNTQ2OGQxMzY1MjQxZDQwMDIyYjk0MDhlMTAwNDE4MWY1ZQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjQ4IDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cyAoMSBvZiA0KQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAwOTU1NWJkNDVhMDRjMGU1NGYxNzI1MjhkMjFiYzE4ODk2NTUwZDI4CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6NDMgMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjIwIGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVlZmI5OTJmMDQ2ZTUxMjI1YzkzZDUyZjgwZmVjYmU0MzNhYmQ3ODkKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzozOCAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzV4eHggbGlua2VyIHNjcmlwdHMgKDMgb2YgMykKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgMDdjMTNkZmVmNjViMzE2NDdlNjlkOGI2MWRhYTFlZWM1OThhZGQxYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjMzIDIwMDcgLTA2MDAKCiAgICBSZW1vdmUgb2Jzb2xldGUgbXBjNXh4eCBsaW5rZXIgc2NyaXB0cyAoMiBvZiAzKQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBiNGY2NzUxM2E2MjRjZTg1ODY2YzY2YzU3NWJkMmQ5ZDc5NzdkN2YwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MjggMjAwNyAtMDYwMAoKICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzICgxIG9mIDMpCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGI3ZDhlMDVmODY3NTI0OWI1ZjIwOGFhNzNiYWJlZWQzODRhNDUxOWQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzoyMyAyMDA3IC0wNjAwCgogICAgUmVtb3ZlIG9ic29sZXRlIG1wYzV4eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA0MTZhMGI2ZDQwZjZlYmEzYTJmYzU0NzI1M2MxNmJkYTI4ZDkyMmY3CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MTggMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgzeHggbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNWZjNTkxNzViOTI4ODNlZDVkMjY2NmEwNGU2YmM0OWU3MGE0YTM2NQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjEzIDIwMDcgLTA2MDAKCiAgICBDb25zb2xpZGF0ZSBtcGM4MjYwIGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczN2Y5ZWIwMmQ3MzM1ZGYyYjNlNGQ3YTRkMzM0ODc4NGQxZGEyMDcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMzowOCAyMDA3IC0wNjAwCgogICAgQ29uc29saWRhdGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCA5Yzc1N2I3ODlhNTlhODU1ZGI1N2I0NDhkZDgyNTMyOWM0ZTljNGEwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgSnVsIDMgMDA6MzM6MDMgMjAwNyAtMDYwMAoKICAgIENvbnNvbGlkYXRlIG1wYzgyMjAgbGlua2VyIHNjcmlwdHMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZDE4MWM5YTE1Y2Q0MTg2M2ZlMjQ4NDBkMTc4NDg0MjlmMjdkM2M4YwpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEp1bCAzIDAwOjMyOjU4IDIwMDcgLTA2MDAKCiAgICBDb25zb2xpZGF0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDI4N2FjOTI0YWRiNzI5MWJlYmU1MDg2NjUyYTM2MmEzMGFiMjhiMTMKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBKdWwgMyAwMDozMjo1MyAyMDA3IC0wNjAwCgogICAgQ29uc29saWRhdGUgbXBjNXh4IGxpbmtlciBzY3JpcHRzCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDUyYjg3MDRkMDI0NWU1ODlmODZkNDYyZTllYzI1YWViN2VjYmJiZGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVsIDQgMDA6NDM6NTMgMjAwNyArMDIwMAoKICAgIEZpeCBhIGZldyBmaWxlIHBlcm1pc3Npb24gcHJvYmxlbXMuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA3OGUwY2YyZGU3YmU3ZjFlYWVlYjYyMmViNjFmZDUwZTRkNWUyMDVjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEp1bCA0IDAwOjM4OjM4IDIwMDcgKzAyMDAKCiAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gUmVidWlsZCBDSEFOR0VMT0cgZmlsZS4KCmNvbW1pdCAyZjljMTllNDk2YWNiNmJiNTBkOTI5OWUxYWFiMzc3NjI1ZDQ4YzM4CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzo0NCAyMDA3IC0wNTAwCgogICAgY29uZmlncy8gbXBjODZ4eDogUmV3cml0ZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB1c2luZyBuZXcgQ09ORklHX0NNRC0qIHN0eWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjAyYWQzYjMzZDljZWVmODNkYmFiNDZiZTY4NjQ2ZDY0NWQ2MzdlZQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MzkgMjAwNyAtMDUwMAoKICAgIFJFQURNRTogUmV3cml0ZSBjb21tYW5kIGxpbmUgY29uZmlnIHRvIHVzZSBDT05GSUdfQ01EXyogbmFtZXMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MmEwNzRjZWM2OGU1YmFkNjBkNjMyMDZjMDUwOTc0ZTA4YWZkODA0CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzozNCAyMDA3IC0wNTAwCgogICAgaW5jbHVkZS8gbm9uLWNvbmZpZzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWZjZjU0M2UwYjY2MjhjNzZmZjQ4NzA1YjFiMDU2NmJmZDExNTA3YgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MjggMjAwNyAtMDUwMAoKICAgIHRvb2xzLyA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxMDdlYmUwZDM1MjQyMDg5NWFiNjliNzE1Njk3YmRlYmM4Y2FmNTAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjIzIDIwMDcgLTA1MDAKCiAgICBib2FyZC9bay16XSo6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDVlMzc4MDAzZDU5MmVhODI4ZWM2OWQ2ZGVmY2Q0ZGU3OTA5NmRkNWMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjE5IDIwMDcgLTA1MDAKCiAgICBib2FyZC9bTWEtaV0qOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KCiAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgogICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KCiAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKICAgIEJlZm9yZToKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQogICAgQWZ0ZXI6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MzcxODQxMTRlYzljOWUwYWI5NGQ2NzEzNTM2MTI2MDczYmQyNDcyCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMzoxNSAyMDA3IC0wNTAwCgogICAgY3B1LyBub24tbXBjKjogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjQ4MDcwZmU1ZmU0NDBkZmI1ZWU1MjY4YzkyMGRlNzBlNDhlYTMyNwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MDggMjAwNyAtMDUwMAoKICAgIGNwdS9tcGMqLyA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBjNTA1ZGIwYTBkYzFmNjcwYjEzY2UzYjRkM2ZiZjFlYzViM2NiZDIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAzOjAzIDIwMDcgLTA1MDAKCiAgICBsaWJfKi86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczZjAzMjAyMWVjNWYxM2NkYThmYWE0ZTM0YjZkZTgwOTYwZWI4NmYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjU4IDIwMDcgLTA1MDAKCiAgICBsaWJfcHBjLzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOThiNzkwMDNjMjFjMjU3ODIwNjAwMzI1NmRlNGU3ODFkNmIzNmNhOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDI6NTMgMjAwNyAtMDUwMAoKICAgIHJ0Yy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDZlMjExNWFjYjZhODkyZDUzYTY4ODFiZjI1M2FlNDFkM2RmMzkxNTYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjQ5IDIwMDcgLTA1MDAKCiAgICBuZXQvOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KCiAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgogICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KCiAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKICAgIEJlZm9yZToKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQogICAgQWZ0ZXI6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NWNkYjliNzJjOTQ2NTVjNzMwOGI0NjRhMjY2NjA1N2MwYjI4NmUwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJTW9uIEp1biAxMSAxOTowMjozNCAyMDA3IC0wNTAwCgogICAgZGlzay86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRlMTA5YWU5ODI5NGE1Y2E3ZmY4NDhiNzY1MmM3YmZkNDAyM2E5NGEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjIwIDIwMDcgLTA1MDAKCiAgICBmcy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgoKICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQogICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCiAgICBiZSByZW1vdmVkIGVudGlyZWx5LgoKICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgogICAgQmVmb3JlOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCiAgICBBZnRlcjoKCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ1YmU0M2RlOTNmZjkwNWM0NjVlNTA5ZDQ1YTMxNjRlZjQ4ZDI2ZTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglNb24gSnVuIDExIDE5OjAyOjEwIDIwMDcgLTA1MDAKCiAgICBkcml2ZXJzLzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjQ1Mzk2MGQ0ZmRiODdiMzk3MGQ5NjExOWI5MGRmMmVkMDI0ZmM0YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDI6MDUgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi8gbm9uLWNtZDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjVjNDUwYjQ3YTYyNjU5ZDUyMmNmYThmNGZhMWU0ZTVjNjBkY2NkMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6NTQgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2ktel0qIDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTc2YWRjODE0MmMxZDk1NjM4NWExMDllMGI3MGY5MzE5ZWRlNGQ2NgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6NDMgMjAwNyAtMDUwMAoKICAgIGNvbW1vbi9jbWRfW2EtZl0qIDogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCgogICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCiAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCgogICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06CiAgICBCZWZvcmU6CgkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKICAgIEFmdGVyOgoJI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZWM2M2IxMGI2MWZkNjgyMzhkNGMxNWMxY2QwNGMwYjM4MjI4ZTJjMQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTk6MDE6MzQgMjAwNyAtMDUwMAoKICAgIEludHJvZHVjZSBpbml0aWFsIHZlcnNpb25zIG9mIG5ldyBDb21tYW5kIENvbmZpZyBmaWxlcy4KCiAgICBEZXJpdmUgdGhyZWUgbmV3IGZpbGVzIGZyb20gY21kX2NvbmZkZWZzLmg6Cgljb25maWdfYm9vdHAuaCAtIEhhcyBCT09UUCByZWxhdGVkIGNvbmZpZyBvcHRpb25zLCBub3QgY29tbWFuZHMKCWNvbmZpZ19jbWRfYWxsLmggLSBIYXMgYSBDT05GSUdfQ01EXyogZGVmaW5pdGlvbiBmb3IgZXZlcnkgY29tbWFuZAoJY29uZmlnX2NtZF9kZWZhdWx0LmggLSBIYXMgYSBDT05GSUdfQ01EXyogZGVmaW5pdGlvbiBmb3IgZGVmYXVsdCBjbWRzLgoKICAgIEZvciBub3csIGluY2x1ZGUgImNvbmZpZ19ib290cC5oIiBmb3IgY29tcGF0YWJpbGl0eSB1bnRpbCBhbGwKICAgIHVzZXJzIG9mIGl0IGRpcmVjdGx5IGluY2x1ZGUgaXQgcHJvcGVybHkuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxZjJhMDU4OTg2NTg5MDBkYzU3MTc3NjFlMjdhYmYyMDUyZTY3ZTEzCkF1dGhvcjogTXVzaHRhcSBLaGFuIDxtdXNodGFxa185MjFAeWFob28uY28uaW4+CkRhdGU6CVNhdCBKdW4gMzAgMTg6NTA6NDggMjAwNyArMDIwMAoKICAgIEZpeCBTLUFUQSBzdXBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IG11c2h0YXEga2hhbiA8bXVzaHRhcWtfOTIxQHlhaG9vLmNvLmluPgoKY29tbWl0IGE1ZDcxZTI5MGYzNjczMjY5YmU4ZWVmYjRlYzQ0ZjUzNDEyZjk0NjEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBKdW4gMjUgMTk6MTE6MzcgMjAwNyArMDIwMAoKICAgIFtQQ1M0NDBFUF0JZ2V0IHJpZCBvZiBDT05GSUdfUFBDNHh4X1VTRV9TUERfRERSX0lOSVRfSEFORwoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IGExYmQ2MjAwZWNjZDNhMDIwNDBhOTU1ZDVmNDNkM2VlMWZjOWY5M2IKQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+CkRhdGU6CU1vbiBKdW4gMjUgMTc6MDM6MTMgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogUFBDNDQwRVB4IEVtaXQgRERSMCByZWdpc3RlcnMgb24gbWFjaGluZSBjaGVjayBpbnRlcnJ1cHQKCiAgICBUaGlzIHBhdGNoIHByaW50cyB0aGUgRERSIHN0YXR1cyByZWdpc3RlcnMgdXBvbiBtYWNoaW5lIGNoZWNrCiAgICBpbnRlcnJ1cHQgb24gdGhlIDQ0MEVQeC9HUnguIFRoaXMgY2FuIGJlIHVzZWZ1bCBlc3BlY2lhbGx5IHdoZW4KICAgIEVDQyBzdXBwb3J0IGlzIGVuYWJsZWQuCgogICAgSSBhZGRlZCBzb21lIHNtYWxsIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHBhdGNoIGZyb20gTmlrbGF1cyB0bwogICAgbWFrZSBpdCBjb21waWxlIGNsZWFuLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4MDcwMThmYjdmYWNlYjQyOWNlMGNiNDdiYWEyMDczNzQ2YjMzYTRlCkF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXN0YWwuY29tPgpEYXRlOglNb24gSnVuIDI1IDE2OjUwOjU1IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBPPWJ1aWxkaXIgYnVpbGRzCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSB0byBhc3NlbWJsZSBjcHUvcHBjNHh4L3N0YXJ0LlMKICAgIGV4cGVyaWVuY2VkIGxhc3Qgd2VlayB3aGVyZSBidWlsZGluZyBmYWlsZWQgaGF2aW5nIHNwZWNpZmllZAogICAgTz0uLi9idWlsZC5zZXF1b2lhLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KCmNvbW1pdCA0NjZmZmYxYTdiYjVmZTc2NGEwNjQ1MDYyNmY2MDk4MjE5ZjQ0NmI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSnVuIDI1IDE1OjU3OjM5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBwY2lfcHJlX2luaXQoKSBmb3IgNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBvcHRpb24gY29tcGxldGVseSwgc2luY2UKICAgIGl0J3Mgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIHBhdGNoIGZyb20gTWF0dGhpYXMgRnVjaHMgd2l0aAogICAgdGhlICJ3ZWFrIiBwY2lfcHJlX2luaXQoKSBpbXBsZW1lbnRhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmYzNWM1MzE2NjIxM2MyNGE1YTBlMjM5MGVkODYxMTM2ZmY3Mzg3MApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gSnVuIDI0IDE3OjQxOjIxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IE1haW50ZW5hbmNlIHBhdGNoIGZvciBlc2QncyBDUENJNDA1IGRlcml2YXRzCgogICAgLWFkZCBwY2lfcHJlX2luaXQoKSBmb3IgcGNpIGludGVycnVwdCBmaXh1cCBjb2RlCiAgICAtZGlzYWJsZSBwaHkgc2xlZXAgbW9kZSB2aWEgcmVzZXRfcGh5KCkgZnVuY3Rpb24KICAgIC11c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMKICAgIC1jbGVhbnVwCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNWExYzlmZjBjNDQzMDViNTdjYjRkOGY5MzY5YmJhOTBiY2YwZTFmOApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglTdW4gSnVuIDI0IDE3OjIzOjQxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBwY2lfcHJlX2luaXQoKSBmb3IgNDA1IGJvYXJkcwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBjYWxsaW5nIGEgcGxhdHRmb3JtIGRlcGVuZGFudAogICAgcGNpX3ByZV9pbml0KCkgZnVuY3Rpb24gZm9yIDQwNSBib2FyZHMuIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgIG1vdmUgdGhlIGN1cnJlbnQgcGNpXzQwNWdwX2ZpeHVwX2lycSgpIGZ1bmN0aW9uIGludG8gdGhlCiAgICBib2FyZCBjb2RlLgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBkZWZpbmUgb2Jzb2xldGUuCiAgICBBIGRlZmF1bHQgZnVuY3Rpb24gd2l0aCAnd2VhaycgYXR0cmlidXRlIGlzIHVzZWQgd2hlbgogICAgYSBib2FyZCBzcGVjaWZpYyBwY2lfcHJlX2luaXQoKSBpcyBub3QgaW1wbGVtZW50ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgMTYzNmQxYzg1MjljMDA2ZDEwNjI4N2NmYmMyMGNkMGEyNDZmZTFjYgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMjIgMjM6NTk6MDAgMjAwNyArMDIwMAoKICAgIENvZGluZyBzdHlsa2UgY2xlYW51cDsgcmVidWlsZCBDSEFOR0VMT0cKCmNvbW1pdCAyZGM2NDQ1MWI0YzA4ZmZkNjE5MzcyYWJmZGMyNTA2YTJlMjM2M2I5CkF1dGhvcjogSWdvciBMaXNpdHNpbiA8aWdvckBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIEFwciAxOCAxNDo1NToxOSAyMDA3ICswNDAwCgogICAgQWRhcHQgbG9nIGJ1ZmZlciBjb2RlIHRvIHN1cHBvcnQgTGludXggMi42CgogICAgQSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUsICJsb2d2ZXJzaW9uIiwgc2VsZWN0cyB0aGUgbG9nIGJ1ZmZlcgogICAgYmVoYXZpb3VyLiBJZiBpdCBpcyBub3Qgc2V0IG9yIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gMiwgdGhlbiB0aGUKICAgIG9sZCwgTGludXggMi40LjQsIGJlaGF2aW91ciBpcyBzZWxlY3RlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgogICAgLS0KCmNvbW1pdCBhMTFlMDY5NjVlYzkxMjcwYzUxODUzNDA3ZmYxMjYxZDNjNzQwMzg2CkF1dGhvcjogSWdvciBMaXNpdHNpbiA8aWdvckBlbWNyYWZ0LmNvbT4KRGF0ZToJV2VkIE1hciAyOCAxOTowNjoxOSAyMDA3ICswNDAwCgogICAgRXh0ZW5kIFBPU1Qgc3VwcG9ydCBmb3IgUFBDNDQwCgogICAgQWRkZWQgbWVtb3J5LCBDUFUsIFVBUlQsIEkyQyBhbmQgU1BSIFBPU1QgdGVzdHMgZm9yIFBQQzQ0MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgogICAgLS0KCmNvbW1pdCA1NjZhNDk0ZjU5MmFlM2IzYzA3ODVkOTBkNGUxYmE0NTU3NDg4MGM0CkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgSnVuIDIyIDE5OjExOjU0IDIwMDcgKzAyMDAKCiAgICBbUENTNDQwRVBdCSAgICB1cGdyYWRlIHRoZSBQQ1M0NDBFUCBib2FyZDoKCQkgICAgLSBTaG93IG9uIHRoZSBTdGF0dXMgTEVEcywgc29tZSBTdGF0ZXMgb2YgdGhlIGJvYXJkLgoJCSAgICAtIEdldCB0aGUgTUFDIGFkZHJlc3NlcyBmcm9tIHRoZSBFRVByb20KCQkgICAgLSB1c2UgUFJFQk9PVAoJCSAgICAtIHVzZSB0aGUgQ0Ygb24gdGhlIGJvYXJkLgoJCSAgICAtIGNoZWNrIHRoZSBVLUJvb3QgaW1hZ2UgaW4gdGhlIEZsYXNoIHdpdGggYSBTSEExCgkJICAgICAgY2hlY2tzdW0uCgkJICAgIC0gdXNlIGR5bmFtaWMgVExCIGVudHJpZXMgZ2VuZXJhdGlvbiBmb3IgdGhlIFNEUkFNCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgM2ExZjVjODFiMGI5NTU3ODE3YTc4OWJlY2U4Mzk5MDU1ODFjMjIwNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAyMiAxNjo1ODo0MCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIGV4dGVuZGVkIHByb2dyYW1fdGxiKCkgZnVudGlvbgoKICAgIFRoZSByZWNlbnRseSBleHRlbmRlZCBwcm9ncmFtX3RsYigpIGZ1bmN0aW9uIGhhZCBhIHByb2JsZW0gd2hlbgogICAgbXVsdGlwbGUgVExCJ3MgaGFkIHRvIGJlIHNldHVwIChmb3IgZXhhbXBsZSB3aXRoIDUxMk1CIG9mIFNEUkFNKS4gVGhlCiAgICB2aXJ0dWFsIGFkZHJlc3Mgd2FzIG5vdCBpbmNyZW1lbnRlZC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCiAgICBhbmQgaXMgdGVzdGVkIG9uIEthdG1haSB3aXRoIDUxMk1CIFNEUkFNLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwMjAzMmU4ZjE0NzUxYTFhNzUxYjA5MjQwYTRmMWNmOWY4YTIwNzdmCkF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biAyMiAxNDo1ODowNCAyMDA3ICswMjAwCgogICAgW3BwY10gRml4IGJ1aWxkIGJyZWFrYWdlIGZvciBhbGwgbm9uLTR4eCBQb3dlclBDIHZhcmlhbnRzLgoKICAgIC0gYWRhcHQgdG8gdGhlIG1vcmUgZ2VuZXJpYyBFWENFUFRJT05fUFJPTE9HIGFuZCBDUklUX0VYQ0VQVElPTiBtYWNyb3MKICAgIC0gbWlub3IgNHh4IGNsZWFudXAKCmNvbW1pdCBkNjc3YjMyODU1ZjU3N2FlMjY5MGRjZDY0YTE3MmNkZDcwNmUwZmZjCkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglGcmkgSnVuIDIyIDEwOjM0OjEyIDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIGFkZCBuYW5kX2luaXQoKSBwcm90b3R5cGUgdG8gbmFuZC5oCgogICAgc2luY2UgbmFuZF9pbml0KCkgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJ5IG90aGVyIHBhcnRzIG9mIHUtYm9vdCwgdGhlcmUKICAgIHNob3VsZCBiZSBhIHByb3RvdHlwZSBmb3IgaXQgaW4gbmFuZC5oCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDgzYjRjZmEzZDYyOWRmZjAyNjQzNjYyNjNjNWU5NGQ5YTUwYWQ4MGIKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDIwIDE4OjE0OjI0IDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gUmVmcmVzaCBDSEFOR0VMT0cuCgpjb21taXQgYjNmOWVjODZlMzg4MjA3ZmQwM2RjZGY3YjE0NWI5ZWQwODBiZjAyNApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEp1biAxOSAxNzoyMjo0NCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBBZGQgYm9vdHN0cmFwIGNvbW1hbmQgZm9yIEFNQ0MgU2VxdW9pYSAoNDQwRVB4KSBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIGEgYm9hcmQgY29tbWFuZCB0byBjb25maWd1cmUgdGhlIEkyQyBib290c3RyYXAgRUVQUk9NCiAgICB2YWx1ZXMuIFJpZ2h0IG5vdyA1MzMgYW5kIDY2N01IeiBhcmUgc3VwcG9ydGVkIGZvciBib290aW5nIGVpdGhlciB2aWEgTk9SCiAgICBvciBOQU5EIEZMQVNILiBIZXJlIHRoZSB1c2FnZToKCiAgICA9PiBib290c3RyYXAgNTMzIG5vcgk7dG8gY29uZmlndXJlIHRoZSBib2FyZCBmb3IgNTMzTUh6IE5PUiBib290aW5nCiAgICA9PiBib290c3RyYXAgNjY3IG5hbmQJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDY2N01IeiBOTkFORCBib290aW5nCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRmOGEyNGNkZDMwMTUxNTA1Y2Y1N2JiZWU1Mjg5ZTkxYmY1M2JkMWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBKdW4gMTkgMTY6NDI6MzEgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEZpeCBwcm9ibGVtIHdpdGggTkFORCBib290aW5nIG9uIEFNQ0MgQWNhZGlhCgogICAgVGhlIGxhdGVzdCBjaGFuZ2VzIHNob3dlZCBhIHByb2JsZW0gd2l0aCB0aGUgbG9jYXRpb24gb2YgdGhlIE5BTkQtU1BMCiAgICBpbWFnZSBpbiB0aGUgT0NNIGFuZCB0aGUgaW5pdC1kYXRhIGFyZWEgKGluY2wuIGNhY2hlKS4gVGhpcyBwYXRjaAogICAgZml4ZXMgdGhpcyBwcm9ibGVtLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NmJhOTllMzQxOTQzOTQwNTJkMjRjMDRkYzQwZDEyNjNkMjlhMjZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSnVuIDE5IDE2OjQwOjU4IDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBDaGFuZ2UgYm9hcmQvYW1jYy9hY2FkaWEvY3ByLmMgdG8gcGxsLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOGU1ODVmMDJmODJjMTdjYzY2Y2QyMjlkYmYwZmQzMDY2YmJiZjY1OApBdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTggMTM6NTA6MTMgMjAwNyAtMDUwMAoKICAgIEFkZGVkIE01MzI5QUZFRSBhbmQgTTUzMjlCRkVFIFBsYXRmb3JtcwoKICAgIEFkZGVkIGJvYXJkL2ZyZWVzY2FsZS9tNTMyOWV2YiwgY3B1L21jZjUzMngsIGRyaXZlcnMvbmV0LAogICAgZHJpdmVycy9zZXJpYWwsICBpbW1hcF81MzI5LmgsIG01MzI5LmgsIG1jZnJ0Yy5oLAogICAgaW5jbHVkZS9jb25maWdzL001MzI5RVZCLmgsIGxpYl9tNjhrL2ludGVycnVwdHMuYywgYW5kCiAgICBydGMvbWNmcnRjLmMKCiAgICBNb2RpZmllZCBDUkVESVRTLCBNQUtFRklMRSwgTWFrZWZpbGUsIFJFQURNRSwgY29tbW9uL2NtZF9iZGluZm8uYywKICAgIGNvbW1vbi9jbWRfbWlpLmMsIGluY2x1ZGUvYXNtLW02OGsvYnl0ZW9yZGVyLmgsIGluY2x1ZGUvYXNtLW02OGsvZmVjLmgsCiAgICBpbmNsdWRlL2FzbS1tNjhrL2lvLmgsIGluY2x1ZGUvYXNtLW02OGsvbWNmdGltZXIuaCwKICAgIGluY2x1ZGUvYXNtLW02OGsvbWNmdWFydC5oLCBpbmNsdWRlL2FzbS1tNjhrL3B0cmFjZS5oLAogICAgaW5jbHVkZS9hc20tbTY4ay91LWJvb3QuaCwgbGliX202OGsvTWFrZWZpbGUsIGxpYl9tNjhrL2JvYXJkLmMsCiAgICBsaWJfbTY4ay90aW1lLmMsIG5ldC9ldGguYyBhbmQgcnRjL01ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwOTMxNzJmMDhkNmFmYjNmMzRkOGEyZjI2ZWUwZWU4NzQyNjFjZjI3CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTdW4gSnVuIDE3IDE5OjA0OjExIDIwMDcgKzAyMDAKCiAgICBbZml4XSBlbWFpbCByZXBhcmF0aW9uCgpjb21taXQgMzY2NmFmZmZlN2JhZjg1OWM2YWUwY2UyYmViYmM4YWI3ZTUxMmRkYwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIEp1biAxNyAxOTowMzoyMSAyMDA3ICswMjAwCgogICAgW0ZJWF0gZml4IG1pY3JvYmxhemUgZmlsZSBwZXJtaXRpc3Npb24KCmNvbW1pdCBlNzM4NDZiN2NmMWUyOWFlNjM1YmY5YmI1NTcwMjY5NjYzZGYyZWU1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDE1IDExOjMzOjQxIDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBDaGFuZ2UgbHdtb241IHBvcnQgdG8gd29yayB3aXRoIHJlY2VudCA0NDAgZXhjZXB0aW9uIHJld29yawoKICAgIE5vdyBDT05GSUdfNDQwIGhhcyB0byBiZSBkZWZpbmVkIGluIGFsbCBQUEM0NDAgYm9hcmQgY29uZmlnIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlZmEzNWNmMTJkOTE0ZDRjYWJhOTQyYWNkNWE2YzQ1ZjIxN2RlMzAyCkF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CkRhdGU6CUZyaSBKdW4gMTUgMTE6MTk6MjggMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQ2xlYW4gdXAgNDQwIGV4Y2VwdGlvbnMgaGFuZGxpbmcKCiAgICAtIEludHJvZHVjZWQgZGVkaWNhdGVkIHN3aXRjaGVzIGZvciBidWlsZGluZyA0NDAgYW5kIDQwNSBpbWFnZXMgcmVxdWlyZWQKICAgICAgZm9yIDQ0MC1zcGVjaWZpYyBtYWNoaW5lIGluc3RydWN0aW9ucyBsaWtlICdyZm1jaScgZXRjLgoKICAgIC0gRXhjZXB0aW9uIHZlY3RvcnMgbW92ZWQgdG8gdGhlIHByb3BlciBsb2NhdGlvbiAoX3N0YXJ0IG1vdmVkIGF3YXkgZnJvbQogICAgICB0aGUgY3JpdGljYWwgZXhjZXB0aW9uIGhhbmRsZXIgc3BhY2UsIHdoaWNoIGl0IG9jY3VwaWVkKQoKICAgIC0gQ3JpdGljYWxJbnB1dCBub3cgc2VydmljZWQgKHdpdGggZGVmYXVsdCBoYW5kbGVyKQoKICAgIC0gTWFjaGluZUNoZWNrIHByb3Blcmx5IHNlcnZpY2VkIChhZGRlZCBhIGRlZGljYXRlZCBoYW5kbGVyIGFuZCByZXR1cm4KICAgICAgc3Vicm91dGluZSkKCiAgICAtIE92ZXJhbGwgY2xlYW51cCBvZiBleGNlcHRpb25zIGRlY2xhcmVkIHdpdGggU1REX0VYQ0VQVElPTiBtYWNybyAodW51c2VkLAogICAgICB1bmhhbmRsZWQgYW5kIHRob3NlIG5vdCByZWxldmFudCBmb3IgNHh4IHdlcmUgZWxpbWluYXRlZCkKCiAgICAtIEVsaW1pbmF0ZWQgTGludXggbGVmdG92ZXJzLCByZW1vdmVkIGRlYWQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBiNzY1ZmZiNzczZjVhM2NkNWFhOTRlYzc2YjZhMDUyNzZiOGNkNWIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDE1IDA4OjE4OjAxIDIwMDcgKzAyMDAKCiAgICBbcHBjNHh4XSBBZGQgaW5pdGlhbCBsd21vbjUgYm9hcmQgc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBMaWViaGVyciBsd21vbjUgYm9hcmQgZXVxaXBwZWQKICAgIHdpdGggYW4gQU1DQyA0NDBFUHggUG93ZXJQQy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODVmNzM3Mzc2ZDVmZjNkNWYwZDQ1YThiNjU3Njg2MzI2ZDE3NTMwNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxNSAwNzozOTo0MyAyMDA3ICswMjAwCgogICAgW3BwYzR4eF0gRXh0ZW5kIDQ0eCBHUElPIHNldHVwIHdpdGggZGVmYXVsdCBvdXRwdXQgc3RhdGUKCiAgICBUaGUgYm9hcmQgY29uZmlnIGFycmF5IENGR180NDBfR1BJT19UQUJMRSBmb3IgdGhlIHBwYzQ0MCBHUElPIHNldHVwCiAgICBpcyBleHRlbmRlZCB3aXRoIHRoZSBkZWZhdWx0IEdQSU8gb3V0cHV0IHN0YXRlIChsZXZlbCkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGRiY2EyMDg1MThlNWU3ZjAxYTY0MjA1ODhkMWNkNmU2MGRiNzRjMmIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBKdW4gMTQgMTE6MTQ6MzIgMjAwNyArMDIwMAoKICAgIFtwcGM0eHhdIEV4dGVuZCBwcm9ncmFtX3RsYigpIHdpdGggdmlydHVhbCAmIHBoeXNpY2FsIGFkZHJlc3NlcwoKICAgIE5vdyBwcm9ncmFtX3RsYigpIGFsbG93cyB0byBwcm9ncmFtIGEgVExCIChvciBtdWx0aXBsZSkgd2l0aAogICAgZGlmZmVyZW50IHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3Nlcy4gV2l0aCB0aGlzIGNoYW5nZSwgbm93IG9uZQogICAgcGh5c2ljYWwgcmVnaW9uIChlLmcuIFNEUkFNKSBjYW4gYmUgbWFwcGVkIDIgdGltZXMsIG9uY2Ugd2l0aCBjYWNoZXMKICAgIGRpYWJsZWQgYW5kIG9uY2Ugd2l0aCBjYWNoZXMgZW5hYmxlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTkxMjEyMWY3ZWQ4MDRlYTU4ZmQ2MmYzZjIzMGI1ZGNmYzM1N2Q4OApBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglXZWQgTWF5IDIzIDE5OjAyOjQxIDIwMDcgKzAyMDAKCiAgICBDaGFuZ2UgJ3JlcGVhdGFibGUnIGF0dHJpYnV0ZSBvZiBzb21lIGNvbW1hbmRzIHRvIHNlbnNpYmxlIHZhbHVlcy4KCiAgICBNb3N0IHByb21pbmVudGx5IHRoaXMgY2hhbmdlcyAnZXJhc2UnIHRvIGJlIG5vbi1yZXBlYXRhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgoKY29tbWl0IDVhZmIyMDIwOTNmNmEwMDE3OTdkYjkyY2Y2OTViOTNhNzBlYTlhYjQKQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAyMyAxODo0Nzo0OCAyMDA3ICswMjAwCgogICAgRml4ICdydW4nIG5vdCB0byBjb250aW51ZSBhZnRlciBpbnRlcnJ1cHRlZCBjb21tYW5kCgogICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Cgpjb21taXQgOWI3NDY0YTJjODg2MTRlMTA2MWY1MDljNDg5MzBhM2QyNDBkMWEzNQpBdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKdW4gMTEgMTU6MTQ6MjQgMjAwNyArMDIwMAoKICAgIFVTQjogVGhpcyBwYXRjaCBmaXggcmVhZGwgaW4gb2hjaSBzd2FwIHJlZyBhY2Nlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4Zjg0MTZmYWRhOWZhZjk0YjlhOTJmMjFmZTYwMDA2NDNjYjUyMWQ1CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEp1biA4IDE0OjUyOjIyIDIwMDcgKzAyMDAKCiAgICBUUU01MjAwOiBBZGQgRmxhdCBEZXZpY2UgVHJlZSBzdXBwb3J0LCB1cGRhdGUgZGVmYXVsdCBlbnYuIGFjY29yZGluZ2x5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5MDQ1ZjMzYzAyM2Y2OTg2NjBhMmU0NWQxYjIxOTRjMDcxMWFiZWJjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEp1biA4IDEwOjI0OjU4IDIwMDcgKzAyMDAKCiAgICBGaXggY29uZmlnIHByb2JsZW1zIG9uIFNDMyBib2FyZDsgbWFrZSBpZGVfcmVzZXRfdGltZW91dCB3b3JrLgoKY29tbWl0IGZiYTNmYjA0NDliOGE1NDU0MmFlZDFlNzI5ZGU3NmU3ZjVhMmZmMWIKQXV0aG9yOiBCZW5vw650IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgpEYXRlOglGcmkgSnVuIDggMDk6NTU6MjQgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gZml4IGdwaW8gc2V0dGluZyB3aGVuIHVzaW5nIENGR180NDBfR1BJT19UQUJMRQoKICAgIFNldCB0aGUgY29ycmVjdCB2YWx1ZSBpbiBHUElPeF9UQ1Igd2hlbiBjb25maWd1cmluZyB0aGUgZ3BpbwogICAgd2l0aCBDRkdfNDQwX0dQSU9fVEFCTEUuCgogICAgU2lnbmVkLW9mZi1ieTogQmVub2l0IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY1MzllZGMwNzZjZmU1MmJmZjkxOWRkNTEyYmE4ZDdhZjBlMjIwOTIKQXV0aG9yOiBWYWRpbSBCZW5kZWJ1cnkgPHZiZW5kZWJAZ29vZ2xlLmNvbT4KRGF0ZToJVGh1IE1heSAyNCAxNTo1MjoyNSAyMDA3IC0wNzAwCgogICAgY29zbWV0aWMgY2hhbmdlcyB0byBiY201NzB4IGRyaXZlcgoKICAgIFRoaXMgaXMgYSBjb3NtZXRpYyBvbmx5IGNoYW5nZXMgc3VibWlzc2lvbi4KICAgIEl0IGFmZmVjdHMgZmlsZXMgcmVsZXZhbnQgdG8gYmNtNTcweCBkcml2ZXIuCiAgICB0aGUgY29tbWFuZHMgdXNlZCB0byBnZW5lcmF0ZSB0aGlzIGNoYW5nZSB3YXMKCiAgICBjZCBkcml2ZXJzCiAgICBMaW5kZW50IC1wY3MgLWw4MCAgYmNtNTcweC5jICAgYmNtNTcweF9sbS5oICAgYmNtNTcweF9tbS5oCXRpZ29uMy5jICB0aWdvbjMuaAoKICAgIFRoZSBCTVcgdGFyZ2V0ICh0aGUgb25seSBvbmUgdXNpbmcgdGhpcyBjaGlwIHNvIGZhcikgYnVpbGRzIGNsZWFubHksIHRoZQogICAgYGJlZm9yZSBhbmQgYWZ0ZXInIGdlbmVyYXRlZCBvYmplY3QgZmlsZXMgZm9yIGRyaXZlcnMvYmNtNTcweC5jIGFuZAogICAgZHJpdmVycy90aWdvbjMubyBhcmUgaWRlbnRpY2FsIGFzIHJlcG9ydGVkIGJ5IG9iamR1bXAgLWQKCiAgICBTaWduZWQtb2ZmLWJ5OiBWYWRpbSBCZW5kZWJ1cnkgPHZiZW5kZWJAZ29vZ2xlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDcyNTY3MWNjZDJjZDA0YzllYmM1MGM5ZTVhOTRkZDhjYmFkZTY2YjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgSnVuIDYgMTY6MjY6NTYgMjAwNyArMDIwMAoKICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyBnZW5lcmF0ZSBuZXcgQ0hBTkdFTE9HIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCAxOWQ3NjNjMzVlMGI1NTY4ZWFmMGI4YWRiZjdhNjhjY2ZlN2ZhMjQzCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQ5OjQ0IDIwMDcgKzAyMDAKCiAgICBUUkFCLCBVU0I6IHVwZGF0ZSB0cmFiIGJvYXJkIGNvbmZpZ3VyYXRpb24gZm9yIHVzZSBvZiBnZW5lcmljIG9oY2kgZHJpdmVyCgpjb21taXQgZGFjZTQ1YWNkMWMxMzU3ZGFhOTMyMjA5OWQwN2M5YTllMDhiMDAyNApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBKdW4gNiAxMTo0OTo0MyAyMDA3ICswMjAwCgogICAgVVNCOiBvaGNpIGZpeGVzIGFuZCBjbGVhbnVwIGZvciBwcGM0eHggYW5kIHlvc2VtaXRlIGJvYXJkLgoKY29tbWl0IDcyNjU3NTcwYjYxNjM1Yzc0ZmEwYzNmMGU5ZTdkMDY3MWE5ZDA4ZGYKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgpEYXRlOglXZWQgSnVuIDYgMTE6NDk6NDMgMjAwNyArMDIwMAoKICAgIFVTQjogb2hjaSBmaXhlcyBhbmQgY2xlYW51cCBmb3IgbXBjNXh4eCBhbmQgSWNlQ3ViZSBib2FyZCBjb25maWcKCmNvbW1pdCBmYzQzYmU0NzhmMmFhMzdjZTM4YWNkODUzNTUwMzg4NjZlNDE2MmFmCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQ5OjM1IDIwMDcgKzAyMDAKCiAgICBVU0IvT0hDSTogZW5kaWFubmVzcyBjbGVhbnVwIGluIHRoZSBnZW5lcmljIG9oY2kgZHJpdmVyCgpjb21taXQgYzQ0MGJmZTZkNmQ5MmQ2NjQ3OGE3ZTg0NDAyYjMxZjQ4NDEzNjE3YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEp1biA2IDExOjQyOjEzIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBmb3IgQU1DQyBBY2FkaWEgKDQwNUVaKSBldmFsIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciB0aGUgQU1DQyBBY2FkaWEgZXZhbCBib2FyZC4KCiAgICBQbGVhc2UgbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSBqdW1wZXIgSjcgdG8gcG9zaXRpb24gMi0zIHdoZW4gYm9vdGluZwogICAgZnJvbSBOT1IsIGFuZCB0byBwb3NpdGlvbiAxLTIgd2hlbiBib290aW5nIGZvciBOQU5ELgoKICAgIEkgYWxzbyBhZGRlZCBhIGJvYXJkIGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBJMkMgYm9vdHN0cmFwIEVFUFJPTQogICAgdmFsdWVzLiBSaWdodCBub3cgb25seSAyNjdNSHogaXMgc3VwcG9ydCBmb3IgYm9vdGluZyBlaXRoZXIgdmlhIE5PUgogICAgb3IgTkFORCBGTEFTSC4gSGVyZSB0aGUgdXNhZ2U6CgogICAgPT4gYm9vdHN0cmFwIDI2NyBub3IJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDI2N01IeiBOT1IgYm9vdGluZwogICAgPT4gYm9vdHN0cmFwIDI2NyBuYW5kCTt0byBjb25maWd1cmUgdGhlIGJvYXJkIGZvciAyNjdNSHogTk5BTkQgYm9vdGluZwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxODEzNTEyNWY5MDk5NDhiODVkMWQ2ODgxYWI0YWMwZWZiNGExYzU4CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxNCAyMDA3ICswMjAwCgogICAgRmlsZXMgaW5jbHVkZS9saW51eC9ieXRlb3JkZXIve2JpZyxsaXR0bGV9X2VuZGlhbi5oIGRlZmluZQogICAgX19CSUdfRU5ESUFOIGFuZCBfX0xJVFRMRV9FTkRJQU4uCgogICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Cgpjb21taXQgYTgxZDFjMGI4NWIxM2U5ZDQ1ZjJkODdkZTk2YTUxYTZlMGVmMGY4MgpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxNCAyMDA3ICswMjAwCgogICAgQWRkIFVTQiBQQ0ktT0hDSSwgVVNCIGtleWJvYXJkIGFuZCBldmVudCBwb2xsIHN1cHBvcnQgdG8gdGhlCiAgICBNUEM4NjQxSFBDTiBib2FyZCBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRkYWUxNGNlOGZiZGYzODAwMTdkYzU0ZjE3MjIxOGU3ZDJhY2M4ODkKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDYgMTA6MDg6MTQgMjAwNyArMDIwMAoKICAgIFVTQiBQQ0ktT0hDSSwgaW50ZXJydXB0IHBpcGUgYW5kIHVzYiBldmVudCBwb2xsIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZGVkIFVTQiBQQ0ktT0hDSSBjaGlwcyBzdXBwb3J0LCBpbnRlcnJ1cHQgcGlwZSBzdXBwb3J0CiAgICBhbmQgdXNiIGV2ZW50IHBvbGwgc3VwcG9ydC4gRm9yIHN1cHBvcnRpbmcgdGhlIFVTQiBpbnRlcnJ1cHQgcGlwZSwgdGhlCiAgICBnbG9iZSB1cmJfcHJpdiBpcyBtb3ZlZCB0byBwdXJiIGluIGVkIHN0cnVjdC4gTm93LCB3ZSBjYW4gcHJvY2VzcwogICAgc2V2ZXJhbCB1cmJzIGF0IG9uZSB0aW1lLiBUaGUgaW50ZXJydXB0IHBpcGUgc3VwcG9ydCBjb2RlcyBhcmUgcG9ydGVkCiAgICBmcm9tIExpbnV4IGtlcm5lbCAyLjQuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmZGNmYWExYjAyMjY4YjI4OTllMzc0YjM1YWRmOTM2YzkxMWE0N2ViCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biA2IDEwOjA4OjEzIDIwMDcgKzAyMDAKCiAgICBVU0IgZXZlbnQgcG9sbCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBhZGRzIFVTQiBldmVudCBwb2xsIHN1cHBvcnQsIHdoaWNoIGNvdWxkIGJlIHVzZWQgaW4gdXNia2JkCiAgICBhbmQgb3RoZXIgdXNiIGRldmljZXMgZHJpdmVyIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBpbnRlcnJ1cHQKICAgIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20KCmNvbW1pdCA5YTFkMDBmYTQ3YzFlMDVlM2ZkYjYwYjMzMjEzYWY0ZTE4ZDRjMThlCkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxMiAyMDA3ICswMjAwCgogICAgSVNQMTE2eDogZGVsYXkgZm9yIGNyYXBweSBVU0Iga2V5cwoKICAgIFVzaW5nIHNvbWUgKHZlcnkpIHNsb3cgVVNCIGtleXMgY2F1c2UgdGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgYnVmZmVycwogICAgYXJlIG5vdCByZWFkeSB0byBiZSByZWFkIGJ5IHRoZSBDUFUgc28gd2UgbmVlZCBhbiBleHRyYSBkZWxheSBiZWZvcmUKICAgIHJlYWRpbmcgdGhlIFVTQiBzdG9yYWdlIGRhdGEuCgogICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Cgpjb21taXQgMDk0NDQxNDM2NzBjOWMyMjQzY2I3YWJhOWY3MGIzNzEzZDMzYmVkMQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBKdW4gNiAxMDowODoxMiAyMDA3ICswMjAwCgogICAgQ2hhbmdlIGR1cGxpY2F0ZSB1c2JfY3B1X2luaXRfZmFpbCB0byB1c2JfYm9hcmRfaW5pdF9mYWlsCgogICAgVGhhbmtzIHRvIExpZXcgVHNpIENodW5nIDxUc2ktY2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPiBmb3IgcG9pbnRpbmcKICAgIHRoaXMgb3V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMzI5MjJjZGM0NzBmZGZkMzliZWEwYzFjNGY1ODJkM2ZiMzQwNDIxZQpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gNSAxMjozMDo1MiAyMDA3IC0wNTAwCgogICAgbXBjODY0MSBpbWFnZSBzaXplIGNsZWFudXAKCiAgICBlNjAwIGRvZXMgbm90IGhhdmUgYSBib290cGcgcmVzdHJpY3Rpb24uCiAgICBNb3ZlIHRoZSB2ZXJzaW9uIHN0cmluZyB0byBiZWdpbm5pbmcgb2YgaW1hZ2UgYXQgZmZmMDAwMDAuCiAgICBSZXNldHZlYy5TIGlzIG5vdCBuZWVkZWQuCiAgICBVcGRhdGUgZmxhc2ggY29weSBpbnN0cnVjdGlvbnMuCiAgICBBZGQgdGZ0cGZsYXNoIGVudiB2YXJpYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUzY2JlMWY5M2M1NzIyZjhlYmJhZDQ2OGUzMGMwNjlhMmI1MTEwOTcKQXV0aG9yOiBCZW5vw650IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgpEYXRlOglNb24gSnVuIDQgMDg6MzY6MDUgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gRml4IHBwYzR4eCBib290c3RyYXAgbGV0dGVyIGRpc3BsYXllZCBvbiBzdGFydHVwCgogICAgVGhlIGF0dGFjaGVkIHBhdGNoIGlzIG1haW5seSBjb3NtZXRpYywgYWxsb3dpbmcgdS1ib290IHRvCiAgICBkaXNwbGF5IHRoZSBjb3JyZWN0IGJvb3RzdHJhcCBvcHRpb24gbGV0dGVyIGFjY29yZGluZyB0byB0aGUKICAgIGRhdGFzaGVldHMuCgogICAgVGhlIG9yaWdpbmFsIHBhdGNoIHdhcyBleHRlbmRlZCB3aXRoIDQwNUVaIHN1cHBvcnQgYnkgU3RlZmFuCiAgICBSb2VzZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW5vaXQgTW9uaW4gPGJtb25pbkBhZGVuZW8uZXU+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWIxMzEzZmIyNzU4ZmZjZThiNjI0NDU3Zjc3N2Q4Y2M2NzA5NjA4ZApBdXRob3I6IE5pa2l0YSBWLiBZb3VzaGNoZW5rbyA8eW91c2hAZGViaWFuLm9yZz4KRGF0ZToJV2VkIE1heSAyMyAxMjo0NToxOSAyMDA3ICswNDAwCgogICAgZml4IGNvbXBpbGF0aW9uIHByb2JsZW0gZm9yIG1wYzgzNDlpdHggQ0ZHX1JBTUJPT1QKCiAgICBDdXJyZW50IGluY2x1ZGUvY29uZmlncy9NUEM4MzQ5SVRYLmggZG9lcyBjb250YWluIHNvbWUgc3VwcG9ydCBmb3IgYnVpbGRpbmcKICAgIGltYWdlIHRoYXQgd2lsbCBiZSBzdGFydGVkIGZyb20gbWVtb3J5ICh3aXRob3V0IHB1dHRpbmcgaW4gaW50byBmbGFzaCkuCiAgICBJdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgYnVpbGRpbmcgd2l0aCBURVhUX0JBU0Ugc2V0IHRvIGEgbG93IHZhbHVlLgoKICAgIEhvd2V2ZXIsIHRoaXMgc3VwcG9ydCBpcyBpbmNvbXBsZXRlOiB1c2luZyBvZiBsb3cgVEVYVF9CQVNFIGNhdXNlcwogICAgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBtYWNyb3MgaW4gaW5jb25zaXN0ZW50IHdheSwgd2hpY2ggbGF0ZXIgbGVhZHMKICAgIHRvIGNvbXBpbGF0aW9uIGVycm9ycy4gSW4gcGFydGljdWxhci4gZmxhc2ggc3VwcG9ydCBpcyBiZWluZyBkaXNhYmxlZCwKICAgIGJ1dCB0aGVuIGZsYXNoIHN0cnVjdHVyZXMgZ2V0IHJlZmVyZW5jZWQuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gYnVpbGQgd2l0aCBsb3cgVEVYVF9CQVNFLgoKICAgIFNpZ25lZC1PZmYtQnk6IE5pa2l0YSBZb3VzaGNoZW5rbyA8eW91c2hAZGViaWFuLm9yZz4KCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDhhMzY0ZjA5NzBkZTQ5OTQ5ZDYzNWU2MGFjY2Y0NjNjNjQ0M2VmOGMKQXV0aG9yOiBOaWtpdGEgVi4gWW91c2hjaGVua28gPHlvdXNoQGRlYmlhbi5vcmc+CkRhdGU6CVdlZCBNYXkgMjMgMTI6NDU6MjUgMjAwNyArMDQwMAoKICAgIGFkZCBtaXNzaW5nICdjb25zb2xlJyB2YXIgdG8gZGVmYXVsdCBtcGM4MzQ5aXR4IGNvbmZpZwoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMThkMTU2ZWIzN2M5MGZhZGM4ZWM3YTgxYTNiODkxNzYxNjFmODViNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE2OjE4OjE3IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBtaXNzaW5nIGZpbGUgZm9yIEJhbWJvbyBOQU5EIGJvb3Rpbmcgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxNTVhOTY0NzhhMDg4MWU2ZGE5NmNiYmJjZjM0OTUyZDZhM2IxYjRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDEgMTU6NTg6MTkgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVW5kbyBTZXF1b2lhIHBhdGNoIGZvciBkeW5hbWljIEVCQyBzcGVlZCBzdXBwb3J0IG9mIDgzTUh6CgogICAgVGhpcyBwYXRjaCB1bmRvZXMgdGhlIHBhdGNoIGJ5IEplZmYgTWFubiB3aXRoIGNvbW1pdC1pZCBhZGE0Njk3ZC4gQXMKICAgIHN1Z2dlc3RlZCBieSBBTUNDIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIEVCQwogICAgc3BlZWQgYWZ0ZXIgYm9vdHVwLiBTbyB3ZSB1bmRvIHRoaXMgY2hhbmdlIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDlkOTA5NjA0M2U4ZjcxM2Q0YmYxNzQzZDMyZTE0NTllNmExMTY0NGIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxNToyOTowNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgU2VxdW9pYSBOQU5EIGJvb3Rpbmcgc3VwcG9ydCB3aXRoIEVDQwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjZjk1OWM3ZDY2ODc1NjdjMzA4ZTM2NmU5NTgxZTFhNWFmZjVjYzViCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgSnVuIDEgMTU6Mjc6MTEgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciBBTUNDIEJhbWJvbyAoNDQwRVApIGV2YWwgYm9hcmQKCiAgICBUaGlzIHBhdGNoIGFkZHMgTkFORCBib290aW5nIHN1cHBvcnQgZm9yIHRoZSBBTUNDIEJhbWJvbyBldmFsIGJvYXJkLgogICAgU2luY2UgdGhlIE5BTkQtU1BMIGJvb3QgaW1hZ2UgaXMgbGltaXRlZCB0byA0a2J5dGVzLCB0aGlzIHZlcnNpb24KICAgIG9ubHkgc3VwcG9ydHMgdGhlIG9uYm9hcmQgNjRNQnl0ZXMgb2YgRERSLiBUaGUgRElNTSBtb2R1bGVzIGNhbid0IGJlCiAgICBzdXBwb3J0ZWQsIHNpbmNlIHRoZSBzZXR1cCBjb2RlIGZvciBJMkMgRElNTSBhdXRvZGV0ZWN0aW9uIGFuZAogICAgY29uZmlndXJhdGlvbiBpcyB0b28gYmlnIGZvciB0aGlzIE5BTkQgYm9vdGxvYWRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDJiZTU2ZjUzYzhiMTA3ODY4ZTYxMjVjODUyNGFlODQyOTNlOTVhNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjIzOjA0IDIwMDcgKzAyMDAKCiAgICBOQU5EOiBBZGQgRUNDIHN1cHBvcnQgdG8gTkFORCBib290aW5nIHN1cHBvcnQgaW4gbmFuZF9zcGwvbmFuZF9ib290LmMKCiAgICBUaGUgVS1Cb290IE5BTkQgYm9vdGluZyBzdXBwb3J0IGlzIG5vdyBleHRlbmRlZCB0byBzdXBwb3J0IEVDQwogICAgdXBvbiBsb2FkaW5nIG9mIHRoZSBOQU5EIFUtQm9vdCBpbWFnZS4KCiAgICBUZXN0ZWQgb24gQU1DQyBTZXF1b2lhICg0NDBFUHgpIGFuZCBCYW1ib28gKDQ0MEVQKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQ3MWRiMDdmYmI2NWE4NDFmZmM5ZjRmMTEyNTYyYjk0NTIzMGY5OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjE5OjI5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFByZXBhcmUgQmFtYm9vIHBvcnQgZm9yIE5BTkQgYm9vdGluZyBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSAibm9ybWFsIiBCYW1ib28gTk9SIGJvb3RpbmcgcG9ydCwgc28KICAgIHRoYXQgaXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb21pbmcgc29vbiBOQU5EIGJvb3RpbmcKICAgIEJhbWJvbyBwb3J0LgoKICAgIEl0IGFsc28gZW5hYmxlcyB0aGUgMm5kIE5BTkQgZmxhc2ggb24gdGhlIEJhbWJvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNTNhZDAyMTAzZmI4YmU0MTM4YTk5MzdhOGFiOTFmY2RmZjdiNDk4NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjE2OjU4IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSBpbl9iZTMyKCkgZnVuY3Rpb25zIGFuZCBmcmllbmRzIHRvIGxhdGVzdCBMaW51eCB2ZXJzaW9uCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDkxZGEwOWNmYmNlMGMxZGUwNWQ2ZDg0YWE4MzYzZDY2NmZhN2VhM2MKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxNToxNToxMiAyMDA3ICswMjAwCgogICAgTkFORDogQWRkIGhhcmR3YXJlIEVDQyBzdXBwb3J0IHRvIHRoZSBQUEM0eHggTkFORCBkcml2ZXIgbmRmYy5jCgogICAgVGhpcyBwYXRjaCBhZGRzIGhhcmR3YXJlIEVDQyBzdXBwb3J0IHRvIHRoZSBOREZDIGRyaXZlci4gSXQgYWxzbwogICAgY2hhbmdlcyB0aGUgcmVnaXN0ZXIgYWNjZXNzIGZyb20gdXNpbmcgdGhlICJzaW1wbGUiIGluMzIvb3V0MzIKICAgIGZ1bmN0aW9ucyB0byB0aGUgaW5fYmUzMi9vdXRfYmUzMiBmdW5jdGlvbnMsIHdoaWNoIG1ha2Ugc3VyZQogICAgdGhhdCB0aGUgYWNjZXNzIGlzIGNvcnJlY3RseSBzeW5jZWQuIFRoaXMgaXMgdGhlIG9ubHkgcmVjb21tZW5kZWQKICAgIGFjY2VzcyB0byBTb0MgcmVnaXN0ZXJzIGluIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTdiNWU4NjIyODdjY2E3NmYxOWRjZjhiNzQxZTYxYTdkMDY2MTdmMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjEyOjE1IDIwMDcgKzAyMDAKCiAgICBOQU5EOiBVcGRhdGUgbmFuZF9lY2MuYyB0byBsYXRlc3QgTGludXggdmVyc2lvbgoKICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgbmFuZF9lY2MgY29kZSB0byB0aGUgbGF0ZXN0IExpbnV4IHZlcnNpb24uCiAgICBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhlIG1vcmUgY29tcGFjdCBjb2RlLiBUaGlzIG1ha2VzCiAgICBpdCBwb3NzaWJsZSB0byBpbmNsdWRlIHRoZSBFQ0MgY29kZSBpbnRvIHRoZSBOQU5EIGJvb3Rsb2FkZXIKICAgIGltYWdlIChOQU5EX1NQTCkgZm9yIFBQQzR4eC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDJkNDMyNzYwZDIxOTlkMGU4NTU4ZmRkOWQxNzg5YjgxMzFhYmNmNwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDE1OjA5OjUwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IDQ0eCBERFIgZHJpdmVyIGNvZGUgY2xlYW51cCBhbmQgc21hbGwgZml4IGZvciBCYW1ib28KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTRiYmVkMjgwM2EyYWQwNTIxYzczNjJmNWQzZTA2NWY5OWFiYWVkYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEp1biAxIDEzOjQ1OjI0IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBMdWFuIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgRUNDCgogICAgV2l0aCB0aGUgdXBkYXRlZCA0NHggRERSMiBkcml2ZXIgdGhlIEx1YW4gYm9hcmQgbm93IHN1cHBvcnRzCiAgICBFQ0MgZ2VuZXJhdGlvbiBhbmQgY2hlY2tpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDcxODdkYjczNDkxYzhkZTBmYjU2ZWZiNWU1MTM0YmE1ZWM0NDMwODkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKdW4gMSAxMzo0NTowMCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgNDR4X3NwZF9kZHIyIGNvZGUgKDQ0MFNQLzQ0MFNQZSkKCiAgICBBZGQgY29uZmlnIG9wdGlvbiBmb3IgMTgwIGRlZ3JlZSBhZHZhbmNlIGNsb2NrIGNvbnRyb2wgYXMgbmVlZGVkCiAgICBmb3IgdGhlIEFNQ0MgTHVhbiBldmFsIGJvYXJkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlZTE1Mjk4MzhhYmJmYWEzNWYxNGUzZmZiZWFhYmE2OTMxNTk0NzVmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAzMSAxNzoyMDowOSAyMDA3ICswMjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIFNUWCBHUDNTU0EgKHN0eHNzYSkgQm9hcmQgd2l0aCA0IE1pQiBmbGFzaC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDcwNDkyODhmYjFmMTZmMWIzMTcxNDAyMjZjZGViZDA3YmQ0MTYzOTUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE3OjI2OjQ2IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBDb2RlIGNsZWFudXAsIGZpeCBvZiBhIHR5cG8gaW4gT0ZfU1RET1VUX1BBVEguCgogICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA0NTIwZmQ0ZDJjNDUwZGE0OTYzNzIxNmFhMGU1MzczOWI2MWM2MGFjCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNzowNjozNiAyMDA3ICswMjAwCgogICAgTW90aW9uLVBSTzogQWRkIHN1cHBvcnQgZm9yIHJlZHVuZGFudCBlbnZpcm9ubWVudC4KCiAgICBFbmFibGUgcmVkdW5kYW50IGVudmlyb25tZW50LCBhZGQgYSBNVEQgcGFydGl0aW9uIGZvciBpdDsgYWxzbyBhZGQgZW52LgogICAgdmFyaWFibGUgY29tbWFuZCBmb3IgcGFzc2luZyBNVEQgcGFydGl0aW9ucyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTI2ZWFiZWVjMzE3NDZmMDZkMzA5MTAzNjkwODkyODA1Njk2ZTM0NApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTc6MDU6MTEgMjAwNyArMDIwMAoKICAgIE1vdGlvbi1QUk86IENoYW5nZSBtYXhpbXVtIGNvbnNvbGUgYnVmZmVyIHNpemUgZnJvbSAyNTYgdG8gMTAyNCBieXRlcy4KCiAgICBBbGxvdyBwYXNzaW5nIGxvbmdlciBjb21tYW5kIGxpbmUgdG8gdGhlIGtlcm5lbCAtIHVzZWZ1bCBlc3BlY2lhbGx5CiAgICBmb3IgcGFzc2luZyBNVEQgcGFydGl0aW9uIGxheW91dC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgOTE2MGI5NmY3MTQ4M2ExMTZkZTgxYzY4OTg1ZThlZTMwNmQzNjc2NApBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTc6MDQ6MTggMjAwNyArMDIwMAoKICAgIEZpeDogQWRkIG1pc3NpbmcgTlVMTCB0ZXJtaW5hdGlvbiBpbiBzdHJpbmdzIGV4cGFuZGVkIGJ5IG1hY3JvcyBwYXJzZXIuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDYzMGVjODRhZWY3MjI4ZmMxZGJmYjM4ZGVjNzg1NDE0MDNhNzg2Y2QKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE3OjAzOjM3IDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBVcGRhdGUgRUVQUk9NJ3MgcGFnZSB3cml0ZSBiaXRzIGFuZCB3cml0ZSBkZWxheS4KCiAgICBDaGFuZ2UgRUVQUk9NIGNvbmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkYXRhc2hlZXQ6ICJUaGUgMjRDMDFBIGFuZCAyNEMwMkEKICAgIGhhdmUgYSBwYWdlIHdyaXRlIGNhcGFiaWxpdHkgb2YgdHdvIGJ5dGVzIiwgYW5kICJUaGlzIGRldmljZSBvZmZlcnMgZmFzdCAoMW1zKQogICAgYnl0ZSB3cml0ZSIuIEFkZCAzbXMgb2YgZXh0cmEgZGVsYXkuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGMwMDEyNWUwN2MxZWJjMTI1YmFiNDBlMWUxOGJjZWVkOGJlMGMxNjIKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE2OjU4OjQ1IDIwMDcgKzAyMDAKCiAgICBNUEM1WFhYLCBNb3Rpb24tUFJPOiBGaXggUEhZIGluaXRpYWxpemF0aW9uIHByb2JsZW0uCgogICAgQWZ0ZXIgYmVpbmcgcmVzZXQgaW4gbXBjNXh4eF9mZWNfaW5pdF9waHkoKSwgUEhZIGdvZXMgaW50byBGWCBtb2RlLCBpbiB3aGljaAogICAgbmV0d29ya2luZyBkb2VzIG5vdCBmdW5jdGlvbi4gVGhpcyBjb21taXQgc3dpdGNoZXMgUEhZIHRvIFRYIG1vZGUgYnkgY2xlYXJpbmcKICAgIHRoZSBGWF9TRUwgYml0IG9mIE1vZGUgQ29udHJvbCBSZWdpc3Rlci4gSXQgYWxzbyByZXZlcnNlcyBjb21taXQKICAgIDAwODg2MWEyZjNlZjJjMDYyNzQ0ZDczMzc4N2M3ZTUzMGExYjg3NjEsIGkuZS4sIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCA5M2I3OGY1MzRhNmU3MDhiNGNmMWE0ZmZiNGQ4NDM4YzY3YTAwN2RiCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNjo1NzoxNSAyMDA3ICswMjAwCgogICAgTW90aW9uLVBSTzogQWRkIHN1cHBvcnQgZm9yIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IuCgogICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IGM3NWU2Mzk2MzBjYzEzMmRjMTljZDFlY2RhNTkyMmMwZGIwYmZiYmEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglTdW4gTWF5IDI3IDE2OjU1OjIzIDIwMDcgKzAyMDAKCiAgICBNb3Rpb24tUFJPOiBBZGQgZGlzcGxheWluZyBvZiBDUExEIHJldmlzaW9uIGluZm9ybWF0aW9uIGR1cmluZyBib290LgoKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+CiAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KCmNvbW1pdCBjOTk1MTJkNmJkMzk3M2YwMWNhMmZjNDg5NmQ4MjliNDZlNjhmMTUwCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJU3VuIE1heSAyNyAxNjo1Mzo0MyAyMDA3ICswMjAwCgogICAgTVBDNXh4eDogQ2hhbmdlIG5hbWVzIG9mIGRlZmluZXMgcmVsYXRlZCB0byBJUEIgYW5kIFBDSSBjbG9ja3MuCgogICAgQm90aCBDRkdfUENJU1BFRURfNjYgYW5kIENGR19JUEJTUEVFRF8xMzMgYXJlIG1pc25hbWVkLCBhcyBkZWZpbmluZwogICAgdGhlbSBkb2VzIG5vdCBjYXVzZSBQQ0kgb3IgSVBCIGNsb2NrcyB0byBydW4gYXQgdGhlIHNwZWNpZmllZCBzcGVlZC4KICAgIEluc3RlYWQsIHRoZXkgY29uZmlndXJlIGRpdmlzb3JzIHVzZWQgdG8gY2FsY3VsYXRlIHNhaWQgY2xvY2tzLiBUaGlzCiAgICBwYXRjaCByZW5hbWVzIHRoZSBkZWZpbmVzIGFjY29yZGluZyB0byB0aGVpciByZWFsIGZ1bmN0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgogICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Cgpjb21taXQgYTExYzBiODVkYzM2NjRiYjNjMWU3ODExMzcxMTg3MzBjOGY2MTlhYgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVN1biBNYXkgMjcgMTY6NTE6NDggMjAwNyArMDIwMAoKICAgIE1vdGlvbi1QUk86IEFkZCBMRUQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gV3JvYmVsIDx3cnJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgoKY29tbWl0IDdlYmI0NDc5YjA3ZmYyOTRlYjRkNzZlNDIwNzUzYTAzNDlmN2M5M2IKQXV0aG9yOiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KRGF0ZToJVGh1IE1heSAyNCAxMjoxMjo0NyAyMDA3ICswMjAwCgogICAgW1BBVENIXVtOQU5EXSBEZWZpbmUgdGhlIFZlbmRvciBJZCBmb3IgTWljcm9uIE5BTkQgRmxhc2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkNzU2ODk0NzIyYzg4OGQwOWE5ZmExZGY4MzIzNzUzNzcyZDNkY2NlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDI0IDA5OjQ5OjAwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBzbWFsbCA0MDVFWiBPQ00gaW5pdGlsaXphdGlvbiBidWcgaW4gc3RhcnQuUwoKICAgIEFzIHBvaW50ZWQgb3V0IGJ5IEJydWNlIEFkbGVyIDxicnVjZS5hZGxlckBhY20ub3JnPiB0aGlzIHBhdGNoCiAgICBmaXhlcyBhIHNtYWxsIGJ1ZyBpbiB0aGUgNDA1RVogT0NNIGluaXRpYWxpemF0aW9uLiBUaGFua3MgZm9yCiAgICBzcG90dGluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWQ0YTE3OTAxM2Q1OWE3NjQ0NjQ2MmUxZWIwYTk2OWZiYTYzZWI4MQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1heSAyNCAwODoyMjowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgQU1DQyBBY2FkaWEgc3VwcG9ydCBmb3IgYm9hcmQgcmV2aXNpb24gMS4xCgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBBY2FkaWEgKDQwNUVaKSBzdXBwb3J0IGZvciB0aGUgbmV3IDEuMSBib2FyZAogICAgcmV2aXNpb24uIEl0IGFsc28gYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIHZpYSB0aGUgNHh4IE5ERkMuCgogICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUganVtcGVyIEo3IG11c3QgYmUgaW4gcG9zaXRpb24gMi0zIGZvciB0aGlzCiAgICBOQU5EIHN1cHBvcnQuIFBvc2l0aW9uIDEtMiBpcyBmb3IgTkFORCBib290aW5nIG9ubHkuIE5BTkQgYm9vdGluZwogICAgc3VwcG9ydCB3aWxsIGZvbGxvdyBsYXRlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODIyZDU1MzY1YmI1NTdlMDg0ZDBlMzM2MjVhNmRlZGNjODY2MTEwYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMjMgMTQ6MDk6NDYgMjAwNyAtMDUwMAoKICAgIEFkZCBMSVNUXzg2eHggTUFLRUFMTCB0YXJnZXQgZm9yIFBvd2VyUEMgYnVpbGRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOWYwMDc3YWJkNjlmN2E3Yzc1NmE5MTViOTYxMDM3MzAyYmUzZTZmMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAyMiAxMjo0ODowOSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVc2UgZG8geyAuLi4gfSB3aGlsZSAoMCkgZm9yIENQUiAmIFNEUiBhY2Nlc3MgbWFjcm9zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZmM2RmYzEzOWE4MzhiMDg0MWMxNTFlZmUwMGFkNDdkYjIzNjZlNzkKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMjIgMTI6NDY6MTAgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogQWRkIDQwNSBzdXBwb3J0IHRvIDR4eCBOQU5EIGRyaXZlciBuZGZjLmMKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgNDA1IFBQQydzIHRvIHRoZSA0eHggTkFORCBkcml2ZXIKICAgIG5kZmMuYy4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIG5ldyBBTUNDIDQwNUVaLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxMDYwM2Q3Njc2NzQyNmJlODAzZGFkZDRmYjY4OGI5N2ViNjk0ODFjCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTWF5IDIxIDA3OjQxOjIyIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIGluIDQwNUVaIE9DTSBpbml0aWFsaXphdGlvbgoKICAgIEFzIHNwb3R0ZWQgYnkgQnJ1Y2UgQWRsZXIgdGhpcyBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBwcm9ibGVtCiAgICBmb3IgdGhlIDQwNUVaIE9DTS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2UzYjk1NjkwNmViYTllNGFkNzkzMTU4MWVjZWRhYWQxMGVjY2NlOApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTY6NDc6MDMgMjAwNyArMDEwMAoKICAgIFJlZHVjZSBsaW5lIGxlbmd0aHMgdG8gODAgY2hhcmFjdGVycyBtYXguCgpjb21taXQgOTNlZjQ1YzlkZGZkZDlmYzE3YzRlNzRiZDhlMmYyNDU2NTgwZWI3MgpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTQ6MzQ6MDcgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgMTQ0M2EzMTQ1N2Q2OGY3ZThmMGI5NDAzZTk4MzJlYzFlNzlkYzU5ZApBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CUZyaSBNYXkgMTggMTQ6MzM6MTEgMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgMjU1YTM1NzdjODQ4NzA2NDQxZGFlZTAxNzQ1NDNlZmUyMDVhNzdmOApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBNYXkgMTYgMTY6NTI6MTkgMjAwNyAtMDUwMAoKICAgIFJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3gKCiAgICBGb3IgYWxsIHByYWN0aWNhbCB1LWJvb3QgcHVycG9zZXMsIFRTRUNzIGRvbid0IGRpZmZlciB0aHJvdWdob3V0IHRoZQogICAgbXBjOFszNTZdeHggZmFtaWxpZXM7IHJlZHVjZSBDT05GSUdfTVBDOFlYWF9UU0VDeCB0byBDT05GSUdfVFNFQ3guCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3MDEyNGMyNjAyYWUyZDRjNWQzZGJhMDViNDgyZDkxNTQ4MjQyZGU4CkF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+CkRhdGU6CVdlZCBNYXkgMTYgMTQ6NDk6MTIgMjAwNyArMDIwMAoKICAgIEZpeCBjb21waWxlIHByb2JsZW0gY2F1c2UgbXkgTWljcm9ibGF6ZSBtZXJnZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgoKY29tbWl0IGFkYTQ2OTdkMDIzMGQ2ZGE1NTI4Njc3NzdmOThhNjdlYzNiYTI1NzkKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJV2VkIE1heSAxNiAxMzoyMzoxMCAyMDA3ICswMjAwCgogICAgW1BBVENIXSBSdW4gbmV3IHNlcXVvaWEgYm9hcmRzIHdpdGggYW4gRUJDIHNwZWVkIG9mIDgzTUh6CgogICAgQmVjYXVzZSB0aGUgU2VxdW9pYSBib2FyZCBkb2VzIG5vdCBib290IHdpdGggYW4gRUJDIGZhc3RlciB0aGFuIDY2TUh6LAogICAgdGhlIGNsb2NrIGRpdmlkZXIgYXJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLgoKICAgIFRoaXMgYWxsb3dzIGZvciBtYXhpbXVtIGNsb2NraW5nIHNwZWVkcyAgdG8gYmUgYWNoaWV2ZWQgb24gbmV3ZXIgYm9hcmRzLgogICAgU2VxdW9pYSBib2FyZHMgd2l0aCA2NjYuNjYgTUh6IHByb2Nlc3NvcnMgcmVxdWlyZSB0aGF0IHRoZSBFQkMgZGl2aWRlcgogICAgYmUgc2V0IHRvIDMgaW4gb3JkZXIgdG8gc3RhcnQgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzIGF0IGEgc2xvd2VyIEVCQwogICAgc3BlZWQuIEFmdGVyIHRoZSBpbml0aWFsIGJvb3QgcHJvY2VzcywgdGhlIGRpdmlkZXIgY2FuIGJlIHNldCBiYWNrIHRvIDIsCiAgICB3aGljaCB3aWxsIGNhdXNlIHRoZSBib2FyZHMgdG8gcnVuIGF0IDgzLjMzM01Iei4gVGhpcyBpcyBiYWNrd2FyZAogICAgY29tcGF0aWJsZSB3aXRoIGJvYXJkcyB3aXRoIDUzMy4zMyBNSHogcHJvY2Vzc29ycywgYXMgdGhlc2UgYm9hcmRzIHdpbGwKICAgIGFscmVhZHkgYmUgc2V0IHdpdGggYW4gRUJDIGRpdmlkZXIgb2YgMi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KCmNvbW1pdCBhNzY3NmVhNzczMmYzYzU5NjgwNTA3OWZlZDdlNWM5ZmFjNjUyY2ZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNiAwMToxNjo1MyAyMDA3ICswMjAwCgogICAgTWlub3IgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBkNjJmNjRjYzIzYTk0MGVhZmU3MTJjNzc2YjMyNDllNDE2MDc1M2QxCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIE1heSAxNiAwMDoxMzozMyAyMDA3ICswMjAwCgogICAgQ29kaW5nIFN0eWxlIENsZWFudXAsIG5ldyBDSEFOR0VMT0cKCmNvbW1pdCAzMTYyZWI4MzY5MDNjOGIyNDdmZGM3NDcwZGQzOWJmYTY5OTZmNDk1CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVHVlIE1heSAxNSAyMzozODowNSAyMDA3ICswMjAwCgogICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCgpjb21taXQgNjZkOWRiZWMxY2MyN2Q2Mzk4ZWU2Y2Y4NDYzOWRiZTE0OTcxMjUxZQpBdXRob3I6IG11c2h0YXEga2hhbiA8bXVzaHRhcV9rQHByb2NzeXMuY29tPgpEYXRlOglGcmkgQXByIDIwIDE0OjIzOjAyIDIwMDcgKzA1MzAKCiAgICBBZGQgZHJpdmVyIGZvciBTLUFUQS1jb250cm9sbGVyIG9uIEludGVsIHByb2Nlc3NvcnMgd2l0aCBTb3V0aAogICAgQnJpZGdlLCBJQ0gtNSwgSUNILTYgYW5kIElDSC03LgoKICAgIEltcGxlbWVudGF0aW9uOgoKICAgIDEuIENvZGUgaXMgZGl2aWRlZCBpbiB0byB0d28gZmlsZXMuIEFsbCBmdW5jdGlvbnMsIHdoaWNoIGFyZQogICAgICAgY29udHJvbGxlciBzcGVjaWZpYyBhcmUga2VwdCBpbiAiZHJpdmVycy9hdGFfcGlpeC5jIiBmaWxlIGFuZAogICAgICAgZnVuY3Rpb25zLCB3aGljaCBhcmUgbm90IGNvbnRyb2xsZXIgc3BlY2lmaWMsIGFyZSBrZXB0IGluCiAgICAgICAiY29tbW9uL2NtZF9zYXRhLmMiIGZpbGUuCgogICAgMi4gUmVhZGluZyBhbmQgV3JpdGluZyBmcm9tIHRoZSBTLUFUQSBkcml2ZSBpcyBkb25lIHVzaW5nIFBJTyBtZXRob2QuCgogICAgMy4gRHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGZvciA0OC1iaXQgYWRkcmVzc2luZyBieSBkZWZpbmluZyBtYWNybwogICAgICAgQ09ORklHX0xCQTQ4LCBpZiB0aGlzIG1hY3JvIGlzIG5vdCBkZWZpbmVkIGRyaXZlciB1c2VzIHRoZSAyOC1iaXQKICAgICAgIGFkZHJlc3NpbmcuCgogICAgNC4gUy1BVEEgcmVhZCBmdW5jdGlvbiBpcyBob29rZWQgdG8gdGhlIEZpbGUgc3lzdGVtLCBjb21tYW5kcyBsaWtlCiAgICAgICBleHQybHMgYW5kIGV4dDJsb2FkIGZpbGUgY2FuIGJlIHVzZWQuIFRoaXMgaGFzIGJlZW4gdGVzdGVkLgoKICAgIDUuIFUtQm9vdCBjb21tYW5kICJTQVRBX2luaXQiIGlzIGFkZGVkLCB3aGljaCBpbml0aWFsaXplcyB0aGUgUy1BVEEKICAgICAgIGNvbnRyb2xsZXIgYW5kIGlkZW50aWZpZXMgdGhlIFMtQVRBIGRyaXZlcyBjb25uZWN0ZWQgdG8gaXQuCgogICAgNi4gVS1Cb290IGNvbW1hbmQgInNhdGEiIGlzIGFkZGVkLCB3aGljaCBpcyB1c2VkIHRvIHJlYWQvd3JpdGUsIHByaW50CiAgICAgICBwYXJ0aXRpb24gdGFibGUgYW5kIGdldCBpbmZvIGFib3V0IHRoZSBkcml2ZXMgcHJlc2VudC4gVGhpcyBJIGhhdmUKICAgICAgIGltcGxlbWVudGVkIGluIHNhbWUgd2F5IGFzICJpZGUiIGNvbW1hbmQgaXMgaW1wbGVtZW50ZWQgaW4gVS1Cb290LgoKICAgIDcuIFRoaXMgZHJpdmVyIGlzIGZvciBTLUFUQSBpbiBuYXRpdmUgbW9kZS4KCiAgICA4LiBUaGlzIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBOYXRpdmUgY29tbWFuZCBxdWV1aW5nIGFuZAogICAgICAgSG90LXBsdWdnaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IE11c2h0YXEgS2hhbiA8bXVzaHRhcV9rQHByb2NzeXMuY29tPgoKY29tbWl0IDY0NGU2ZmI0ZWI4YmU5MGVhMDRiYTM0YjY0M2E4YmYwMTlkNjgwZTAKQXV0aG9yOiBtdXNodGFxIGtoYW4gPG11c2h0YXFfa0Bwcm9jc3lzLmNvbT4KRGF0ZToJTW9uIEFwciAzMCAxNTo1NzoyMiAyMDA3ICswNTMwCgogICAgRml4ZXMgYnVnIGNsZWFyaW5nIHRoZSBic3Mgc2VjdGlvbiBmb3IgaTM4NgoKICAgIEhpLAogICAgVGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvZGUgb2YgY2xlYXJpbmcgdGhlIGJzcyBzZWN0aW9uIGZvciBwcm9jZXNzb3IKICAgIGkzODYuKEZpbGU6IGNwdS9pMzg2L3N0YXJ0LlMpCiAgICBJbiB0aGUgY29kZSwgYnNzX3N0YXJ0IGFkZHIgKHN0YXJ0aW5nIGFkZHIgb2YgYnNzIHNlY3Rpb24pIGlzIHB1dCBpbnRvCiAgICB0aGUgcmVnaXN0ZXIgJWVheCwgYnV0IHRoZSBjb2RlIHdoaWNoIGNsZWFycyB0aGUgYnNzIHNlY3Rpb24gcmVmZXJzIHRvCiAgICB0aGUgYWRkciBwb2ludGVkIGJ5ICVlZGkuCgogICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ1ZyBieSBwdXR0aW5nIGJzc19zdGFydCBpbnRvICVlZGkgcmVnaXN0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogTXVzaHRhcSBLaGFuIDxtdXNodGFxX2tAcHJvY3N5cy5jb20+Cgpjb21taXQgYzMyNDNjZjdiNDkwMDU3Mjc3ZDYxYWNmZmU0YWQwOTQ2ZjllYjRhNApBdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+CkRhdGU6CU1vbiBBcHIgMzAgMTY6NDc6MjggMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBCQ001NDY0IFF1YWQgUGh5CgogICAgQWRkZWQgc3VwcG9ydCBmb3IgQnJvYWRjb20ncyBCQ001NDY0IFF1YWQgUGh5CgogICAgU2lnbmVkLW9mZi1ieTogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KCmNvbW1pdCAxYjMwNWJkYzc1NGM4NDY4ZTFkNWQ4NThmNWRjZjhhN2EwYTRiYjdhCkF1dGhvcjogWmFuZyBSb3ktcjYxOTExIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSA5IDA4OjEwOjU3IDIwMDcgKzA4MDAKCiAgICBTZWFyY2ggdGhlIGV4Y2VwdGlvbiB0YWJsZSB3aXRoIGxpbmVhciBhbGdvcml0aG0KCiAgICBTZWFyY2ggdGhlIGV4Y2VwdGlvbiB0YWJsZSB3aXRoIGxpbmVhciBhbGdvcml0aG0gaW5zdGVhZCBvZgogICAgYmlzZWN0aW5nIGFsZ29yaXRobS4KICAgIEJlY2F1c2UgdGhlIGV4Y2VwdGlvbiB0YWJsZSBtaWdodCBiZSB1bnNvcnRlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNWRmYWE1MGViODE5Njg2YmZiYTE5MjdlOGM1YjhhNzBhNGQ2NWZkMwpBdXRob3I6IEF1YnJleS5MaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXkgMTQgMTE6NDc6MzUgMjAwNyArMDgwMAoKICAgIEZpeCBjb21waWxhdGlvbiBpc3N1ZXMgb24gTUFDT1NYCgogICAgU2luZ2VkLW9mZi1ieTogTWFyYyBIb2ZmbWFuIDxNYXJjLkhvZmZtYW5AYW5hbG9nLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+Cgpjb21taXQgNTZmZDcxNjI5ODVjNDEyMzE3YmJmNzYzYTIyNWZiYTIzYzY0ZmQzMQpBdXRob3I6IFN0ZXBoZW4gV2lsbGlhbXMgPHN0ZXZlQGljYXJ1cy5jb20+CkRhdGU6CVR1ZSBNYXkgMTUgMDc6NTU6NDIgMjAwNyAtMDcwMAoKICAgIEZpeCBmb3IgY29tcGlsZSBvZiBKU0UgdGFyZ2V0CgogICAgVGhlIGF0dGFjaGVkIHBhdGNoIGZpeGVzIHRoZSBjb21waWxlIG9mIHRoZSBKU0UgYm9hcmQgaW4gdGhlCiAgICBkZW54IGdpdCBhcyBvZiAxNCBtYXkgMjAwNy4gSXQgaXMgYW4gZXh0cmVtZWx5IHNpbXBsZSBwYXRjaCwKICAgIGl0IGp1c3QgYWRkcyB0aGUgbWlzc2luZyBkZWZpbmUgb2YgQ0ZHX1NZU1RFTUFDRV9XSURUSC4KCiAgICAgRml4IHRvIGNvbXBpbGUgSlNFIGFnYWluc3QgMjAwNzA1MTQgZ2l0IG9mIHUtYm9vdAoKY29tbWl0IDY5ZGYzYzRkYTBjOTMwMTdjY2ViMjVhMzY2ZTc5NDU3MGJkMGVkOTgKQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAcmFodXRlLihub25lKT4KRGF0ZToJU3VuIE1heSAxMyAyMTowMTowMyAyMDA3ICswOTAwCgogICAgc2g6IE1TNzc1MFNFIHN1cHBvcnQuCgogICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIaXRhY2hpIE1TNzc1MFNFLgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCAwYjEzNWNmYzJlNTI0ZGMyNDliNzUwNTdiNTVkZDRjYzA5ODQyZTI3CkF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QHJhaHV0ZS4obm9uZSk+CkRhdGU6CVN1biBNYXkgMTMgMjA6NTg6MDAgMjAwNyArMDkwMAoKICAgIHNoOiBGaXJzdCBzdXBwb3J0IGNvZGUgb2YgU3VwZXJILgoKICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KCmNvbW1pdCA2MTkzNjY2N2U4NmEyNTBhZTEyZmQyZGMxODlkMzU4OGYwYTU5ZTBiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglGcmkgTWF5IDExIDEyOjAxOjQ5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBtdGNwci9tZmNwciBhY2Nlc3MgbWFjcm9zCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM0M2M0OGJkODQ2MDZjNDAyNWM4YTdjNzI2M2ZkYTQ2NWQ2ZTI4NGMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXkgMTEgMTI6MDE6MDYgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogU2V0IGJkLT5iaV9wY2lfYnVzZnJlcSBvbiA0NDBFUHgvR1J4IHRvbwoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3ZDk4YmE3NzBhN2VhZWZhMjljZTkyN2YzMWEwOTU2ZGY4NWJmNjUwCkF1dGhvcjogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KRGF0ZToJVGh1IE1heSAxMCAxNjo1NTo1MiAyMDA3ICswMjAwCgogICAgW01vdGlvbi1QUk9dIEFkZCBNVEQgYW5kIEpGRlMyIHN1cHBvcnQsIGFsc28gYWRkIGRlZmF1bHQgcGFydGl0aW9uCiAgICBkZWZpbml0aW9uLgoKY29tbWl0IDY1ZmI2YTY3NmU4MjFmOTU3MGEyYTM3NmRjMjA0YmY2MTFjZTVmODEKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDI6NDQgMjAwNyArMDEwMAoKICAgIEFkZCB0aGUgYm9hcmQgZGlyZWN0b3J5IGZvciBTTU40MgoKY29tbWl0IDE2MDEzMWJmOTY1Nzg1NDE5NjI2ZGY2YzM4ODcyOWZlMGI1OTc5OTIKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDE6NTggMjAwNyArMDEwMAoKICAgIEFkZCB0aGUgZmlsZXMgZm9yIHRoZSBTTU40MiBib2FyZAoKY29tbWl0IDVjNmQyYjVhNTAwZjhjNDk2NzBkZTg5MTAxNTBiNzhhNDFmNzgxZmMKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTE6NDA6MzQgMjAwNyArMDEwMAoKICAgIFJlbW92ZSB0aGUgZGVsZXRlZCBmaWxlcyBmb3IgdGhlIFNNTjQyIHBhdGNoCgpjb21taXQgYjBkOGY1YmYwZDIxNWFkYzk0MjRjYjIyOGIyNDg0ZGJmMDdmNzc2MQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVdlZCBNYXkgOSAxMTozNzo1NiAyMDA3ICswMTAwCgogICAgTmV3IGJvYXJkIFNNTjQyIGJyYW5jaAoKY29tbWl0IDI5ZjNiZTBjYWYwNzk5Y2E2Yjg5ZGZkOTgyNGMxNTYxOWE1MDAwMGYKQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgpEYXRlOglXZWQgTWF5IDkgMTA6MjQ6MzggMjAwNyArMDEwMAoKICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCgpjb21taXQgYjg0Mjg5YjU5NTczMWU4ODUxZGY0NmU4OTM4NDVjYzEzMjJjOWI5YgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgOCAxNDoxNzowNyAyMDA3IC0wNTAwCgogICAgODY0MWhwY246IEZpeCBNYWtlZmlsZSBhZnRlciBtb3ZpbmcgcGl4aXMgdG8gYm9hcmQvZnJlZXNjYWxlLgoKICAgIFRoZSBPQkpUUkVFICE9IFNSQ1RSRUUgYnVpbGQgc2NlbmFyaW8gd2FzIGJyb2tlbi4KICAgIFRoaXMgZml4ZXMgaXQuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZTY5ZjY2YzZlYmU4MmJiYmQxZGE3NjZiYzRlZGE0MGVjN2VlNWFmMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIE1heSA4IDE1OjU3OjQzIDIwMDcgKzAyMDAKCiAgICBhZGQ6IHJlYWRpbmcgc3BlY2lhbCBwdXJwb3NlIHJlZ2lzdGVycwoKY29tbWl0IDFhNTBmMTY0YmViMDY1ZjM2MGZiZGRiNzYwMjk2MDdkNmIwOTk2OTgKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVR1ZSBNYXkgOCAxNDo1Mjo1MiAyMDA3ICswMjAwCgogICAgYWRkOiBNaWNyb2JsYXplIFY1IGV4Y2VwdGlvbiBoYW5kbGluZwoKY29tbWl0IGFiODc0ZDUwNDdlNWQzMGRiYzFlNTE3ZmYyNjA4M2VmZmZhOThlY2IKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVR1ZSBNYXkgOCAxNDozOToxMSAyMDA3ICswMjAwCgogICAgYWRkOiBGU0wgY29udHJvbCByZWFkIGFuZCB3cml0ZQoKY29tbWl0IGRlMWRlMDJhN2NiZjA1ZTZiNjNlMGQ4ZmZjNjI0ZjEyNDkzZjZiYTMKQXV0aG9yOiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgTWF5IDggMTM6MDU6NDQgMjAwNyArMDIwMAoKICAgIFtNb3Rpb24tUFJPXSBBZGQgc3VwcG9ydCBmb3IgSTJDLCBFRVBST00gYW5kIFJUQy4KCmNvbW1pdCBmYTVjMmJhMTIzYjFiZjg4NDU1YmZjMjFkYjVlNzg2Y2EwNDUwMjlkCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1heSA4IDEwOjIzOjU2IDIwMDcgKzAyMDAKCiAgICBbTW90aW9uLVBST10gQWRkIEFUQSBzdXBwb3J0LiBBZGQgQ0YtYm9vdGluZyBjb21tYW5kcyB0byB0aGUgZGVmYXVsdAogICAgZW52aXJvbm1lbnQuCgpjb21taXQgMDYyNDFkNTBhM2FiMWIyMGEwYjA4YmFlZWFmZmNhYTIzYWU0YjgzOQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBNYXkgOCAwOTozOToxMiAyMDA3ICswMjAwCgogICAgW01vdGlvbi1QUk9dIENoYW5nZSBJUEIgY2xvY2sgZnJlcXVlbmN5IGZyb20gNTBNSHogdG8gMTAwTUh6LiBUaGlzCiAgICBlbGltaW5hdGVzIG5ldHdvcmtpbmcgcHJvYmxlbXMgaW4gTGludXggKHRpbWVvdXRzKS4KCmNvbW1pdCAxZjEzNjljMzRiNjI5YmU5NDcwMjY4NGQ0MWQzZmRkZjBmNjE5M2U3CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIE1heSA4IDA5OjIxOjU3IDIwMDcgKzAyMDAKCiAgICBbTW90aW9uLVBST10gRW5hYmxlIEZsYXQgRGV2aWNlIFRyZWUgc3VwcG9ydCBhbmQgbW9kaWZ5IGRlZmF1bHQgZW52aXJvbm1lbnQKICAgIHRvIGFsbG93IGJvb3Rpbmcgb2YgRkRULWV4cGVjdGluZyBrZXJuZWxzLgoKY29tbWl0IGZiMDVmNmRhMzVlYTFjMTVjNTUzYWJlNmYyM2Y2NTZiZjE4ZGM1ZGIKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAyMzo1ODozMSAyMDA3ICswMjAwCgogICAgbmV3OiBVU0VfTVNSX0lOVFIgc3VwcG9ydAoKY29tbWl0IDAwODg2MWEyZjNlZjJjMDYyNzQ0ZDczMzc4N2M3ZTUzMGExYjg3NjEKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglNb24gTWF5IDcgMjI6MzY6MTUgMjAwNyArMDIwMAoKICAgIFtNUEM1eHh4XSBUaGVyZSBhcmUgbmV0d29ya2luZyBwcm9ibGVtcyBvbiB0aGUgTW90aW9uLVBSTyBib2FyZCB3aXRoCiAgICBjdXJyZW50IFBIWSBpbml0YWxpemF0aW9uIGNvZGUgKHRmdHAgdGltZW91dHMgYWxsIHRoZSB0aW1lKS4gVGhpcyBjb21taXQKICAgIHRlbXBvcmFyaWx5IGRpc2FibGVzIFBIWSBpbml0YWxpemF0aW9uIHNlcXVlbmNlIHRvIG1ha2UgdGhlIG5ldHdvcmtpbmcKICAgIG9wZXJhdGlvbmFsLCB1bnRpbCBhIGZpeCBpcyBmb3VuZC4KCmNvbW1pdCBhYmNhOTAxODY5YzM3NjBiNmM1ZmVjYjgyNWRiNmMxZDkxYTc4YTkzCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA3IDIyOjEwOjM2IDIwMDcgKzAyMDAKCiAgICBHZXQgcmlkIG9mIGR1cGxpY2F0ZWQgZmlsZSAoc2VlIGluY2x1ZGUvY29uZmlncy9zYmM4NTYwLmggaW5zdGVhZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDIwN2I3YjJjOWQ5NzUyZTBmNjQ3OGMzMGMyOWI3MDg3ZjZlNmNiYjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglNb24gTWF5IDcgMjI6MDc6MDggMjAwNyArMDIwMAoKICAgIEdldCByaWQgb2YgZHVwbGljYXRlZCBmaWxlIChzZWUgZG9jL1JFQURNRS5TQkM4NTYwIGluc3RlYWQpCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCBhN2JhYzdlOWI1N2JhOTQ4MDUxYmViMTllYzViZTNhNzVjZTc1MzgzCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6NDM6MTAgMjAwNyArMDIwMAoKICAgIGZpeDogcmVhZCBhbmQgd3JpdGUgTVNSIC0gcmVwYWlyIG51bWJlciBvZiBwYXJhbWV0ZXJzCgpjb21taXQgMTkzYjRhM2JiM2FjYWRkZjc5OGRhOGRlMGRhMDVkOTRiYTg3NzRlZQpBdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgpEYXRlOglNb24gTWF5IDcgMTk6NDI6NDkgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gcHBjNHh4OiBGaXggQ09ORklHX1NZU19DTEtfRlJFUSBkZWZpbml0aW9uIGluIFNlcXVvaWEgY29uZmlnIGZpbGUKCiAgICBBICczJyBnb3QgY3V0IG9mZiBpbiB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbGFzdCBwYXRjaCB0byBhdXRvbWF0aWNhbGx5CiAgICBjaGFuZ2UgdGhlIGNsb2NrIHNwZWVkIG9mIHRoZSBzeXN0ZW0gY2xvY2sgb24gc2VxdW9pYSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxOWJmMWZiYWQ3ZjE5ZDVhMTIwYmU5YjFkYWYxMzZlMDUyZmNhYjM5CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6MzM6NTEgMjAwNyArMDIwMAoKICAgIG5ldzogZnNsIGludGVycnVwdCBzdXBwb3J0CiAgICBGU0xfSGFzX2RhdGEgaXMgY29ubmVjdGVkIHRvIElOVEMuCgpjb21taXQgNzkyMDMyYmFhN2Q2MjVlMzRjOTgxYWI2ZGY1MjE5MTFiZDhkYzg2MQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE1heSA3IDE5OjMwOjEyIDIwMDcgKzAyMDAKCiAgICBmaXg6IGludGVycnVwdCBoYW5kbGVyCiAgICByZW1vdmUgYXNtIGNvZGUKCmNvbW1pdCBmM2YwMDFhMzQxZWYxODVkMGYxMzg0MWJlNWI1ZGMzMzk1YWFjYzMxCkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglNb24gTWF5IDcgMTk6MjU6MDggMjAwNyArMDIwMAoKICAgIGZpeDogcmVtb3ZlIGFzbSBjb2RlCgpjb21taXQgZmI3YzJkYmVmMDJjOWY2ZjhkN2IwNGVjNGMyYmZiOTE0MThiOWMwMQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJTW9uIE1heSA3IDE5OjEyOjQzIDIwMDcgKzAyMDAKCiAgICBmaXg6IGNsZWFuIGludGVycnVwdAoKY29tbWl0IDQyZWZlZDYxMzBjOGZjZjdkYTg4MTM4NWI1NDI3MDY1ZDI4MDE3NTcKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAxNzoyMjoyNSAyMDA3ICswMjAwCgogICAgZml4OiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgbXVsdGlwbGUgc291cmNlcwoKY29tbWl0IDQ4ZmJkM2E0Y2RhYmJlYmMxZGViZDdlZWQ3M2MwMGMyY2FmOTE0ZjYKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXkgNyAxNzoxMTowOSAyMDA3ICswMjAwCgogICAgbmV3OiBhZGQgd3JpdGluZyB0byBtc3IgcmVnaXN0ZXIKCmNvbW1pdCAzYTYxOWRkN2JlZDAzZThiNGQyMmEzOTExZjkwZmQxMmFmNTM3NmMyCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE1heSA3IDE2OjQzOjU2IDIwMDcgKzAyMDAKCiAgICBGaXggYW4gYW5jaWVudCBDSEFOR0VMT0cgY29uZmxpY3QKCmNvbW1pdCBhYzRjZDU5ZDU5YzliZjNmODljYjdhMzQ0YWJmODE4NGQ2NzhmNTYyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1heSA1IDA4OjEyOjMwIDIwMDcgKzAyMDAKCiAgICA1eHh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYTlkODdlMjcwN2RjYjI0OWY2YmI3ZjdmZjdlMDBhY2Q4Y2RhOWZkMgpBdXRob3I6IEdyemVnb3J6IFdpYW5lY2tpIDxncnplZ29yei53aWFuZWNraUBnbWFpbC5jb20+CkRhdGU6CVN1biBBcHIgMjkgMTQ6MDE6NTQgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gVXNlIFBWUiB0byBkaXN0aW5ndWlzaCBNUEM1MjAwQiBmcm9tIE1QQzUyMDAgaW4gYm9vdCBtZXNzYWdlCgogICAgTVBDNTIwMEIgc3lzdGVtcyBhcmUgaW5jb3JyZWN0bHkgcmVwb3J0ZWQgYXMgTVBDNTIwMCBpbiBVLUJvb3Qgc3RhcnQtdXAKICAgIG1lc3NhZ2UuIFVzZSBQVlIgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvIHZhcmlhbnRzLCBhbmQgcHJpbnQgcHJvcGVyIENQVQogICAgaW5mb3JtYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogV2lhbmVja2kgPGdyemVnb3J6LndpYW5lY2tpQGdtYWlsLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNGVjNWJkNTVlZDFmZmE5MWE3NzRhZjI5ODc2OTYyMWY0ZmJiMThjMQpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIEFwciAyNSAxNjowMToyNiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBzaW1wbGlmeSBzaWxlbnQgY29uc29sZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjc1OThhNDNmMmI0MjFhNzEzZDgxMzVlOThhNDJjMzdkOWViOWRmMApBdXRob3I6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+CkRhdGU6CU1vbiBBcHIgMjMgMTU6MzA6MzkgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gQXZvaWQgYXNzaWduaW5nIFBDSSByZXNvdXJjZXMgZnJvbSB6ZXJvIGFkZHJlc3MKCiAgICBJZiBhIFBDSSBJREUgY2FyZCBoYXBwZW5zIHRvIGdldCBhIHplcm8gYWRkcmVzcyBhc3NpZ25lZCB0byBpdCwgdGhlIExpbnV4IElERQogICAgY29yZSBjb21wbGFpbnMgYW5kIElERSBkcml2ZXJzIGZhaWxzIHRvIHdvcmsuICBBbHNvLCBhc3NpZ25pbmcgemVybyB0byBhIEJBUgogICAgd2FzIGlsbGVnYWwgYWNjb3JkaW5nIHRvIFBDSSAyLjEgKHRoZSBsYXRlciByZXZpc2lvbnMgc2VlbSB0byBoYXZlIGV4Y2x1ZGVkIHRoZQogICAgc2VudGVuY2UgYWJvdXQgIjAiIGJlaW5nIGNvbnNpZGVyZWQgYW4gaW52YWxpZCBhZGRyZXNzKSAtLSBzbywgdXNlIGEgcmVhc29uYWJsZQogICAgc3RhcnRpbmcgdmFsdWUgb2YgMHgxMDAwICh0aGF0J3Mgd2hhdCB0aGUgbW9zdCBMaW51eCBhcmNocyBhcmUgdXNpbmcpLgoKICAgIEFsdGVybmF0aXZlbHksIG9uZSBtaWdodCBoYXZlIGZpeGVkIHRoZSBjYWxscyB0byBwY2lfc2V0X3JlZ2lvbigpIGluZGl2aWR1YWxseQogICAgKHNvbWUgY29kZSBldmVuIHNlZW1zIHRvIGhhdmUgdGFrZW4gY2FyZSBvZiB0aGlzIGlzc3VlKSBidXQgdGhhdCB3b3VsZCBoYXZlCiAgICBiZWVuIGEgbG90IG1vcmUgd29yay4gOi0pCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWZmZDQ1MWFmZWIwOGU1YmU3ZGRhZTY4MDQ4N2VjOTYyYjJiY2EyNQpBdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgpEYXRlOglNb24gQXByIDIzIDE0OjAwOjExIDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIHNldGVudiguLi4pIGNhbiBkZWxldGUgZW52aXJvbm1lbnRhbHZhcmlhYmxlcwoKICAgIHVwZGF0ZSBzZXRlbnYoKSBmdW5jdGlvbiBzbyB0aGF0IGVudGVyaW5nIGEgTlVMTCB2YWx1ZSBmb3IgdGhlCiAgICB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgZGVsZXRlIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViZDBhMGFlMDVhNDQ3NjljNGUyNzQ1OGFkNGU5ZjM0MzgyNTA0NDMKQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkRhdGU6CU1vbiBBcHIgMjMgMTM6NTQ6MjQgMjAwNyArMDIwMAoKICAgIFtwYXRjaF0gdXNlIHVuc2lnbmVkIGNoYXIgaW4gc21jOTExMTEgZHJpdmVyIGZvciBtYWMKCiAgICB0aGUgdl9tYWMgdmFyaWFibGUgaW4gdGhlIHNtYzkxMTExIGRyaXZlciBpcyBkZWNsYXJlZCBhcyBhIHNpZ25lZCBjaGFyIC4uLgogICAgdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbiBvbmUgb2YgdGhlIGJ5dGVzIGluIHRoZSBNQUMgaXMgInNpZ25lZCIgbGlrZSAweEUwCiAgICBiZWNhdXNlIHdoZW4gaXQgZ2V0cyBwcmludGVkIG91dCwgeW91IGdldCBhIGRpc3BsYXkgbGlrZToKICAgIDB4RkZGRkZGRTAgYW5kIHRoYXQncyBubyBnb29kCgogICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgoKY29tbWl0IGZmYzUwZjliYjE5NDM0M2M2MzAzNTE3YTUxNzcwODQ1N2E1ZWI2YjgKQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CkRhdGU6CVNhdCBNYXkgNSAxODo1NDo0MiAyMDA3ICswMjAwCgogICAgbmV3OiBGU0wgYW5kIE1TUiBzdXBwb3J0ICMyCgpjb21taXQgZjdlMmUwZWIwNjY4MTM2MzA1Zjc4YmI5YzIxYmU3OWI0OGEzNDI0NwpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IE1heSA1IDE4OjI3OjE2IDIwMDcgKzAyMDAKCiAgICBuZXc6IEZTTCBhbmQgTVNSIHN1cHBvcnQKCmNvbW1pdCAyZjE1Mjc4YzJlYjkxMWM2NjhiNGZlNTYyMTMwYjc4Y2Y1NTRkMTM5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE4OjIzOjExIDIwMDcgKzAyMDAKCiAgICBDb2Rpbmcgc3R5bGtlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA4ODVlYzg5YjY0OGE4OTlhMmYzMjM5M2ZkM2ZmZDlmNzIzNGM0NDAyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE4OjA1OjAyIDIwMDcgKzAyMDAKCiAgICBBZGQgU1RYIEdQMyBTU0EgYm9hcmQgdG8gTUFLRUFMTCBzY3JpcHQ7IHVwZGF0ZSBDSEFOR0VMT0cuCgogICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1NDk5NjQ1YjNmZTE3YTU0OGFmOWRmYzQ3OWNhNmUyNDU1ZjE3OWEyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDE3OjE1OjUwIDIwMDcgKzAyMDAKCiAgICBNYWtlICJmaWxlIiBjb21tYW5kIGhhcHB5IHdpdGggc29tZSBjb25maWcubWsgZmlsZXM7IHVwZGF0ZSBDSEFOR0VMT0cKCmNvbW1pdCBlM2I4Yzc4YmMyNDg5YzI3YWUwMjA5ODZlZjBlYWNhNjg0ODY2Y2VmCkF1dGhvcjogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CkRhdGU6CVNhdCBNYXkgNSAwODozMjoxNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBEZXRlY3QgaWYgdGhlIHN5c2NsayBvbiBTZXF1b2lhIGlzIDMzIG9yIDMzLjMzMyBNSHoKCiAgICBUaGUgQU1DQyBTZWNxdW9pYSBib2FyZCBoYXMgYmVlbiBjaGFuZ2VkIGluIGEgbmV3IHJldmlzaW9uIGZyb20gdXNpbmcgYQogICAgMzMuMDAwIE1IeiBjbG9jayB0byBhIDMzLjMzMyBNSHogc3lzdGVtIGNsb2NrLiBBIGJpdCBpbiB0aGUgQ1BMRAogICAgaW5kaWNhdGVzIHRoZSBkaWZmZXJlbmNlLiBUaGlzIHBhdGNoIHJlYWRzIHRoYXQgYml0IGFuZCB1c2VzIHRoZSBjb3JyZWN0CiAgICBjbG9jayBzcGVlZCBmb3IgdGhlIGJvYXJkLiBUaGlzIGNvZGUgaXMgYmFja3dhcmQgY29tcGF0YWJsZSB3aWxsIGFsbAogICAgcHJpb3IgYm9hcmRzLiBBbGwgcHJpb3IgYm9hcmRzIHdpbGwgYmUgcmVhZCBhcyAzMy4wMDAuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjU0NGZmNjY1NmZjYTI2M2VkMWViZTM5ODk5YjZkOTVkYTY3YzhiOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1heSA1IDA4OjI5OjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFNlcXVvaWE6IFJlbW92ZSBjcHUvcHBjNHh4L3NwZWVkLmMgZnJvbSBOQU5EIGJvb3RpbmcKCiAgICBVc2luZyBjcHUvcHBjNHh4L3NwZWVkLmMgdG8gY2FsY3VsYXRlIHRoZSBidXMgZnJlcXVlbmN5IGlzIHRvbyBiaWcKICAgIGZvciB0aGUgNGsgTkFORCBib290IGltYWdlIHNvIGRlZmluZSBidXNfZnJlcXVlbmN5IHRvIDEzM01IeiBoZXJlCiAgICB3aGljaCBpcyBzYXZlIGZvciB0aGUgcmVmcmVzaCBjb3VudGVyIHNldHVwLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZjU1MGFiOTc2NDA1MzAwZjViMDdiZjI4OTA4MDA4NDBkMGFhMDVmCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IE1heSA1IDA4OjEyOjMwIDIwMDcgKzAyMDAKCiAgICA1eHh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgYTc5ODg2NTkwNTkzYmExZDY2N2M4NDBjYWE0OTQwYzYxNjM5ZjE4ZgpBdXRob3I6IFRob21hcyBLbm9ibG9jaCA8a25vYmxvY2hAc2llbWVucy5jb20+CkRhdGU6CVNhdCBNYXkgNSAwNzowNDo0MiAyMDA3ICswMjAwCgogICAgTkFORDogV3JvbmcgY2FsY3VsYXRpb24gb2YgcGFnZSBudW1iZXIgaW4gbmFuZF9ibG9ja19iYWQoKQoKICAgIEluIGNhc2UgdGhhdCB0aGVyZSBpcyBubyBtZW1vcnkgYmFzZWQgYmFkIGJsb2NrIHRhYmxlIGF2YWlsYWJsZSB0aGUKICAgIGZ1bmN0aW9uIG5hbmRfYmxvY2tfY2hlY2tiYWQoKSBpbiBkcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jIHdpbGwgY2FsbAogICAgbmFuZF9ibG9ja19iYWQoKSBkaXJlY3RseS4gV2hlbiBwYXJhbWV0ZXIgJ2dldGNoaXAnIGlzIHNldCB0byB6ZXJvLAogICAgbmFuZF9ibG9ja19iYWQoKSB3aWxsIG5vdCByaWdodCBzaGlmdCB0aGUgb2Zmc2V0IHRvIGNhbGN1bGF0ZSB0aGUKICAgIGNvcnJlY3QgcGFnZSBudW1iZXIuCgogICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtub2Jsb2NoIDxrbm9ibG9jaEBzaWVtZW5zLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5ODc3ZDdkY2QxZWViZTYxYWE1ZDhiOGZmZTljMDQ4ZWE0MjZlNmY2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIE1heSA0IDEwOjAyOjMzIDIwMDcgKzAyMDAKCiAgICBGaXggaW5pdHJkIGxlbmd0aCBjb3JydXB0aW9uIGluIGJvb3RtIGNvbW1hbmQuCgogICAgV2hlbiB1c2luZyBGRFQgSW1hZ2VzLCB0aGUgbGVuZ3RoIG9mIGFuIGluaXRhbCByYW1kaXNrIHdhcwogICAgb3ZlcndyaXR0ZW4gKGJ1ZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4N2E0NDljOCwgMjIgQXVnIDIwMDYpLgoKICAgIFBhdGNoZXMgYnkgVGltdXIgVGFiaSAmIEpvaG5zIERhbmllbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDA2OGFhYjY2MGJjMzkxMmI5MzBiZTU1NDBlNmIzZjNmZDZhZDNjOTYKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTWF5IDMgMTk6NDM6NTIgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IGZpeCB0cml2aWFsIGVycm9yIGluIE1BS0VBTEwKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NGE4OWQ2Y2U4NTg0YjlmYzY0ZjRlODVkYTllY2FjM2NmYzJjMmEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUaHUgTWF5IDMgMTY6MzQ6NDEgMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uIGZvciBTVFggR1AzU1NBIGJvYXJkOgoKICAgIEVuYWJsZSBodXNoIHNoZWxsLCBlbnZpcm9ubWVudCBpbiBmbGFzaCByYXRoZXIgaW4gRUVQUk9NLAogICAgbW9yZSB1c2VyLWZyaWVuZGx5IGRlZmF1bHQgZW52aXJvbm1lbnQsIGV0Yy4KICAgIFRoZSBzaW1wbGUgRUVQUk9NIGVudmlyb25tZW50IGNhbiBiZSBzZWxlY3RlZCBlYXNpbHkgaW4gdGhlIGJvYXJkCiAgICBjb25maWcgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJjNmZiMTk5ZGM1NzU2ZmM3MmY0OWQxZjRkZTEwNWUwODkwNDlkNjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglUdWUgQXByIDI0IDE0OjM3OjQ5IDIwMDcgKzAyMDAKCiAgICBDbGVhbnVwIFNUWCBHUDNTU0EgY29kZTsgZml4IGJ1aWxkIGFuZCBjb21waWxlIHByb2JsZW1zLgoKY29tbWl0IDM1MTcxZGMwNGUwMjhlY2FjYzIzYWQ5MTZhNjYyOTU0NzI1NTVkYmYKQXV0aG9yOiBEYW4gTWFsZWsgPGRhbkBlbWJlZGRlZGFsbGV5LmNvbT4KRGF0ZToJRnJpIEphbiA1IDA5OjE1OjM0IDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgU1RYIEdQM1NTQSAoc3R4c3NhKSBCb2FyZAoKICAgIFNpZ25lZC1vZmYtYnkgRGFuIE1hbGVrLCA8ZGFuQGVtYmVkZGVkYWxsZXkuY29tPgoKY29tbWl0IGYyMTM0ZjhlOWViMDA2YmRjZDcyOWU4OWYzMDljMDdiMmZhNDUxODAKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1heSAyIDEzOjMxOjUzIDIwMDcgKzAyMDAKCiAgICBtYWNiOiBEb24ndCByZXN0YXJ0IGF1dG9uZWdvdGlhdGlvbiBpZiB3ZSBhbHJlYWR5IGhhdmUgbGluawoKICAgIFJld29yayBtYWNiX3BoeV9pbml0IHNvIHRoYXQgaXQgZG9lc24ndCBhdHRlbXB0IHRvIHJlLW5lZ290aWF0ZSBpZiB0aGUKICAgIGxpbmsgaXMgYWxyZWFkeSB1cC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAwNGZjYjVkMzhiYzkwNzc5Y2Q5YTcxMGQ2MDcwMjA3NTk4NmYwZTI5CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBNYXkgMiAxMzoyMjozOCAyMDA3ICswMjAwCgogICAgbWFjYjogSW50cm9kdWNlIGEgZmV3IGJhcnJpZXJzIHdoZW4gZGVhbGluZyB3aXRoIERNQSBkZXNjcmlwdG9ycwoKICAgIFRoZXJlIHdlcmUgYSBmZXcgdGhlb3JldGljYWwgcG9zc2liaWxpdGllcyB0aGF0IHRoZSBjb21waWxlciBtaWdodAogICAgb3B0aW1pemUgYXdheSBETUEgZGVzY3JpcHRvciByZWFkcyBhbmQvb3Igd3JpdGVzIGFuZCB0aHVzIGNhdXNlCiAgICBzeW5jaHJvbml6YXRpb24gcHJvYmxlbXMgd2l0aCB0aGUgaGFyZHdhcmUuIEluc2VydCBiYXJyaWVycyB3aGVyZQogICAgd2UgZGVwZW5kIG9uIHJlYWRzL3dyaXRlcyBhY3R1YWxseSBoaXR0aW5nIG1lbW9yeS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBmZmE2MjFhMGQxMmExY2NkODFjOTM2YzU2N2Y4OTE3YTIxMzc4N2E4CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglTYXQgRmViIDI0IDAxOjA4OjEzIDIwMDcgLTA2MDAKCiAgICBDbGVhbmVkIHVwIHNvbWUgODV4eCBQQ0kgYnVncwoKICAgICogQ2xlYW5lZCB1cCB0aGUgQ0RTIFBDSSBDb25maWcgVGFibGVzIGFuZCBhZGRlZCBOVUxMIGVudHJpZXMgdG8KICAgICAgdGhlIGVuZAogICAgKiBGaXhlZCBQQ0llIExBV0JBUiBhc3NpZ25lbXQgdG8gdXNlIHRoZSBjcHUtcmVsYXRpdmUgYWRkcmVzcwogICAgKiBGaXhlZCA4NXh4IFBDSSBjb2RlIHRvIGFzc2lnbiBwb3dhciByZWdpb24gc2l6ZXMgYmFzZWQgb24gdGhlCiAgICAgIGNvbmZpZyB2YWx1ZXMgKHJhdGhlciB0aGFuIGhhcmQtY29kaW5nIHRoZW0pCiAgICAqIEZpeGVkIHRoZSA4NTQ4IENEUyBQQ0kyIElPIHRvIG9uY2UgYWdhaW4gaGF2ZSAwIGFzIHRoZSBiYXNlIGFkZHJlc3MKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjc0MzEwNTk4OGZjNDRkNWIwZDMwMzg4Yzc5MDYwNzgzNWFhZTdhNgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMyAwMjo1NDoyNSAyMDA3IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSA4NTY4IE1EUyBib2FyZAoKICAgIFRoaXMgaW5jbHVkZWQgc29tZSBjaGFuZ2VzIHRvIGNvbW1vbiBmaWxlczoKICAgICogQWRkIDg1NjggcHJvY2Vzc29yIFNWUiB0byB2YXJpb3VzIHBsYWNlcwogICAgKiBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgcWUgYnVzLWZyZXF1ZW5jeSB2YWx1ZSBpbiB0aGUgZHRzCiAgICAqIEFkZCB0aGUgODU2OE1EUyB0YXJnZXQgdG8gdGhlIE1ha2VmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFmMWMyYjg0YmYyN2M4NTY1YmFkZGM4MmQxYWJiOTM3MDBkMTBlMmUKQXV0aG9yOiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTQ6MzQ6NDggMjAwNyAtMDUwMAoKICAgIEFkZCBzdXBwb3J0IGZvciB0cmVhdGluZyB1bmtub3duIFBIWXMgYXMgZ2VuZXJpYyBQSFlzLgoKICAgIFdoZW4gYnJpbmdpbmcgdXAgdS1ib290IG9uIG5ldyBib2FyZHMsIFBIWSBzdXBwb3J0IHNvbWV0aW1lcyBnZXRzCiAgICBuZWdsZWN0ZWQuCU1vc3QgUEhZcyBkb24ndCByZWFsbHkgbmVlZCBhbnkgc3BlY2lhbCBzdXBwb3J0LAogICAgdGhvdWdoLiAgQnkgYWRkaW5nIGEgZ2VuZXJpYyBlbnRyeSB0aGF0IGFsd2F5cyBtYXRjaGVzIGlmIG5vdGhpbmcKICAgIGVsc2UgZG9lcywgd2UgY2FuIHByb3ZpZGUgc3VwcG9ydCBmb3IgInVuc3VwcG9ydGVkIiBQSFlzIGZvciB0aGUKICAgIHRzZWMuCgogICAgVGhlIGdlbmVyaWMgUEhZIGRyaXZlciBzdXBwb3J0cyBtb3N0IFBIWXMsIGluY2x1ZGluZyBnaWdhYml0LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFVwZGVncmFmZiA8ZGF2ZUBjcmF5LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhNzVhZjliZmQ4ZmZmMDQ5OWVmZGJiOTA2MDFjZWM1YTJhZmVmMTE3CkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDcgMTU6Mjg6MDQgMjAwNyAtMDYwMAoKICAgIENvbmRpdGlvbmFsaXplIDg2NDEgUmV2MS4wIE1DTSB3b3JrYXJvdW5kcwoKICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjY0NzAyYjdmYzhmOGRmMzlkMzFhZGQ3NzBkZjZlMzcyZjllOWNlMwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMzAgMTM6NTk6NTAgMjAwNyAtMDUwMAoKICAgIEZpeCBtZW1vcnkgaW5pdGlhbGl6YXRpb24gb24gTVBDODM0OUUtbUlUWAoKICAgIERlZmluZSBDRkdfRERSX1NEUkFNX0NMS19DTlRMIGZvciB0aGUgTVBDODM0OUUtbUlUWCBhbmQgTVBDODM0OUUtbUlUWC1HUC4KICAgIFRoaXMgYWxsb3dzIGRkci0+c2RyYW1fY2xrX2NudGwgdG8gYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeQogICAgb24gc29tZSBJVFggYm9hcmRzLCBub3RhYmx5IHRob3NlIHdpdGggYSByZXZpc2lvbiAzLjEgQ1BVLgoKICAgIEFsc28gY2hhbmdlIHNwZF9zZHJhbSgpIGluIGNwdS9tcGM4M3h4L3NwZF9zZHJhbS5jIHRvIG5vdCB3cml0ZSBhbnl0aGluZyBpbnRvCiAgICBkZHItPnNkcmFtX2Nsa19jbnRsIGlmIENGR19ERFJfU0RSQU1fQ0xLX0NOVEwgaXMgbm90IGRlZmluZWQuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KICAgIEFja2VkLWJ5OiBNaWNoYWVsIEJlbmVkaWN0IDxNQmVuZWRpY3RAdHdhY3MuY29tPgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NGIyZDQzNGFlOWQwMTc4NzkzNmYzNGZlMTc1OWNmM2Q3NjI0YWUzCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAzMCAxNToyNjoyMSAyMDA3IC0wNTAwCgogICAgbXBjODN4eDogcmVwbGFjZSBlbGFib3JhdGUgYm9vdHRpbWUgdmVyYm9zaXR5IHdpdGggJ2Nsb2NrcycgY29tbWFuZAoKICAgIGFuZCBmaXggQ1BVOiB0byBhbGlnbiB3aXRoIEJvYXJkOiBkaXNwbGF5IHRleHQuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjMWFiODI2NjlkOTUyNTk5OGMzNGU4MDJhMTJjYWQ2NjI3MjNmMjJhCkF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDE2IDEzOjAyOjUzIDIwMDcgLTA1MDAKCiAgICBSZXdyb3RlIHBpY29zX3RvX2NsaygpIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KICAgIENsYXJpZmllZCB0aGF0IGNvbnZlcnNpb24gaXMgdG8gRFJBTSBjbG9ja3MgcmF0aGVyIHRoYW4gcGxhdGZvcm0gY2xvY2tzLgogICAgTWFkZSBmdW5jdGlvbiBzdGF0aWMgdG8gc3BkX3NkcmFtLmMuCgogICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YjM5NTAxZDI4NzU0ZTcyNzI2Y2U3ZmIwMjMxMGU1NmRiZGYxMTZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTdW4gQXByIDI5IDE0OjEzOjAxIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEJhbWJvbzogVXNlIGN1cnJlbnQgTkFORCBkcml2ZXIgYW5kICpub3QqIHRoZSBsZWdhY3kgZHJpdmVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg2NGFhNmE2YTQ2NmZjYjkyYmYzMmIxZDdkYmE3OWNkNzA5YjUyYzkKQXV0aG9yOiBHcnplZ29yeiBXaWFuZWNraSA8Z3J6ZWdvcnoud2lhbmVja2lAZ21haWwuY29tPgpEYXRlOglTdW4gQXByIDI5IDE0OjAxOjU0IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFVzZSBQVlIgdG8gZGlzdGluZ3Vpc2ggTVBDNTIwMEIgZnJvbSBNUEM1MjAwIGluIGJvb3QgbWVzc2FnZQoKICAgIE1QQzUyMDBCIHN5c3RlbXMgYXJlIGluY29ycmVjdGx5IHJlcG9ydGVkIGFzIE1QQzUyMDAgaW4gVS1Cb290IHN0YXJ0LXVwCiAgICBtZXNzYWdlLiBVc2UgUFZSIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3byB2YXJpYW50cywgYW5kIHByaW50IHByb3BlciBDUFUKICAgIGluZm9ybWF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IFdpYW5lY2tpIDxncnplZ29yei53aWFuZWNraUBnbWFpbC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDVjNWQzMjQyOTM1Y2YzNTQzYWYwMTE0MjYyNzQ5NDQzNDgzNGNmOTgKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDI1IDEyOjM0OjM4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBtaW5vciBmaXh1cHMgZm9yIDgzMTNyZGIgaW50cm9kdWN0aW9uCgpjb21taXQgYWRhNGQ0MDA5MWY2ZWQ0YTRmMDA0MGUwOGQyMGRiMjE5NjdlNGE2NwpBdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KRGF0ZToJV2VkIEFwciAyNSAxNjowMToyNiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBzaW1wbGlmeSBzaWxlbnQgY29uc29sZQoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTQ0ODc2YTM4MGY1NzU2ZjU3NDEyY2FmNzRjMWQ2ZGMyMDFkZDc5NgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIEFwciAyNCAyMzowMTowMiAyMDA3ICswMjAwCgogICAgW1BBVENIXSBNVEQgcGFydGl0aW9uIHN1cHBvcnQsIEpGRlMyIHN1cHBvcnQKCmNvbW1pdCAzN2VkNmNkZDQxNTkxOTViZmFkNjhkOGEyMzdmNmFkZGE4ZjQ4MmNiCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVR1ZSBBcHIgMjQgMTQ6MDM6NDUgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogc2V0dXAgNDQwRVB4L0dSeCBaTUlJL1JHTUlJIGJyaWRnZSBkZXBlbmRpbmcgb24gUEZDIHJlZ2lzdGVyIGNvbnRlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgNjZlZDZjY2EzZjM0MGY3YThhMDZkOTI3MmFlMmVmOGU5NmYwMjczZApBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEFwciAyMyAwMjozNzo0NyAyMDA3IC0wNTAwCgogICAgUmV3b3JrZWQgODV4eCBzcGVlZCBkZXRlY3Rpb24gY29kZQoKICAgIENoYW5nZWQgdGhlIGNvZGUgdG8gcmVhZCB0aGUgcmVnaXN0ZXJzIGFuZCBjYWxjdWxhdGUgdGhlIGNsb2NrCiAgICByYXRlcywgcmF0aGVyIHRoYW4gdXNpbmcgYSAic3dpdGNoIiBzdGF0ZW1lbnQuCgogICAgSWRlYSBmcm9tIEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDgxZjQ4MWNhNzA4ZWQ2YTU2YmY5YzQxMGUzMTkxZGJhZDU4MWM1NjUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMjMgMDI6MjQ6MjggMjAwNyAtMDUwMAoKICAgIEVuYWJsZSA4NTQ0IHN1cHBvcnQKCiAgICAqIEFkZCBzdXBwb3J0IHRvIHRoZSBNYWtlZmlsZQogICAgKiBBZGQgODU0NCBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIHRzZWMgZHJpdmVyCiAgICAqIEFkZCA4NTQ0IFNWUiBudW1iZXJzIHRvIHByb2Nlc3Nvci5oCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGQ4YzNhMjA5NmVhZmY4ZDdkZTg5ZDQ1ZTlhZjRkNGIwZDQ4NjhmZQpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEZlYiAyMyAxNzoxMjoyNSAyMDA3IC0wNjAwCgogICAgU3VwcG9ydCAxRyBzaXplIG9uIDg1NDgKCiAgICBlNTAwdjIgYW5kIG5ld2VyIGNvcmVzIHN1cHBvcnQgMUcgcGFnZSBzaXplcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQ1Y2VmNjEyY2M2MDFkMmQxYzg5MGZiYmQ3Y2RjOTYwOWExODlhNDYKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgMjMgMTc6MTE6MTYgMjAwNyAtMDYwMAoKICAgIENoYW5nZWQgQk9PS0VfUEFHRVNaX25HQiB0byBCT09LRV9QQUdFU1pfbkcKCiAgICBUaGUgb3RoZXIgcGFnZXN6IGNvbnN0YW50cyB1c2Ugb25lIGxldHRlciB0byBzcGVjaWZ5IG9yZGVyIG9mCiAgICBtYWduaXR1ZGUuCUFsc28gY2hhbmdlIHRoZSBvbmUgcmVmZXJlbmNlIHRvIGl0IGluIG1wYzg1NDhjZHMvaW5pdC5TCgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDFmOWEzMThjZWExNDI3MmVkZDEwZDYzNzM5ZTJkMzI2YzkwZjQzMGUKQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBGZWIgMjMgMTY6Mjg6NDYgMjAwNyAtMDYwMAoKICAgIE9ubHkgc2V0IGRkcmlvb3ZjciBmb3IgODU0OCByZXYxLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTM0M2RiZjg1YmMwMzAzM2YyMTAyZDhlODU0MzU2N2MyYzFhZDJkMgpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IEZlYiAyNCAwMToxNjo0NSAyMDA3IC0wNjAwCgogICAgVHdlYWsgRERSIEVDQyBlcnJvciBjb3VudGVyCgogICAgRW5hYmxlIHNpbmdsZS1iaXQgZXJyb3IgY291bnRlciB3aGVuIG1lbW9yeSB3YXMgY2xlYXJlZCBieSBkZHIgY29udHJvbGxlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg1ZTdjN2E0NWUzZGQ5YzdjZTNlNzIyMzUyYmE2MGY4ZGYxYTdhNGIKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRmViIDEyIDEzOjM0OjU1IDIwMDcgLTA2MDAKCiAgICA4NXh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKCiAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCiAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQogICAgZXhpc3QuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwM2I4MWI0OGVlYzBhZDI0OWVjOTdhNGFlMTZjMzZmYTJlMDE0ZmY0CkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDIzIDAxOjQ0OjQ0IDIwMDcgLTA1MDAKCiAgICBTb21lIDg1eHggY3B1IGNsZWFudXBzCgogICAgKiBDbGVhbmVkIHVwIHRoZSBUU1JbV0lTXSBjbGVhcmluZwogICAgKiBDbGVhbmVkIHVwIERNQSBpbml0aWFsaXphdGlvbgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgogICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNTFkNWQ5OTJlYWI4YzQ5N2IyNGM4MTZjNzNkYzFhZDhiZmZiNGViCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDIzIDAxOjMyOjIyIDIwMDcgLTA1MDAKCiAgICBBZGQgY3B1IHN1cHBvcnQgZm9yIHRoZSA4NTQ0CgogICAgUmVjb2duaXplIG5ldyBTVlIgdmFsdWVzLCBhbmQgYWRkIGEgZmV3IHJlZ2lzdGVyIGRlZmluaXRpb25zCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI1ZDgzZDdmNGFjNjU3MjcxODJkOGRkYWY3YmE0MmZhNzRjZjY1YWUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDExIDE2OjUxOjAyIDIwMDcgLTA1MDAKCiAgICBBZGQgTVBDODU0NERTIGJhc2ljIHBvcnQgYm9hcmQgZmlsZXMuCgogICAgQWRkIGJvYXJkIHBvcnQgdW5kZXIgbmV3IGJvYXJkL2ZyZWVzY2FsZSBkaXJlY3RvcnkKICAgIHN0cnVjdHVyZSBhbmQgcmV1c2UgZXhpc3RpbmcgUElYSVMgRlBHQSBzdXBwb3J0IHRoZXJlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBjZGU0YjAwZmM3MzkzYjg5ZjM3OWQ4M2E5ZDQzNmRjYjEzMzRiZmEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXByIDExIDE2OjUwOjU3IDIwMDcgLTA1MDAKCiAgICBBZGQgTVBDODU0NERTIG1haW4gY29uZmlndXJhdGlvbiBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM2MmRkODMwNzdhYzA0YzAyOTZiY2EzZTgyNGVjMmZiM2Q0NGQ5ZDYKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglXZWQgRGVjIDI3IDIyOjA3OjE1IDIwMDYgKzAzMDAKCiAgICBGaXggUENJIEkvTyBzcGFjZSBtYXBwaW5nIG9uIEZyZWVzY2FsZSBNUEM4NXgwQURTCgogICAgVGhlIFBDSSBJL08gc3BhY2UgbWFwcGluZyBmb3IgRnJlZXNjYWxlIE1QQzg1NDBBRFMgYm9hcmQgd2FzIGJyb2tlbiBieSBjb21taXQKICAgIDUyYzdhNjhiOGQ1ODdlYmNmNWE2YjA1MWI1OGIzZDNmZmEzNzdkZGMgd2hpY2ggZmFpbGVkIHRvIHVwZGF0ZSB0aGUgI2RlZmluZSdzCiAgICBkZXNjcmliaW5nIHRoZSBsb2NhbCBhZGRyZXNzIHdpbmRvdyB1c2VkIGZvciB0aGUgUENJIEkvTyBzcGFjZSBhY2Nlc3NlcyAtLSBmaXgKICAgIHRoaXMgYW5kIGNhcnJ5IG92ZXIgdGhlIG5lY2Vzc2FyeSBjaGFuZ2VzIGludG8gdGhlIE1QQzg1NjBBRFMgY29kZSBzaW5jZSB0aGUKICAgIFBDSSBJL08gc3BhY2UgbWFwcGluZyB3YXMgYWxzbyBicm9rZW4gZm9yIHRoaXMgYm9hcmQgKGJ5IHRoZSBlYXJsaWVyIGNvbW1pdAogICAgMDg3NDU0NjA5ZTQ3Mjk1NDQzYWY3OTNhMjgyY2RkY2Q5MWE1ZjQ5YykuCUFkZCB0aGUgY29tbWVudHMgY2xhcmlmeWluZyBob3cKICAgIHRoZSBQQ0kgSS9PIHNwYWNlIG11c3QgYmUgbWFwcGVkIHRvIGFsbCB0aGUgTVBDODV4eCBib2FyZCBjb25maWcuIGhlYWRlcnMuCgogICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KCiAgICAgYm9hcmQvbXBjODU0MGFkcy9pbml0LlMJICB8ICAgIDQgKystLQogICAgIGJvYXJkL21wYzg1NjBhZHMvaW5pdC5TCSAgfCAgICA0ICsrLS0KICAgICBpbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oIHwgICAgNSArKy0tLQogICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmggfCAgICAyICstCiAgICAgaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaCB8ICAgIDIgKy0KICAgICBpbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oIHwgICAgOCArKysrLS0tLQogICAgIDYgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpjb21taXQgOTY2MjljYmFiZGI3MjdkNGE1ZTYyNTQyZGVlZmMwMWQ0OThkYjZkYwpBdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBEZWMgNSAxNjo0MjozMCAyMDA2ICswODAwCgogICAgdS1ib290OiBGaXggZTUwMCB2MiBjb3JlIHJlc2V0IGJ1ZwoKICAgIFRoZSBmb2xsb3dpbmcgcGF0Y2ggZml4ZXMgdGhlIGU1MDAgdjIgY29yZSByZXNldCBidWcuCiAgICBGb3IgZTUwMCB2MiBjb3JlLCBhIG5ldyByZXNldCBjb250cm9sIHJlZ2lzdGVyIGlzIGFkZGVkIHRvIHJlc2V0IHRoZQogICAgcHJvY2Vzc29yLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2MzI0N2E1YWNkNTgwMzJlNmNmMzNmNTI1YmMzOTIzYjQ2N2JhYzg4CkF1dGhvcjogWmFuZyBSb3ktcjYxOTExIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIERlYyAyMCAxMTowMTowMCAyMDA2ICswODAwCgogICAgdS1ib290OiB2MjogUmVtb3ZlIHRoZSBmaXhlZCBUTEIgYW5kIExBVyBlbnRyeW51Ym1lcgoKICAgIFJlbW92ZSB0aGUgZml4ZWQgVExCIGFuZCBMQVcgZW50cnkgbnVibWVyLiBVc2UgYWN0dWFsbHkgVExCIGFuZCBMQVcKICAgIGVudHJ5IG51bWJlciB0byBjb250cm9sIHRoZSBsb29wLiAgVGhpcyBjYW4gcmVkdWNlIHRoZSBwb3RlbnRpYWwgcmlzawogICAgZm9yIHRoZSA4NXh4IHByb2Nlc3NvciBpbmNyZWFzaW5nIGl0cyBUTEIgYWRuIExBVyBlbnRyeSBudW1iZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3dhcnRob3V0IEVkd2FyZCA8c3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGIxOTM0YmExMmZkNDA4ZmNjM2I4YmQ5ZjRiMDQ4NjRjNDJhNDJiZgpBdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBEZWMgMTggMTc6MDE6MDQgMjAwNiArMDgwMAoKICAgIHUtYm9vdDogRml4IHRoZSA4NXh4Y2RzIHRzZWMgYnVnCgogICAgRml4IHRoZSA4NXh4Y2RzIHRzZWMgYnVnLgogICAgV2hlbiBlbmFibGUgUENJLCB0c2VjLm8gc2hvdWxkIGJlIGFkZGVkIHRvIHUtYm9vdC5sZHMgdG8gbWFrZSB0c2VjIHdvcmsuCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDczMzdiMjM3ZmZjNGFhZjFiOTQ2NzAyNGZlNDcyYTg4MGQ4NTI1OTgKQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgRGVjIDE1IDE0OjQzOjMxIDIwMDYgKzA4MDAKCiAgICB1LWJvb3Q6IEZpeCBDUFUyIGVycmF0YSBvbiBNUEM4NTQ4Q0RTIGJvYXJkCgogICAgVGhpcyBwYXRjaCBhcHBseSB3b3JrYXJvdW5kIG9mIENQVTIgZXJyYXRhIG9uIE1QQzg1NDhDRFMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTpFYm9ueSBaaHUgPGVib255LnpodUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM5YjE4YzRmM2UwYjZkMGRjMDBmNGU2OGJhZDJkYTM3NjZjODVmMDkKQXV0aG9yOiBlYm9ueS56aHVAZnJlZXNjYWxlLmNvbSA8ZWJvbnkuemh1QGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBEZWMgMTggMTY6MjU6MTUgMjAwNiArMDgwMAoKICAgIHUtYm9vdDogRGlzYWJsZXMgTVBDODU0OENEUyAyVF9USU1JTkcgZm9yIEREUiBieSBkZWZhdWx0CgogICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBNUEM4NTQ4Q0RTIDJUX1RJTUlORyBmb3IgRERSIGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTpFYm9ueSBaaHUgPGVib255LnpodUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQxZmI3ZTBmMWVjOWI5MWJkYWUyNTY1YmFiNWYyZTNlZTE1MDM5YzcKQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgRGVjIDE0IDE0OjE0OjU1IDIwMDYgKzA4MDAKCiAgICB1LWJvb3Q6IEVuYWJsZSBQQ0kgZnVuY3Rpb24gYW5kIGFkZCBQRVggJiByYXBpZGlvIG1lbW9yeSBtYXAgb24gTVBDODU0OENEUyBib2FyZAoKICAgIEVuYWJsZSBQQ0kgZnVuY3Rpb24gYW5kIGFkZCBQRVggJiByYXBpZGlvIG1lbW9yeSBtYXAgb24gTVBDODU0OENEUwogICAgYm9hcmQuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTZiOGEwNTQzMmYzNDZmMzY0OTM1MzVjODUzMjBiNzBlYzljN2MxYgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjU0OjE1IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgTVBDODMxM0VSREIgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0OWVhM2I2ZWFmZTYwNjI4NWFlNGQ1YzM3ODAyNjE1M2RkZTUzMjAwCkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MjEgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IEFkZCBnZW5lcmljIFBDSSBzZXR1cCBjb2RlLgoKICAgIEJvYXJkIGNvZGUgY2FuIG5vdyByZXF1ZXN0IHRoZSBnZW5lcmljIHNldHVwIGNvZGUgcmF0aGVyIHRoYW4gaGF2aW5nIHRvCiAgICBjb3B5LWFuZC1wYXN0ZSBpdCBmb3IgdGhlbXNlbHZlcy4gIEJvYXJkcyBzaG91bGQgYmUgY29udmVydGVkIHRvIHVzZSB0aGlzCiAgICBvbmNlIHRoZXkncmUgdGVzdGVkIHdpdGggaXQuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgN2M5OGU1MTkzZTkzZGY2YjliNjUxODUxZDU0YjYzOGE2MWViYjBlYQpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE5IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgODMxeCBzdXBwb3J0IHRvIHNwZWVkLmMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMGYyNTMyODNhMzJkOTFlMDY4NDRkN2Y4N2Y5YjMzZjRmNGZiY2U4ZgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE4IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgODMxeCBzdXBwb3J0IHRvIGdsb2JhbF9kYXRhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5NWU3ZWY4OTdlNTQ1OTFlNjE1ZmMxYjQ1OGI3NGMyODZmZTFmYjA2CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MTYgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IENoYW5nZSBQVlJfODN4eCB0byBQVlJfRTMwMEMxLTMsIGFuZCB1cGRhdGUgY2hlY2tjcHUoKS4KCiAgICBSYXRoZXIgdGhhbiBtaXNsZWFkaW5nbHkgZGVmaW5lIFBWUl84M3h4IGFzIHRoZSBzcGVjaWZpYyB0eXBlIG9mIDgzeHgKICAgIGJlaW5nIGJ1aWx0IGZvciwgdGhlIFBWUiBvZiBlYWNoIGNvcmUgcmV2aXNpb24gaXMgZGVmaW5lZC4gY2hlY2tjcHUoKSBub3cKICAgIHByaW50cyB0aGUgY29yZSB0aGF0IGl0IGRldGVjdHMsIHJhdGhlciB0aGFuIGFib3J0aW5nIGlmIGl0IGRvZXNuJ3QgZmluZAogICAgd2hhdCBpdCB0aGlua3MgaXQgd2FudHMuCgogICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYTM1YjBjNDk1MGQ4NGNmOWUzYTllMzJiOTE2MTM1OTU2ZDFhYzYzNgpBdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gQXByIDE2IDE0OjM0OjE1IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBSZWNvZ25pemUgU1BSIHZhbHVlcyBmb3IgTVBDODMxMSBhbmQgTVBDODMxMy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkODdjNTdiMjAxYjQ1NzJkMTZmMWI2NDI5OThmYWEwMGM5OTEyYjE2CkF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MzE6NTUgMjAwNyAtMDUwMAoKICAgIG1wYzgzeHg6IEFkZCByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgTVBDODMxeC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZmM0YzcxYTE0M2JlODY2NmQ3MDgwM2ZiMjVhZTYwMzc5Yzk1NjIyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gQXByIDIzIDE1OjM5OjU5IDIwMDcgKzAyMDAKCiAgICBGaXggZmlsZSBtb2RlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM4MjU3OTg4YWJmZTc0ZDQ1OWNhMmFkNzQ4YjEwOWNhMDRlNGVmZTEKQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgpEYXRlOglNb24gQXByIDIzIDE1OjMwOjM5IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEF2b2lkIGFzc2lnbmluZyBQQ0kgcmVzb3VyY2VzIGZyb20gemVybyBhZGRyZXNzCgogICAgSWYgYSBQQ0kgSURFIGNhcmQgaGFwcGVucyB0byBnZXQgYSB6ZXJvIGFkZHJlc3MgYXNzaWduZWQgdG8gaXQsIHRoZSBMaW51eCBJREUKICAgIGNvcmUgY29tcGxhaW5zIGFuZCBJREUgZHJpdmVycyBmYWlscyB0byB3b3JrLiAgQWxzbywgYXNzaWduaW5nIHplcm8gdG8gYSBCQVIKICAgIHdhcyBpbGxlZ2FsIGFjY29yZGluZyB0byBQQ0kgMi4xICh0aGUgbGF0ZXIgcmV2aXNpb25zIHNlZW0gdG8gaGF2ZSBleGNsdWRlZCB0aGUKICAgIHNlbnRlbmNlIGFib3V0ICIwIiBiZWluZyBjb25zaWRlcmVkIGFuIGludmFsaWQgYWRkcmVzcykgLS0gc28sIHVzZSBhIHJlYXNvbmFibGUKICAgIHN0YXJ0aW5nIHZhbHVlIG9mIDB4MTAwMCAodGhhdCdzIHdoYXQgdGhlIG1vc3QgTGludXggYXJjaHMgYXJlIHVzaW5nKS4KCiAgICBBbHRlcm5hdGl2ZWx5LCBvbmUgbWlnaHQgaGF2ZSBmaXhlZCB0aGUgY2FsbHMgdG8gcGNpX3NldF9yZWdpb24oKSBpbmRpdmlkdWFsbHkKICAgIChzb21lIGNvZGUgZXZlbiBzZWVtcyB0byBoYXZlIHRha2VuIGNhcmUgb2YgdGhpcyBpc3N1ZSkgYnV0IHRoYXQgd291bGQgaGF2ZQogICAgYmVlbiBhIGxvdCBtb3JlIHdvcmsuIDotKQoKICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+CiAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGFmYjkwM2EyZWI5NDM2YmFhOTI3MGNjYzBjMjcwODJkODY0OTdkODkKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJTW9uIEFwciAyMyAxNDowMDoxMSAyMDA3ICswMjAwCgogICAgW3BhdGNoXSBzZXRlbnYoLi4uKSBjYW4gZGVsZXRlIGVudmlyb25tZW50YWx2YXJpYWJsZXMKCiAgICB1cGRhdGUgc2V0ZW52KCkgZnVuY3Rpb24gc28gdGhhdCBlbnRlcmluZyBhIE5VTEwgdmFsdWUgZm9yIHRoZQogICAgdmFyaWFibGUncyB2YWx1ZSB3aWxsIGRlbGV0ZSB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZQoKICAgIFNpZ25lZC1vZmYtYnk6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgogICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmYxMDRlNWNhYTc0N2Q1NjhlZmYyNmIzNjk1NjVhZjU3YzJmZmE2CkF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgpEYXRlOglNb24gQXByIDIzIDEzOjU0OjI0IDIwMDcgKzAyMDAKCiAgICBbcGF0Y2hdIHVzZSB1bnNpZ25lZCBjaGFyIGluIHNtYzkxMTExIGRyaXZlciBmb3IgbWFjCgogICAgdGhlIHZfbWFjIHZhcmlhYmxlIGluIHRoZSBzbWM5MTExMSBkcml2ZXIgaXMgZGVjbGFyZWQgYXMgYSBzaWduZWQgY2hhciAuLi4KICAgIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdoZW4gb25lIG9mIHRoZSBieXRlcyBpbiB0aGUgTUFDIGlzICJzaWduZWQiIGxpa2UgMHhFMAogICAgYmVjYXVzZSB3aGVuIGl0IGdldHMgcHJpbnRlZCBvdXQsIHlvdSBnZXQgYSBkaXNwbGF5IGxpa2U6CiAgICAweEZGRkZGRkUwIGFuZCB0aGF0J3Mgbm8gZ29vZAoKICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KCmNvbW1pdCBkOThjMDg4NWFkNjE3ZmNjZjIxZTdjMjZlZjhjYjcyOGZiZmIyNDU5CkF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgpEYXRlOglNb24gQXByIDIzIDEzOjEwOjUyIDIwMDcgKzAyMDAKCiAgICBVU0I6IChBbm90aGVyKSBkZWxheSBmb3IgY3JhcHB5IFVTQiBrZXlzLgoKICAgIFNvbWUgVVNCIGtleXMgYXJlIHNsb3cgaW4gZ2l2aW5nIGJhY2sgYW4gYW5zd2VyIHdoZW4gdGhlIFJvb3QgSFVCCiAgICBlbmFibGVzIHBvd2VyIGxpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgoKY29tbWl0IDMyM2JmYThmNDM2ZGMzYmM1NzE4N2M5YjE0ODhiYzMxNDZmZjE1MjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBBcHIgMjMgMTI6MDA6MjIgMjAwNyArMDIwMAoKICAgIFJlbW92ZSBCT0FSRExJQlMgdXNhZ2UgY29tcGxldGVseQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzMjU1NjQ0Mzg0MGYxMjcxNzBlNGJhYThiZGQ1YjU2NzAzOWY2YzM2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglTYXQgQXByIDIxIDIxOjA3OjIyIDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIFN5c3RlbUFDRSBzdXBwb3J0IGZvciBNaWNyb2JsYXplCgpjb21taXQgMDY0MzYzMWFhMTAzNmNkNzQ2YmY1ZDE1ZjVhMzRiYzdiYzAxZWE0ZgpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IEFwciAyMSAyMTowMjo0MCAyMDA3ICswMjAwCgogICAgMTZiaXQgcmVhZC93cml0ZSBsaXR0bGUgZW5kaWFuCgpjb21taXQgOWQxZDZhMzRkMjZjNTkzM2JjMDk3Y2U3M2M5MzQ4Zjk1NTczY2RkNApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU2F0IEFwciAyMSAyMDo1MzozMSAyMDA3ICswMjAwCgogICAgQ2hhbmdlIE1MNDAxIHBhcmFtZXRlcnMgLSBYaWxpbnggQlNQCgpjb21taXQgMmUzNDNiOWE1N2YzMmUxYmQwOGMzNWM5OTc2OTEwMzMzZmI0ZTEzZApBdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjggMDU6Mzc6MjkgMjAwNyAtMDYwMAoKICAgIG1wYzg2NDFocGNuOiBGaXggTEFXIGFuZCBUTEIgc2V0dXAgdG8gdXNlIHRoZSBJT19QSFlTICNkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzljYjQ3MzkxZWViZWY4NWFjYWRiM2Y2OTYxZWY2YzU1Y2FjZTZhYwpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKYW4gMTkgMTA6NDI6MzcgMjAwNyArMDgwMAoKICAgIEVuYWJsZSBMQVdzIGZvciBNUEM4NjQxIFBDSS1FeDIuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmQ3ODUxY2UxZTFmMTQwNjY1YjUyMDAyNmFiZjEwNDI5NjhiMTEwMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTQ6MTI6MjYgMjAwNyAtMDUwMAoKICAgIG1wYzg2eHg7IFdyaXRlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcwoKICAgIFNvbWUgZGV2aWNlIHRyZWVzIGhhdmUgYSBtYWMtYWRkcmVzcyBwcm9wZXJ0eSwgc29tZSBoYXZlIGxvY2FsLW1hYy1hZGRyZXNzLAogICAgYW5kIHNvbWUgaGF2ZSBib3RoLiAgVG8gc3VwcG9ydCBhbGwgb2YgdGhlc2UgZGV2aWNlIHRyZWVzLCBmdHBfY3B1X3NldHVwKCkKICAgIHNob3VsZCB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzLCBpZiB0aGV5CiAgICBleGlzdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3ZGJkZjI4YjhiZDg1NWE4NTMwZGMzMjkyZTQ5ODI1NzVhMTk3MDYwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEFwciAyMCAxNDoxMTozOCAyMDA3IC0wNTAwCgogICAgbXBjODZ4eDogcHJvdGVjdCBtZW1jcHkgdG8gYmFkIGFkZHJlc3MgaWYgYSBtYWMtYWRkcmVzcyBpcyBtaXNzaW5nIGZyb20gZHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAxNGRhNWY3Njc1YmJiNDI3YzQ2OWUzZjQ1MDA2ZTAyN2I2ZTIxZGI5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJRnJpIEFwciAyMCAxNzo0MzoyOCAyMDA3ICswMjAwCgogICAgQ2xlYW51cCBjb21waWxlciB3YXJuaW5ncywgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNjkyMzU2NWRiMTJhZjM0ZmQ1ZTAyZDM1NGVlNjVhOGM3OGFjNDYwZgpBdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgpEYXRlOglGcmkgQXByIDIwIDEyOjAxOjQ3IDIwMDcgKzAyMDAKCiAgICBGaXggYnJlYWthZ2Ugb2YgTkM2NTAgYm9hcmQgd2l0aCByZXNwZWN0IHRvIG5hbmQgc3VwcG9ydC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KCmNvbW1pdCAzOWYyM2NkOTA5NDc2MzlhYzI3OGExOGZmMjc3ZWM3ODZiNWFjMTY3CkF1dGhvcjogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+CkRhdGU6CUZyaSBBcHIgMjAgMTE6MTM6MTYgMjAwNyArMDIwMAoKICAgIFtSRkMgUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiBmaXggT0ZfVEJDTEsgKHRpbWViYXNlLWZyZXF1ZW5jeSkgY2FsY3VsYXRpb24KCiAgICBHMiBjb3JlIHJlZmVyZW5jZSBtYW51YWwgc2F5cyBkZWNyZW1lbnRlciBhbmQgdGltZSBiYXNlCiAgICBhcmUgZGVjcmVhc2luZy9pbmNyZWFzaW5nIG9uY2UgZXZlcnkgNCBidXMgY2xvY2sgY3ljbGVzLgogICAgTGV0cyBmaXggaXQsIHNvIHRpbWUgaW4gTGludXggd29uJ3QgcnVuIHR3aWNlIGFzIGZhc3QKCiAgICBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNzY1MWY4YmRiYmEwM2JiMGI0ZjI0MWUyZDJjNGNiNjViMjMwYmQ1NgpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVRodSBBcHIgMTkgMjM6MTQ6MzkgMjAwNyAtMDQwMAoKICAgIEZpeCBzZXJpb3VzIHBvaW50ZXIgYnVnIHdpdGggYm9vdG0gYW5kIHJlc2VydmUgbWFwLgoKICAgIFdoYXQgd2FzIHN1cHBvc2UgdG8gYmUgYSBzdGFjayB2YXJpYWJsZSB3YXMgZGVjbGFyZWQgYXMgYSBwb2ludGVyLAogICAgICBvdmVyd3JpdGluZyByYW5kb20gbWVtb3J5LgogICAgQWxzbyBtb3ZlZCB0aGUgbGliZmR0LmEgcmVxdWlyZW1lbnQgaW50byB0aGUgbWFpbiBNYWtlZmlsZS4gIFRoYXQgaXMKICAgICAgVGhlIFUtQm9vdCBXYXkuCgpjb21taXQgZDIxNjg2MjYzNTc0ZTk1Y2IzZTllOWIwNDk2Zjk2OGIxYjg5N2ZkYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEFwciAxOSAwOTo1Mzo1MiAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggY2hpcCBzZWxlY3QgdGltaW5nIGZvciBTeXNBQ0UgYWNjZXNzIG9uIEFNQ0MgS2F0bWFpCgogICAgUHJldmlvdXMgdmVyc2lvbnMgdXNlZCBmdWxsIHdhaXQgc3RhdGVzIGZvciB0aGUgY2hpcCBzZWxlY3QgIzEgd2hpY2gKICAgIGlzIGNvbm5lY3RlZCB0byB0aGUgWGlsaW5peCBTeXN0ZW1BQ0UgY29udHJvbGxlciBvbiB0aGUgQU1DQyBLYXRtYWkKICAgIGV2YWx1YXRpb24gYm9hcmQuIFRoaXMgbGVhZHMgdG8gcmVhbGx5IHNsb3cgYWNjZXNzIGFuZCB0aGVyZWZvcmUgbG93CiAgICBwZXJmb3JtYW5jZS4gVGhpcyBwYXRjaCBub3cgc2V0cyB1cCB0aGUgY2hpcCBzZWxlY3QgYSBsb3QgZmFzdGVyCiAgICByZXN1bHRpbmcgaW4gbXVjaCBiZXR0ZXIgcmVhZC93cml0ZSBwZXJmb3JtYW5jZSBvZiB0aGUgTGludXggZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNzgzNzgyOGQ4OTA4NDg3OWJlZTJmMmI4YzdjNjhkNDY5NTk0MGRmCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxOCAxNzo0OToyOSAyMDA3ICswMjAwCgogICAgQ2xlbmF1cCwgdXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgZmQwOTRjNjM3OWUyZWY4YTRkMGNlYjU2NDBiMjRjYjBjOGQwNDQ0OQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTggMTc6MjA6NTggMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBDSEFOR0VMT0cKCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDJhMjZlYzQ3MzJlZmQ3YTMwOGQwYmJjOTc3MTRjMWQ3NWVmMTE3M2IKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDE3OjA3OjI2IDIwMDcgKzAyMDAKCiAgICBDbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCgogICAgU2lnZW5kLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KCmNvbW1pdCA1ZjZjNzMyYWZmZWE5NjQ3NzYyZDI3YTQ2MTdhMmFlNjRjNTJkY2ViCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxOCAxNjoxNzo0NiAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IGFkNGViNTU1NjcxZDk3Zjk2ZGM1NmVhYjU1MTAzYjFmODY4NzRiMDEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDE0OjMwOjM5IDIwMDcgKzAyMDAKCiAgICBNQ0MyMDAgYm9hcmQ6IHJlbW92ZSB3YXJuaW5nIHdoaWNoIGlzIG9ic29sZXRlIGFmdGVyIFBTb0MgZmlybXdhcmUgY2hhbmdlcwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMzc0N2EzZjAxMGIyYjE0NDJkZWMzZTg3MWM2OTc4OGI2MDE3YWFhZQpBdXRob3I6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgpEYXRlOglXZWQgQXByIDE4IDEyOjExOjA1IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiBkb2N1bWVudCB3YWtldXAgZnJvbSBsb3ctcG93ZXIgc3VwcG9ydAoKICAgIFNpZ25lZC1vZmYtYnk6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgoKY29tbWl0IGU2NzMyMjZmZjlkNmFhOTFiNDdjZWFjNzRiOGMxMzc3MGIwNmJiMzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTggMTI6MDc6NDcgMjAwNyArMDIwMAoKICAgIHBwYzR4eDogVXBkYXRlIEFjYWRpYSB0byBub3Qgc2V0dXAgUExMIHdoZW4gYm9vdGluZyB2aWEgYm9vdHN0cmFwIEVFUFJPTQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA5MGU2ZjQxY2YwOWZjOThmNmNjYjUxMGUxODNkNTNhYjg1NDZjZjJmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgQXByIDE4IDEyOjA1OjU5IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IEFkZCBvdXRwdXQgZm9yIGJvb3Ryb20gbG9jYXRpb24gdG8gNDA1RVogcG9ydHMKCiAgICBOb3cgNDA1RVogcG9ydHMgYWxzbyBzaG93IHVwb24gYm9vdHVwIGZyb20gd2hpY2ggYm9vdCBkZXZpY2UKICAgIHRoZXkgYXJlIGNvbmZpZ3VyZWQgdG8gYm9vdDoKCiAgICBVLUJvb3QgMS4yLjAtZ2QzODMyZThmLWRpcnR5IChBcHIgMTggMjAwNyAtIDA3OjQ3OjA1KQoKICAgIENQVTogICBBTUNDIFBvd2VyUEMgNDA1RVogUmV2LiBBIGF0IDE5OS45OTkgTUh6IChQTEI9MTMzLCBPUEI9NjYsIEVCQz02NiBNSHopCgkgICBCb290c3RyYXAgT3B0aW9uIEUgLSBCb290IFJPTSBMb2NhdGlvbiBFQkMgKDMyIGJpdHMpCgkgICAxNiBrQiBJLUNhY2hlIDE2IGtCIEQtQ2FjaGUKICAgIEJvYXJkOiBBY2FkaWEgLSBBTUNDIFBQQzQwNUVaIEV2YWx1YXRpb24gQm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOWMwMGRmYjBiZjg5YzhjMjNlOGFmNWI1YmRmNDljZjY2ZDc2OWY4NQpBdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+CkRhdGU6CVR1ZSBBcHIgMTcgMTM6MzA6MzMgMjAwNyArMDEwMAoKICAgIE1vdmUgcHBlYXJzZSB0byBBUk0gYm9hcmQgbGlzdAogICAgQWRkIEtvbnN0YW50aW4gS2xldHNjaGtlIGZvciBzY2I5MzI4LgogICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KCmNvbW1pdCBkMzgzMmU4ZmUxYjIxNGVjNjI0MjRlYWMzNmNmZGE5ZmM1NmQyMWIzCkF1dGhvcjogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+CkRhdGU6CU1vbiBBcHIgMTYgMTQ6MDA6MTMgMjAwNyArMDIwMAoKICAgIFtQQVRDSF0gaWNlY3ViZS9saXRlNTIwMGI6IHdha2V1cCBmcm9tIGxvdy1wb3dlciBzdXBwb3J0CgogICAgVS1Cb290IHBhcnQgb2YgTGl0ZTUyMDBiIGxvdyBwb3dlciBtb2RlIHN1cHBvcnQuCiAgICBQdXRzIFNEUkFNIG91dCBvZiBzZWxmLXJlZnJlc2ggYW5kIHRyYW5zZmVycyBjb250cm9sIHRvCiAgICBhZGRyZXNzIHNhdmVkIGF0IHBoeXNpY2FsIDB4MC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjM1YTUzZmM3YjBjNzlmY2ZlN2JkYzAxMTYzYzRiMzRhYWJhMTQ2MApBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVN1biBBcHIgMTUgMTM6NTQ6MjYgMjAwNyAtMDQwMAoKICAgIEZpeCB0aGUgZnRfY3B1X3NldHVwKCkgcHJvcGVydHkgc2V0dGluZ3MuCgogICAgVXNlICJzZXR0ZXIiIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGZsYWdzLCBjbGVhbmVyIGFuZCBtb3JlIGZsZXhpYmxlLgogICAgSXQgYWxzbyBmaXhlcyB0aGUgcHJvYmxlbSBub3RlZCBieSBUaW11ciBUYWJpIHRoYXQgdGhlIGV0aGVybmV0IE1BQwogICAgYWRkcmVzc2VzIHdlcmUgYWxsIGJlaW5nIHNldCBpbmNvcnJlY3RseSB0byB0aGUgc2FtZSBNQUMgYWRkcmVzcy4KCmNvbW1pdCBjMjhhYmI5YzYxNGY2NWNlMjA5NmNjNGE2NmZjODg2Yzc3ZDBlNWE0CkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IEFwciAxNCAyMjo1MToyNCAyMDA3IC0wNDAwCgogICAgSW1wcm92ZSB0aGUgYm9vdG0gY29tbWFuZCBmb3IgQ09ORklHX09GX0xJQkZEVAoKICAgIEluIGJvb3RtLCBjcmVhdGUgdGhlICIvY2hvc2VuIiBub2RlIG9ubHkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAgICAgIChiZXR0ZXIgbWF0Y2hlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3IpLgogICAgVXBkYXRlIGZvciBwcm9wZXIgcmVzZXJ2ZWQgbWVtb3J5IG1hcCBoYW5kbGluZyBmb3IgaW5pdHJkLgoKY29tbWl0IDNmOWYwOGNmOTFjOGE2OTQ5YTVkNzhhMThiZDNkOGRmN2I4NmQ4ODgKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgQXByIDE0IDIyOjQ2OjQxIDIwMDcgLTA0MDAKCiAgICBBZGQgc29tZSB1dGlsaXRpZXMgdG8gbWFuaXB1bGF0ZSB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG1hcC4KCmNvbW1pdCA4MDQ4Y2RkNTZmMDRhNzU2ZWVlYTQ5NTFmNDAyYmY1Y2MzMzc4NWRiCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IEFwciAxNCAyMToxNjo1NCAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDhlNjg3NTE4M2NkY2E5MWMxMzQ0MDhkMTE5ZDRhYmNkNDhlZjY4NTYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxODo1Njo0NiAyMDA2ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBNTUMgc3VwcG9ydAoKICAgIFNldCB1cCB0aGUgcG9ydG11eCBmb3IgdGhlIE1NQyBpbnRlcmZhY2UgYW5kIGVuYWJsZSB0aGUgTU1DIGRyaXZlcgogICAgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciBET1MgcGFydGl0aW9ucywgZXh0MiBhbmQgRkFUIGZpbGVzeXN0ZW1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGZjMjZjOTdiYjZkZjQxYjRhOTU2NjJjMzQwNTRmZTkxMjM4N2JmMzgKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEphbiAyMCAxMDowMzo1MyAyMDA2ICswMTAwCgogICAgQXRtZWwgTUNJIGRyaXZlcgoKICAgIERyaXZlciBmb3IgdGhlIEF0bWVsIE1DSSBjb250cm9sbGVyIChNTUMgaW50ZXJmYWNlKSBmb3IgQVQzMkFQIENQVXMuCgogICAgVGhlIEFUOTEgQVJNLWJhc2VkIENQVXMgdXNlIGJhc2ljYWxseSB0aGUgc2FtZSBoYXJkd2FyZSwgc28gaXQgc2hvdWxkCiAgICBiZSBwb3NzaWJsZSB0byBzaGFyZSB0aGlzIGRyaXZlciwgYnV0IG5vIGVmZm9ydCBoYXMgYmVlbiBtYWRlIHNvIGZhci4KCiAgICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgQVQzMkFQNzAwMCBkYXRhIHNoZWV0LAogICAgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbQoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9kYXRhc2hlZXRzLmFzcD9mYW1pbHlfaWQ9NjgyCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMDVmZGFiMWVmNmExMGQwNDlhNTAwMjFhODZmMTIyNmY0NDRkOWI5ZgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE4OjU1OjM3IDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQWRkIGNsayBhbmQgZ3BpbyBpbmZyYXN0cnVjdHVyZSBmb3IgbW1jaQoKICAgIEltcGxlbWVudCBmdW5jdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBtbWNpIHBpbnMsIGFzIHdlbGwgYXMKICAgIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgY2xvY2sgcmF0ZSBvZiB0aGUgbW1jaSBjb250cm9sbGVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDdmYWMzZjY5ZTlmMDVjNWU1MzI2NjgxOTc2YzM1ZDEyOTMyNGM0ZGUKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxODo1Mzo1NiAyMDA2ICswMTAwCgogICAgRW5hYmxlIHBhcnRpdGlvbiBzdXBwb3J0IHdpdGggTU1DCgogICAgSW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMgb2YgaW5pdF9wYXJ0KCkgYW5kIGdldF9wYXJ0aXRpb25faW5mbygpIHdoZW4KICAgIENPTkZJR19NTUMgaXMgc2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDlhMjRmNDc3YTFlZDViYjBmNzQzNzdjOTg1ZDc1NGViYmZhNDQ4NzIKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxNzoxNDozMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IEVuYWJsZSBuZXR3b3JraW5nCgogICAgSW1wbGVtZW50IE1BQ0IgaW5pdGlhbGl6YXRpb24gZm9yIEFWUjMyIGFuZCBBVFNUSzEwMDAsIGFuZCB0dXJuCiAgICBldmVyeXRoaW5nIG9uLCBpbmNsdWRpbmcgdGhlIE1BQ0IgZHJpdmVyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDVjMWZlMWZmZmZkMTc1MGE3ZTQ3ZTVhMmUyY2Q2MDBjMDBlNGYwMDkKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJRnJpIEphbiAyMCAxMDowMzozNCAyMDA2ICswMTAwCgogICAgQXRtZWwgTUFDQiBldGhlcm5ldCBkcml2ZXIKCiAgICBEcml2ZXIgZm9yIHRoZSBBdG1lbCBNQUNCIG9uLWNoaXAgZXRoZXJuZXQgY29udHJvbGxlci4KCiAgICBUaGlzIGRyaXZlciBoYXMgYmVlbiB0ZXN0ZWQgb24gdGhlIEFUU1RLMTAwMCBib2FyZCB3aXRoIGEgQVQzMkFQNzAwMAogICAgQ1BVLiBJdCBzaG91bGQgcHJvYmFibHkgd29yayBvbiBBVDkxU0FNOTI2eCBhcyB3ZWxsIHdpdGggc29tZSBtaW5vcgogICAgbW9kaWZpY2F0aW9ucy4KCiAgICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgQVQzMkFQNzAwMCBkYXRhIHNoZWV0LAogICAgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbQoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9kYXRhc2hlZXRzLmFzcD9mYW1pbHlfaWQ9NjgyCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYjRlYzljMmQ0M2Q4OTQ3MjliYjYzM2JmZGJkZmE5NWE5NjJjMTU1NgpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE2OjU2OjE0IDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQWRkIGNsayBhbmQgZ3BpbyBpbmZyYXN0cnVjdHVyZSBmb3IgbWFjYjAgYW5kIG1hY2IxCgogICAgSW1wbGVtZW50IGZ1bmN0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIG1hY2IwIGFuZCBtYWNiMSBwaW5zLCBhcwogICAgd2VsbCBhcyBmdW5jdGlvbnMgZm9yIGdldHRpbmcgdGhlIGNsb2NrIHJhdGUgb2YgdGhlIHZhcmlvdXMKICAgIGJ1c3NlcyB0aGUgbWFjYiBldGhlcm5ldCBjb250cm9sbGVycyBhcmUgY29ubmVjdGVkIHRvLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGQ1YWNiOTViMTZhMGE3NGM2NDM1MjQzNDJjMzQzN2U3NjU0MjZkMDUKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU3VuIERlYyAxNyAxNTozOToxNSAyMDA2ICswMTAwCgogICAgQVZSMzI6IEltcGxlbWVudCBzaW1wbGUgRE1BIG1lbW9yeSBhbGxvY2F0b3IKCiAgICBJbXBsZW1lbnQgZG1hX2FsbG9jX2NvaGVyZW50KCkgd2hpY2ggcmV0dXJucyBjYWNoZS1hbGlnbmVkCiAgICB1bmNhY2hlYWJsZSBtZW1vcnkuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOTE5NzViMGZlYTc3M2M5ZTY4MWZlYThjZjMzNDk2NjlmMjc2ODVlZQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTdW4gRGVjIDE3IDE1OjQ2OjAyIDIwMDYgKzAxMDAKCiAgICBJbXBvcnQgPGxpbnV4L21paS5oPiBmcm9tIHRoZSBMaW51eCBrZXJuZWwKCiAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHlldCBhbm90aGVyIHNldCBvZiBNSUkgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKICAgIGluIHRoZSBtYWNiIGRyaXZlciwgaGVyZSdzIGEgY29tcGxldGUgc2V0IG9mIGRlZmluaXRpb25zIGZvciBldmVyeW9uZQogICAgdG8gdXNlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDFiODA0YjIyOTU1NmE0ZDg2MmRhOTNjMGVjOTRlNzk0MTkzNjRiMmMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJV2VkIE1hciAyMSAxOTo0NzozNiAyMDA3ICswMTAwCgogICAgQVZSMzI6IEluY2x1ZGUgbW9yZSBjb21tYW5kcyBmb3IgQVRTVEsxMDAwCgogICAgSW5jbHVkZSB0aGUgaW1pLCBpbWxzIGFuZCBqZmZzIGNvbW1hbmRzIHNldHMgYnkgZGVmYXVsdCBvbiBBVFNUSzEwMDAuCiAgICBBbHNvIGRlZmluZSBDT05GSUdfQk9PVEFSR1MgdG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLCBkZWZpbmUKICAgIENPTkZJR19CT09UQ09NTUFORCBhbmQgZW5hYmxlIGF1dG9ib290IGJ5IGRlZmF1bHQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgOWMwZGViNWFlM2VhMDE4OWYyZTA4YWMyOWVmMTMxNmYxZmI4NTQ4ZApBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglXZWQgTWFyIDIxIDE5OjQ0OjQ4IDIwMDcgKzAxMDAKCiAgICBBVlIzMjogUHJvdmlkZSBhIGRlZmluaXRpb24gb2Ygc3RydWN0IHN0YXQKCiAgICBDb3B5IHRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzdGF0IGZyb20gdGhlIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAxMmYwOTljMDgxNjdhN2E1MWFlZWU2MjNiYzE2ZGFmZDA4NDEyNzFjCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBEZWMgMTcgMTQ6NDY6MDYgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBVc2UgaW5pdGRyYW0oKSBpbnN0ZWFkIG9mIGJvYXJkX2luaXRfbWVtb3JpZXMoKQoKICAgIENvbmZvcm0gdG8gdGhlICJzdGFuZGFyZCIgaW50ZXJmYWNlIGFuZCB1c2UgaW5pdGRyYW0oKSBpbnN0ZWFkIG9mCiAgICBib2FyZF9pbml0X21lbW9yaWVzKCkgb24gQVZSMzIuIFRoaXMgZW5hYmxlcyB1cyB0byBnZXQgcmlkIG9mIHRoZQogICAgc2RyYW1fc2l6ZSBtZW1iZXIgb2YgdGhlIGdsb2JhbF9kYXRhIHN0cnVjdCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDFmNGYyMTIxYzI2ODUxODJlYjg3ZmE5YTliNzk5ZDE5MTczODdhMWMKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJTW9uIE5vdiAyMCAxNTo1MzoxMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IFJlbG9jYXRlIHUtYm9vdCB0byBTRFJBTQoKICAgIFJlbG9jYXRlIHRoZSB1LWJvb3QgaW1hZ2UgaW50byBTRFJBTSBsaWtlIGV2ZXJ5b25lIGVsc2UgZG9lcy4gVGhpcwogICAgbWVhbnMgdGhhdCB3ZSBjYW4gaGFuZGxlIG11Y2ggbGFyZ2VyIC5kYXRhIGFuZCAuYnNzIHRoYW4gd2UgdXNlZCB0by4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCBkZjU0OGQzYzNlMmJiYzQwMjU4NzEzMTY3ODU5ZmZjMmNlOTlhOTAwCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVN1biBOb3YgMTkgMTg6MDY6NTMgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBSZXNvdXJjZSBtYW5hZ2VtZW50IHJld3JpdGUKCiAgICBSZXdyaXRlIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IGNvZGUgKGkuZS4gSS9PIG1lbW9yeSwgY2xvY2sgZ2F0aW5nLAogICAgZ3Bpbykgc28gaXQgZG9lc24ndCBkZXBlbmQgb24gYW55IGdsb2JhbCBzdGF0ZS4gVGhpcyBpcyBuZWNlc3NhcnkKICAgIGJlY2F1c2UgdGhpcyBjb2RlIGlzIGhlYXZpbHkgdXNlZCBiZWZvcmUgcmVsb2NhdGlvbiB0byBSQU0sIHNvIHdlCiAgICBjYW4ndCB3cml0ZSB0byBhbnkgZ2xvYmFsIHZhcmlhYmxlcy4KCiAgICBBcyBhbiBhZGRlZCBib251cywgdGhpcyBtYWtlcyB1LWJvb3QncyBtZW1vcnkgZm9vdHByaW50IGEgYml0IHNtYWxsZXIsCiAgICBhbHRob3VnaCBzb21lIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gbGVmdCBvdXQ7IGFsbCBjbG9ja3MgYXJlIGVuYWJsZWQKICAgIGFsbCB0aGUgdGltZSwgYW5kIHRoZXJlJ3Mgbm8gY2hlY2tpbmcgZm9yIGdwaW8gbGluZSBjb25mbGljdHMuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMDNkMWUxMzY1Nzk2Y2QxNWQxNzI2ZThhNTFmZDhiNWJlNTBiMmZlOQpBdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgpEYXRlOglTYXQgTm92IDE4IDE4OjAxOjEzIDIwMDYgKzAxMDAKCiAgICBBVlIzMjogQ2xlYW4gdXAgbWVtb3J5LW1hcC5oIGZvciBhdDMyYXA3MDAwCgogICAgQ29udmVydCBzcGFjZXMgdG8gdGFicyAobXVzdCBoYXZlIG1pc3NlZCB0aGlzIG9uZSBsYXN0IHRpbWUgYXJvdW5kKSwKICAgIHNvcnQgdGhlIGVudHJpZXMgYnkgYWRkcmVzcyBhbmQgZ3JvdXAgdGhlbSB0b2dldGhlciBieSBidXMKICAgIGNvbm5lY3Rpdml0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KCmNvbW1pdCAyOGM2OTllZjY5ZjRiNmNkZjI1MmU0NzQ3YjdiNTkwMDI4YTg4OTgxCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVNhdCBOb3YgMTggMTc6MzI6MzEgMjAwNiArMDEwMAoKICAgIEFWUjMyOiBCdWlsZCBwb3NpdGlvbi1pbmRlcGVuZGVudCB1LWJvb3QKCiAgICBBZGQgLWZQSUMgLW1uby1pbml0LWdvdCB0byB0aGUgYXZyMzItc3BlY2lmaWMgQ0ZMQUdTIHRvIG1ha2UgdS1ib290CiAgICBwb3NpdGlvbiBpbmRlcGVuZGVudC4gVGhpcyB3aWxsIG1ha2UgcmVsb2NhdGlvbiBhIGxvdCBlYXNpZXIuCgogICAgLW1uby1pbml0LWdvdCBtZWFucyB0aGF0IGdjYyBzaG91bGRuJ3QgZW1pdCBjb2RlIHRvIGxvYWQgdGhlIEdPVAogICAgYWRkcmVzcyBpbnRvIHI2IGluIGV2ZXJ5IGZ1bmN0aW9uIHByb2xvZ3VlLiBXZSBkbyBpdCBvbmNlIGFuZCBmb3IKICAgIGFsbCBpbiB0aGUgZWFybHkgc3RhcnR1cCBhc3NlbWJseSBjb2RlLCBzbyBlbmFibGluZyB0aGlzIG9wdGlvbgogICAgbWFrZXMgdS1ib290IGEgYml0IGZhc3RlciBhbmQgc21hbGxlci4KCiAgICBUaGUgYXNzZW1ibHkgcGFydHMgaGF2ZSBhbHdheXMgYmVlbiBwb3NpdGlvbi1pbmRlcGVuZGVudCwgc28gbm8gY29kZQogICAgY2hhbmdlcyBzaG91bGQgYmUgbmVjZXNzYXJ5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDUzNzRiMzZkZTkxZDAwNmQxZGY5NTM2MjU5ZmE5ZjY2YjAxYWEzYWEKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAxOCAxNzoyNDozMSAyMDA2ICswMTAwCgogICAgQVZSMzI6IFVzZSBhdnIzMi1saW51eC0gY3Jvc3MtY29tcGlsYXRpb24gcHJlZml4IGJ5IGRlZmF1bHQKCiAgICBJdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgd2hpY2ggdG9vbGNoYWluIHlvdSB1c2UgdG8gY29tcGlsZSB1LWJvb3QsCiAgICBidXQgdGhlIGF2cjMyLWxpbnV4IG9uZSBpcyBwcm9iYWJseSB3aGF0IG1vc3QgcGVvcGxlIGhhdmUgaW5zdGFsbGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGM4NDFiZWVkZGViZWNlMDAzOWU3MjRmYjI3ZjRkMWEzOWVlMWM2YjYKQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KRGF0ZToJU2F0IE5vdiAxOCAxNzoxNTozMCAyMDA2ICswMTAwCgogICAgQVZSMzI6IFNwbGl0IHN0YXJ0X3VfYm9vdCBpbnRvIGJvYXJkX2luaXRfZiBhbmQgYm9hcmRfaW5pdF9yCgogICAgU3BsaXQgdGhlIGF2cjMyIGluaXRpYWxpemF0aW9uIGNvZGUgaW50byBhIGZ1bmN0aW9uIHRvIHJ1biBiZWZvcmUKICAgIHJlbG9jYXRpb24sIGJvYXJkX2luaXRfZiBhbmQgYSBmdW5jdGlvbiB0byBydW4gYWZ0ZXIgcmVsb2NhdGlvbiwKICAgIGJvYXJkX2luaXRfci4gRm9yIG5vdywgYm9hcmRfaW5pdF9mIHNpbXBseSBjYWxscyBib2FyZF9pbml0X3IKICAgIGF0IHRoZSBlbmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgMzc0MDMwMDVjZmU2YmIxMzk2NGQ0NTBmNmE0OGEwYjBmMmY3MDE3ZQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IEFwciAxNCAwNToyNjo0OCAyMDA3ICswMjAwCgogICAgW0ZpeF0JU2V0IHRoZSBMRUQgc3RhdHVzIHJlZ2lzdGVyIG9uIHRoZSBVQzEwMSBmb3IgdGhlIExYVDk3MSBQSFkuCgkgICAgY2xlYXIgdGhlIERpc3BsYXkgYWZ0ZXIgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNzg4Mjc1MWM3OGI3ZWNhYmZkNDliMGVmZjhkZTI3NjYxYzcxZjE2YwpBdXRob3I6IERlbmlzIFBldGVyIDxkLnBldGVyQG1wbC5jaD4KRGF0ZToJRnJpIEFwciAxMyAwOToxMzozMyAyMDA3ICswMjAwCgogICAgW1BBVENIXSBGaXggYnVncyBpbiBjbWRfaWRlLmMgYW5kIGNtZF9zY3NpLmMKCiAgICBGaXggYnVnIGludHJvZHVjZWQgYnkgIkZpeCBnZXRfcGFydGl0aW9uX2luZm8oKSBwYXJhbWV0ZXIgZXJyb3IgaW4gYWxsCiAgICBvdGhlciBjYWxscyIgZnJvbSAyMDA1LTAzLTA0IGluIGNtZF9pZGUuYyBhbmQgY21kX3Njc2kuYywgd2hpY2ggcHJldmVudGVkCiAgICB0byB1c2UgZGlza2Jvb3Qgb3Igc2NzaWJvb3QgZm9ybSBhbm90aGVyIGRldmljZSB0aGFuIDAuCgogICAgU2lnbmVkLW9mZi1ieTogRGVuaXMgUGV0ZXIgPGQucGV0ZXJAbXBsLmNoPgoKY29tbWl0IDBiOTQ1MDRkMjJlNzBmNTM3YzE3YTBkMzhjODdlZGI2ZTM3MDk3N2QKQXV0aG9yOiBHcmVnIExvcHAgPGxvcHBAcG9ib3guY29tPgpEYXRlOglGcmkgQXByIDEzIDA4OjAyOjI0IDIwMDcgKzAyMDAKCiAgICBbUEFUQ0hdIEZpeCB1c2Ugb2YgInZvaWQgKiIgZm9yIGJsb2NrIGRldiByZWFkL3dyaXRlIGJ1ZmZlciBwb2ludGVycwoKICAgIFNpZ25lZC1vZi1ieTogR3JlZyBMb3BwIDxsb3BwQHBvYm94LmNvbT4KICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNmZiZjI2MWY4ZGYyOTRlNTg5Y2ZhZGViZWJlNTQ2OGUzYzBmMjllOQpBdXRob3I6IFhpZSBYaWFvYm8gPHI2MzA2MUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTWFyIDkgMTk6MDg6MjUgMjAwNyArMDgwMAoKICAgIEZpeCB0d28gYnVncyBmb3IgTVBDODN4eCBERFIyIGNvbnRyb2xsZXIgU1BEIEluaXQKCiAgICBUaGVyZSBhcmUgYSBmZXcgYnVncyBpbiB0aGUgY3B1L21wYzgzeHgvc3BkX3NkcmFtLmMKICAgIHRoZSBmaXJzdCBidWcgaXMgdGhhdCB0aGUgcGljb3NfdG9fY2xrIHJvdXRpbmUgaW50cm9kdWNlcyBhIGh1Z2UKICAgIHJvdW5kaW5nIGVycm9yIGluIDgzeHguCiAgICB0aGUgc2Vjb25kIGJ1ZyBpcyB0aGF0IHRoZSBtb2RlIHJlZ2lzdGVyIHdyaXRlIHJlY292ZXJ5IGZpZWxkIGlzCiAgICB0V1ItMSwgbm90IHRXUiA+PiAxLgoKY29tbWl0IDJhZDNhYmEwMWQzN2I3MmU3Yzk1N2IwN2UxMDJmY2NkNjRmZTZkMTMKQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KRGF0ZToJVGh1IEFwciAxMiAxNDoxNTo1OSAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggaTJjIGRpdmlzb3IgY2FsY3VsYXJpb24gZm9yIFBQQzR4eAoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgY2hhbmdlcyB0aGUgaTJjX2luaXQoLi4uKSBmdW5jdGlvbiB0byB1c2UgdGhlIGZ1bmN0aW9uCiAgICBnZXRfT1BCX2ZyZXEoKSByYXRoZXIgdGhhbiBjYWxjdWxhdGluZyB0aGUgT1BCIHNwZWVkIGJ5CiAgICBzeXNJbmZvLmZyZXFQTEIvc3lzSW5mby5wbGxPcGJEaXYuIFRoZSBnZXRfT1BCX2ZyZXEoKSBmdW5jdGlvbiBpcwogICAgc3BlY2lmaWMgcGVyIHByb2Nlc3Nvci4gVGhlIHByaW9yIG1ldGhvZCB3YXMgbm90IGFuZCBzbyB3YXMgY2FsY3VsYXRpbmcKICAgIHRoZSB3cm9uZyBzcGVlZCBmb3Igc29tZSBQUEM0eHggcHJvY2Vzc29ycy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2YzliYTkxOTM3NWRiOTc3YWFhZDkxNDZiZjMyMGM3YWZkMDdhZTdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJV2VkIEFwciAxMSAxNzoyNTowMSAyMDA3ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgNTEwNTZkZDk4NjNlNmExYmMzNjNhZmJiZTE3NzVjNThjZDk2NzQxOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBBcHIgMTEgMTc6MjI6NTUgMjAwNyArMDIwMAoKICAgIFVwZGF0ZSBmb3IgU0MzIGJvYXJkCgogICAgKiBNYWtlIElERSB0aW1lb3V0IGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGlkZV9yZXNldF90aW1lb3V0IHZhcmlhYmxlLgogICAgKiBVc2UgTmV3bGluZSBhcyAicGFzc3dvcmQiIHN0cmluZwogICAgKiBVc2UganVzdCBhIHNpbmdsZSBwYXJ0aXRpb24gaW4gTkFORCBmbGFzaAoKY29tbWl0IDNkOThiODU4MDBjODBkYzY4MjI3YzhmMTBiZjVjOTM0NTZkNmQwNTQKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gSmFuIDIyIDEyOjM3OjMwIDIwMDcgLTA2MDAKCiAgICBBZGQgUElYSVMgRlBHQSBzdXBwb3J0IGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBNb3ZlIHRoZSA4NjQxSFBDTidzIFBJWElTIGNvZGUgdG8gdGhlIG5ldyBkaXJlY3RvcnkKICAgIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vIGFzIGl0IHdpbGwgYmUgc2hhcmVkIGJ5CiAgICBmdXR1cmUgYm9hcmRzIG5vdCBpbiB0aGUgc2FtZSBwcm9jZXNzb3IgZmFtaWx5LgoKICAgIFdyaXRlIGEgInBpeGlzX3Jlc2V0IiBjb21tYW5kIHRoYXQgdXRpbGl6ZXMgdGhlIEZQR0EKICAgIHJlc2V0IHNlcXVlbmNlciB0byBzdXBwb3J0IGFsdGVybmF0ZSBzb2Z0LXJlc2V0IG9wdGlvbnMKICAgIHN1Y2ggYXMgdXNpbmcgdGhlICJhbHRlcm5hdGUiIGZsYXNoIGJhbmssIGVuYWJsaW5nCiAgICB0aGUgd2F0Y2ggZG9nLCBvciBjaG9vc2luZyBkaWZmZXJlbnQgQ1BVIGZyZXF1ZW5jaWVzLgoKICAgIEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgcGl4aXNfcmVzZXQgdG8gUkVBRE1FLm1wYzg2NDFocGNuLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDY0ZGJiZDQwYzU4MzQ5YjY0ZjQzZmQzM2RiYjVjYTBhZGI2N2Q2NDIKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglGcmkgQXByIDYgMTQ6MTk6NDMgMjAwNyAtMDQwMAoKICAgIE1vdmVkIGZkdCBjb21tYW5kIHN1cHBvcnQgY29kZSB0byBmZHRfc3VwcG9ydC5jCgogICAgLi4uaW4gcHJlcGFyYXRpb24gZm9yIGltcHJvdmluZyB0aGUgYm9vdG0gY29tbWFuZCdzIGhhbmRsaW5nIG9mIGZkdCBibG9icy4KICAgIEFsc28gY2xlYW5lZCB1cCBzb21lIGNvZGluZyBzbG9wcGluZXNzLgoKY29tbWl0IDY2NzlmOTI5OTUzNGU0ODhhMTcxYTliYjhmOWJiODkxZGUyNDdhYWIKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglGcmkgQXByIDYgMTQ6MTc6MTQgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogTWFrZSBmZHRfY2hlY2tfaGVhZGVyKCkgcHVibGljCgogICAgQ2hhbmdlZCBfZmR0X2NoZWNrX2hlYWRlcigpIHRvIGZkdF9jaGVja19oZWFkZXIoKSBhbmQgbWFkZSBpdCBwYXJ0IG9mCiAgICB0aGUgaW50ZXJmYWNlIC0gaXQgaXMgYSB1c2VmdWwgcm91dGluZS4KCiAgICBBbHNvIGRpZCBzb21lIGFzdGhldGljcyBjbGVhbnVwIHRvIHRoZSBpbmNsdWRlIGZpbGVzIChoZWFkZXJzKS4KCmNvbW1pdCBjMDcwN2NlNjU2Nzc2NTBiNWNlYWIwNTAwZWU1MGFlNTE2OGFmZWYyCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciA1IDE4OjM0OjA2IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBLaWxsIG9mZiBhIGJ1bmNoIG9mIGNvbW1vbiBsb2NhbCBwcm90b3R5cGVzCgpjb21taXQgN2I3ZTMwYWE2NGJiNjY1N2ExYmZkMzJmZGJkYmZlYjU2MWU2YTQ4ZApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODozMzowNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gRml4IGR5bmFtaWMgQ1BMQiBnZW5lcmF0aW9uIGlzc3VlCgpjb21taXQgMDQ0NWUzYTI2NDI1MWQ3NWIxYmU0NWVmNzEzYzcwNzI2YTI5NTJmMApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODozMTo0NyAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gbWluaW9yIGNsZWFudXAKCmNvbW1pdCAxNTVmZDc2NjU3Mzk4MTA5MGU2MzhiNDkzZDU4NTc1NjIxNTE4NjJlCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJVGh1IEFwciA1IDE4OjMxOjE4IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBGaXggY29weXJpZ2h0IGFuZCB1cGRhdGUgbGljZW5zZQoKY29tbWl0IDlmZDQzN2JiZDc1ZDI4MmY4OTllMWRhNTBiZTIwYTJiZjM4NDUwYmMKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglUaHUgQXByIDUgMTg6MzA6MjUgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEFkZCBCRjUzNyBFTUFDIGRyaXZlciBpbml0aWFsaXphdGlvbgoKY29tbWl0IDg4OTI1NmU4NjA0ZTBjNjhkYjFkODY2ZDcyMDg5NGRmZmVkZTlkZjYKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglUaHUgQXByIDUgMTg6Mjk6NTUgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIGNhbGwgcmVhbCB0aGUgc3lzdGVtIHN5bmNocm9uaXplIGluc3RydWN0aW9uCgpjb21taXQgZTBkZjFjOTIxYjc4ODI4OTU2NGU0YzFlZTcxMjBhNmE5Y2QzYWIwNQpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODoyOToxNyAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gcmVtb3ZlIGFzbS9wYWdlLmggYXMgd2UgZG8gbm90IGFjdHVhbGx5IHVzZS93YW50IGFueSBvZiB0aGVzZSBkZWZpbml0aW9ucyBub3IgZG9lcyBhbnkgb3RoZXIgYXJjaCBpbmNsdWRlIGl0Cgpjb21taXQgZGZlZWFiMmNkNjgwZGYwNDdlNjhlNzIzYjI0NmFkZjZmMzNiYjU1NgpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVRodSBBcHIgNSAxODoyODozNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF06IGZpeCBmbGFzaCB1bmFsaWduZWQgY29weSBpc3N1ZQoKY29tbWl0IDQ0M2ZlYjc0MDU4NGU0MDZlZmEyMDNhZjkwOWZlMjkyNjYwOGU4ZDUKQXV0aG9yOiBJZ29yIE1hcm5hdCA8bWFybnlAcmFtYmxlci5ydT4KRGF0ZToJV2VkIE1hciAyMSAwOTo1NTowMSAyMDA3ICswMzAwCgogICAgVXBkYXRlIHVzYWdlIG9mICduYycgaW4gUkVBRE1FLk5ldENvbnNvbGUKCiAgICBBZGRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2FnZSBvZiBOZXRDb25zb2xlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIC1sIGFuZCAtcAogICAgc3dpdGNoZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIE1hcm5hdCA8bWFybnlAcmFtYmxlci5ydT4KICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKY29tbWl0IDMxYzk4YTg4MjI4MDIxYjMxNGM4OWViYjgxMDRmYjY0NzNkYTQ0NzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDQgMDI6MDk6MzAgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLgoKY29tbWl0IDk0YWJkN2MwNTgzZWJlMDFlNzk5YjI1ZjQ1MTIwMWRlZWFhYjU1MGQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgQXByIDQgMDE6NDk6MTUgMjAwNyArMDIwMAoKICAgIE1pbm9yIGNsZWFudXAuCgpjb21taXQgODIyYWYzNTFhZDJiYWJjN2Q5OTAzMzM2MWE1ZmNhY2QzMGY2YmM3OApBdXRob3I6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGVubmVlbm5lLmNvbT4KRGF0ZToJVHVlIEFwciAzIDE0OjI3OjE4IDIwMDcgKzAyMDAKCiAgICBTdXBwb3J0IGZvciB0aGUgUGhpbGlwcyBJU1AxMTZ4IEhDRCAoSG9zdCBDb250cm9sbGVyIERyaXZlcikKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Cgpjb21taXQgZWRmNTg1MWJlNmMxN2MwMzFkNGY3MWRkNWIwYTEyMDQwYjdjNTBjOApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBBcHIgMyAxNDoyNzowOCAyMDA3ICswMjAwCgogICAgVVNCOiBjbGVhbnVwIG1vbmFoYW5zIHVzYiBzdXBwb3J0LiBSZW1vdmUgZGVhZCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgYTY1YzU3NjhlNTUzNzUzMGJkMTc4MGFmM2QzZmRkYzMxMTNhMTYzYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIEFwciAyIDEwOjA5OjMwIDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBTeXNBQ0UgYWRkcmVzcyBvbiBLYXRtYWkKCiAgICBXaXRoIHRoaXMgbmV3IGJhc2UgYWRkcmVzcyBvZiB0aGUgWGlsaW54IFN5c3RlbUFDRSBjb250cm9sbGVyCiAgICB0aGUgTGludXggZHJpdmVyIHdpbGwgYmUgZWFzaWVyIHRvIGFkYXB0LCBzaW5jZSBpdCBjYW4gbm93IGJlCiAgICBtYXBwZWQgdmlhIHRoZSAibm9ybWFsIiBpb3JlbWFwKCkgY2FsbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYWVhMDNjNGU4YzNhMjFjZTQzZDNmYWY0OGE2ZTZkNDc0YzhiZGY3MwpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBNYXIgMzEgMTQ6MzA6NTMgMjAwNyAtMDQwMAoKICAgIEZpeCBzb21lIG1pbm9yIHdoaXRlc3BhY2UgdmlvbGF0aW9ucy4KCmNvbW1pdCAyMTNiZjhjODIyZGU4ZWVjYWY2OTg2MDY4NDQ2OWNkYWJhMmU5ZTZhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoyMzo1MSAyMDA3IC0wNDAwCgogICAgQWRkIGEgZmxhdHRlbmVkIGRldmljZSB0cmVlIChmZHQpIGNvbW1hbmQgKDIgb2YgMikKCiAgICBNb2RpZmljYXRpb25zIHRvIHRoZSBleGlzdGluZyBjb2RlIHRvIHN1cHBvcnQgdGhlIG5ldyBmZHQgY29tbWFuZC4KCmNvbW1pdCA3ODFlMDllZTZlM2UzZTM5MmFiMzYyYzFmMGVmMTA2OGFkYzc2ZTNlCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoyMjoxMCAyMDA3IC0wNDAwCgogICAgQWRkIGEgZmxhdHRlbmVkIGRldmljZSB0cmVlIChmZHQpIGNvbW1hbmQgKDEgb2YgMikKCiAgICBUaGUgZmR0IGNvbW1hbmQgdXNlcyBEYXZpZCBHaWJzb24ncyBsaWJmZHQgbGlicmFyeSB0byBtYW5pcHVsYXRlIGFzIHdlbGwKICAgIGFzIHByaW50IHRoZSBmbGF0dGVuZWQgZGV2aWNlIHRyZWUuICBUaGlzIHBhdGNoIGlzIHRoZSBuZXcgY29tbWFuZCwKICAgIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgZXhpc3RpbmcgY29kZS4KCmNvbW1pdCAzYWYwZDU4N2Q5M2UwYmU1Zjk2ZTFiMzBmYTQxZTY2MmY4YjA4MDNlCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMjoxMzo0MyAyMDA3IC0wNDAwCgogICAgbGliZmR0OiBFbmhhbmNlZCBhbmQgcHVibGlzaGVkIGZkdF9uZXh0X3RhZygpCgogICAgRW5oYW5jZWQgdGhlIGZvcm1lcmx5IHByaXZhdGUgZnVuY3Rpb24gX2ZkdF9uZXh0X3RhZygpIHRvIGFsbG93IHN0ZXBwaW5nCiAgICAgIHRocm91Z2ggdGhlIHRyZWUsIHVzZWQgdG8gcHJvZHVjZSBhIGh1bWFuLXJlYWRhYmxlIGR1bXAsIGFuZCBtYWRlCiAgICAgIGl0IHBhcnQgb2YgdGhlIHB1Ymxpc2hlZCBpbnRlcmZhY2UuCiAgICBBbHNvIGFkZGVkIHNvbWUgY29tbWVudHMuCgpjb21taXQgZmEzYTc0Y2VjNzNkZmQwNmE1YWUzNWE5YTMzNjgyMDAyNzNhYWE3MQpBdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+CkRhdGU6CVNhdCBNYXIgMzEgMTI6MDU6MzkgMjAwNyAtMDQwMAoKICAgIGxpYmZkdDogQ3VzdG9taXphdGlvbnMgZm9yIHVzZSBieSB1LWJvb3QuCgogICAgQ2hhbmdlcyB0byBEYXZpZCBHaWJzb24ncyBvcmlnaW5hbCBzb3VyY2UgdG8gZml0IGludG8gdS1ib290J3MKICAgIGVudmlyb25tZW50LiAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgoKY29tbWl0IDM1NzQ4MTc3YzY0YTRhODNhMDAwNTdlOTNiYjMzZTQwMjc4YTJhOTYKQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEYXRlOglTYXQgTWFyIDMxIDEyOjAwOjU2IDIwMDcgLTA0MDAKCiAgICBsaWJmZHQ6IEltcG9ydCBsaWJmZHQgc291cmNlICgyIG9mIDIpCgogICAgVGhpcyBhZGRzIHRoZSBhcHBsaWNhYmxlIGxpYmZkdCBzb3VyY2UgZmlsZXMgKHVubW9kaWZpZWQpIGFuZCBhIFJFQURNRQogICAgdG8gZXhwbGFpbiB3aGVyZSB0aGUgc291cmNlIGNhbWUgZnJvbS4KCmNvbW1pdCA3Y2Q1ZGEwZmU4NzdlNzE3MWE0Y2RkNDQ4ODBiY2U3ODMxMzI4NzFhCkF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRGF0ZToJU2F0IE1hciAzMSAxMTo1OTo1OSAyMDA3IC0wNDAwCgogICAgbGliZmR0OiBJbXBvcnQgbGliZmR0IHNvdXJjZSAoMSBvZiAyKQoKICAgIFRoaXMgYWRkcyB0aGUgYXBwbGljYWJsZSBsaWJmZHQgc291cmNlIGZpbGVzICh1bm1vZGlmaWVkKSBhbmQgYSBSRUFETUUKICAgIHRvIGV4cGxhaW4gd2hlcmUgdGhlIHNvdXJjZSBjYW1lIGZyb20uCgpjb21taXQgZGE2ZWJjMWJjMDgyY2JlM2I2YmJkZTA3OWNhZmUwOWY3ZWJiYWQ0YgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAxMzoxNjoyMyAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgS2F0bWFpIGJvb3RzdHJhcCBjb21tYW5kCgogICAgTm93IHRoZSBERFIyIGZyZXF1ZW5jeSBpcyBhbHNvIDIqUExCIGZyZXF1ZW5jeSB3aGVuIDE2Nk1IeiBQTEIKICAgIGlzIHNlbGVjdGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBjYWJlZTc1NmE2NTMyOTg2NzI5NDc3YzNjYzFlYTE2ZWY4NTE3YWQyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDMxIDEzOjE1OjA2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IFVwZGF0ZSA0NHhfc3BkX2RkcjIgY29kZSAoNDQwU1AvNDQwU1BlKQoKICAgIEFkZGl0aW9uYWwgUkFNIGluZm9ybWF0aW9uIGlzIG5vdyBwcmludGVkIHVwb24gcG93ZXJ1cCwgbGlrZQogICAgRERSMiBmcmVxdWVuY3kgYW5kIENBUyBsYXRlbmN5LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2MDcyMzgwMzQzMWFjNzVjYWQwODU2OTA3ODllNDMzZDVhYjkxNzRlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgTWFyIDMxIDA4OjQ4OjM2IDIwMDcgKzAyMDAKCiAgICBwcGM0eHg6IENoYW5nZSBZdWNjYSBjb25maWcgZmlsZSB0byBzdXBwb3J0IEVDQwoKICAgIFdpdGggdGhlIHVwZGF0ZWQgNDR4IEREUjIgZHJpdmVyIHRoZSBZdWNjYSBib2FyZCBub3cgc3VwcG9ydHMKICAgIEVDQyBnZW5lcmF0aW9uIGFuZCBjaGVja2luZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDkwZTU3MzBjNjc0YjIwZDcwOGI3ODNhMmM1ZmZkNzIwOGY4Mzg3MwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAwODo0NzozNCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBGaXggImJvb3RzdHJhcCIgY29tbWFuZCBmb3IgS2F0bWFpIGJvYXJkCgogICAgVGhlIGJvYXJkIHNwZWNpZmljICJib290c3RyYXAiIGNvbW1hbmQgaXMgbm93IGZpeGVkIGFuZCBjYW4KICAgIGJlIHVzZWQgZm9yIHRoZSBBTUNDIEthdG1haSBib2FyZCB0byBjb25maWd1cmUgZGlmZmVyZW50CiAgICBDUFUvUExCL09QQiBmcmVxdWVuY2llcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgOTRmNTQ3MDNjM2E3NzZlYzIzZTQyN2NhMmExNmUwYTc5YTVkNTBjMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAzMSAwODo0NjowOCAyMDA3ICswMjAwCgogICAgcHBjNHh4OiBVcGRhdGUgNDR4X3NwZF9kZHIyIGNvZGUgKDQ0MFNQLzQ0MFNQZSkKCiAgICBGaXggYSBidWcgaW4gdGhlIGF1dG8gY2FsaWJyYXRpb24gcm91dGluZS4gVGhpcyBkcml2ZXIgbm93IHJ1bnMKICAgIG1vcmUgcmVsaWFibGUgd2l0aCB0aGUgdGVzdGVkIG1vZHVsZXMuIEl0J3MgYWxzbyB0ZXN0ZWQgd2l0aAogICAgMTY3TUh6IFBMQiBmcmVxdWVuY3kgKDY2N01IeiBERFIyIGZyZXF1ZW5jeSkgb24gdGhlIEthdG1haS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQyY2QwOTdiZTFlN2FmZmU4MmY0MmFiM2RhMjIwOTU5YTY5OWU2NApBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJRnJpIE1hciAzMCAyMjo1MjowOSAyMDA3ICswMjAwCgogICAgW1BBVENIXSBDbGVhbiBpbmNsdWRlIGRlcGVuZGVuY2UKCmNvbW1pdCA2ZjkzNDIxMGZiMjkzZmRlMmNmYjQyNTFjNmQ5NmZkYzU4YjZhOTA2CkF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgpEYXRlOglGcmkgTWFyIDMwIDIyOjQyOjQ1IDIwMDcgKzAyMDAKCiAgICBbQ0xFQU5dIFJlbW92ZSBpbmVmZmljaWVudCBTdXpha3UgY29kZQoKY29tbWl0IDQzMGYxYjBmOWE2NzBjMmYxM2VhYTUyZTY2YTEwZGI5NmRkMzY0N2QKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjggMTU6MDM6MTYgMjAwNyArMDIwMAoKICAgIE1lcmdlIHNvbWUgQU1DQyBtYWtlIHRhcmdldHMgdG8ga2VlcCB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIHNtYWxsZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGM3NWM5ZDg0MzA3YTlmMWNiZTFmZjBjNGQ4OTM3ZWUzYTk2NDc1ZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyOCAxNDo1MjoxMiAyMDA3ICswMjAwCgogICAgaTJjOiBFbmFibGUgIm9sZCIgaTJjIGNvbW1hbmRzIGV2ZW4gd2hlbiBDT05GSUdfSTJDX0NNRF9UUkVFIGlzIGRlZmluZWQKCiAgICBUaGUgIm9sZCIgaTJjIGNvbW1hbmRzIChpcHJvYmUsIGltZC4uLikgYXJlIG5vdyBjb21waWxlZCBpbiBhZ2FpbiwKICAgIGV2ZW4gd2hlbiB0aGUgaTJjIGNvbW1hbmQgdHJlZSBpcyBlbmFibGVkIHZpYSB0aGUgQ09ORklHX0kyQ19DTURfVFJFRQogICAgY29uZmlnIG9wdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNWRhMDQ4YWRmNDRiZWE1ZTNiOTQwODBkMDI5MDNjMmUzZmU3YWE0YQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJVHVlIE1hciAyNyAwMDozMjoxNiAyMDA3ICswMjAwCgogICAgUEFUQ0g6IFJlc29sdmUgR1BMIGxpY2Vuc2UgcHJvYmxlbQoKY29tbWl0IGFlMDBiYjRiMjk0NGRjNjRhNDg1ZWQ3MmExOTc1NGIxMWFmN2MyMjMKQXV0aG9yOiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+CkRhdGU6CU1vbiBNYXIgMjYgMTI6MDM6MzYgMjAwNyArMDIwMAoKICAgIFBYQTogcHhhMjd4IFVTQiBPSENJIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KCmNvbW1pdCBhZTc5ZjYwNjc3YzIwODMyNjUzNTY0N2RjYmQ1YzNlYzQwZGJjYjBiCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAyNiAxMToyMTowNSAyMDA3ICswMjAwCgogICAgVVNCOiByZW1vdmUgdGhlIFMzQzI0WDBfbWVyZ2UgI2RlZmluZSwgd2hpY2ggd2FzIGludHJvZHVjZWQgd2hpbGUKICAgIG1lcmdpbmcgT0hDSSBkcml2ZXJzLgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMTc5ODA0OTUyMmY1OTQwMTNhZWEyOTQ1N2Q0Njc5NDI5OGM2YWUxNQpBdXRob3I6IE1pY2hhbCBTaW1layA8cm9vdEBtb25zdHIuZXU+CkRhdGU6CU1vbiBNYXIgMjYgMDE6Mzk6MDcgMjAwNyArMDIwMAoKICAgIFN1cHBvcnQgZm9yIFhVUFYyUCBib2FyZAogICAgUmVzZXQgc3VwcG9ydAogICAgQlNQIGF1dG9jb25maWcgc3VwcG9ydAoKY29tbWl0IDBkOTc0ZDUyOTczNDk1MDRhMmRkZmEwOTMxNGJlNTczYjVkZjMyMGEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBNYXIgMjQgMTU6NTc6MDkgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIDR4eCBHUElPIGZ1bmN0aW9ucwoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIDR4eCBHUElPIGZ1bmN0aW9ucy4gSXQgYWxzbyBtb3ZlcyBzb21lIG9mIHRoZQogICAgY29tbW9uIGNvZGUgYW5kIGRlZmluZXMgaW50byBhIGNvbW1vbiA0eHggR1BJTyBoZWFkZXIgZmlsZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmRiNjMzNjU4YmJmMzY2YWIwYzhkYWQ3YTA3MjdlMWZiMmFlNmIxMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAyNCAxNTo1NTo1OCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBTbWFsbCBTZXF1b2lhIGNsZWFudXAKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgM2NiODZmM2U0MGQyYTgwMzU2MTc3NDM0YTk5Zjc1YmM4YmFhOWNhZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE1hciAyNCAxNTo0NTozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDbGVhbiB1cCA0MEVaL0FjYWRpYSBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgYWxsIHRoZSBvcGVuIGlzc3VlIG9mIHRoZSBwcmVsaW1pbmFyeQogICAgQWNhZGlhIHN1cHBvcnQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDZlYjFkZjgzNTE5MWQ4Y2U0YjgxZDVhZjQwZmE4ZTBmYmU3OGU5OTcKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgRGVjIDEyIDExOjAyOjIwIDIwMDYgLTA2MDAKCiAgICBGaXggODY0MUhQQ04gcHJvYmxlbSB3aXRoIGxkIHZlcnNpb24gMi4xNgoKICAgIChEb3Qgb3V0c2lkZSBzZWN0aW9ucyBwcm9ibGVtKS4KCiAgICBUaGlzIGZpeCBpcyBpbiB0aGUgc3Bpcml0IG9mIDgwN2Q1ZDczMTkzMzBlMzM2YWIzNGE1NjIzYzVlMGQ3M2I4N2Q1NDAuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5OTY0YTRkZDBkNGVmNWEwMzdmZWJhZWJmMWFhNDk0YjFhNzI5OTFjCkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyA3IDEwOjM1OjU1IDIwMDYgLTA2MDAKCiAgICBTZXQgUmV2IDIueCA4Nnh4IFBJQyBpbiBtaXhlZCBtb2RlLgoKICAgIFByZXZlbnQgZmFsc2UgaW50ZXJydXB0IGZyb20gaGFuZ2luZyBMaW51eCBhcyBNU1JbRUVdIGlzIHNldAogICAgdG8gZW5hYmxlIGludGVycnVwdHMgYnkgY2hhbmdpbmcgdGhlIFBJQyBvdXQgb2YgdGhlIGRlZmF1bHQKICAgIHBhc3MgdGhyb3VnaCBtb2RlIGludG8gbWl4ZWQgbW9kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1YTU4YTczY2ViMGE0MDU5YzQyZWY2NGNlZGJjMWE0NWUwYWFhMDBlCkF1dGhvcjogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IERlYyA3IDEwOjMyOjM1IDIwMDYgLTA2MDAKCiAgICBBZGQgZmxhc2ggY21kIGZ1bmN0aW9uIHRvIDg2NDFIUENOIHJhbWJvb3QKCiAgICBBbHNvIGZpeGVzIHNvbWUgY29tbW1hbmQgZm9yIDg2NDEgSFBDTiByYW1ib290IGNhc2UuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmNjY2VhY2MwNGIwMDlkOTIzYWZiN2MyNjE4OWJhMmY4YTJhNWQ0NgpBdXRob3I6IEVkIFN3YXJ0aG91dCA8ZWQuc3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAxMDozNDoxNCAyMDA2IC0wNjAwCgogICAgQWRkIHN1cHBvcnQgZm9yIDg2NDEgUmV2IDIgc2lsaWNvbi4KCiAgICBXaXRob3V0IHRoaXMgcGF0Y2gsIEkgYW0gdW5hYmxlIHRvIGdldCB0byB0aGUgcHJvbXB0IG9uIHJldiAyIHNpbGljb24uCiAgICBPbmx5IHNldCBkZHJpb292Y3IgZm9yIHJldjEuCgogICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0PGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NGJhNDY0Yjk5MDAxZjhiZDFjNDU2YTFlOWQ1OTcyNjI1MmY3MDdhCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAyMiAwMDoxMzoxMiAyMDA3ICswMTAwCgogICAgQ29kZSBjbGVhbnVwIC8gcmUtaW5zZXJ0IHByZXZpb3VzIENvcHlyaWdodCBlbnRyaWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgMmE4ZGZlMDgzNTlhMWI2NjM0MThiMmZhYTFkYTFkN2JjZTM0ZDMwMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMjM6MjY6MTUgMjAwNyArMDEwMAoKICAgIENvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IGU2NjE1ZWNmNGVhZjRkZDUyNjk2OTM0YWVkOGY1YzY0NzRjZmQyODYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMTQ6NTQ6MjkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogRml4IGZpbGUgbW9kZSBvZiBpbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmgKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDVmNDYxNGM5MzUwZDkzMzNlNTc1MTAwZmIyNTBhYWI3NzRkMDI1OApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgMjEgMTQ6NDE6NDYgMjAwNyArMDEwMAoKICAgIFNQQzE5MjA6IGZpeCBzbWFsbCBjbG9jayByb3V0aW5nIGJ1ZwoKICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Cgpjb21taXQgMTZjMGNjMWM4MjA4MWE0OTNhYjg3YzUxOTgwYjI4MzM2Y2UxYmNlOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyMSAxMzozOTo1NyAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgQU1DQyBBY2FkaWEgKDQwNUVaKSBldmFsIGJvYXJkIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG5ldyBBTUNDIEFjYWRpYSBldmFsIGJvYXJkLgoKICAgIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBBY2FkaWEvNDA1RVogc3VwcG9ydCBpcyBzdGlsbCBpbiBhIGJldGEgc3RhZ2UuCiAgICBTdGlsbCBsb3QncyBvZiBjbGVhbnVwIG5lZWRlZCBidXQgd2UgbmVlZCBhIHByZWxpbWluYXJ5IHJlbGVhc2Ugbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMDFiZDIxOGIwMGFmNzM0OTkzMzFhMWE3MDE2MjVhODUyY2QyODZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDIxIDEzOjM4OjU5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBBTUNDIFBQQzQwNUVaIHN1cHBvcnQKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG5ldyBBTUNDIDQwNUVaIFBQQy4gSXQgaXMgaW4KICAgIHByZXBhcmF0aW9uIGZvciB0aGUgQU1DQyBBY2FkaWEgYm9hcmQgc3VwcG9ydC4KCiAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgQWNhZGlhLzQwNUVaIHN1cHBvcnQgaXMgc3RpbGwgaW4gYSBiZXRhIHN0YWdlLgogICAgU3RpbGwgbG90J3Mgb2YgY2xlYW51cCBuZWVkZWQgYnV0IHdlIG5lZWQgYSBwcmVsaW1pbmFyeSByZWxlYXNlIG5vdy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDdlODJjYjJlMjg0YTg5M2RmNjY5M2YyYTEzMzdhYjJjNDdiZjZhMQpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIE1hciAyMSAwODo0NToxNyAyMDA3ICswMTAwCgogICAgW1BBVENIXSBUUU04MjcyOiBkb250IGNoYW5nZSB0aGUgYml0cyBnaXZlbiBmcm9tIHRoZSBIUkNXCgkJICAgICBmb3IgdGhlIFNJVU1DUiBhbmQgQkNSIFJlZ2lzdGVyLgoJCSAgICAgRml4IHRoZSBjYWxjdWxhdGlvbiBmb3IgdGhlIEVFcHJvbSBTaXplCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNjU0NTg5ODczZGJhZmNmMTA0ZGZmMTMzY2UwZDAzYTQ1MDZlOWNjMwpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CVR1ZSBNYXIgMjAgMTg6MTY6MjQgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEFkZCBCRjU2MSBFWktJVCBib2FyZCBzdXBwb3J0Cgpjb21taXQgYTYxNTRmZDFjZmQwMjBmNmRhODUyN2UwMzY1YjEwMjBhMTFhNzFkMApBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTkgMjI6NTU6NTggMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIG1pbm9yIGNsZWFudXAKCmNvbW1pdCAzODliNmJiNTBmNzQ1YmY1MDM4Y2UwMzAzMDBkOGE4NTEyZTk2Zjc5CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJTW9uIE1hciAxOSAxMzoxMDowOCAyMDA3ICswMTAwCgogICAgUmVtb3ZlIG9ic29sZXRlZCBQT1NUIGZpbGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Cgpjb21taXQgOGU3MDliYmIyNjM2YjU2NzBhOGYyYjU3NWUxMzhlYjFmNTU3NzNmNgpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTkgMDE6MjY6MTEgMjAwNyArMDgwMAoKICAgIFtQQVRDSF0gQWRkIGZsYXNoIGNoaXAgTTI5VzMyMEVUL0Igc3VwcG9ydAoKY29tbWl0IDI2YmY3ZGVjYTM2NGE1YjMzZjM5ZThmMTRkZGQzZjQwODEzNDUwMTUKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglNb24gTWFyIDE5IDAxOjI0OjUyIDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBBZGQgQkY1Mzcgc3RhbXAgYm9hcmQgc3VwcG9ydAoKY29tbWl0IDg0MjNlNWUzMWE3MjM1ZDA1YTQ4MjYyNzMxNWZiMTFkNDljMTdiZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBNYXIgMTYgMjE6MTE6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXNlIGR5bmFtaWMgU0RSQU0gVExCIHNldHVwIG9uIEFNQ0MgRWJvbnkgZXZhbCBib2FyZAoKICAgIERlZmluZSBDT05GSUdfUFJPR19TRFJBTV9UTEIgc28gdGhhdCB0aGUgVExCIGVudHJpZXMgZm9yIHRoZQogICAgRERSIG1lbW9yeSBhcmUgZHluYW1pY2FsbHkgcHJvZ3JhbW1lZCBtYXRjaGluZyB0aGUgdG90YWwgc2l6ZQogICAgb2YgdGhlIGVxdWlwcGVkIG1lbW9yeSAoRElNTSBtb2R1bGVzKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzZkMTQ2NmY5MThiODgxY2RhMmQyNTkyNTQ3NjFlNzM4ODUwOTNjMgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUdWUgTWFyIDEzIDEzOjM4OjA1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIHJlbmFtZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJ2FkZGNvbicgdG8gJ2FkZGNvbnMnIGZvciBQQ0k0MDUKCSAgICBib2FyZHMgaW4gdGVybXMgb2YgdW5pZmljYXRpb24uCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgYTcwOTBiOTkzZDNkNGQyMjIxYWMzZjMzZTZjYjFkMWIyY2NjNmJmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXIgMTMgMTY6MDU6NTUgMjAwNyArMDEwMAoKICAgIE1ha2UgU0MzIGJvYXJkIGJ1aWxkIHdpdGggJ21ha2UgTz0nOyB1c2UgJ2FkZGNvbnMnIGNvbnNpc3RlbnRseQogICAgKFNDMyBhbmQgSnVwaXRlciB1c2VkIHRvIHVzZSAnYWRkY29uJyBpbnN0ZWFkKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIHdkQGRlbnguZGUKCmNvbW1pdCA4NTAyZTMwYTI4ZTQ5MmM3NTZlYTJkN2RmMGFjZTAyNjM4OGZjZTRiCkF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgTWFyIDEzIDA5OjQwOjU5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIHVwZGF0ZSBib2FyZCBjb25maWcgZm9yIGp1cGl0ZXIgQm9hcmQ6CgkgICAgYWRkZWQgSHVzaCBTaGVsbCwKCQkgIENPTkZJR19DTURMSU5FX0VESVRJTkcsCgkJICBDRkdfRU5WX0FERFJfUkVEVU5EIGFjdGl2YXRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDBkOTNkZTExNDQ5MzkwYTU5ODRiMDIzNmMzNjEyZTUwZjZkYmI3ZTgKQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgpEYXRlOglNb24gTWFyIDEyIDEyOjExOjU1IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dW1BBVENIXSBtaW5vciBjbGVhbnVwCgpjb21taXQgYmZhNTc1NGE1ODQ3N2FjOTE3ZDIxNTI3Y2QwZjA3OWQ4N2NmMTg4ZQpBdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CU1vbiBNYXIgMTIgMDE6NDI6MDYgMjAwNyArMDgwMAoKICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEZpeCBCVUlMRF9ESVIgb3B0aW9uIG9mIE1BS0VBTEwgYnVpbGRpbmcgaXNzdWUKCmNvbW1pdCA4NDQwYmIxNDU4MWEyOTQzNzVjMzRiOTFiNDI1MTJmOTc1M2QxMTMwCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJTW9uIE1hciAxMiAwMDoyNToxNCAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gY29kZSBjbGVhbnVwCgpjb21taXQgY2ZjNjcxMTZhNzA2ZmQxOGI4ZjZhOWMxMWExNjc1M2M1NjI2ZDY4OQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIE1hciAxMSAxMzo0ODoyNCAyMDA3ICswMTAwCgogICAgW01pY3JvYmxhemVdW1BBVENIXSBwYXJ0IDIKICAgIHRpbWVyIHN1cHBvcnQKICAgIGludGVycnVwdCBjb250cm9sbGVyIHN1cHBvcnQKICAgIGZsYXNoIHN1cHBvcnQKICAgIGV0aGVybmV0IHN1cHBvcnQKICAgIGNhY2hlIHN1cHBvcnQKICAgIGJvYXJkIGluZm9ybWF0aW9uIHN1cHBvcnQKICAgIGVudiBzdXBwb3J0CiAgICBib290aW5nIGltYWdlIHN1cHBvcnQKCiAgICBhZGRpbmcgc3VwcG9ydCBmb3IgWGlsaW54IE1MNDAxCgpjb21taXQgNzYzMTZhMzE4ZGU5MWY2MTg0ZTdjMjJhMTBlMDJkMjc1YWRlMjQ0MQpBdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KRGF0ZToJU3VuIE1hciAxMSAxMzo0Mjo1OCAyMDA3ICswMTAwCgogICAgW01pY3JvYmxhemVdW1BBVENIXQogICAgdGltZXIgc3VwcG9ydAogICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgc3VwcG9ydAogICAgZmxhc2ggc3VwcG9ydAogICAgZXRoZXJuZXQgc3VwcG9ydAogICAgY2FjaGUgc3VwcG9ydAogICAgYm9hcmQgaW5mb3JtYXRpb24gc3VwcG9ydAogICAgZW52IHN1cHBvcnQKICAgIGJvb3RpbmcgaW1hZ2Ugc3VwcG9ydAoKICAgIGFkZGluZyBzdXBwb3J0IGZvciBYaWxpbnggTUw0MDEKCmNvbW1pdCA4ZGIxM2Q2MzE1NzgxMWM4MzlkMTVhMzEzZDlmMmQyZjVmZDEwYWYzCkF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJU2F0IE1hciAxMCAyMzo0OToyOSAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSF0gY29kZSBjbGVhbnVwCgpjb21taXQgZWYyNmEwOGZlZjkyOGI3YmMxMWFlMmMxMDllNjM4ZGMzYTAxNmQ5MQpBdXRob3I6IEF1YnJleS5MaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+CkRhdGU6CUZyaSBNYXIgOSAxMzo0MDo1NiAyMDA3ICswODAwCgogICAgW0JsYWNrZmluXVtQQVRDSC0yLzJdIENvbW1vbiBmaWxlcyBjaGFuZ2VkIHRvIHN1cHBvcnQgYmY1MzMgcGxhdGZvcm0KCmNvbW1pdCAzZjA2MDZhZDBiNTYzOWY3ZjIyODQ4ZmU1YjQ1NzRlNzU0ZDA0NzBmCkF1dGhvcjogQXVicmV5LkxpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KRGF0ZToJRnJpIE1hciA5IDEzOjM4OjQ0IDIwMDcgKzA4MDAKCiAgICBbQmxhY2tmaW5dUEFUQ0gtMS8yXTogUmVtb3ZlIG9ic29sZXRlIGJsYWNrZmluIHBvcnQgYW5kIGFkZCBiZjUzMyBwbGF0Zm9ybSBzdXBwb3J0Cgpjb21taXQgOTkyNDIzYWI0M2MyYmNmNmI3MDQ4NTNiZDAwYWY3NzQ1MDkxNWUyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciA4IDIzOjAwOjA4IDIwMDcgKzAxMDAKCiAgICBwcGM0eHg6IEZpeCBmaWxlIG1vZGUgb2Ygc2VxdW9pYS5jCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGViOTJmNjEzNTU2ODAwZjc0ODM2NjZkYjA5ZDlhMjM3YWQ5MTFkNGEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IE1hciA4IDIyOjUyOjUxIDIwMDcgKzAxMDAKCiAgICBNaW5vciBjbGVhbnVwLgoKY29tbWl0IDhjZTE2ZjU1YzdiOTc1MmFmM2Q4YmVkODQ1MjFhZWM1MzM3ZTJkZTEKQXV0aG9yOiBKb2huIE90a2VuIGpvaG5Ac29mdGFkdmFuY2VzLmNvbSA8am9obkBzb2Z0YWR2YW5jZXMuY29tPgpEYXRlOglUaHUgTWFyIDggMDk6Mzk6NDggMjAwNyAtMDYwMAoKICAgIHBwYzR4eDogQ2xlYXIgU2VxdW9pYS9SYWluaWVyIHNlY3VyaXR5IGVuZ2luZSByZXNldCBiaXRzCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBPdGtlbiBqb2huQHNvZnRhZHZhbmNlcy5jb20gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KCmNvbW1pdCA2NTBhMzMwZGQyNTM5MTMwYzhjMzI0NzkxZTJmOWY3NWFlZDc5ZDRlCkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBNYXIgOCAxNjoyNjo1MiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IGFkZCBzb21lIG1vcmUgU1BEIGVlcHJvbSBkZWNvZGluZyBmb3IgRERSMiBtb2R1bGVzCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZDlmYzcwMzI0Njg0MGM0YjI2OGRlYmY0OGMzMzRiYTU1YzU5N2RjMApBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgTWFyIDggMTY6MjU6NDcgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gSTJDOiBkaXNhYmxlIGZsYXQgaTJjIGNvbW1hbmRzIHdoZW4gQ09ORklHX0kyQ19DTURfVFJFRSBpcyBkZWZpbmVkCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgY2VkNWI5MDI5MDQzMzk3MzQ4Y2RjODhlMGNmY2Q2YjFmNjI5MjUwYgpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglUaHUgTWFyIDggMTY6MjM6MTEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gNHh4OiBhbGxvdyBDT05GSUdfSTJDX0NNRF9UUkVFIHdpdGhvdXQgQ09ORklHX0kyQ19NVUxUSV9CVVMKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCBkOGE4ZWE1YzQ3NmQzNzAwNmZjN2Y4NWI3ZjkwMzE0Mjc5NWM4YjE0CkF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+CkRhdGU6CVRodSBNYXIgOCAxNjoyMDozMiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBtaXNzaW5nIGRlZmF1bHQgQ0ZHX1NQRF9CVVNfTlVNCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Cgpjb21taXQgZjlmYzZhNTg1MmE2MzM1ODQwODgyZmEyMTExOTI1MDEwZWVhMWFiZQpBdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgpEYXRlOglXZWQgTWFyIDcgMTU6MzI6MDEgMjAwNyArMDEwMAoKICAgIGZpeGVkIGV0aGVybmV0IHBoeSBjb25maWd1cmF0aW9uIGZvciBwbHU0MDUgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3NjkxMDRjOTM1NjU5NGRlYjIwOTJlMjA0YTM5YzA1YjMzMjAyZDZjCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBNYXIgOCAyMTo0OToyNyAyMDA3ICswMTAwCgogICAgTWlub3IgY2xlYW51cAoKY29tbWl0IDAwY2RiNGNlNWUxYjQyMjQ4ZTdlNjUyMmFkMGRhMzQyMWI5ODhhZmEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgOCAxMDoxMzoxNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgQU1DQyBMdWFuIDQ0MFNQIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoZSBBTUNDIEx1YW4gbm93IHVzZXMgdGhlIGNvbW1vbiA0NDBTUChlKSBERFIgU1BEIGNvZGUgZm9yIEREUgogICAgaW5pdGl0aWFsaXppdGlvbi4gVGhpcyBpbmNsdWRlcyBERFIgYXV0byBjYWxpYnJhdGlvbiBhbmQgc3VwcG9ydAogICAgZm9yIGRpZmZlcmVudCBESU1NIG1vZHVsZXMsIGluc3RlYWQgb2YgdGhlIGZpeGVkIHNldHVwIHVzZWQgaW4KICAgIHRoZSBlYXJsaWVyIHZlcnNpb24uCgogICAgVGhpcyBwYXRjaCBhbHNvIGVuYWJsZXMgdGhlIGNhY2hlIGluIEZMQVNIIGZvciB0aGUgc3RhcnR1cAogICAgcGhhc2Ugb2YgVS1Cb290ICh3aGlsZSBydW5uaW5nIGZyb20gRkxBU0gpLiBBZnRlciByZWxvY2F0aW5nIHRvCiAgICBTRFJBTSB0aGUgY2FjaGUgaXMgZGlzYWJsZWQgYWdhaW4uIFRoaXMgd2lsbCBzcGVlZCB1cCB0aGUgYm9vdAogICAgcHJvY2VzcywgZXNwZWNpYWxseSB0aGUgU0RSQU0gc2V0dXAsIHNpbmNlIHRoZXJlIGFyZSBzb21lIGxvb3BzCiAgICBmb3IgbWVtb3J5IHRlc3RpbmcgKGF1dG8gY2FsaWJyYXRpb24pLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyZjVkZjQ3MzUxOTEwYTI5MzZjNzc0MWNmMTExODU1ODI5MjAwOTQzCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MTA6MTggMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIEFNQ0MgWXVjY2EgNDQwU1BlIGV2YWwgYm9hcmQgc3VwcG9ydAoKICAgIFRoZSBBTUNDIFl1Y2NhIG5vdyB1c2VzIHRoZSBjb21tb24gNDQwU1AoZSkgRERSIFNQRCBjb2RlIGZvciBERFIKICAgIGluaXRpdGlhbGl6aXRpb24uIFRoaXMgaW5jbHVkZXMgRERSIGF1dG8gY2FsaWJyYXRpb24gYW5kIHN1cHBvcnQKICAgIGZvciBkaWZmZXJlbnQgRElNTSBtb2R1bGVzLCBpbnN0ZWFkIG9mIHRoZSBmaXhlZCBzZXR1cCB1c2VkIGluCiAgICB0aGUgZWFybGllciB2ZXJzaW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyNzIxYTY4YTllYTkxZjFlNDk0NjQ5Y2U2OGIyNTc3MjYxZjU3OGUyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MDc6MTggMjAwNyArMDEwMAoKICAgIHBwYzR4eDogU21hbGwgQU1DQyBLYXRtYWkgNDQwU1BlIHVwZGF0ZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkZjI5NDQ5NzQ3OWIxZGNhNmRkODYzMThiMmE5MTJmNzJmZWRlMGRmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgTWFyIDggMTA6MDY6MDkgMjAwNyArMDEwMAoKICAgIHBwYzR4eDogVXBkYXRlIDQ0MFNQLzQ0MFNQZSBERFIgU1BEIHNldHVwIGNvZGUgdG8gc3VwcG9ydCA0NDBTUAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4Mzg1MzE3OGJkMzZiY2E2ZjBmOGYxMzMxNDc2NjIwYzg0YTU4N2ZjCkF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1hciA3IDEyOjE0OjUwIDIwMDcgLTA2MDAKCiAgICBuZXQgLSBTdXBwb3J0IHBpbmcgcmVwbHkgd2hlbiBwcm9jZXNzaW5nIG5ldC1sb29wCgogICAgQWRkIElDTVBfRUNIT19SRVFVRVNUIHBhY2tldCBzdXBwb3J0IGJ5IHJlc3BvbmRpbmcgd2l0aCBhIElDTVBfRUNIT19SRVBMWS4KCiAgICBUaGlzIHBlcm1pdHMgdGhlIHBpbmcgY29tbWFuZCB0byB0ZXN0IHRoZSBwaHkgaW50ZXJmYWNlIHdoZW4gdGhlIHBoeQogICAgaXMgcHV0IGluIGxvb3BiYWNrIG1vZGUgKHR5cGljYWxseSBieSBzZXR0aW5nIHJlZ2lzdGVyIDAgYml0IDE0KS4KCiAgICBJdCBhbHNvIGFsbG93cyB0aGUgcG9ydCB0byByZXNwb25kIHRvIGFuIGV4dGVybmFsIHBpbmcgd2hlbiB1LWJvb3QgaXMKICAgIHByb2Nlc3Npbmcgc29tZSBvdGhlciBuZXQgY29tbWFuZCAoc3VjaCBhcyB0ZnRwKS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KICAgIHRmdHAgYXBwZWFycyB0byBoYW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCBmYTFhZWYxNWJjZDQ3NzM2Njg3YmUxYWY1NDQ1MDZlOTBmYmE1NDVkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDcgMTY6NDM6MDAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXNlIGR5bmFtaWMgU0RSQU0gVExCIHNldHVwIG9uIEFNQ0MgT2NvdGVhIGV2YWwgYm9hcmQKCiAgICBEZWZpbmUgQ09ORklHX1BST0dfU0RSQU1fVExCIHNvIHRoYXQgdGhlIFRMQiBlbnRyaWVzIGZvciB0aGUKICAgIEREUiBtZW1vcnkgYXJlIGR5bmFtaWNhbGx5IHByb2dyYW1tZWQgbWF0Y2hpbmcgdGhlIHRvdGFsIHNpemUKICAgIG9mIHRoZSBlcXVpcHBlZCBtZW1vcnkgKERJTU0gbW9kdWxlcykuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGUyZWJlNjk2ODE4OTM5ZTJiOTc0NjI4YmU5YzkyMWVhM2ZlOWRlMTMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBNYXIgNyAxNjozOTozNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBGaXggQU1DQyA0NHggU1BEIFNEUkFNIGluaXQgY29kZSB0byBzdXBwb3J0IDIgRElNTSdzCgogICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBvY2N1cnMgd2hlbiAyIERJTU0ncyBhcmUKICAgIHVzZWQuIFRoaXMgcHJvYmxlbSB3YXMgZmlyc3Qgc3BvdHRlZCBhbmQgZml4ZWQgYnkgR2VyYWxkIEphY2tzb24KICAgIDxnZXJhbGQuamFja3NvbkByZWFvbml4c2VjdXJpdHkuY29tPiBidXQgdGhpcyBwYXRjaCBmaXhlcyB0aGUKICAgIHByb2JsZW0gaW4gYSBsaXR0bGUgbW9yZSBjbGV2ZXIgd2F5LgoKICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBuaWNlIGZ1bmN0aW9uYWxpdHkgdG8gZHluYW1pY2FsbHkKICAgIGNyZWF0ZSB0aGUgVExCIGVudHJpZXMgZm9yIHRoZSBTRFJBTSAodGxiLmMpLiBTbyB3ZSBzaG91bGQKICAgIG5ldmVyIHJ1biBpbnRvIHN1Y2ggcHJvYmxlbXMgd2l0aCB3cm9uZyAodG9vIHNob3J0KSBUTEIKICAgIGluaXRpYWxpemF0aW9uIGFnYWluIG9uIHRoZXNlIHBsYXRmb3Jtcy4KCiAgICBBcyB0aGlzIGZlYXR1cmUgaXMgbmV3IHRvIHRoZSAib2xkIiA0NHggU1BEIEREUiBkcml2ZXIsIGl0CiAgICBoYXMgdG8gYmUgZW5hYmxlZCB2aWEgdGhlIENPTkZJR19QUk9HX1NEUkFNX1RMQiBkZWZpbmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDM5MjE4NDMzOTgzNDE3YjlkZjA4Nzk3NmE3OWUzZjgwZGQ1ZTgzZDYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpEYXRlOglXZWQgTWFyIDcgMTY6MzM6NDQgMjAwNyArMDEwMAoKICAgIFVDMTAxOiBmaXggY29tcGlsZXIgd2FybmluZ3MKCmNvbW1pdCA4ZDdlMjczMjIyMWJjMmQ2NGRmMTRmNzAwYzY0YzIzZTBhNGMzZGNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBNYXIgNyAxNjoxOTo0NiAyMDA3ICswMTAwCgogICAgSE1JMTAwMTogZml4IGJ1aWxkIGVycm9yLCBjbGVhbnVwIGNvbXBpbGVyIHdhcm5pbmdzLgoKY29tbWl0IGFkNWJiNDUxYWRlNTUyYzQ0YmVmOTExOWQ5MDc5MjllYmMyYzEyNmYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciA2IDE4OjA4OjQzIDIwMDcgKzAxMDAKCiAgICBSZXN0cnVjdHVyZSBQT1NUIGRpcmVjdG9yeSB0byBzdXBwb3J0IG9mIG90aGVyIENQVXMsIGJvYXJkcywgZXRjLgoKY29tbWl0IGE1Mjg0ZWZkMTI1OTY3Njc1YjJlOWM2ZWY3Yjk1ODMyMjY4YWQzNjAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE1hciA2IDE4OjAxOjQ3IDIwMDcgKzAxMDAKCiAgICBGaXggSE9TVEFSQ0ggaGFuZGxpbmcuCiAgICBQYXRjaCBieSBNaWtlIEZyeXNpbmdlciwgTWFyIDA1IDIwMDcKCmNvbW1pdCAwN2I3YjAwMzdhYWM1MTAyOTM5OTE3ZDdjYmU1NjFiNWMwZDVhYTQ0CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTWFyIDYgMDc6NDc6MDQgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gU3BlZWQgb3B0aW1pemF0aW9uIG9mIEFNQ0MgU2VxdW9pYS9SYWluaWVyIEREUjIgc2V0dXAKCiAgICBBcyBwcm92aWRlZCBieSB0aGUgQU1DQyBhcHBsaWNhdGlvbnMgdGVhbSwgdGhpcyBwYXRjaCBvcHRpbWl6ZXMgdGhlCiAgICBERFIyIHNldHVwIGZvciAxNjZNSHogYnVzIHNwZWVkLiBUaGUgdmFsdWVzIHByb3ZpZGVkIGFyZSBhbHNvIHNhdmUKICAgIHRvIHVzZSBvbiBhICJub3JtYWwiIDEzM01IeiBQTEIgYnVzIHN5c3RlbS4gT25seSB0aGUgcmVmcmVzaCBjb3VudGVyCiAgICBzZXR1cCBoYXMgdG8gYmUgYWRqdXN0ZWQgYXMgZG9uZSBpbiB0aGlzIHBhdGNoLgoKICAgIEZvciB0aGlzIHRoZSBOQU5EIGJvb3RpbmcgdmVyc2lvbiBoYWQgdG8gaW5jbHVkZSB0aGUgInNwZWVkLmMiIGZpbGUKICAgIGZyb20gdGhlIGNwdS9wcGM0eHggZGlyZWN0b3J5LiBXaXRoIHRoaXMgYWRkaXRpb24gdGhlIE5BTkQgU1BMIGltYWdlCiAgICB3aWxsIGp1c3QgZml0IGludG8gdGhlIDRrYnl0ZXMgb2YgcHJvZ3JhbSBzcGFjZS4gZ2NjIHZlcnNpb24gNC54IGFzCiAgICBwcm92aWRlZCB3aXRoIEVMREsgNC54IGlzIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGlzIG9wdGltaXplZCBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2NDdkM2MzZWVkMGRhMWQxNTA1ZWVjYWJlMGIwZmFiOTZmOTU2ZTY4CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVN1biBNYXIgNCAwMTozNjowNSAyMDA3ICswMTAwCgogICAgU29tZSBjb2RlIGNsZWFudXAuCgpjb21taXQgNzgxZTAyNmM4YWE2ZjdlOWViNWYwZTcyY2M0ZDIwOTcxMjE5YjE0OApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMjggMDA6MDI6MDQgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZnRfZ2V0X3Byb3AnIHdhcm5pbmdzCgogICAgKGNoZXJyeSBwaWNrZWQgZnJvbSBjNWJmMTNiMDIyODRjMzIwNGE3MjM1NjZhOWJhYjcwMGU1MDU5NjU5IGNvbW1pdCkKCmNvbW1pdCA0ZmVhYjRkZTdiZmMyY2IyZmVkMzZhZDc2ZjkzYzNhNjk2NTliYmFmCkF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KRGF0ZToJVHVlIEZlYiAyNyAyMzo1MTo0MiAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRml4IGNvbmZpZyBvZiBBcmJpdGVyLCBTeXN0ZW0gUHJpb3JpdHksIGFuZCBDbG9jayBNb2RlCgogICAgVGhlIGNvbmZpZyB2YWx1ZSBmb3I6CiAgICAqIENGR19BQ1JfUElQRV9ERVAKICAgICogQ0ZHX0FDUl9SUFRDTlQKICAgICogQ0ZHX1NQQ1JfVFNFQzFFUAogICAgKiBDRkdfU1BDUl9UU0VDMkVQCiAgICAqIENGR19TQ0NSX1RTRUMxQ00KICAgICogQ0ZHX1NDQ1JfVFNFQzJDTQoKICAgIFdlcmUgbm90IGJlaW5nIHVzZWQgd2hlbiBzZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcgoKICAgIEFkZGVkOgogICAgKiBDRkdfU0NDUl9VU0JNUEhDTQogICAgKiBDRkdfU0NDUl9VU0JEUkNNCiAgICAqIENGR19TQ0NSX1BDSUNNCiAgICAqIENGR19TQ0NSX0VOQ0NNCgogICAgVG8gYWxsb3cgZnVsbCBjb25maWcgb2YgdGhlIFNDQ1IuCgogICAgQWxzbyByZW1vdmVkIHJhbmRvbSBDRkdfU0NDUiBzZXR0aW5ncyBpbiBNUEM4MzQ5RU1EUywgVFFNODM0eCwgYW5kIHNiYzgzNDkKICAgIHRoYXQgd2VyZSBqdXN0IGJvZ3VzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgZDUxYjNjZjM3MWNkNDQxMDMwNDYwZWYxOWQzNmIyOTI0YzM2MWIxYQpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBGZWIgMjIgMjA6MDY6NTcgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHVwZGF0ZSBbbG9jYWwtXW1hYy1hZGRyZXNzIHByb3BlcnRpZXMgb24gVUVDIGJhc2VkIGRldmljZXMKCiAgICA4MzYwIGFuZCA4MzJ4IHdlcmVuJ3QgdXBkYXRpbmcgdGhlaXIgW2xvY2FsLV1tYWMtYWRkcmVzcwogICAgcHJvcGVydGllcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjFmNGY5MTJhY2JlNjA3NzZjNWUwMGRmMWVjOTQwOTRjZTY3Mjk1NwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBGZWIgMTMgMTA6NDE6NDIgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHdyaXRlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcwoKICAgIFNvbWUgZGV2aWNlIHRyZWVzIGhhdmUgYSBtYWMtYWRkcmVzcyBwcm9wZXJ0eSwgc29tZSBoYXZlIGxvY2FsLW1hYy1hZGRyZXNzLAogICAgYW5kIHNvbWUgaGF2ZSBib3RoLiAgVG8gc3VwcG9ydCBhbGwgb2YgdGhlc2UgZGV2aWNlIHRyZWVzLCB0aGlzIHBhdGNoCiAgICB1cGRhdGVzIGZ0cF9jcHVfc2V0dXAoKSB0byB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgaWYgaXQgZXhpc3RzLgogICAgVGhpcyBmdW5jdGlvbiBhbHJlYWR5IHVwZGF0ZXMgbG9jYWwtbWFjLWFkZHJlc3MuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMmQ3MWE3MWY1N2ZkNWQzOGIyN2FjMzg0OGU1MGQ3OTAzNjBhNTk4CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEZlYiAyNyAxODo0MTowOCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogYWRkIGNvbW1hbmQgbGluZSBlZGl0aW5nIGJ5IGRlZmF1bHQKCmNvbW1pdCAzZmMwYmQxNTkxMDNiNTM2ZTFjNTRjNmY0NDU3YTA5YjNhYmE2NmNhCkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEZlYiAxNCAxOTo1MDo1MyAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRGlzYWJsZSBHMVRYQ0xLLCBHMlRYQ0xLIGgvdyBidWZmZXJzCgogICAgRGlzYWJsZSBHMVRYQ0xLLCBHMlRYQ0xLIGgvdyBidWZmZXJzLiBUaGlzIHBhdGNoCiAgICBmaXhlcyBhIG5ldHdvcmtpbmcgdGltZW91dCBpc3N1ZSB3aXRoIE1QQzgzNjBFQSAoUmV2LjIpIFBCcy4KCiAgICBWZXJpZmllZCBvbiBSZXYuIDEuMSwgUmV2LiAxLjIsIGFuZCBSZXYuIDIuMCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEVtaWxpYW4gTWVkdmUgPEVtaWxpYW4uTWVkdmVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNjE4NTNjZjI0NzJlMGI4YmNiZDEzMTQ2MWE5M2QxYzQ5ZmYwYzFmCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6Mjc6MTcgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCBERFIyIGNvbnRyb2xsZXIgZml4ZWQvU1BEIEluaXQgZm9yIE1QQzgzeHgKCiAgICBUaGUgY29kZSBzdXBwbHkgZml4ZWQgYW5kIFNQRCBpbml0aWFsaXphdGlvbiBmb3IgTVBDODN4eCBERFIyIENvbnRyb2xsZXIuCiAgICBpdCBwYXNzIEREUi9ERFIyIGNvbXBsaWFuY2UgdGVzdHMuCgogICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiMTEwZjQwYmQxODBjNmI1NjAyNzY1ODliZWVkZjc1M2U5N2M0NmNlCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6Mjc6MDYgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgY3B1IHNwZWNpZmljIGNvZGUgZm9yIE1QQzgzNjBFIHJldjIuMCBNRFMKCiAgICBNUEM4MzYwRSByZXYyLjAgaGF2ZSBuZXcgc3ByaWRyLGFuZCBQVlIgdmFsdWUsCiAgICBUaGUgTURTIGJvYXJkIGZvciBNUEM4MzYwRSByZXYyLjAgaGFzIDMyTSBieXRlcyBGbGFzaCBhbmQgMjU2TSBERFIyIERJTU0uCgogICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4ZDE3MmMwZjBkODU5OThhMjU2YTk1Yjc0NTlhNTQwM2EzMDM4MGVkCkF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBGZWIgMTQgMTg6MjY6NDQgMjAwNyArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgY3B1IGFuZCBib2FyZCBzcGVjaWZpYyBjb2RlIGZvciBNUEM4MzQ5RSByZXYzLjEgTURTCgogICAgTVBDODM0OUUgcmV2My4xIGhhdmUgbmV3IHNwcmlkcixhbmQgUFZSIHZhbHVlLAogICAgVGhlIE1EUyBib2FyZCBmb3IgTVBDODM0OUUgcmV2My4xIGhhcyAzMk0gYnl0ZXMgRmxhc2ggYW5kIDI1Nk0gRERSMiBESU1NLgoKICAgIFNpZ25lZC1vZmYtYnk6IFhpZSBYaWFvYm88WC5YaWVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmNmY1ZjcwOWU1YzhlNDU2NGM0ZGZlZWNmZGYyMjc5MjQ0ZjljODNiCkF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8am9ha2ltLnRqZXJubHVuZEB0cmFuc21vZGUuc2U+CkRhdGU6CVdlZCBKYW4gMzEgMTE6MDQ6MTkgMjAwNyArMDEwMAoKICAgIG1wYzgzeHg6IEZpeCBlbXB0eSBpMmMgcmVhZHMvd3JpdGVzIGluIGZzbF9pMmMuYwoKICAgIEZpeCBlbXB0eSBpMmMgcmVhZHMvd3JpdGVzLCBpMmNfd3JpdGUoMHg1MCwgMHgwMCwgMCwgTlVMTCwgMCkKICAgIHdoaWNoIGlzIHVzZWQgdG8gc2UgaWYgYW4gc2xhdmUgd2lsbCBBQ0sgYWZ0ZXIgcmVjZWl2aW5nIGl0cyBhZGRyZXNzLgoKICAgIENvcnJlY3QgaTJjIHByb2JpbmcgdG8gdXNlIHRoaXMgbWV0aG9kIGFzIHRoZSBvbGQgbWV0aG9kIGNvdWxkIHVwc2V0CiAgICBhIHNsYXZlIGFzIGl0IHdyb3RlIGEgZGF0YSBieXRlIHRvIGl0LgoKICAgIEFkZCBhIHNtYWxsIGRlbGF5IGluIGkyY19pbml0KCkgdG8gbGV0IHRoZSBjb250cm9sbGVyCiAgICBzaHV0ZG93biBhbnkgb25nb2luZyBJMkMgYWN0aXZpdHkuCgogICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Cgpjb21taXQgN2E3OGYxNDhkNmE3Mjk4ZTRmZmFjZTY4MGRjN2VhY2Q4NzdiMWFiYQpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMzEgMTU6NTQ6MjkgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWC1HUAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWC1HUCwgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24gb2YgdGhlCiAgICBNUEM4MzQ5RS1tSVRYLiAgQm9udXMgZmVhdHVyZXMgaW5jbHVkZSBzdXBwb3J0IGZvciBsb3ctYm9vdCAoQk1TIGJpdCBpbgogICAgSFJDVyBpcyAwKSBmb3IgdGhlIElUWCBhbmQgYSBSRUFETUUgZm9yIHRoZSBJVFggYW5kIHRoZSBJVFgtR1AuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmYWIxNjgwN2FkYWQzNTBmNjE4MDI0MzUwYzY5NTAxNjVjMjQ3YzcyCkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEphbiAzMSAxNTo1NDoyMCAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogRGVsZXRlIHNkcmFtX2luaXQoKSBmb3IgTVBDODM0OUUtbUlUWAoKICAgIFRoZXJlIGlzIG5vIFNEUkFNIG9uIGFueSBvZiB0aGUgODM0OSBJVFggdmFyaWFudHMsIHNvIGZ1bmN0aW9uIHNkcmFtX2luaXQoKQogICAgbmV2ZXIgZG9lcyBhbnl0aGluZy4gIFRoaXMgcGF0Y2ggZGVsZXRlcyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE4N2M4NTZlYjQxMWI5MzY1OTM3ZDBkNGI5YzIxZTQ2YWRiZTFjMTQKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSmFuIDE5IDEwOjQzOjI2IDIwMDcgKzA4MDAKCiAgICBtcGM4M3h4OiBGaXggdGhlIExBVzEvMyBidWcKCiAgICBUaGUgcGF0Y2ggc29sdmVzIHRoZSBhbGlnbm1lbnQgcHJvYmxlbSBvZiB0aGUgbG9jYWwgYnVzIGFjY2VzcyB3aW5kb3dzIHRvCiAgICByZW5kZXIgYWNjZXNzaWJsZSB0aGUgbWVtb3J5IGJhbmsgYW5kIFBIWSByZWdpc3RlcnMgb2YgVVBDIDEgKHN0YXJ0aW5nIGF0CiAgICAweGY4MDEgMDAwMCkuIFdoYXQgd2UgYWN0dWFsbHkgZGlkIHdhcyB0byBhZGp1c3QgdGhlIHNpemVzIG9mIHRoZSBidXMKICAgIGFjY2VzcyB3aW5kb3dzIHNvIHRoYXQgdGhlIGJhc2UgYWRkcmVzcyBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgd291bGQgYmUgbWV0LgoKICAgIFNpZ25lZC1vZmYtYnk6IENoZXJlamkgTWFyaWFuIDxtYXJpYW4uY2hlcmVqaUBmcmVlc2NhbGUuY29tPgogICAgU2lnbmVkLW9mZi1ieTogR3JpZGlzaCBTaGxvbWkgPGdyaWRpc2hAZnJlZXNjYWxlLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTdjNGIzOTdkY2UyMzZhNzMxOGIzMDQ2NjdiZjg5ZTU5ZDA4YjE3YwpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMzAgMTY6MTU6MzEgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGRvbid0IGhhbmcgaWYgd2F0Y2hkb2cgY29uZmlndXJlZCBvbiA4MzYwLCA4MzJ4CgogICAgZG9uJ3QgaGFuZyBpZiB3YXRjaGRvZyBjb25maWd1cmVkIG9uIDgzNjAsIDgzMngKCiAgICBUaGUgd2F0Y2hkb2cgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgdGhlIHNhbWUgYWNyb3NzIGFsbCA4M3h4IGRldmljZXM7CiAgICBtYWtlIHRoZSBjb2RlIHJlZmxlY3QgdGhhdC4KCmNvbW1pdCBiNzAwNDc0Nzg1NzBlMzcxY2U3MjIzYmUzNDJjZTk4YWZlYTBmN2Q2CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEphbiAzMCAxNjoxNToyMSAyMDA3IC0wNjAwCgogICAgbXBjODN4eDogcHJvdGVjdCBtZW1jcHkgdG8gYmFkIGFkZHJlc3MgaWYgYSBsb2NhbC1tYWMtYWRkcmVzcyBpcyBtaXNzaW5nIGZyb20gZHQKCiAgICBwcm90ZWN0IG1lbWNweSB0byBiYWQgYWRkcmVzcyBpZiBhIGxvY2FsLW1hYy1hZGRyZXNzIGlzIG1pc3NpbmcgZnJvbSBkdAoKY29tbWl0IDY3NTJlZDA4OGM3NWMyNmE4OWI3MGM0NmI3MzI2YTRjZDYwMTVmMjkKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSmFuIDMwIDE2OjE1OjA0IDIwMDcgLTA2MDAKCiAgICBtcGM4M3h4OiBtYWtlIDgzNjAgZGVmYXVsdCBlbnZpcm9ubWVudCBmZHQgYmUgODM2MCAobm90IDgzNDkpCgogICAgbWFrZSA4MzYwIGRlZmF1bHQgZW52aXJvbm1lbnQgZmR0IGJlIDgzNjAgKG5vdCA4MzQ5KQoKY29tbWl0IGEyODg5OWM5MTAwMjRhMDIyNjMzMWRmMDcyMDdiMTAzOGMzMDBjOTMKQXV0aG9yOiBFbWlsaWFuIE1lZHZlIDxFbWlsaWFuLk1lZHZlQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKYW4gMzAgMTY6MTQ6NTAgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IEZpeCBhbHRlcm5hdGluZyB0eCBlcnJvciAvIHR4IGJ1ZmZlciBub3QgcmVhZHkgYnVnIGluIFFFIFVFQwoKICAgIFRoZSBwcm9ibGVtIGlzIG5vdCBnY2M0IGJ1dCB0aGUgY29kZSBpdHNlbGYuIFRoZSBCRF9TVEFUVVMoKSBtYWNybyBjYW4ndAogICAgYmUgdXNlZCBmb3IgYnVzeS13YWl0aW5nIHNpbmNlIGl0IHN0cmlwcyB0aGUgJ3ZvbGF0aWxlJyBwcm9wZXJ0eSBmcm9tCiAgICB0aGUgYmQgdmFyaWFibGUuIGdjYzMgd2FzIHdvcmtpbmcgYnkgcHVyZSBsdWNrLgoKICAgIFRoaXMgaXMgYSBmb2xsb3cgb24gcGF0Y2ggdG8gIkZpeCB0aGUgVUVDIGRyaXZlciBidWcgb2YgUUUiCgpjb21taXQgM2U3OGEzMWNmZTNkMzAyMmY0NmY2N2ViODhlMTI4MWQ1Y2MyZWI4OQpBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBKYW4gMzAgMTQ6MDg6MzAgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IFJlcGxhY2UgQ09ORklHX01QQzgzNDkgYW5kIHVzZSBDT05GSUdfTVBDODM0WCBpbnN0ZWFkCgogICAgVGhlIGNvZGUgdGhhdCBpcyBpZmRlZidkIHdpdGggQ09ORklHX01QQzgzNDkgaXMgYWN0dWFsbHkgYXBwbGljYWJsZSB0byBhbGwKICAgIE1QQzgzNFggY2xhc3MgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgcHJvdGVjdGlvbnMgZnJvbSBDT05GSUdfTVBDODM0OSB0bwogICAgQ09ORklHX01QQzgzNFggc28gdGhleSBhcmUgbW9yZSBnZW5lcmljLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgYWUyNDZkYzZjMTkzN2MyOTEwMTRlYWRkOTBiNmQ0OGM0MzhjN2NiMApBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKYW4gMjUgMTM6NDA6NTUgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBNUEM4MzJYRU1EUyBhbmQgc2JjODM0OSB0byBNQUtFQUxMCgpjb21taXQgNGRlY2Q4NGU4ZjA0Mjc5YzVjZmZmN2Y4ZTkwNzQ2NWVmOGQ4YTNmYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKYW4gMjQgMTc6MTg6MzcgMjAwNyAtMDYwMAoKICAgIG1wYzgzeHg6IHNvcnQgTWFrZWZpbGUgdGFyZ2V0cwoKICAgIHJlb3JkZXJlZCB0YXJnZXRzIGFscGhhYmV0aWNhbGx5Cgpjb21taXQgOTFlMjU3Njk3NzFjMTE2NGVkNjNmZmNhMGFkZDQ5ZjkzNGFlMzM0MwpBdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgpEYXRlOglUdWUgSmFuIDE2IDExOjM4OjE0IDIwMDcgLTA1MDAKCiAgICBtcGM4M3h4OiBVLUJvb3Qgc3VwcG9ydCBmb3IgV2luZCBSaXZlciBTQkM4MzQ5CgogICAgSSd2ZSByZWRvbmUgdGhlIFNCQzgzNDkgc3VwcG9ydCB0byBtYXRjaCBnaXQtY3VycmVudCwgd2hpY2gKICAgIGluY29ycG9yYXRlcyBhbGwgdGhlIE1QQzgzNHggdXBkYXRlcyBmcm9tIEZyZWVzY2FsZSBzaW5jZSB0aGUgMS4xLjYKICAgIHJlbGVhc2UsICBpbmNsdWRpbmcgdGhlIEREUiBjaGFuZ2VzLgoKICAgIEkndmUga2VwdCBhbGwgdGhlIFNCQzgzNDkgZmlsZXMgYXMgcGFyYWxsZWwgYXMgcG9zc2libGUgdG8gdGhlCiAgICBNUEM4MzQ5RU1EUyBvbmVzIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlIGFuZCB0byBhbGxvdyBmb3IgZWFzeQogICAgaW5zcGVjdGlvbiBvZiB3aGF0IHdhcyBjaGFuZ2VkIHRvIHN1cHBvcnQgdGhpcyBib2FyZC4gIEhlbmNlIHRoZSBTQkM4MzQ5CiAgICBVLUJvb3QgaGFzIEZEVCBzdXBwb3J0IGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCB0aGUgTVBDODM0OUVNRFMgaGFzLgoKICAgIEZvcnR1bmF0ZWx5IHRoZSBGcmVlc2NhbGUgdXBkYXRlcyBhZGRlZCBzdXBwb3J0IGZvciBib2FyZHMgdXNpbmcgQ1MwLAogICAgYnV0IEkgaGFkIHRvIGNoYW5nZSBzcGRfc2RyYW0uYyB0byBhbGxvdyBmb3IgYm9hcmQgc3BlY2lmaWMgc2V0dGluZ3MgZm9yCiAgICB0aGUgc2RyYW1fY2xrX2NudGwgKGl0IGlzL3dhcyBoYXJkIGNvZGVkIHRvIHplcm8sIGFuZCB0aGF0IHJlbWFpbnMgdGhlCiAgICBkZWZhdWx0IGlmIHRoZSBib2FyZCBkb2Vzbid0IHNwZWNpZnkgYSB2YWx1ZS4pCgogICAgSG9wZWZ1bGx5IHRoaXMgc2hvdWxkIGJlIG1lcmdlYWJsZSBhcy1pcyBhbmQgcmVxdWlyZSBubyB3aGl0ZXNwYWNlCiAgICBjbGVhbnVwcyBvciBzaW1pbGFyLCBidXQgaWYgc29tZXRoaW5nIGRvZXNuJ3QgbWVhc3VyZSB1cCB0aGVuIGxldCBtZQogICAga25vdyBhbmQgSSdsbCBmaXggaXQuCgogICAgVGhhbmtzLAogICAgUGF1bC4KCmNvbW1pdCAwNTAzMWRiNDU2YWIyMjdmM2UzNzUyZjM3YjliODEyYjY1YmI4M2FkCkF1dGhvcjogU2FtIFNvbmcgPHNhbXNvbmdzaHVAeWFob28uY29tLmNuPgpEYXRlOglUaHUgRGVjIDE0IDE5OjAzOjIxIDIwMDYgKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmUgYSByZWR1bmRhbnQgc2VtaWNvbG9uIGluIG1wYzgzNDlpdHguYwoKICAgIEEgcmVkdW5kYW50IHNlbWljb2xvbiBleGlzdGVkIGluIG1wYzgzNDlpdHguYwogICAgc2hvdWxkIGJlIHJlbW92ZWQuCgogICAgU2lnbmVkLW9mZi1ieTogU2FtIFNvbmcgPHNhbXNvbmdzaHVAeWFob28uY29tLmNuPgoKY29tbWl0IGYzNWYzNTgyNDFjNTQ5YmUzZjc1Y2ZlMmVhYTY0MjkxNDI3NWI3YmEKQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGdlcmFsZC52YW5iYXJlbkBjb21jYXN0Lm5ldD4KRGF0ZToJV2VkIERlYyA2IDIxOjIzOjU1IDIwMDYgLTA1MDAKCiAgICBtcGM4M3h4OiBQdXQgdGhlIHZlcnNpb24gKGFuZCBtYWdpYykgYWZ0ZXIgdGhlIEhSQ1cuCgogICAgUHV0IHRoZSB2ZXJzaW9uIChhbmQgbWFnaWMpIGFmdGVyIHRoZSBIUkNXLiAgVGhpcyBwdXRzIGl0IGluIGEgZml4ZWQKICAgIGxvY2F0aW9uIGluIGZsYXNoLCBub3QgYXQgdGhlIHN0YXJ0IG9mIGZsYXNoIGJ1dCBhcyBjbG9zZSBhcyB3ZSBjYW4gZ2V0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEplcnJ5IFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KCmNvbW1pdCA0OGFlY2Q5NjkxNzFhNmU5OWE1NWZhZTA0OTMzODU3Nzg3ZjlhNWJkCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgRGVjIDcgMjE6MTQ6NTEgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEFkZCB0aGUgTVBDODMyWEVNRFMgYm9hcmQgcmVhZG1lCgogICAgQWRkIHRoZSBNUEM4MzJYRU1EUyBib2FyZCByZWFkbWUKCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDI0YzNhY2EzZjEzNThiMTEzZDMyMTVhZGI1NDMzYjE1NmU5OWY3MmIKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAyMToxMzoxNSAyMDA2ICswODAwCgogICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzJYRU1EUyBib2FyZAoKICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgRFVBUlQsIEVUSDMvNCBhbmQgUENJIGV0Yy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGUwODAzMTNjMzIzMjJlMTVhYjVhMThlYjg5NmEyNTI4NThjNTcyODQKQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBEZWMgNyAyMToxMTo1OCAyMDA2ICswODAwCgogICAgbXBjODN4eDogc3RyZWFtbGluZSB0aGUgODN4eCBpbW1yIGhlYWQgZmlsZQoKICAgIEZvciBiZXR0ZXIgZm9ybWF0IGFuZCBzdHlsZSwgSSBzdHJlYW1saW5lZCB0aGUgODN4eCBoZWFkIGZpbGVzLAogICAgaW5jbHVkaW5nIGltbWFwXzgzeHguaCBhbmQgbXBjODN4eC5oLiBJbiB0aGUgb2xkIGhlYWQgZmlsZXMsIDEpCiAgICBkdXBsaWNhdGVkIG1hY3JvIGRlZmluaXRpb24gYXBwZWFyIGluIHRoZSBib3RoIGZpbGVzOyAyKSB0aGUgc3RydWN0dXJlCiAgICBvZiBRRSBpbW1yIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIGltbWFwXzgzeHguaCBhbmQgaW1tYXBfcWUuaDsgMykgVGhlCiAgICBtYWNybyBkZWZpbml0aW9uIHB1dCBpbnNpZGUgdGhlIGVhY2ggc3RydWN0dXJlLiBTbywgSSBjbGVhbmVkIHVwIHRoZQogICAgc3RydWN0dXJlIG9mIFFFIGltbXIgZnJvbSBpbW1hcF84M3h4LmgsIGRlbGV0ZWQgdGhlIGR1cGxpY2F0ZWQgc3R1ZmYgYW5kCiAgICBtb3ZlZCB0aGUgbWFjcm8gZGVmaW5pdGlvbiB0byBtcGM4M3h4LmgsIEp1c3QgbGlrZSBNUEM4MjYwLgoKICAgIENIQU5HRUxPRwoKICAgICpzdHJlYW1saW5lIHRoZSA4M3h4IGltbXIgaGVhZCBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkZGQwMjQ5MmY0M2RiNTQwOGY1YWI5ZjgyM2IwYmE1Nzk2ZTI4ZWYwCkF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRGVjIDYgMTE6Mzg6MTcgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEZpeCB0aGUgVUVDIGRyaXZlciBidWcgb2YgUUUKCiAgICBUaGUgcGF0Y2ggcHJldmVudHMgdGhlIEdDQyB0b29sIGNoYWluIGZyb20gc3RyaXBpbmcgdXNlZnVsIGNvZGUgZm9yCiAgICBvcHRpbWl6YXRpb24uIEl0IHdpbGwgbWFrZSBVRUMgZXRoZXJuZXQgZHJpdmVyIHdvcmthYmxlLCBPdGhlcndpc2UgdGhlCiAgICBVRUMgd2lsbCBmYWlsIGluIHR4IHdoZW4geW91IGFyZSB1c2luZyBnY2M0LnguIGJ1dCB0aGUgZHJpdmVyIGNhbiB3b3JrCiAgICB3aGVuIHVzaW5nIGdjYzMuNC4zLgoKICAgIENIQU5HRUxPRwoKICAgICpQcmV2ZW50IHRoZSBHQ0MgZnJvbSBzdHJpcGluZyBjb2RlIGZvciBvcHRpbWl6YXRpb24sIE90aGVyd2lzZSB0aGUgVUVDCiAgICB3aWxsIHR4IGZhaWxlZCB3aGVuIHlvdSBhcmUgdXNpbmcgZ2NjNC54LgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYmE1OGU0YzlhOWE5MTdjZTc5NWRkMTZkNGVjOGQ1MTVmOWY3YWEzNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IE1hciAxIDIxOjExOjM2IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBBTUNDIEthdG1haSA0NDBTUGUgZXZhbCBib2FyZCBzdXBwb3J0CgogICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSByZWNlbnRseSBhZGRlZCBLYXRtYWkgYm9hcmQgc3VwcG9ydC4gVGhlIGJpZ2dlc3QKICAgIGNoYW5nZSBpcyB0aGUgc3VwcG9ydCBvZiBFQ0MgRElNTSBtb2R1bGVzIGluIHRoZSA0NDBTUChlKSBTUEQgRERSMgogICAgZHJpdmVyLgoKICAgIFBsZWFzZSBub3RlLCB0aGF0IHN0aWxsIHNvbWUgcHJvYmxlbXMgYXJlIGxlZnQgd2l0aCBzb21lIG1lbW9yeQogICAgY29uZmlndXJhdGlvbnMuIFNlZSB0aGUgZHJpdmVyIGZvciBtb3JlIGRldGFpbHMuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDhjMTIwNDVhM2IwNmM1YjY2NzVkM2ZlMDJmYmM5ZjU0NTk4ODEyOWEKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBNYXIgMSAwNzowMzoyNSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBtaXNzaW5nIGRlZmF1bHQgQ0ZHX1JUQ19CVVNfTlVNICYgQ0ZHX0RUVF9CVVNfTlVNCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjYmM3MDM2NjQ4ZTQ2NTY5N2NhMjk4YmE1MWUwZTc2ZGRhMzUyYTAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAyOCAwMToyODo1MyAyMDA3ICswMTAwCgogICAgU0MzOiBmaXggdHlwbyBpbiBkZWZhdWx0IGVudmlyb25tZW50Cgpjb21taXQgZTM0NDU2OGIxYjQ2YWY4NWVjMzJkODE1NTg2ZjkxYmMxMTVkNjIyMwpBdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+CkRhdGU6CVR1ZSBGZWIgMjcgMjA6MTU6MzAgMjAwNyArMDMwMAoKICAgIE1DQzIwMDogRml4ZXMgZm9yIHVwZGF0ZSBwcm9jZWR1cmUKCiAgICAtIGZpeCBsb2dpYyBlcnJvciBpbiBpbWFnZSB0eXBlIGhhbmRsaW5nCiAgICAtIG1ha2Ugc3VyZSBmaWxlIHN5c3RlbSBpbWFnZXMgKGNyYW1mcyBldGMuKSBnZXQgc3RvcmVkIGluIGZsYXNoCiAgICAgIHdpdGggaW1hZ2UgaGVhZGVyIHN0cmlwcGVkIHNvIHRoZXkgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBNVEQKCmNvbW1pdCA3NDM1NzExNDViMzcxODI3NTdkNGU2ODhhNzc4NjBiMzZlZTc3NTczCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjcgMTQ6MjY6MDQgMjAwNyArMDEwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4KCmNvbW1pdCA2MzhkZDE0NThiYmRjMmE1NWQ0YjllMjVjNWM0ZTFmODM4YTVkYzcyCkF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KRGF0ZToJVHVlIEZlYiAyNyAxMjo0MDoxNiAyMDA3ICswMzAwCgogICAgTUNDMjAwIHVwZGF0ZSAtIGFkZCBMQ0QgUHJvZ3Jlc3MgSW5kaWNhdG9yCgpjb21taXQgNmM3Y2FjOGM0ZmNlMGVhMmJmOGUxNWVkODY1OGQ4Nzk3NDE1NWI0NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEZlYiAyMiAwNzo0MzozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBnZXRfZGV2KCkgbm93IHVuY29uZGl0aW9uYWxseSB1c2VzIG1hbnVhbCByZWxvY2F0aW9uCgogICAgU2luY2UgdGhlIHJlbG9jYXRpb24gZml4IGlzIG5vdCBpbmNsdWRlZCB5ZXQgYW5kIHdlJ3JlIG5vdCBzdXJlIGhvdwogICAgaXQgd2lsbCBiZSBhZGRlZCwgdGhpcyBwYXRjaCByZW1vdmVzIGNvZGUgdGhhdCByZXF1aXJlZCByZWxvY2F0aW9uCiAgICB0byBiZSBmaXhlZCBmb3Igbm93LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4Mjc0ZWMwYmQwMWQyZmViMmM3ZjA5NWViYTc4ZDQyZWEwMDk3OThiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgRmViIDIyIDA3OjQwOjIzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBzeXN0ZW1hY2UgZHJpdmVyIHRvIHNlbGVjdCA4ICYgMTZiaXQgbW9kZQoKICAgIEFzIHN1Z2dlc3RlZCBieSBHcmFudCBMaWtlbHkgdGhpcyBwYXRjaCBlbmFibGVzIHRoZSBYaWxpbnggU3lzdGVtQUNFCiAgICBkcml2ZXIgdG8gc2VsZWN0IDggb3IgMTZiaXQgbW9kZSB1cG9uIHN0YXJ0dXAuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDNhMTk3YjJmZTQ5ZDZmYTAzOTc4ZTYwYWYyMzk0ZWZlOWM3MGI1MjcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgRmViIDIxIDE2OjUyOjMxIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggdjNdIEFkZCBzeW5jIHRvIGVuc3VyZSBmbGFzaF93cml0ZV9jbWQgaXMgZnVsbHkgZmluaXNoZWQKCiAgICBTb21lIENQVXMgbGlrZSBQUEMsIEJMQUNLRklOIG5lZWQgc3luYygpIHRvIGVuc3VyZSBjZmkgZmxhc2ggd3JpdGUgY29tbWFuZAogICAgaXMgZnVsbHkgZmluaXNoZWQuIFRoZSBzeW5jKCkgaXMgZGVmaW5lZCBpbiBlYWNoIENQVSdzIGlvLmggZmlsZS4gRm9yCiAgICB0aG9zZSBDUFVzIHdoaWNoIGRvIG5vdCBuZWVkIHN5bmMgZm9yIG5vdywgYSBkdW1teSBzeW5jKCkgaXMgZGVmaW5lZCBpbgogICAgdGhlaXIgaW8uaCBhcyB3ZWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGEwNDk5NWM3ZGM2NzcyMDEzYTlhMGRjNWM3NjdmMTkwYzQwMjQ3OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiAyMSAxMzo0NDozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBGaXggcHJvYmxlbSBpbiBzeXN0ZW1hY2UgZHJpdmVyIChhY2Vfd3JpdGV3IGluc3RlYWQgb2YgYWNlX3dyaXRlKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3NTFiYjU3MTA3ZDc4OTc4YWUwOGU2OTdjM2RlYmE4MTZmNWJlMDkxCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEzOjIxOjU3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEZpeCByZWxvY2F0aW9uIHByb2JsZW0gd2l0aCAibmV3IiBnZXRfZGV2KCkgZnVuY3Rpb24KCiAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlICJuZXciIGdldF9kZXYoKSBmdW5jdGlvbiBmb3IgYmxvY2sgZGV2aWNlcwogICAgaW50cm9kdWNlZCBieSBHcmFudCBMaWtlbHkgdG8gYmUgdXNlZCBvbiBzeXN0ZW1zIHRoYXQgc3RpbGwgc3VmZmVyCiAgICBmcm9tIHRoZSByZWxvY2F0aW9uIHByb2JsZW1zIChtYW51YWwgcmVsb2NhdGlvbiBuZWVkZSBiZWNhdXNlIG9mCiAgICBwcm9ibGVtcyB3aXRoIGxpbmtlciBzY3JpcHQpLgoKICAgIEhvcGVmdWxseSB3ZSBjYW4gcmVzb2x2ZSB0aGlzIHJlbG9jYXRpb24gaXNzdWUgc29vbiBmb3IgYWxsIHBsYXRmb3JtCiAgICBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgYWRkaXRpb25hbCBjb2RlIGFueW1vcmUuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGQ5M2UyMjEyZjk2MjY2OGIzZGNlMDkxZmY1ZWRjMzNmMjM0N2ZlMzcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjAgMTM6MTc6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIFN5c3RlbUFDRSBkcml2ZXIgZm9yIDE2Yml0IGFjY2VzcwoKICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIHByb2JsZW1zIHdoZW4gdGhlIFhpbGlueCBTeXN0ZW1BQ0UgZHJpdmVyCiAgICBpcyB1c2VkIHdpdGggMTZiaXQgYWNjZXNzIG9uIGFuIGJpZyBlbmRpYW4gcGxhdGZvcm0gKGxpa2UgdGhlCiAgICBBTUNDIEthdG1haSkuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDg3NGJiN2I4OGZlOWI0NjQ4ZTEyODhhMzg3YWYyZTMxMDE0YTcyZjMKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBGZWIgMjAgMTM6MTU6NDAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQ2xlYW4gdXAgS2F0bWFpICg0NDBTUGUpIGxpbmtlciBzY3JpcHQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNDc0NWFjYWExYTYwM2I2N2Y2YjliNzk3MDM2NWViYWRkN2Q2NTg2ZgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDo1NzowOCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgS2F0bWFpICg0NDBTUGUpIGV2YWwgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMGRjMDE4ZWNlMTNlZmZjNjg5ZTQ3NDc5ZWE5ZWJmMWM5OGE1MDdmNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDo1MToyNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBJMkM6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzc2VzIGZvciBSVEMgJiBEVFQKCiAgICBUaGlzIHBhdGNoIHN3aXRjaGVzIHRvIHRoZSBkZXNpcmVkIEkyQyBidXMgd2hlbiB0aGUgZGF0ZS9kdHQKICAgIGNvbW1hbmRzIGFyZSBjYWxsZWQuIFRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlCiAgICBDRkdfUlRDX0JVU19OVU0gYW5kL29yIENGR19EVFRfQlVTX05VTSBkZWZpbmVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA0MDM3ZWQzYjYzOTIzY2ZjZWMyN2Y3ODRhODkwNTdjM2NiYWJjZWRiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEwOjQzOjM0IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogQWRkIDQ0MFNQKGUpIEREUjIgU1BEIERJTU0gc3VwcG9ydAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRERSMiBjb250cm9sbGVyIHVzZWQgb24gdGhlCiAgICA0NDBTUCBhbmQgNDQwU1BlLiBJdCBpcyB0ZXN0ZWQgb24gdGhlIEthdG1haSAoNDQwU1BlKSBldmFsCiAgICBib2FyZCBhbmQgd29ya3MgZmluZSB3aXRoIHRoZSBmb2xsb3dpbmcgRElNTSBtb2R1bGVzOgoKICAgIC0gQ29yc2FpciBDTTJYNTEyLTU0MDBDNCAoNTEyTUJ5dGUgcGVyIERJTU0pCiAgICAtIEtpbmdzdG9uIFZhbHVlUkFNIEtWUjY2N0QyTjUvNTEyICg1MTJNQnl0ZSBwZXIgRElNTSkKICAgIC0gS2luZ3N0b24gVmFsdWVSQU0gS1ZSNjY3RDJONUsyLzJHICgxR0J5dGUgcGVyIERJTU0pCgogICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIG5pY2UgZnVuY3Rpb25hbGl0eSB0byBkeW5hbWljYWxseQogICAgY3JlYXRlIHRoZSBUTEIgZW50cmllcyBmb3IgdGhlIFNEUkFNICh0bGIuYykuIFNvIHdlIHNob3VsZAogICAgbmV2ZXIgcnVuIGludG8gc3VjaCBwcm9ibGVtcyB3aXRoIHdyb25nICh0b28gc2hvcnQpIFRMQgogICAgaW5pdGlhbGl6YXRpb24gYWdhaW4gb24gdGhlc2UgcGxhdGZvcm1zLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmQ4MzBjOTgzMDM3OTA0NWY1ZGFhOWY1NDJhYzFjOTkwYzcwMDY4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgRmViIDIwIDEwOjM1OjQyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogU3BsaXQgNHh4IFNQRCBTRFJBTSBpbml0IHJvdXRpbmVzIGludG8gMiBmaWxlcwoKICAgIFNpbmNlIHRoZSBleGlzdGluZyA0eHggU1BEIFNEUkFNIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGZvciB0aGUKICAgIDQwNSBTRFJBTSBjb250cm9sbGVyIGFuZCB0aGUgNDQwIEREUiBjb250cm9sbGVyIGRvbid0IGhhdmUgbXVjaCBpbgogICAgY29tbW9uIHRoaXMgcGF0Y2ggc3BsaXRzIGJvdGggZHJpdmVycyBpbnRvIGRpZmZlcmVudCBmaWxlcy4KCiAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgNDQwIEREUjIgY29udHJvbGxlciBzdXBwb3J0ICg0NDBTUC9lKS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzliMmQwYmIyZWFlMDk2MDI0NDhmN2E3Y2I1NjUzMGQyZjMxZTZjNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEZlYiAyMCAxMDoyNzowOCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBQUEM0eHg6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzc2VzCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIEkyQyBidXNzZXMgb24gdGhlIFBQQzR4eAogICAgcGxhdGZvcm1zLiBEZWZpbmUgQ09ORklHX0kyQ19NVUxUSV9CVVMgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlCiAgICB0byBtYWtlIHVzZSBvZiB0aGlzIGZlYXR1cmUuCgogICAgSXQgYWxzbyBtZXJnZXMgdGhlIDQwNSBhbmQgNDQwIGkyYyBoZWFkZXIgZmlsZXMgaW50byBvbmUgY29tbW9uCiAgICBmaWxlIDR4eF9pMmMuaC4KCiAgICBBbHNvIHRoZSA0eHggaTJjIHJlc2V0IHByb2NlZHVyZSBpcyByZXdvcmtlZCBzaW5jZSBJIGV4cGVyaWVuY2VkCiAgICBzb21lIHByb2JsZW1zIHdpdGggdGhlIGZpcnN0IGFjY2VzcyBvbiB0aGUgNDQwU1BlIEthdG1haSBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZWI4NjdhNzYyMzhmYjM4ZTk1MmMzNzg3MWIxNmQwZDdmZDYxYzk1ZgpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTo0NSAyMDA3ICswMTAwCgogICAgW1BBVENIIDlfOV0gVXNlICJ2b2lkICoiIG5vdCAidW5zaWduZWQgbG9uZyAqIiBmb3IgYmxvY2sgZGV2IHJlYWRfd3JpdGUgYnVmZmVyIHBvaW50ZXJzCgogICAgQmxvY2sgZGV2aWNlIHJlYWQvd3JpdGUgaXMgYW5vbnltb3VzIGRhdGE7IHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIGEKICAgIHR5cGVkIHBvaW50ZXIuICB2b2lkICogaXMgZmluZS4gIEFsc28gYWRkIGEgaG9vayBmb3IgYmxvY2tfcmVhZCBmdW5jdGlvbnMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgNTM3NThmYTIwZTkzNWNjODdlZWIwNTE5ZWQzNjVkZjc1M2E2ZjI4OQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTozOCAyMDA3ICswMTAwCgogICAgW1BBVENIIDhfOV0gQWRkIGJsb2NrX3dyaXRlIGhvb2sgdG8gYmxvY2tfZGV2X2Rlc2NfdAoKICAgIFByZXBhcmF0aW9uIGZvciBmdXR1cmUgcGF0Y2hlcyB3aGljaCBzdXBwb3J0IGJsb2NrIGRldmljZSB3cml0aW5nCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IGY0ODUyZWJlNmNhOTQ2YTUwOTY2N2ViNjhiZTQyMDI2ZjgzN2JlNzYKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MzEgMjAwNyArMDEwMAoKICAgIFtQQVRDSCA3XzldIFJlcGxhY2UgYWNlX3JlYWR3X2FjZV93cml0ZWIgZnVuY3Rpb25zIHdpdGggbWFjcm9zCgogICAgUmVnaXN0ZXIgcmVhZC93cml0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gYSBmdWxsIGZ1bmN0aW9uLiAgVGhlCiAgICBwYXRjaCByZXBsYWNlcyB0aGVtIHdpdGggbWFjcm9zLgoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCAzYThjZTlhZjZmY2I1NzQ0YTc4NTFiNDQ0MGMwNzY4OGFjYzQwODQ0CkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgRmViIDIwIDA5OjA1OjIzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggNl85XSBNb3ZlIGNvbW1vbl9jbWRfYWNlLmMgdG8gZHJpdmVyc19zeXN0ZW1hY2UuYwoKICAgIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBub3QgYSBjb21tYW5kOyBpdCBpcyBhIGRldmljZSBkcml2ZXIuICBQdXQgaXQgaW4KICAgIHRoZSBjb3JyZWN0IHBsYWNlLglUaGVyZSBhcmUgemVybyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgaXQKICAgIG9ubHkgbW92ZXMgdGhlIGZpbGUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDk4NDYxOGYzZTc3OTRjNzgzZWM4ZDE1MTFlNzRjNmVlMmQ2OWJmZTQKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MTYgMjAwNyArMDEwMAoKICAgIFtQQVRDSCA1XzldIFdoaXRlc3BhY2UgZml4dXAgb24gY29tbW9uX2NtZF9hY2UuYyAodXNpbmcgTGluZGVudCkKCiAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBhcmF0aW9uIG9mIGFkZGl0aW9uYWwgY2hhbmdlcyB0byB0aGUgc3lzYWNlIGRyaXZlci4KICAgIE1heSBhcyB3ZWxsIHRha2UgdGhpcyBvcHBvcnR1bml0eSB0byBmaXh1cCB0aGUgaW5jb25zaXN0ZW50IHdoaXRlc3BhY2Ugc2luY2UKICAgIHRoaXMgZmlsZSBpcyBhYm91dCB0byB1bmRlcmdvIG1ham9yIGNoYW5nZXMgYW55d2F5LgoKICAgIFRoZXJlIGFyZSB6ZXJvIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLiAgSXQgb25seSBjbGVhbnMgdXAgdGhlCiAgICB0aGUgd2hpdGVzcGFjZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgODBiYTk4MWQ5NDA0NzFmZTdlNTM5ZTY0ZmEzZDJiZDgwMDAyYmVkYQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIEZlYiAyMCAwOTowNTowNyAyMDA3ICswMTAwCgogICAgW1BBVENIIDRfNF0gUmVtb3ZlIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIGlzcHJpbnQoKSBpbiBmdF9idWlsZC5jCgogICAgaXNwcmludCBpcyBhbHJlYWR5IGRlZmluZWQgaW4gY3R5cGUuYwoKICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KCmNvbW1pdCBjOTVjNDI4MGQ3NTFjYTA3OGMyZmY1ODIyOGQyZjJiNDRjY2YwNjAwCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglUdWUgRmViIDIwIDA5OjA1OjAwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0ggM185XSBNb3ZlIGJ1ZmZlciBwcmludCBjb2RlIGZyb20gbWQgY29tbWFuZCB0byBjb21tb24gZnVuY3Rpb24KCiAgICBQcmludGluZyBhIGJ1ZmZlciBpcyBhIGRhcm4gdXNlZnVsIHRoaW5nLiAgTW92ZSB0aGUgYnVmZmVyIHByaW50IGNvZGUKICAgIGludG8gcHJpbnRfYnVmZmVyKCkgaW4gbGliX2dlbmVyaWMvCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDk5YjBmMGZkM2ZiZjI1NzJhZTFhNzcyM2RkOTBjZmZjOGU4NTEzMGEKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDQ6NTIgMjAwNyArMDEwMAoKICAgIFtQQVRDSCAyXzRdIFVzZSBjb25maWcuaCwgbm90IHhwYXJhbWV0ZXJzLmgsIGZvciB4aWxpbnggdGFyZ2V0cwoKICAgIENoYW5nZSB0aGUgeGlsaW54IGRldmljZSBkcml2ZXJzIGFuZCBib2FyZCBjb2RlIHRvIGluY2x1ZGUgY29uZmlnLmgKICAgIGluc3RlYWQgb2YgeHBhcmFtZXRlcnMuaCBkaXJlY3RseS4JY29uZmlnLmggYWx3YXlzIGluY2x1ZGVzIHRoZQogICAgY29ycmVjdCB4cGFyYW1ldGVycyBmaWxlLiAgVGhpcyBjaGFuZ2UgcmVkdWNlcyB0aGUgcG9zaWJpbGl0eSBvZgogICAgaW5jbHVkaW5nIHRoZSB3cm9uZyBmaWxlIHdoZW4gYWRkaW5nIGEgbmV3IHhpbGlueCBib2FyZCBwb3J0CgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczNWRkOTdiMWIyMGU3NzdkMDU5YzdiMzg5ZmU5ZDcwY2QzZjgwYzcKQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CkRhdGU6CVR1ZSBGZWIgMjAgMDk6MDQ6MzQgMjAwNyArMDEwMAoKICAgIFtQQVRDSCAxXzRdIE1lcmdlIGNvbW1vbiBnZXRfZGV2KCkgcm91dGluZXMgZm9yIGJsb2NrIGRldmljZXMKCiAgICBFYWNoIG9mIHRoZSBmaWxlc3lzdGVtIGRyaXZlcnMgZHVwbGljYXRlIHRoZSBnZXRfZGV2IHJvdXRpbmUuICBUaGlzIGNoYW5nZQogICAgbWVyZ2VzIHRoZW0gaW50byBhIHNpbmdsZSBmdW5jdGlvbiBpbiBwYXJ0LmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Cgpjb21taXQgZjVmY2MzYzIwYjY1NTU0ZTk4YTE2NTU0MmMzNmVlMGM2MTBhMmQ4MQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gRmViIDE5IDIzOjA5OjUxIDIwMDcgKzAxMDAKCiAgICBNQ0MyMDA6IFNvZnR3YXJlIFVwZGF0ZXI6IGFsbG93IGJvdGggInJhbWRpc2siIGFuZCAiZmlsZXN5c3RlbSIgdHlwZXMKICAgIGFzIHJvb3QgZmlsZSBzeXN0ZW0gaW1hZ2VzLgoKY29tbWl0IDQ4OWM2OTZhZTcyMTEyMTg5NjFkMTU5ZTQzZTcyMmQ3NGMzNmZjYmMKQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgpEYXRlOglXZWQgRmViIDE0IDE0OjMwOjI4IDIwMDcgKzAzMDAKCiAgICBNQ0MyMDA6IEV4dGVuc2lvbnMgdG8gU29mdHdhcmUgVXBkYXRlIE1lY2hhbmlzbQoKICAgIFVwZGF0ZSAvIGV4dGVuZCBTb2Z0d2FyZSBVcGRhdGUgTWVjaGFuaXNtIGZvciBNQ0MyMDAgYm9hcmQ6CgogICAgLSBBZGQgc3VwcG9ydCBmb3Igcm9vdGZzIGltYWdlIGFkZGVkLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICJyb290ZnNfc3QiIGFuZCAicm9vdGZzX25kIiBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdAogICAgICB2YWx1ZXMgb2YgdGhlIGltYWdlIHN0YXJ0IGFuZCBlbmQuCiAgICAtIFJlbW92ZSBleGNlc3NpdmUga2V5IGNoZWNrIGNvZGUuCiAgICAtIENvZGUgY2xlYW51cC4KCmNvbW1pdCA0YmUyM2ExMmYyM2YxMzcyNjM0ZWRjMzIxNTEzN2IwOTc2OGI3OTQ5CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gRmViIDE5IDA4OjIzOjE1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBTZXF1b2lhIEVCQyBjb25maWd1cmF0aW9uIChOT1IgRkxBU0gpCgogICAgQXMgc3BvdHRlZCBieSBNYXR0aGlhcyBGdWNocywgdGhlIFJFQURZIGlucHV0IHNob3VsZCBub3QgYmUKICAgIGVuYWJsZWQgZm9yIHRoZSBOT1IgRkxBU0ggb24gdGhlIFNlcXVvaWEgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDI2MDVlOTBiZjY3NmQ0ODEyM2FmZTU3MTlhODQ2ZDJiNTJiMjRhYWMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBGZWIgMTYgMDc6NTc6NDIgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGp1cGl0ZXIgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNDk3ZDAxMmU1YmUwMTk0ZTEwODQwNzNkMDA4MWViMWE4NDQ3OTZiMgpBdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBwb2xsdXguZGVueC5kZT4KRGF0ZToJTW9uIEZlYiAxMiAxMzoxMTo1MCAyMDA3ICswMTAwCgogICAgTFBDMjI5MjogcGF0Y2ggZnJvbSBTaWVtZW5zLgoKY29tbWl0IGIwYjFhOTIwYWViZWFkMGQ0NDE0NmU3MzY3NmFlOWQ4MGZmZmM4ZTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBGZWIgMTAgMDg6NDk6MzEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIG1pc3NpbmcgcDNteC5oIGZpbGUgdG8gcmVwb3NpdG9yeSAodXBzKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1M2Q0YTQ5ODNmYjliM2FlNWY3YjJmMTBjNTk5YWNhMmIxYjQwMzRhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJRnJpIEZlYiA5IDEwOjQ1OjQyIDIwMDcgKzAxMDAKCiAgICBbTW90aW9uLVBST10gUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgdGhlIE1vdGlvbi1QUk8gYm9hcmQuCgpjb21taXQgNWE3NTNmOThjNmEwMWJkMWM2MWE5YTNmOTVlODMyOWEzNWY2Mjk5NApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEZlYiA3IDE2OjUxOjA4IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBzb21lIEFNQ0MgNHh4IGJvYXJkIGNvbmZpZyBmaWxlcyAoc2V0IGluaXRyZF9oaWdoKQoKICAgIFNvbWUgYm9hcmRzIHRoYXQgY2FuIGhhdmUgbW9yZSB0aGFuIDc2OE1CeXRlcyBvZiBTRFJBTSBuZWVkIHRvCiAgICBzZXQgImluaXRyZF9oaWdoIiwgc28gdGhhdCB0aGUgaW5pdHJkIGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUKICAgIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNzM3MmNhNjgyMjc5MzBkMDNjZmZhNTQ4MzEwNTI0Y2FkNWI5NjczMwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAyIDEyOjQ0OjIyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENvcnJlY3RseSBkaXNwbGF5IFBDSSBhcmJpdGVyIGVuLS9kaXNhYmxlZCBvbiBzb21lIDR4eCBib2FyZHMKCiAgICBQcmV2aW91c2x5IHRoZSBzdHJhcHBpbmcgRENSL1NEUiB3YXMgcmVhZCB0byBkZXRlcm1pbmUgaWYgdGhlIGludGVybmFsIFBDSQogICAgYXJiaXRlciBpcyBlbmFibGVkIG9yIG5vdC4gVGhpcyBzdHJhcHBpbmcgYml0IGNhbiBiZSBvdmVycmlkZGVuLCBzbyBub3cKICAgIHRoZSBjdXJyZW50IHN0YXR1cyBpcyByZWFkIGZyb20gdGhlIGNvcnJlY3QgRENSL1NEUiByZWdpc3Rlci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMmFhNTRmNjUxYTQyZDE5ODY3MzMxOGYwN2EyMGM4OWE0M2U0ZDE5NwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEZlYiAyIDEyOjQyOjA4IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIENoYW5nZSBjb25maWd1cmF0aW9uIG91dHB1dCBvZiBTeWNhbW9yZSwgWWVsbG93c3RvbmUgJiBSYWluaWVyCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDIzNzQ0ZDZiNWJmMTc1OTJlYjZhMGVmNGYzMThmNjA4OWY1NTk5M2IKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVRodSBGZWIgMSAxMzoyMjo0MSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBSZW1vdmUgUENJLVBOUCBjb25maWd1cmF0aW9uIGZyb20gU2VxdW9pYS9SYWluaWVyIGNvbmZpZyBmaWxlCgogICAgV2hlbiBQQ0kgUE5QIGlzIGVuYWJsZWQgdGhlIHBjaSBwbnAgY29uZmlndXJhdGlvbiByb3V0aW5lIGlzIGNhbGxlZAogICAgd2hpY2ggc2V0cyB0aGUgUENJX0NBQ0hFX1NJWkVfTElORSB0byA4LiBUaGlzIHNlZW1zIHRvIGdlbmVyYXRlIHNvbWUKICAgIHByb2JsZW1zIHdpdGggc29tZSBQQ0kgY2FyZHMuIEZvciBub3cgZGlzYWJsZSB0aGUgUENJIFBOUCBjb25maWd1cmF0aW9uLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAyOTAyZmFkYWRlM2JlNzY1OTQ2N2U4ZDA3NDA0OGM2YjcwNjhmNWMwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMxIDE2OjU2OjEwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSA0NDBFUHgvNDQwR1J4IGNwdSBkZXRlY3Rpb24KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZDVlYTI4N2IwMmE2OTQ1YzM5Nzc0MTBlMzY0YTg3OWRkMWE1NTVjOApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIEphbiAzMSAxNjozODowNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgZXNkIGNwY2k1MjAwIGZpbGVzCgogICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgoKY29tbWl0IDhiN2QxZjBhYjdkN2M0ZmUzMTYwYmJmNzRhN2U5NjkwZDlmM2EzYWIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBKYW4gMzEgMTY6Mzc6MzQgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGVzZCBtZWNwNTIwMCBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KCmNvbW1pdCA3MWE0ZTVmZGE4YjYwMDQ0YWI5ZjQ2MDY5ZmExY2ZhMjZiZGQwN2ZmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgSmFuIDMxIDEyOjM4OjUwIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSB1bm5lY2Nlc3NhcnkgeWVsbG93c3RvbmUgYm9hcmQgY29uZmlnIGZpbGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTgwMjU5NGI2ZmExYjE2NjMwODgyMGMyNzZiOTZkYzBkN2NjNzMxYwpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEphbiAzMCAxNzowNjoxMCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgU2VxdW9pYSAoNDQwRVB4KSBjb25maWcgZmlsZQoKICAgIFRoZSBjb25maWcgZmlsZSBub3cgaGFuZGxlcyB0aGUgMm5kIHRhcmdldCwgdGhlIFJhaW5pZXIgKDQ0MEdSeCkKICAgIGV2YWx1YXRpb24gYm9hcmQgYmV0dGVyLiBBZGRpdGlvbmFsbHkgdGhlIFBQQyBpbnB1dCBjbG9jayB3YXMKICAgIGFkanVzdGVkIHRvIG1hdGNoIHRoZSBjb3JyZWN0IHZhbHVlIG9mIDMzLjAgTUh6LgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3MDAyMDBjNjdlNzNiODM3NTE0MThhYmU3ODE1ODQwZGNhOGZkNmNiCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDE3OjA0OjE5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIE1lcmdlIFlvc2VtaXRlICYgWWVsbG93c3RvbmUgYm9hcmQgcG9ydHMKCiAgICBOb3cgdGhlIEFNQ0MgZXZhbCBib2FyZHMgWW9zZW1pdGUgKDQ0MEVQKSBhbmQgWWVsbG93c3RvbmUgKDQ0MEdSKQogICAgc2hhcmUgb25lIGNvbmZpZyBmaWxlIGFuZCBhbGwgYm9hcmQgc3BlY2lmaWMgZmlsZXMuIFRoaXMgd2F5IHdlCiAgICBkb24ndCBoYXZlIHRvIG1haW50YWluIHR3byBkaWZmZXJlbnQgc2V0cyBvZiBmaWxlcyBmb3IgbmVhcmx5CiAgICBpZGVudGljYWwgYm9hcmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYmJmNWVhZTMyMmY1ZjFmNjQyN2VjYzNhYzEzYTBjYjdkYmE4YWQ2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDE1OjAxOjQ5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBTQ1BVIChQRE5CMyB2YXJpYW50KSBib2FyZAoKICAgIFNDUFUgZG9lc24ndCB1c2UgcmVkdW5kYW50IGVudmlyb25tZW50IGluIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA2MzA0NDMwZWQ2NDJlYThmYTE1YzllNWFmOTY1YWMyZTAzM2VlYzQ1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgSmFuIDMwIDEyOjUxOjA3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIGFscHI6IFVwZGF0ZSBhbHByIGJvYXJkIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGY4ZGI4NGYxMzJiMWUzMzVmMjBmOTYxMzhhMWYwOWVkOTdiMDg2NjQKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIEphbiAzMCAwMDo1MDo0MCAyMDA3ICswMTAwCgogICAgTFBDMjI5MiBTT0RJTU0gcG9ydCBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KCmNvbW1pdCA2YmQyNDQ3ZWU0N2VlMjNjMThkMmIzYzdjY2Q1YTIwZjc2MjZmNWIzCkF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgSmFuIDI0IDEyOjE2OjU2IDIwMDcgKzAxMDAKCiAgICBBZGQgcG9ydCBmb3IgdGhlIGxwYzIyOTJzb2RpbW0gZXZhbHVhdGlvbiBib2FyZCBmcm9tIEVtYmVkZGVkQXJ0aXN0cwoKY29tbWl0IDJkYWYwNDZiYTYyN2Y4NWY0NDE5NTgxNTc3ODE0MDAzOTYzNjI0NGUKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUdWUgSmFuIDIzIDE3OjIyOjA2IDIwMDcgKzAxMDAKCiAgICBbaURNUl0gQWRkIE1URCBhbmQgSkZGUzIgc3VwcG9ydCwgYWxzbyBhZGQgZGVmYXVsdCBwYXJ0aXRpb24gZGVmaW5pdGlvbi4KCmNvbW1pdCBmN2RiMzMxMDFmYmM5YzhmMGExMDczOGNlODcwMzQ4NzVhMTdhZWI5CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJVHVlIEphbiAyMyAxNDoyMToxNCAyMDA3ICswMTAwCgogICAgW2lETVJdIEZsYXNoIGRyaXZlciBvbiBpbml0aWFsaXNhdGlvbiB3cml0ZS1wcm90ZWN0cyBzb21lIHNlY3RvcnMsCiAgICBjdXJyZW50bHkgc2VjdG9ycyAwLTMuIFNlY3RvciAzIGRvZXMgbm90IG5lZWQgdG8gYmUgcHJvdGVjdGVkLCB0aG91Z2gKICAgIChVLWJvb3Qgb2NjdXBpZXMgc2VjdG9ycyAwLTEgYW5kIHRoZSBlbnZpcm9ubWVudCBzZWN0b3IgMikuIFRoaXMgY29tbWl0CiAgICBmaXhlcyB0aGlzLCBpLmUuLCBvbmx5IHNlY3RvcnMgMC0yIGFyZSBwcm90ZWN0ZWQuCgpjb21taXQgMGVkNDdiYjExOWNkMmM0YzE2ZWRiMjU0ODc4OTE0OGY5ZTZkYzlkZQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMjMgMTQ6MTE6MjIgMjAwNyArMDEwMAoKICAgIFtpRE1SXSBVc2luZyBNSUktcmVsYXRlZCBjb21tYW5kcyBvbiBpRFJNIGJvYXJkIGRvZXNuJ3Qgd29yayBub3cgKGUuZy4sCiAgICAibWlpIGRldmljZSIgcmVzdWx0cyBpbiAiVW5leHBlY3RlZCBleGNlcHRpb24iKS4gRml4aW5nIHRoaXMgcHJvcGVybHkKICAgIHJlcXVpcmVzIHNvbWUgY2xlYW4tdXAgaW4gdGhlIEZFQyBkcml2ZXJzIGluZnJhc3RydWN0dXJlIGZvciBDb2xkRmlyZSwgc28KICAgIHRoaXMgY29tbWl0IGRpc2FibGVzIE1JSSBjb21tYWRzIGZvciBub3cuCgpjb21taXQgMzYzZDFkOGY5Yzk5YjYzZGFlZjgxZjU5ODVjYWIzZmMwMGVkZGU1YwpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVR1ZSBKYW4gMjMgMTM6MjU6MjIgMjAwNyArMDEwMAoKICAgIFtDb2xkRmlyZSBNQ0Y1MjcxIGZhbWlseV0gQWRkIENQVSBkZXRlY3Rpb24gYmFzZWQgb24gdGhlIHZhbHVlIG9mIENoaXAKICAgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyIChDSVIpLgoKY29tbWl0IGZkZWYzODg3NTg1MDY3NjVkNGQ2YTcxNTVjOGYxNTg0YzYzZmY1ODEKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBKYW4gMjIgMTM6MTk6MjEgMjAwNyArMDgwMAoKICAgIHVzZSAgQ0ZHX1dSSVRFX1NXQVBQRURfREFUQSBkZWZpbmUgaW5zdGVhZCBvZiBkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9TV0FQCiAgICBUaGUgcGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPiBvbiBKYW4sIDE5LCAyMDA3CiAgICBmaXhlcyBjZmlfZHJpdmVyIGJ1ZyBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQuIFRoZSBkZWZhdWx0IGNmaV9kcml2ZXIgY2FuIHN1cHBvcnQKICAgIG1wYzc0NDhocGMyIGJvYXJkLgoKY29tbWl0IGE0MDEyMzk2NjQ1NTMzYWVmMjE4MzU0ZWViYTc1NGRmZjBkZWFjZTgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxOSAyMzowODozOSAyMDA3ICswMTAwCgogICAgTWlub3IgY29kZSBjbGVhbnVwLgoKY29tbWl0IGY1MzliN2JhN2Q3ZWY2ZGQxODdjODIwOTYwOTAwMWNiMWNkOTVlMzkKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBKYW4gMTkgMTk6NTc6MTAgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gU0MzIGJvYXJkOiBhZGRlZCBDRkdfQ01EX0FVVE9TQ1JJUFQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgZDBiNmUxNDA4N2RkZDg3ODlmMjI0YTQ4ZTFkMzNmMmE1ZGY0ZDE2NwpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIEphbiAxOSAxODowNToyNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDRkk6IGRlZmluZSBDRkdfV1JJVEVfU1dBUFBFRF9EQVRBIGZvciB0aGUgQ0ZJLUZsYXNoIGRyaXZlcgoJCSBpZiB5b3UgbXVzdCBzd2FwIHRoZSBieXRlcyBiZXR3ZWVuIHJlYWRpbmcvd3JpdGluZy4KCQkgKE5lZWRlZCBmb3IgdGhlIFNDMyBib2FyZCkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCA5ZDhkNWE1YmZiNjQ3NjhmMjlhMGNiNDdmYzM3Y2Q2ZjRjNDBlMjc2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE4IDE2OjA1OjQ3IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBQcm9kcml2ZSBTQ1BVIChQRE5CMyB2YXJpYW50KSBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAwMDU3ZDc1OGUzZTg3NGNiZTdmMjQ3NDVkMGNjZThjMWNiNmMyMDdlCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUaHUgSmFuIDE4IDExOjU0OjUyIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBQM014IHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMzQxNjdhMzZjMjllZTk0NmI3Mjc0NjVkYjVjMDE0NzQ2YTA4ZTk3OApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxOCAxMTo0ODoxMCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgbWlzc2luZyBUYWlzaGFuIGNvbmZpZyBmaWxlCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNiNDgyMDcyNWU5ZmM0MDljNWNiYzhlODMwNTRhNmVkNTIyZDIxMTEKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTggMTE6Mjg6NTEgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gRml4OiBDb21waWxlcndhcm5pbmdzIGZvciBTQzMgYm9hcmQuCgkJIFRoZSBFQkMgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBpcyBub3cgYnkgQ0ZHX0VCQ19DRkcgZGVmaW5hYmxlCgkJIEFkZGVkIEpGRlMyIHN1cHBvcnQgZm9yIHRoZSBTQzMgYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgNWZiNjkyY2FlNTdkMTcxMGM4ZjUyYTQyN2NmN2YzOWEzNzM4M2ZjZApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVGh1IEphbiAxOCAxMDoyNTozNCAyMDA3ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgQU1DQyBUYWlzaGFuIFBQQzQ0MEdYIGV2YWwgYm9hcmQKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNmQzZTAxMDcyMzVhYTBlNmE2ZGNiNzdmOTg4NDQ5NzI4MGJmODVhZApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgSmFuIDE2IDE4OjMwOjUwIDIwMDcgKzAxMDAKCiAgICBSYW5hbWUgc29saWRjYXJkMyBpbnRvIHNjMzsgYWRkIHJlZHVuZGFudCBlbnYgZm9yIHNjMwoKY29tbWl0IDFiYmJiZGQyMGZjZWM5OTMzNjk3MDAwZGNmNTVmZjc5NzI2MjI1OTYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIEphbiAxNiAxMjo0NjozNSAyMDA3ICswMTAwCgogICAgVXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIFNvbGlkY2FyZDMKCmNvbW1pdCA1YTVjNTY5ODZhOWNjZjcxNjQyYzhiNjM3NGViMTg0ODdiMTVmZWNkCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gSmFuIDE1IDA5OjQ2OjI5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEZpeCA0NDBTUGUgcmV2IEIgZGV0ZWN0aW9uIGZyb20gcHJldmlvdXMgcGF0Y2gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYTQ0M2QzMTQxMGM1NzFlZThmOTcwZGE4MTlhNDRkNjk4ZmRkNmIxZgpBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJU3VuIEphbiAxNCAxMzozNTozMSAyMDA3ICswMTAwCgoJW0ZJWF0gY29ycmVjdCBJMkMgV3JpdGVzIGZvciB0aGUgTE04MSBTZW5zb3IuCgoJU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Cgpjb21taXQgMGJiYTU0NTI4MzVmMTlhNjEyMDRlZGNkYTNhNTgxMTJmZDhlMjIwOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDExOjE3OjEwIDIwMDcgKzAxMDAKCiAgICBVbmRvIGNvbW1pdCAzMDMzZWJiMjogcmVzZXQgY29tbWFuZCBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHMKCiAgICBIYWl5aW5nIFdhbmcncyBtb2RpZmljYXRpb24gdG8gdGhlIHJlc2V0IGNvbW1hbmQgd2FzIGJyb2tlbiwgdW5kbyBpdC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgoKY29tbWl0IDk1OTgxNzc4Y2ZmMDAzOGZkOTk0MTA0NGQ2YTNlZGE4MTBlMzMyNTgKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBKYW4gMTMgMDg6MDE6MDMgMjAwNyArMDEwMAoKICAgIFtQQVRDSF0gVXBkYXRlIDQ0MFNQKGUpIGNwdSByZXZpc2lvbnMKCiAgICBBbHNvIGRpc3BsYXkgZW5hYmxlZC9kaXNhYmxlZCBSQUlEIDYgc3VwcG9ydCBmb3IgNDQwU1AvNDQwU1BlIFBQQydzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA3N2RkYzViOWFmYjMyNTI2MmZkODg3NTJiYTQzMGExZGRlZDFmMGM3CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU5OjU2IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBZZWxsb3dzdG9uZSAoNDQwR1IpIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgQWxzbyB0aGUgRUJDIGluaXRpYWxpc2luZyBpcyBub3cgZG9uZSB2aWEgZGVmaW5lcyBpbiB0aGUgYm9hcmQgY29uZmlnCiAgICBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAzNmFkZmYzNjJjMmMwMTQxZmY4YTgxMGQ0MmE3ZTQ3OGY3NzkxMzBmCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU5OjE5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBZb3NlbWl0ZSAoNDQwRVApIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgQWxzbyB0aGUgRUJDIGluaXRpYWxpc2luZyBpcyBub3cgZG9uZSB2aWEgZGVmaW5lcyBpbiB0aGUgYm9hcmQgY29uZmlnCiAgICBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlMGI5ZWE4YzhhMjk0ZGU2YTUzNTBhZTYzODg3OWQyNGI1YjcwOWQ2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgSmFuIDEzIDA3OjU3OjUxIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBTZXF1b2lhICg0NDBFUHgpIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCgogICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgogICAgdGhlIGJvYXJkIG1lc3NhZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNhNDNiYTE4ZTkxMDIwNmVmODA2M2U0YjIyZDI4MjYzMGJmZjNmZDIKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBKYW4gMTEgMTU6NDQ6NDQgMjAwNyArMDEwMAoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBTT0xJRENBUkQgSUlJIGJvYXJkIGZyb20gRXVyb2Rlc2lnbgoKCVNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDZhYmFlZTQyNjIxYzA3ZTgxYTJjZDE4OWFkNDM2OGI1ZThjNTAyODAKQXV0aG9yOiBSZWluaGFyZCBUaGllcyA8UmVpbmhhcmQuVGhpZXNAd2ViLmRlPgpEYXRlOglXZWQgSmFuIDEwIDE0OjQxOjE0IDIwMDcgKzAxMDAKCiAgICBBZGp1c3RlZCBkZWZhdWx0IGVudmlyb25tZW50IGZvciBjYW01MjAwIGJvYXJkLgoKY29tbWl0IGJhYjVhOTBkNGNjYzFhNDZhODEyN2I4NjdmYTU5MDI4Y2M2MjNhZDkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEphbiAxMCAxNTozNTo1MiAyMDA3ICswMTAwCgogICAgVXBkYXRlIENIQU5HRUxPRwoKY29tbWl0IDc4N2ZhMTU4NjBhNTc4MzNlNTBiZDMwNTU1MDc5YTljZDRlNTE5YjgKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEphbiAxMCAwMToyODozOSAyMDA3ICswMTAwCgogICAgRml4IGF1dG9fdXBkYXRlIGZvciBNQ0MyMDAgYm9hcmQuCgogICAgVGhlIGludm9jYXRpb24gb2YgZG9fYXV0b191cGRhdGUoKSBpcyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZQogICAgbWlzY19pbml0X3IoKSBmdW5jdGlvbiwgYWZ0ZXIgdGhlIGZsYXNoIG1hcHBpbmdzIGhhdmUgYmVlbgogICAgaW5pdGlhbGl6ZWQuIFBsZWFzZSBmaW5kIGF0dGFjaGVkIGEgcGF0Y2ggdGhhdCBpbXBsZW1lbnRzIHRoYXQKICAgIGNoYW5nZS4KCiAgICBBbHNvIGNvcnJlY3QgdGhlIGRlY29kaW5nIG9mIHRoZSBrZXlwYWQgc3RhdHVzLiBXaXRoIHRoaXMgdXBkYXRlLCB0aGUKICAgIGtleSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgdXBkYXRlIGlzIENvbHVtbiAyLCBSb3cgMi4KCmNvbW1pdCBkOTM4NGRlMmY1NzEwNDZlNzEwODFiYWUyMmI0OWUzZDVjYTJlM2Q1CkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIEphbiAxMCAwMDoyNjoxNSAyMDA3ICswMTAwCgogICAgQ0FNNTIwMCBmbGFzaCBkcml2ZXIgbW9kaWZpY2F0aW9uczoKICAgIC0gdXNlIENGSSBkcml2ZXIgKHJlcGxhY2VzIGN1c3RvbSBmbGFzaCBkcml2ZXIpIGZvciBtYWluICdjYW01MjAwJyB0YXJnZXQKICAgIC0gYWRkIHNlY29uZCBidWlsZCB0YXJnZXQgJ2NhbTUyMDBfbmlvc2ZsYXNoJyB3aGljaCBzdGlsbCB1c2VzIGN1c3RvbSBkcml2ZXIKCmNvbW1pdCA2N2ZlYTAyMmZhOTU3ZjU5NjUzYjUyMzhjNzQ5NmY4MGE2YjcwNDMyCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE2OjAyOjQ4IDIwMDcgKzAxMDAKCiAgICBTUEMxOTIwOiBjbGVhbnVwIG1lbW9yeSBjb250b2xsZXIgc2V0dXAKCmNvbW1pdCA4ZmMyMTAyZmFhMjM1OTNjODAzODE0MzdjMDlmNzc0NWExNGRlYjQwCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjE0IDIwMDcgKzAxMDAKCiAgICBGaXggdGhlIGNwdSBzcGVlZCBzZXR1cCB0byB3b3JrIHdpdGggYWxsIGJvYXJkcy4KCmNvbW1pdCA5Mjk1YWNiNzc0ODFjZjA5OWVmOWI0MGUxZmEyZDE0NWIzYzc0OTBjCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEzIDIwMDcgKzAxMDAKCiAgICBTUEMxOTIwOiBhZGQgc3VwcG9ydCBmb3IgdGhlIEZNMThMMDggUmFtdHJvbiBGUkFNCgpjb21taXQgMzhjY2QyZmRmMzM2NGE1M2ZlODBlOWIzNjUzMDNlY2RhZmM5ZTIyMwpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMyAyMDA3ICswMTAwCgogICAgU1BDMTkyMDogdXBkYXRlIHRoZSBIUEkgcmVnaXN0ZXIgYWRkcmVzc2VzIHRvIHdvcmsgd2l0aCB0aGUgc2Vjb25kCiAgICBnZW5lcmF0aW9uIG9mIGhhcmR3YXJlCgpjb21taXQgNTkyMWU1MzEzZmMzZWFkZDQyNzcwYzJiOTliYWRkN2ZhZTVlY2YxZQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTMgMjAwNyArMDEwMAoKICAgIE1pc2NlbGxhbmlvdXMgc3BjMTkyMCByZWxhdGVkIGNsZWFudXBzCgpjb21taXQgZTRjMmQzN2FkYzhiYjFiZjY5ZGNmNjAwY2JjNmM3NWY5MTZhNjEyMApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMiAyMDA3ICswMTAwCgogICAgU1BDMTkyMCBHTy9OT0dPIGxlZCBzaG91bGQgYmUgc2V0IHRvIGNvbG9yIHJlZCBpbiBVLUJvb3QKCmNvbW1pdCAwYmU2MjcyOGFhYzQ1OWJhMjY4ZDZkNzUyZWQ0OWVjMGUyYmM3MzQ4CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAY3JlYW1uZXQuZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMiAyMDA3ICswMTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBEUzMyMzEgUlRDCgpjb21taXQgODEzOTU2N2I2MGQ2Nzg1ODRiMDVmMDcxOGE2ODFmMjA0N2M1ZTE0ZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTEgMjAwNyArMDEwMAoKICAgIFNNQzEgdXNlcyBleHRlcm5hbCBDTEs0IGluc3RlYWQgb2YgQlJHIG9uIHNwYzE5MjAKCmNvbW1pdCBkOGQ5ZGUxYTAyZmJkODgwYjYxM2Q2MDcxNDNkMWY1NzM0MmFmZmM3CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAY3JlYW1uZXQuZGU+CkRhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMCAyMDA3ICswMTAwCgogICAgVXBkYXRlIHRoZSBTUEMxOTIwIENNQiBQTEQgZHJpdmVyCgpjb21taXQgM2YzNGY4NjkxNjI3NTBlNWU5OTlmZDE0MGY4ODRmNWRlOTUyYmNmZQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgpEYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTAgMjAwNyArMDEwMAoKICAgIEFkZCAvIGVuYWJsZSBJMkMgc3VwcG9ydCBvbiB0aGUgc3BjMTkyMCBib2FyZAoKY29tbWl0IGQyODcwN2RiY2UxZTlhYzIwMTdhZDA1MWRhNDEzM2JmMjJiNDIwNGYKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BjcmVhbW5ldC5kZT4KRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEwIDIwMDcgKzAxMDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHRtczMyMDY3MXggaG9zdCBwb3J0IGludGVyZmFjZSAoSFBJKQoKY29tbWl0IGY0ZWI1NDUyOWJiMzY2NGMzYTU2MmU0ODhiNDYwZmUwNzVmNzlkNjcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU3VuIEphbiA3IDAwOjEzOjExIDIwMDcgKzAxMDAKCiAgICBQcmVwYXJlIGZvciByZWxlYXNlIDEuMi4wCgpjb21taXQgZjA3YWU3YTlkYWVmMjdhM2QwMjEzYTRmM2ZlMzlkNTM0MjE3M2MwMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA2IDE1OjU4OjA5IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIDQ0eDogRml4IHByb2JsZW0gd2l0aCBERFIgY29udHJvbGxlciBzZXR1cCAocmVmcmVzaCByYXRlKQoKICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHdpdGggYW4gaW5jb3JyZWN0IHNldHVwIGZvciB0aGUgcmVmcmVzaAogICAgdGltZXIgb2YgdGhlIDQ0eCBERFIgY29udHJvbGxlciBpbiB0aGUgZmlsZSBjcHUvcHBjNHh4L3NkcmFtLmMKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZjE2YzFkYTk1NzdmMDZjNWZjMDg2NTFhNDA2NTUzNzQwN2RlNDYzNQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IEphbiA2IDE1OjU2OjEzIDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBBTFBSIGJvYXJkIGZpbGVzCgogICAgVGhpcyB1cGRhdGUgYnJpbmdzIHRoZSBBTFBSIGJvYXJkIHN1cHBvcnQgdG8gdGhlIG5ld2VzdCB2ZXJzaW9uLgogICAgSXQgYWxzbyBmaXhlcyBhIHByb2JsZW0gd2l0aCB0aGUgTkFORCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNkMWQ5MzdmOTAyNTBhMzI5ODhjMzdiMmI0YWY4MzY0ZDI1ZGU4ZWQKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNSAxMTo0NjowNSAyMDA3ICswMTAwCgogICAgW1BBVENIXSBuYW5kOiBGaXggcHJvYmxlbSB3aXRoIG9vYnNpemUgY2FsY3VsYXRpb24KCiAgICBIZXJlIHRoZSBkZXNjcmlwdGlvbiBmcm9tIEJyaWFuIEJyZWxzZm9yZCA8QnJpYW5fQnJlbHNmb3JkQGRlbGwuY29tPjoKCiAgICBUaGUgSHluaXggcGFydCByZXR1cm5zIGEgMHgxZCBpbiB0aGUgNHRoIElEIGJ5dGUuIFRoZSBTYW1zdW5nIHBhcnQKICAgIHJldHVybnMgYSAweDE1LiBJbiB0aGUgY29kZSBmcmFnbWVudCBiZWxvdyBiaXRzIFsxOjBdIGRldGVybWluZSB0aGUKICAgIHBhZ2Ugc2l6ZSwgaXQgaXMgQU5EZWQgdmlhICIoZXh0aWQgJiAweDMpIiB0aGVuIHNoaWZ0ZWQgb3V0LiBUaGUKICAgIG5leHQgZmllbGQgaXMgYWxzbyBBTkRlZCB3aXRoIDB4My4gSG93ZXZlciB0aGlzIGlzIGEgb25lIGJpdCBmaWVsZAogICAgYXMgZGVmaW5lZCBpbiB0aGUgSHluaXggYW5kIFNhbXN1bmcgcGFydHMgaW4gdGhlIDR0aCBJRCBieXRlIHRoYXQKICAgIGRldGVybWlucyB0aGUgb29ic2l6ZSwgbm90IGEgdHdvIGJpdCBmaWVsZC4gSXQgd29ya3Mgb24gU2Ftc3VuZyBhcwogICAgYml0c1szOjJdIGFyZSAwMS4gSG93ZXZlciBmb3IgdGhlIEh5bml4IHRoZXJlIGlzIGEgMTEgaW4gdGhlc2UgdHdvCiAgICBiaXRzLCBzbyB0aGUgb29iIHNpemUgZ2V0cyBtZXNzZWQgdXAuCgogICAgSSBjaGVja2VkIHRoZSBjb3JyZWN0IGxpbnV4IGNvZGUgYW5kIHRoZSBzdWdnZXN0ZWQgZml4IGZyb20gQnJpYW4gaXMKICAgIGFsc28gYXZhaWxhYmxlIGluIHRoZSBsaW51eCBuYW5kIG10ZCBkcml2ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGE3OGJjNDQzYWU1YTRhOGJhODc1OTA1ODdkNWUzNWJmNWE3ODdiMmUKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBKYW4gNSAxMDo0MDozNiAyMDA3ICswMTAwCgogICAgW1BBVENIXSBDbGVhciBQTEI0QTBfQUNSW1dSUF0gb24gU2VxdW9pYSAoNDQwRVB4KQoKICAgIFRoaXMgZml4IHdpbGwgbWFrZSB0aGUgTUFMIGJ1cnN0IGRpc2FibGluZyBwYXRjaCBmb3IgdGhlIExpbnV4CiAgICBFTUFDIGRyaXZlciBvYnNvbGV0ZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMDIzODg5ODM4MjgyYjYyMzdiNDAxNjY0ZjIyZGQyMmRmYmEyYzA2NgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJRnJpIEphbiA1IDEwOjM4OjA1IDIwMDcgKzAxMDAKCiAgICBbUEFUQ0hdIEFkZCBERFIyIG9wdGltaXphdGlvbiBjb2RlIGZvciBTZXF1b2lhICg0NDBFUHgpIGJvYXJkCgogICAgVGhpcyBjb2RlIHdpbGwgb3B0aW1pemUgdGhlIEREUjIgY29udHJvbGxlciBzZXR1cCBvbiBhIGJvYXJkIHNwZWNpZmljCiAgICBiYXNpcy4KCiAgICBOb3RlOiBUaGlzIGNvZGUgZG9lc24ndCB3b3JrIHJpZ2h0IG5vdyBvbiB0aGUgTkFORCBib290aW5nIGltYWdlIGZvciB0aGUKICAgIFNlcXVvaWEgYm9hcmQsIHNpbmNlIGl0IGRvZXNuJ3QgZml0IGludG8gdGhlIDRrQnl0ZXMgZm9yIHRoZSBTUEwgaW1hZ2UuCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjZTRhY2JiNjgzOTg2MzRiOGQwMTFlZDdiYjBkMTIyNjljODQyMzAKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglUaHUgRGVjIDI4IDE5OjA4OjIxIDIwMDYgKzAxMDAKCiAgICBGZXcgVjM4QiBjaGFuZ2VzOgogICAgICAtIGZpeCBhIHR5cG8gaW4gVjM4QiBjb25maWcgZmlsZQogICAgICAtIG1vdmUgd2F0Y2hkb2cgaW5pdGlhbGlzYXRpb24gZWFybGllciBpbiB0aGUgYm9vdCBwcm9jZXNzCiAgICAgIC0gYWRkICJ3ZHQ9b2ZmIiB0byBkZWZhdWx0IGtlcm5lbCBjb21tYW5kIGxpbmUgKGRpc2FibGVzIGtlcm5lbCB3YXRjaGRvZykKCmNvbW1pdCA5MmViNzI5YmFkODc2NzI1YWVlYTkwOGQyYWRkYmEwODAwNjIwODQwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVdlZCBEZWMgMjcgMDE6MjY6MTMgMjAwNiArMDEwMAoKICAgIEZpeCBidWcgaW4gYWRhcHRpb24gb2YgU3RlZmFubyBCYWJpYydzIENGSSBkcml2ZXIgcGF0Y2guCgpjb21taXQgOWMwZjQyZWNmZTI1ZjdmZmNlOGVjN2E4MTVmMDM4NjRkNzIzZmZlMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTdW4gRGVjIDI0IDAxOjQyOjU3IDIwMDYgKzAxMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXAuCgpjb21taXQgZDc4NGZkYjA1OTAwYWRhMzY4NmQ1Nzc4NzgzZTFmYjMyOGU5ZmI2NgpBdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgpEYXRlOglUdWUgRGVjIDEyIDAwOjIyOjQyIDIwMDYgKzAxMDAKCiAgICBGaXggY2ZpIGZhaWx1cmUgd2l0aCBTcGFuc2lvbiBGbGFzaCAoU3BhbnNpb24gRmxhc2ggRGV2aWNlcyBoYXZlIGEgZGlmZmVyZW50IG9mZnNldCB0byBnbyBpbnRvIENGSSBtb2RlKQoKY29tbWl0IDFiM2MzNjBjMjM1ZGM2ODRlYzA2YzJkNWYxODNmMGEyODJjZTQ1ZTIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CUZyaSBEZWMgMjIgMTQ6Mjk6NDAgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gRml4IHNlcXVvaWEgZmxhc2ggYXV0b2RldGVjdGlvbiAoZmluYWxseSBjb3JyZWN0KQoKICAgIE5vdyAzMk1CeXRlIGFuZCA2NE1CeXRlIEZMQVNIIGlzIGtub3cgdG8gd29yayBhbmQgb3RoZXIKICAgIGNvbmZpZ3VyYXRpb25zIHNob3VsZCB3b3JrIHRvby4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgODJlNTIzNmE4YjcxOTU0MzY0M2ZkMjZkNTgyNzkzOGFiMmI5NDgxOApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglGcmkgRGVjIDIyIDEwOjMwOjI2IDIwMDYgKzAxMDAKCiAgICBNaW5vciBjb2RlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCgpjb21taXQgZmEyMzA0NDU2NDA5MWYwNWQ5Njk1YmViN2I1YjlhOTMxZTdmNDFhNApBdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IERlYyAyMSAxNzoxNzowMiAyMDA2ICswMTAwCgogICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFRRTTgyNzIgYm9hcmQgZnJvbSBUUQoKICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgoKY29tbWl0IDZkZWRmM2Q0OWRkMTRjM2JmNTQxYzhlY2VlN2ZmYWFjNWYwZTFkNmMKQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBEZWMgMjEgMTY6MTQ6NDggMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBVQzEwMSBib2FyZCBmcm9tIE1BTi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KCmNvbW1pdCBjODRiYWQwZWY2MGU3MDU1YWIwYmQ0OWI5MzA2OTUwOWNlY2MzODJhCkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIERlYyAyMCAwMDoyOTo0MyAyMDA2ICswMTAwCgogICAgRml4IHRvIG1ha2UgdGhlIGJhdWRyYXRlIGNoYW5nZXMgaW1tZWRpYXRlIGZvciB0aGUgTUNGNTJ4MiBmYW1pbHkuCgpjb21taXQgZGFhNmU0MThiY2MwYzcxNzc1MmU4ZGU5MzljMjEzYzc5MDI4NjA5NgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBEZWMgMjAgMDA6Mjc6MzIgMjAwNiArMDEwMAoKICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHRoZSBpRE1SIGJvYXJkIChDb2xkRmlyZSkuCgpjb21taXQgY2RiOTdhNjY3ODgyNmY4NWU3YzY5ZWFlNmExYzExM2QwMzRjOWIxMApBdXRob3I6IEFuZHJlaSBTYWZyb25vdiA8c2Fmcm9ub3ZAcG9sbHV4LmRlbnguZGU+CkRhdGU6CUZyaSBEZWMgOCAxNjoyMzowOCAyMDA2ICswMTAwCgogICAgYXV0b21hdGljIHVwZGF0ZSBtZWNoYW5pc20KCmNvbW1pdCA5ZDI3YjNhMDY4NWZmOTlmYzQ3Nzk4M2YzMTVjMDRkNDlmNjU3YThhCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTc6NTY6NTkgMjAwNiArMDgwMAoKICAgIFNsaWdodCBjb2RlIGNsZWFuIHVwLgogICAgQWRkIGNvbW1lbnRzLCBkZWxldGUgZHVwbGljYXRlIGRlZmluZSBhbmQgcmVtb3ZlIHNwYWNlcy4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZGJjZDY5ZTNlMjc3NmVhMzM0NTkwZDU3NjhlMzY5MmM1ZmFlNWMxCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTc6NTQ6MjEgMjAwNiArMDgwMAoKICAgIEludHJvZHVjZSBQTExfQ0ZHWzA6NF0gdGFibGUgZm9yIHByb2Nlc3NvciA3NDQ4Lzc0NDdBLzc0NTUvNzQ1Ny4gVGhlIG9yaWdpbmFsCiAgICBtdWx0aXBsaWVyIHRhYmxlIGNhbiBub3QgcmVmZWN0IHRoZSByZWFsIFBMTCBjbG9jayBiZWhhdmlvciBvZiB0aGVzZQogICAgcHJvY2Vzc29ycy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxlZAogICAgaW5mb3JtYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHJvY2Vzc29ycy4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZWZlMjBjOTU3OTAxMWQ5OTg3ZjYyZWQ3ZDM1ZWU4Y2RjMWNmMGUwCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglNb24gRGVjIDQgMTQ6NDY6MjMgMjAwNiArMDgwMAoKICAgIFJlbW92ZSB0aGUgc3RhdGljIE1BQyBhZGRyZXNzLCBpcCBhZGRyZXNzLCBzZXJ2ZXIgaXAsIG5ldG1hc2sgYW5kCiAgICBnYXRld2F5IGlwIGZvciBuZXR3b3JrIHNldHRpbmcuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNmYxMmM2MWNmMzFlZDczZDcyZGRmY2ZjNzEyYTg1NGEzYTE3N2FhZgpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIERlYyA0IDE0OjMzOjA4IDIwMDYgKzA4MDAKCiAgICBSZW1vdmUgdGhlIGR1cGxpY2F0ZSBtZW1vcnkgdGVzdCBjb2RlIGZvciBtcGM3NDRpaHBjMiBib2FyZC4KICAgIElmIGEgbWVtb3J5IHRlc3QgaXMgbmVlZGVkLCBwbGVhc2UgdXNlIHRoZSBmdW5jdGlvbnMgaW4KICAgIHBvc3QvbWVtb3J5LmMgb3IgbWVtdGVzdCBjb21tYW5kLgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM5YzFlZWVkN2RkMTkzZmE2NWZiMTk0NjU0MTMyMDQwZDQ5ZDRkM2EKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBEZWMgMSAxOTowMToyNSAyMDA2ICswODAwCgogICAgRml4IHRoZSBleGNlcHRpb24gb2NjdXJpbmcgaW4gUkFNIHRhYmxlIHNlYXJjaCBpc3N1ZS4KICAgIFRoZSBvcmlnaW5hbCBzZWFyY2hfb25lX3RhYmxlKCkgZnVuY3Rpb24gY29kZSBjYW4gb25seSBwcm9jZXNzZXMgdGhlIHNlYXJjaAogICAgZm9yIHRoZSBleGNlcHRpb24gb2NjdXJyaW5nIGluIEZMQVNIL1JPTSwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGFuZCBmaXh1cAogICAgdGFibGUgdXN1YWxseSBsb2NhdGUgaW4gRkxBU0guIElmIHRoZSBleGNlcHRpb24gYWRkcmVzcyBpcyBhbHNvIGluCiAgICBGTEFTSCwgaXQgd2lsbCBiZSBPSy4KICAgIElmIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIFJBTSwgYWZ0ZXIgdGhlIHUtYm9vdCByZWxvY2F0aW9uLCBhCiAgICByZWxvY2F0aW9uIG9mZnNldCBzaG91bGQgYmUgYWRkZWQuCgogICAgY2xlYW4gdXAgdGhlIGNvZGUgaW4gY3B1Lzc0eHhfN3h4L2NwdS5jCgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGVlMzExMjE0ZTBkMjE2ZjkwNGZlZWEyNjk1OTlkMDkzNGJmNzFmMjMKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBEZWMgMSAxMTo0NzozNiAyMDA2ICswODAwCgogICAgQ2xlYW4gdXAgdGhlIGNvZGUgYWNjb3JkaW5nIHRvIGNvZGVzdHlsZToKICAgICgxKSByZW1vdmUgc29tZSBDKysgY29tbWVudHMuCiAgICAoMikgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgogICAgKDMpIHJlbW92ZSB0cmFpbGluZyBlbXB0eSBsaW5lLgogICAgKDQpIEluZGVudGF0aW9uIGJ5IHRhYmxlLgogICAgKDUpIHJlbW92ZSB7fSBpbiBvbmUgbGluZSBjb25kaXRpb24uCiAgICAoNikgYWRkIHNwYWNlIGJlZm9yZSAnKCcgaW4gZnVuY3Rpb24gY2FsbC4KICAgIFJlbW92ZSBzb21lIHdlaXJkIHByaW50ZiAoKSBvdXRwdXQuCiAgICBBZGQgbmVjZXNzYXJ5IGNvbW1lbnRzLgogICAgTW9kaWZpZWQgTWFrZWZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeS4KCmNvbW1pdCBkZDUyMGJmMzE0YzdhZGQ0MTgzYzUxOTE2OTIxODBmNTc2Zjk2YjYwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBOb3YgMzAgMTg6MDI6MjAgMjAwNiArMDEwMAoKICAgIENvZGUgY2xlYW51cC4KCmNvbW1pdCA4ZDlhODYxMGI4MjU2MzMxMTMyMjI3ZTllNjU4NWM2YmQ1NzQyNzg3CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBOb3YgMzAgMDE6NTQ6MDcgMjAwNiArMDEwMAoKICAgIENvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCA3MjZlOTBhYWNmMGIxZWNiMGU3MDU1YmU1NzQ2MjJmYmUzZTQ1MGJhCkF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgpEYXRlOglXZWQgTm92IDI5IDE2OjIzOjQyIDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFtNUEM1Mnh4XSBVc2UgSVBCIGJ1cyBmcmVxdWVuY3kgZm9yIFNPQyBwZXJpcGhlcmFscwoKICAgIFRoZSBzb2Mgbm9kZSBvZiB0aGUgbXBjNTJ4eCBuZWVkcyB0byBiZSBsb2FkZWQgd2l0aCB0aGUgSVBCIGJ1cyBmcmVxdWVuY3ksCiAgICBub3QgdGhlIFhMQiBmcmVxdWVuY3kuCgogICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBwYXRjaGVzIGZvciBNUEM1Mnh4IGRldmljZSB0cmVlIHN1cHBvcnQKCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBTaWduZWQtb2ZmLWJ5OiBTeWx2YWluIE11bmF1dCA8dG50QDI0NnROdC5jb20+Cgpjb21taXQgMWVhYzJhNzE0MTdiNjY3NWIxMWFhY2U3MjEwMmEyZTdmZGU4ZjVjNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAyOSAxNTo0MjozNyAyMDA2ICswMTAwCgogICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgUHJvZHJpdmUgUDNNNzUwICYgUDNNNzQ0OCAoUDNNeCkgYm9hcmRzCgogICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBQcm9kcml2ZSBQM003NTAgKFBQQzc1MCAmIE1WNjQ0NjApCiAgICBhbmQgdGhlIFAzTTc0NDggKE1QQzc0NDggJiBNVjY0NDYwKSBQTUMgbW9kdWxlcy4gQm90aCBtb2R1bGVzIGFyZQogICAgcXVpdGUgc2ltaWxhciBhbmQgc2hhcmUgdGhlIHNhbWUgYm9hcmQgZGlyZWN0b3J5ICJwcm9kcml2ZS9wM214IgogICAgYW5kIHRoZSBzYW1lIGNvbmZpZyBmaWxlICJwM214LmgiLgoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYmRkNDY4MzJhZWI1NjlmNWUwNGIxZjIwZjY0MzE4NTI1YjY1MjVhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglXZWQgTm92IDI5IDEyOjUzOjE1IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIGNvbW1vbi9jbWRfZWxmLmM6IEVuYWJsZSBsb2FkYWRkciBhcyBwYXJhbWV0ZXIgaW4gYm9vdHZ4IGNvbW1hbmQKCiAgICBJbiB0aGUgYm9vdHZ4IGNvbW1hbmQgdGhlIGxvYWQgYWRkcmVzcyB3YXMgb25seSByZWFkIGZyb20gdGhlIGVudgogICAgdmFyaWFibGUgImxvYWRhZGRyIiBhbmQgbm90IG9wdGlvbmFsbHkgcGFzc2VkIGFzIHBhcmFtdGVyIGFzIGRlc2NyaWJlZAogICAgaW4gdGhlIGhlbHAuIFRoaXMgaXMgZml4ZWQgd2l0aCB0aGlzIHBhdGNoLiBUaGUgYmVoYXZpb3VyIGlzIG5vdyB0aGUKICAgIHNhbWUgYXMgaW4gdGhlIGJvb3RlbGYgY29tbWFuZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGUyNmYxMDc0YzNhYzFiZDhmZDA5NGYwZGM0YTFjNGEwYjE1YTU5MgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJV2VkIE5vdiAyOSAxMjowMzo1NyAyMDA2ICswMTAwCgogICAgW1BBVENIXSBpbmNsdWRlL3BwYzQ0MC5oIG1pbm9yIGVycm9yIGFmZmVjdGluZyBpbnRlcnJ1cHRzCgogICAgRml4ZWQgaW5jbHVkZS9wcGM0NDAuYyBmb3IgVUlDIGFkZHJlc3MgQnVnCgogICAgQ29ycmVjdHMgYnVnIGFmZmVjdGluZyB0aGUgYWRkcmVzc2VzIGZvciB0aGUgdW5pdmVyc2FsIGludGVycnVwdAogICAgY29udHJvbGxlciBVSUMyIGFuZCBVSUMzIG9uIHRoZSBQUEM0NDAgRXB4LCBHUngsIGFuZCBTUEUgY2hpcHMuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZiBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTkzOWQ5Njk0NDNjY2YzMTZjYWIyYmYzMmFiMTAyN2Q0ZGI1YmExYQpBdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgpEYXRlOglUdWUgTm92IDI4IDE2OjE3OjI3IDIwMDYgLTA2MDAKCiAgICBNYWtlIGZzbC1pMmMgbm90IGNvbmZsaWN0IHdpdGggU09GVCBJMkMKCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDE0MTk4YmY3NjhmZGM5NThlM2MxYWZkMjQwNGU1MjYyMjA4ZTk4ZDcKQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KRGF0ZToJVHVlIE5vdiAyOCAxNjoxNzoxOCAyMDA2IC0wNjAwCgogICAgRml4IEkyQyBtYXN0ZXIgYWRkcmVzcyBpbml0aWFsaXphdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGNmM2QwNDVlNTFjYThkY2M2Y2Y3NTk4MjcxNDA4NjFkNmFjMjVjMDQKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI4IDIzOjMxOjE5IDIwMDYgLTA2MDAKCiAgICBBc3NpZ24gbWFpbnRhaW5lcnMgZm9yIG1wYzgzNDllbWRzIGFuZCBtcGM4MzYwZW1kcwoKICAgIERhdmUgZm9yIG1wYzgzNjBlbWRzLCBhbmQgbWUgZm9yIG1wYzgzNDllbWRzLgoKY29tbWl0IDFhYTkzNGM4MWI3N2YyMDgwZDNjYTRiMjI2ZWFiNjdiMTdhMzM5NjEKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTm92IDI4IDIzOjI4OjMzIDIwMDYgLTA2MDAKCiAgICBFbGltaW5hdGUgZ2NjIDQgJ3VzZWQgdW5pbml0aWFsaXplZCcgd2FybmluZ3MgaW4gZHJpdmVycy9xZS91Y2NmLmMKCiAgICBnaXZlIGluaXRpYWwgdmFsdWVzIGZvciByZWdfbnVtLCBzaGlmdCwgcF9jbXh1Y3IgaW4gdWNjX3NldF9jbGtfc3JjCiAgICBzaW5jZSB0aGV5IGFyZSBwYXNzZWQgYnkgcmVmZXJlbmNlIHRvIHVjY19nZXRfY214dWNyX3JlZyBhbmQgYXNzaWduZWQuCgpjb21taXQgZTg1N2E1YmRiMzk1NGI4OTZjMDkyMGNiOWQ4ZDJiMWI5YzEwN2NlNQpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBOb3YgMjggMTI6MDk6MzUgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IE1pc2NlbGxhbmVvdXMgY29kZSBzdHlsZSBmaXhlcwoKICAgIEltcGxlbWVudCB2YXJpb3VzIGNvZGUgc3R5bGUgZml4ZXMgYW5kIHNpbWlsYXIgY2hhbmdlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU1OTU4MWM1NmFiNWQ2ZTAyMDdkZGFjM2IyYzFkNTVjYjM2ZWM3MDYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjggMTc6NTU6NDkgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gRW5hYmxlIHRoZSBJY2VDdWJlL2xpdGU1MjAwIHZhcmlhbnRzIHRvIHBhc3MgYSBkZXZpY2UgdHJlZSB0byBMaW51eC4KCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUgYW5kIGNvbmZpZ3VyYXRpb24gbmVjZXNzYXJ5IHRvIGJvb3Qgd2l0aCBhbgogICAgYXJjaC9wb3dlcnBjIExpbnV4IGtlcm5lbC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBnbWFpbC5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNzMyZmFlYzk1YTgzY2I0NjhiNDg1MGFlODA3YzgzMDFkZGU4ZjZhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDI4IDE2OjA5OjI0IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFBQQzR4eDogNDQwU1AgUmV2LiBDIGRldGVjdGlvbiBhZGRlZAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlN2YzZTlmZjAxZmJkN2ZhNzJlYjQyYTk2NzVmYmVkNmJjNDczNmIwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgTm92IDI4IDExOjA0OjQ1IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIG5hbmQ6IEZpeCBwYXRjaCBtZXJnZSBwcm9ibGVtCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDU4ZTNiMTRjMThlZDMyODhjZWVmOGQwODY5NDZkYmYzZGY2NGNjZjIKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVR1ZSBOb3YgMjggMTE6MDQ6NDUgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gbmFuZDogRml4IHBhdGNoIG1lcmdlIHByb2JsZW0KCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGY0YjYwMmVjNzUyNGEwMzJiZGYzYzZkMjhjN2Y1MjVhNGE2N2VhYQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDIyOjUzOjUzIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgZjZlNDk1ZjU0Y2RiOGZlMzQwYjljMDNkZWFiNDBhZDc0NmQ1MmZhZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzo0MzoyNSAyMDA2ICswMTAwCgogICAgW1BBVENIXSA0eHhfZW5ldC5jOiBDb3JyZWN0IHRoZSBzZXR0aW5nIG9mIHptaWlmZXIgcmVnaXN0ZXIKCiAgICBQYXRjaCBiZWxvdyBjb3JyZWN0cyB0aGUgc2V0dGluZyBvZiB0aGUgem1paWZlciByZWdpc3RlciwgaXQgd2FzCiAgICBvdmVyd3JpdHRpbmcgdGhlIHJlZ2lzdGVyIHJhdGhlciB0aGFuIE9SaW5nIHRoZSBzZXR0aW5ncy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBOZWlsIFdpbHNvbiA8TldpbHNvbkBhaXJzcGFuLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBkMWE3MjU0NTI5NjgwMGI3ZTIxOWY5MzEwNGFkNTgzNmYwMDAzZDY2CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE3OjM0OjEwIDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFNlbGVjdCBOQU5EIGVtYmVkZGVkIGVudmlyb25tZW50IGZyb20gYm9hcmQgY29uZmlndXJhdGlvbgoKICAgIFRoZSBjdXJyZW50IE5BTkQgQm9vdGxvYWRlciBzZXR1cCBmb3JjZXMgdGhlIGVudmlyb25tZW50CiAgICB2YXJpYWJsZXMgdG8gYmUgaW4gbGluZSB3aXRoIHRoZSBib290bG9hZGVyLiBUaGlzIGNoYW5nZQogICAgZW5hYmxlcyB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBtYWRlIGluIHRoZSBib2FyZCBpbmNsdWRlCiAgICBmaWxlIGluc3RlYWQgc28gdGhhdCBpdCBjYW4gYmUgaW5kaXZpZHVhbGx5IGVuYWJsZWQuCgogICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMTU3ODQ4NjI4NTdjM2MyMjE0NDk4ZGVmY2ZlZDg0ZmYxMzdmYjgxZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzoyMjoxOSAyMDA2ICswMTAwCgogICAgW1BBVENIXSBuYW5kX3dhaXQoKSB0aW1lb3V0IGZpeGVzCgogICAgVHdvIGZpeGVzIGZvciB0aGUgbmFuZF93YWl0KCkgZnVuY3Rpb24gaW4KICAgIGRyaXZlcnMvbmFuZC9uYW5kX2Jhc2UuYzoKCiAgICAxLiBVc2UgY29ycmVjdCB0aW1lb3V0cy4gVGhlIG9yaWdpbmFsIHRpbWVvdXRzIGluIExpbnV4CiAgICBzb3VyY2UgYXJlIDQwMG1zIGFuZCAyMG1zIG5vdCA0MHMgYW5kIDIwcwoKICAgIDIuIFJldHVybiBjb3JyZWN0IGVycm9yIHZhbHVlIGluIGNhc2Ugb2YgdGltZW91dC4gMCBpcwogICAgaW50ZXJwcmV0ZWQgYXMgT0suCgogICAgU2lnbmVkLW9mZi1ieTogUnVpIFNvdXNhIDxydWkuc291c2FAbGFwb3N0ZS5uZXQ+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZGE1NTUzYjA5NWJmMDRmNGYxMDlhZDdlNTY1ZGFlM2FiYTQ3YjIzMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNzowNDowNiAyMDA2ICswMTAwCgogICAgW1BBVENIXSBBbGxvdyBDT05GSUdfT0ZfRkxBVF9UUkVFIHRvIGJvb3QgYSBub24tYXJjaC9wb3dlcnBjIGtlcm5lbAoKICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIGFyY2gvcHBjIGtlcm5lbCB0byBiZSBib290ZWQgYnkganVzdCBwYXNzaW5nIDEgb3IgMgogICAgYXJndW1lbnRzIHRvIGJvb3RtLiAgSXQgcmVtb3ZlcyB0aGUgZ2V0ZW52KCJkaXNhYmxlX29mIikgdGVzdCB0aGF0IHVzZWQKICAgIHRvIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhOTM5OGUwMTg1OTM3ODJjNWZhN2QwNzQxOTU1ZmMxMjU2YjM0YzFlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTU6MzI6NDIgMjAwNiArMDEwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCAxNzI5YjkyY2RlNTc1NDc2Njg0YmZmZTgxOWQwYjc3OTFiNTdiZmYyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjUyOjA0IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIDR4eDogRml4IHByb2JsZW0gd2l0aCBib2FyZCBzcGVjaWZpYyByZXNldCBjb2RlIChub3cgZm9yIHJlYWwpCgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IGNjNWVlOGE5MmEwZTNjYTZmNzI3YWY3MWI4ZmQyMDY0NjBjN2FmZDcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTQ6NDk6NTEgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gYWxwcjogcmVtb3ZlIHVudXNlZCBib2FyZCBzcGVjaWZpYyBmbGFzaCBkcml2ZXIKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgMWY5NGQxNjJlMmI1ZjBlZGMyOGQ5ZmIxMTQ4MjUwMmM0NGQyMThlMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxNDo0ODo0MSAyMDA2ICswMTAwCgogICAgW1BBVENIXSA0eHg6IEZpeCBwcm9ibGVtIHdpdGggYm9hcmQgc3BlY2lmaWMgcmVzZXQgY29kZQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCBlYzBjMmVjNzI1YWVjOTUyNGExNzdhNzdjZTc1NTU5ZTY0NGE5MzFhCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjQ2OjA2IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFJlbW92ZSB0ZXN0aW5nIDR4eCBlbmV0IFBIWSBzZXR1cAoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCAxYzJjZTIyNjIwNjk1MTBmMzFjN2QzZmQ3ZWZkM2Q1OGI4YzBjMTQ4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglNb24gTm92IDI3IDE0OjEyOjE3IDIwMDYgKzAxMDAKCiAgICBbUEFUQ0hdIFVwZGF0ZSBQcm9kcml2ZSBBTFBSIGJvYXJkIHN1cHBvcnQgKDQ0MEdYKQoKICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA1OGI0ODU3NzY2OThjM2Q3MWVjNWEyMTVlMzkyMTIzYjRjMTVhZmEzCkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxMTo1MToyMSAyMDA2ICswMTAwCgogICAgQWRkIGEgc21hbGwgUkVBRE1FIHdpdGggaW5mb3JtYXRpb24gb24gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIuCgpjb21taXQgYWUzYjc3MGU0ZWFlOGU5OGI2ZTllMjk2NjJlMThjNDdmZGYwMTcxZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTE6NDY6NDYgMjAwNiArMDEwMAoKICAgIEZpeCBzb21lIGVuZGlhbm5lc3MgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIKCmNvbW1pdCA3YjU5YjNjN2E4Y2UyZTRiNTY3YWJmOTljMWNkNjY3YmYzNWI5NDE4CkF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyNyAxMTo0NDo1OCAyMDA2ICswMTAwCgogICAgSW50cm9kdWNlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1VTQl9PSENJX05FVyBpbiBvcmRlciB0byBiZSBhYmxlCiAgICB0byBjaG9vc2UgYmV0d2VlbiB0aGUgb2xkIGFuZCB0aGUgZ2VuZXJpYyBPSENJIGRyaXZlcnMuCgpjb21taXQgNTNlMzM2ZTlmZmM1MTAzNWJkYzRlNTg2NzYzMWIzMzc4NzYxYjRkZgpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBOb3YgMjcgMTE6NDM6MDkgMjAwNiArMDEwMAoKICAgIE1vZGlmaWVkIHRoZSBtcGM1eHh4IGFuZCB0aGUgcHBjNHh4IGNwdSB0byB1c2UgdGhlIGdlbmVyaWMgT0hDSSBkcml2ZXIKICAgIGFuZCBhZGFwdGVkIGJvYXJkIGNvbmZpZ3MgVFFNNTIwMCBhbmQgeW9zZW1pdGUgYWNjb3JkaW5nbHkuIFRoaXMgY29tbWl0CiAgICBhbHNvIG1ha2VzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb290IGh1YiBwb3J0cyBjb25maWd1cmFibGUKICAgIChDRkdfVVNCX09IQ0lfTUFYX1JPT1RfUE9SVFMpLgoKY29tbWl0IDc4ZDYyMGViYjU4NzFkMjUyMjcwZGVkZmFkNjBjNjU2ODk5M2I3ODAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBhdGxhcy5kZW54LmRlPgpEYXRlOglUaHUgTm92IDIzIDIyOjU4OjU4IDIwMDYgKzAxMDAKCiAgICBVcGRhdGVzIGZvciBUUU01MjAwIG1vZHVsZXM6CiAgICAtIGZpeCBvZmYtYnktb25lIGVycm9yIGluIGJvYXJkL3RxbTUyMDAvY2FtNTIwMF9mbGFzaC5jIGVycm9yIG1lc3NhZ2UKICAgIC0gc2ltcGxpZnkgInVkYXRlIiBkZWZpbml0aW9ucwoKY29tbWl0IDIwNTMyODMzMDRlZWRkZjI1MGQxMDllNjc5MWViNmZhNGNhZDE0ZjcKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVdlZCBOb3YgMjIgMTM6MjA6NTAgMjAwNiArMDEwMAoKICAgIFtQQVRDSF0gUFBDNHh4IHN0YXJ0LlM6IEZpeCBmb3IgcHJvY2Vzc29yIGVycmF0YQoKICAgIEZpeGVkIGNwdS9wcGM0eHgvc3RhcnQuUyBmb3IgNDQwRVB4IEVycmF0YTogZnVydGhlciBjb3JyZWN0cyBQUEM0NDBFUHgKICAgIGVycmF0YSAxLjEyOiA0NDBfMzMgYnkgbW92aW5nIHBhdGNoIHVwIGluIGNvZGUuCgogICAgU2lnbmVkLW9mZi1ieTogSmVmZiBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgNGVmNjI1MTQwM2Y2Mzc4NDEwMDBlMGZlZjllODMyYWEwMTMzOTgyMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAyMCAyMDozOTo1MiAyMDA2ICswMTAwCgogICAgW1BBVENIXSBVcGRhdGUgQU1DQyBTZXF1b2lhIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgNjRNQnl0ZSBOT1IgRkxBU0gKCiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgZTRiYmQ4ZGExNjRiOTc2ZDM4NjE2YmQ5YzY5YzVlODZlMTkzY2RmMApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDIwIDEwOjI4OjMwIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgMjYwNDIxYTIxZTkzNGE2OGQzMWZiNjEyNWIwZmJkMjYzMWE4Y2EyMApBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJTW9uIE5vdiAxMyAxMzo1NToyNCAyMDA2ICswMTAwCgogICAgW1BBVENIXSBDRkkgZHJpdmVyIEFNRCBDb21tYW5kIFNldCBUb3AgYm9vdCBnZW9tZXRyeSByZXZlcnNhbCwgZXRjLiBbVXBkYXRlZF0KCiAgICAgICAqIEFkZHMgc3VwcG9ydCBmb3IgQU1EIGNvbW1hbmQgc2V0IFRvcCBCb290IGZsYXNoIGdlb21ldHJ5IHJldmVyc2FsCiAgICAgICAqIEFkZHMgc3VwcG9ydCBmb3IgcmVhZGluZyBKRURFQyBNYW51ZmFjdHVyZXIgSUQgYW5kIERldmljZSBJRAogICAgICAgKiBBZGRzIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgY29tbWFuZCBzZXQsIG1hbnVmYWN0dXJlciBpZCBhbmQKCSBkZXZpY2UgaWRzIChmbGluZm8pCiAgICAgICAqIE1ha2VzIGZsaW5mbyBvdXRwdXQgdG8gYmUgY29uc2lzdGVudCB3aGVuIENGR19GTEFTSF9FTVBUWV9JTkZPIGRlZmluZWQKICAgICAgICogUmVtb3ZlcyBvdXRkYXRlZCBjaGFuZ2UgaGlzdG9yeSAocmVmZXIgdG8gZ2l0IGxvZyBpbnN0ZWFkKQoKICAgIFNpZ25lZC1vZmYtYnk6IFRvbHVuYXkgT3JrdW4gPGxpc3RtZW1iZXJAb3JrdW4udXM+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Cgpjb21taXQgYjIxYjUxMWQ0YzUwNDA4ZjQ4NTNmNDZmMDZiNjAxMjcyMTk2MjIzZgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglTdW4gTm92IDEyIDIxOjEzOjIzIDIwMDYgKzAxMDAKCiAgICBVcGRhdGUgQ0hBTkdFTE9HCgpjb21taXQgY2UzZjFhNDBjNTA3YWZiYWIwNmM1ZWI1OGNjZGM2NzEzZWRhMzI0NQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVNhdCBOb3YgMTEgMjI6NDg6MjIgMjAwNiArMDEwMAoKICAgIERpc2FibGUgdGhlIHdhdGNoZG9nIGluIHRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIFYzOEIgYm9hcmQuCgpjb21taXQgNDRhNDdlNmRiMjY5NDg0MTIxMWYxYzhmZGJhZmQzNjk5MmU5Y2QxYQpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVNhdCBOb3YgMTEgMjI6NDM6MDAgMjAwNiArMDEwMAoKICAgIENoYW5nZSB0aGUgR1BJTyBwaW4gbXVsdGlwbGV4aW5nIGNvbmZpZ3VyYXRpb24gZm9yIFYzOEIuIFRoZSBVU0IgR1BJTyBwaW4KICAgIGdyb3VwIGlzIGVuYWJsZWQgZm9yIFVTQiBlYXJsaWVyIChpbiBjcHVfaW5pdF9mKCkgaW5zdGVhZCBvZgogICAgdXNiX2xvd2xldmVsX2luaXQoKSkuCgpjb21taXQgOTE2NTBiM2U0ZGU2ODgwMzhkNGY3MTI3OWM0NDg1OGUzZTJjNjg3MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gTm92IDYgMTc6MDY6MzYgMjAwNiArMDEwMAoKICAgIFNlcXVlbnRpYWwgYWNjZXNzZXMgdG8gbm9uLWV4aXN0ZW50IG1lbW9yeSBtdXN0IGJlIHN5bmNocm9uaXplZCwKICAgIGF0IGxlYXN0IG9uIEcyIGNvcmVzLgoKICAgIFRoaXMgZml4ZXMgZ2V0X3JhbV9zaXplKCkgcHJvYmxlbXMgb24gTVBDNTIwMCBSZXYuIEIgYm9hcmRzLgoKY29tbWl0IGJlNWU2MTgxNWQ1YTFmYWMyOTBjZTljMGVmMDljYjZhOGU0Mjg4ZmEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDMgMTk6MTU6MDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IFVwZGF0ZSA4M3h4IHRvIHVzZSBmc2xfaTJjLmMKCiAgICBVcGRhdGUgdGhlIDgzeHggdHJlZSB0byB1c2UgSTJDIHN1cHBvcnQgaW4gZHJpdmVycy9mc2xfaTJjLmMuICBEZWxldGUKICAgIGNwdS9tcGM4M3h4L2kyYy5jLCBpbmNsdWRlL2FzbS1wcGMvaTJjLmgsIGFuZCBhbGwgcmVmZXJlbmNlcyB0byB0aG9zZSBmaWxlcy4KICAgIEFkZGVkIG11bHRpcGxlIEkyQyBidXMgc3VwcG9ydCB0byBmc2xfaTJjLmMuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMjM5ZDc0YjFjOTM3OTg0YmM1MTkwODNhOGU3ZGUzNzNhMzkwZjA2CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDEyOjAwOjI4IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBSZXBsYWNlIENGR19JTU1SQkFSIHdpdGggQ0ZHX0lNTVIKCiAgICBSZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgQ0ZHX0lNTVJCQVIgd2l0aCBDRkdfSU1NUiwgc28gdGhhdCB0aGUgODN4eAogICAgdHJlZSBtYXRjaGVzIHRoZSBvdGhlciA4eHh4IHRyZWVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjdmYjJlNzAzZWM5Njg4NTQxNDE2OTYyNzI0YWRmZjcwYTczMjJjYgpBdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOTo0NzoxMSAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogTGluZGVudCBhbmQgY2xlYW4gdXAgY3B1L21wYzgzeHgvc3BlZWQuYwoKY29tbWl0IDkwZjMwYTcxMGEzYzYxOWI1NDA1ODYwYTY4NmM0ZGRmYzQ5NWQ0YjYKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6MDU6NTAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEZpeCB0aGUgaW5jb3JyZWN0IGRjYnogb3BlcmF0aW9uCgogICAgVGhlIDgzNHggcmV2MS54IHNpbGljb24gaGFzIG9uZSBDUFU1IGVycmF0YS4KCiAgICBUaGUgaXNzdWUgaXMgd2hlbiB0aGUgZGF0YSBjYWNoZSBsb2NrZWQgd2l0aAogICAgSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGxvb2tzIGxpa2Ugbm8tb3AgaW5zdC4KCiAgICBUaGUgcmlnaHQgYmVoYXZpb3Igb2YgdGhlIGRhdGEgY2FjaGUgaXMgd2hlbiB0aGUgZGF0YSBjYWNoZQogICAgTG9ja2VkIHdpdGggSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGFsbG9jYXRlcwogICAgbmV3IHRhZ3MgaW4gY2FjaGUuCgogICAgVGhlIDgzNHggcmV2My4wIGFuZCBsYXRlciBhbmQgODM2MCBoYXZlIG5vdCB0aGlzIGJ1ZyBpbnNpZGUuCgogICAgU28sIHdoZW4gODM0eCByZXYzLjAvODM2MCBhcmUgd29ya2luZyB3aXRoIEVDQywgdGhlIGRjYnoKICAgIGluc3RydWN0aW9uIHdpbGwgY29ycnVwdCB0aGUgc3RhY2sgaW4gY2FjaGUsIHRoZSBwcm9jZXNzb3Igd2lsbAogICAgY2hlY2tzdG9wIHJlc2V0LgoKICAgIEhvd2V2ZXIsIHRoZSA4MzR4IHJldjEueCBjYW4gd29yayB3aXRoIEVDQyB3aXRoIHRoZXNlIGNvZGUsCiAgICBiZWNhdXNlIHRoZSBzaWxsaWNvbiBoYXMgdGhpcyBjYWNoZSBidWcuIFRoZSBkY2J6IHdpbGwgbm90CiAgICBjb3JydXB0IHRoZSBzdGFjayBpbiBjYWNoZS4KICAgIFJlYWxseSwgaXQgaXMgdGhlIGZhdWx0IGNvZGUgcnVubmluZyBvbiBmYXVsdCBzaWxsaWNvbi4KCiAgICBUaGlzIHBhdGNoIGZpeCB0aGUgaW5jb3JyZWN0IGRjYnogb3BlcmF0aW9uLiBJbnN0ZWFkIG9mCiAgICBDUFUgRlAgd3JpdGluZyB0byBpbml0aWFsaXNlIHRoZSBFQ0MuCgogICAgQ0hBTkdFTE9HOgogICAgKiBGaXggdGhlIGluY29ycmVjdCBkY2J6IG9wZXJhdGlvbiBpbnN0ZWFkIG9mIENQVSBGUAogICAgd3JpdGluZyB0byBpbml0aWFsaXNlIHRoZSBFQ0MgbWVtb3J5LiBPdGhlcndpc2UsIGl0CiAgICB3aWxsIGNvcnJ1cHQgdGhlIHN0YWNrIGluIGNhY2hlLCBUaGUgcHJvY2Vzc29yIHdpbGwgY2hlY2tzdG9wCiAgICByZXNldC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJmMGI1NDJkNjc3M2E1YTFjYmNlNzc2OTFmMDA5YjA2ZDlhZWI1N2QKQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgTm92IDEgMDA6MTA6NDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCBPRl9GTEFUX1RSRUUgYml0cyB0byA4M3h4IGJvYXJkcwoKICAgIGFkZCBmdF9wY2lfc2V0dXAsIE9GX0NQVSwgT0ZfU09DLCBPRl9UQkNMSywgYW5kCiAgICBTVERPVVRfUEFUSCBjb25maWd1cmF0aW9uIGJpdHMgdG8gbXBjODM0OWVtZHMsCiAgICBtcGM4MzQ5aXR4LCBhbmQgbXBjODM2MGVtZHMgYm9hcmQgY29kZS4KCiAgICByZWRvIGVudmlyb25tZW50IHRvIHVzZSBib290bSB3aXRoIHRoZSBmZHRhZGRyCiAgICBmb3IgYm9vdGluZyBBUkNIPXBvd2VycGMga2VybmVscyBieSBkZWZhdWx0LAogICAgYW5kIHByb3ZpZGUgZGVmYXVsdCBmZHRhZGRyIHZhbHVlcy4KCmNvbW1pdCA0ODA0MTM2NWIzNDIwNTg5YWQ0NjRlYmM3NzUyZTAwNTM1MzhiNzI5CkF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAwOjA3OjI1IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBjaGFuZ2UgZnQgY29kZSB0byBtb2RpZnkgbG9jYWwtbWFjLWFkZHJlc3MgcHJvcGVydHkKCiAgICBVcGRhdGUgODN4eCBPRiBjb2RlIHRvIHVwZGF0ZSBsb2NhbC1tYWMtYWRkcmVzcyBwcm9wZXJ0aWVzCiAgICBmb3IgZXRoZXJuZXQgaW5zdGVhZCBvZiB0aGUgb2Jzb2xldGUgJ2FkZHJlc3MnIHByb3BlcnR5LgoKY29tbWl0IDljYTg4MGEyNTA4NzBhN2Q1NTc1NDI5MWI1NTkxZDJiNWZlODliNTQKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDMxIDIxOjIzOjE2IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBGaXggZHVhbCBJMkMgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlJVFgsIE1QQzgzNDlFTURTLCBUUU04MzR4LCBhbmQgTVBDODM2MEVNRFMKCiAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhbiBpbXByb3ZlZCBJMkMgc2V0X3NwZWVkKCksIHdoaWNoIGhhbmRsZXMgYWxsIGNsb2NrCiAgICBmcmVxdWVuY2llcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGFjNGI1NjIyY2UwNTBiNWVlMWUxNTRiOThkZjYzMGQ3Nzg2NjE2MzIKQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDMxIDE5OjU0OjU5IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgdGhlIFJFQURNRS5tcGM4MzYwZW1kcwoKICAgIGFkZCBkb2MvUkVBRE1FLm1wYzgzNjBlbWRzIHRvIGFjY29tcGFueSB0aGUgbmV3IGJvYXJkIHN1cHBvcnQKCmNvbW1pdCA3NzM3ZDVjNjU4YzYwNmY5OTlkZmJlM2U4NmIwZmVkNDllNWM1MGVmCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDEyOjExOjE1IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBhZGQgUUUgZXRoZXJuZXQgc3VwcG9ydAoKICAgIHRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUVVJQ0MgRW5naW5lIGJhc2VkIFVDQyBnaWdhYml0IGV0aGVybmV0IGRldmljZS4KCmNvbW1pdCA1ZjgyMDQzOTRlMzliYmU4Y2Q5ZjA4YjhmOGQxNDViNmMwMWY3YzczCkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE5vdiAzIDE5OjMzOjQ0IDIwMDYgLTA2MDAKCiAgICBtcGM4M3h4OiBBZGQgTVBDODM2MEVNRFMgYmFzaWMgYm9hcmQgc3VwcG9ydAoKICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIE1QQzgzNjBFTURTIGJvYXJkLgogICAgSW5jbHVkZXMgRERSLCBEVUFSVCwgTG9jYWwgQnVzLCBQQ0kuCgpjb21taXQgMjM4OTJlNDkzNTJkZTc0ZjdmYWMzNmZmOTBiYjFiZTE0M2QxOTVlMwpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTk6MzA6NDAgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IGFkZCB0aGUgUVVJQ0MgRW5naW5lIChRRSkgaW1tYXAgZmlsZQoKICAgIGNvbW1vbiBRRSBpbW1hcCBmaWxlLiAgQWxzbyByZXF1aXJlZCBmb3IgODM2MC4KCmNvbW1pdCBiNzAxNjUyYTQ5OTJiZGNjNjJmYjFhNjAzOGE4NWJlZWY5ZTU1ZGE0CkF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAzMSAxOToyNTozOCAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogQWRkIDgzNjAgc3BlY2lmaWNzIHRvIDgzeHggaW1tYXAKCiAgICBNYWlubHkgYWRkIFFFIGRldmljZSBkZXBlbmRlbmNpZXMsIHdpdGggYXBwcm9wcmlhdGUgODM2MCBwcm90ZWN0aW9uLgogICAgTGluZGVudCBhbHNvIHJ1bi4KCmNvbW1pdCA5ODg4MzMzMjRhN2ZkYTQ4MmM4YWMzY2EyM2ViNTM5ZjgyMzJlNDA0CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAzMSAxOToxNDo0MSAyMDA2IC0wNjAwCgogICAgbXBjODN4eDogRml4IFBDSSwgVVNCLCBib290YXJncyBmb3IgTVBDODM0OUUtbUlUWAoKICAgIFBSRVJFUVVJU0lURSBQQVRDSEVTOgoKICAgICogVGhpcyBwYXRjaCBjYW4gb25seSBiZSBhcHBsaWVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBoYXZlIGJlZW4gYXBwbGllZDoKCiAgICAgIDEpIEROWCMyMDA2MDkyMTQyMDAwMDE1ICJBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlFLW1JVFggIDEvMiIKICAgICAgMikgRE5YIzIwMDYwOTIxNDIwMDAwMjQgIkFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWCAgMi8yIgoKICAgIENIQU5HRUxPRzoKCiAgICAqIEZvciB0aGUgODM0OUUtbUlUWCwgZml4IHNvbWUgc2l6ZSB2YWx1ZXMgaW4gcGNpX2luaXRfYm9hcmQoKSwgZW5hYmxlCiAgICAgIHRoZSBjbG9jayBmb3IgdGhlIDJuZCBVU0IgYm9hcmQgKExpbnV4IGtlcm5lbCB3aWxsIGhhbmcgb3RoZXJ3aXNlKSwKICAgICAgYW5kIGZpeCB0aGUgQ09ORklHX0JPT1RBUkdTIG1hY3JvLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMmFkNmI1MTNiMzEwNzBiZDBjMDAzNzkyZWQxYzNlN2Y1ZDc0MDM1NwpBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTg6NDQ6NDIgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWAoKICAgIFBSRVJFUVVJU0lURSBQQVRDSEVTOgoKICAgICogVGhpcyBwYXRjaCBjYW4gb25seSBiZSBhcHBsaWVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBoYXZlIGJlZW4gYXBwbGllZDoKCiAgICAgIDEpIEROWCMyMDA2MDkwNzQyMDAwMDI0ICJBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSTJDIGJ1c2VzIgogICAgICAyKSBETlgjMjAwNjA5MDc0MjAwMDAzMyAiTXVsdGktYnVzIEkyQyBpbXBsZW1lbnRhdGlvbiBvZiBNUEM4MzR4IgogICAgICAzKSBETlgjMjAwNjA5MTI0MjAwMDA0MSAiQWRkaXRpb25hbCBNUEM4MzQ5IHN1cHBvcnQgZm9yIG11bHRpYnVzIGkyYyIKICAgICAgNCkgRE5YIzIwMDYwOTEyNDIwMDAwNzggIkFkZCBzdXBwb3J0IGZvciB2YXJpYWJsZSBmbGFzaCBtZW1vcnkgc2l6ZXMgb24gODN4eCBzeXN0ZW1zIgogICAgICA1KSBETlgjMjAwNjA5MTI0MjAwMDA2OSAiQWRkIHN1cHBvcnQgZm9yIEVycmF0YSBERFI2IG9uIE1QQyA4MzR4IHN5c3RlbXMiCgogICAgQ0hBTkdFTE9HOgoKICAgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWCByZWZlcmVuY2UgZGVzaWduIHBsYXRmb3JtLgogICAgICBUaGUgc2Vjb25kIFRTRUMgKFZpdGVzc2UgNzM4NSBzd2l0Y2gpIGlzIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMTgzZGE2ZDliNDQ2Y2MxMjEyMzQ1NTg0NGFkMTE4N2UyMzc1NjI2ZgpBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUdWUgU2VwIDEyIDEwOjE1OjUzIDIwMDYgLTA0MDAKCiAgICBBZGRpdGlvbmFsIE1QQzgzNDkgc3VwcG9ydCBmb3IgbXVsdGlidXMgaTJjCgogICAgSGVsbG8sCgogICAgSGVyZSBpcyBhIHBhdGNoIGZvciBhIGZpbGUgdGhhdCB3YXMgYWNjaWRlbnRhbGx5IGxlZnQgb3V0IG9mIGEgcHJldmlvdXMKICAgIGF0dGVtcHQuCgogICAgSXQgYWNjb21wYW5pZXMgdGhlIHBhdGNoIHdpdGggdGlja2V0IEROWCMyMDA2MDkwNzQyMDAwMDI0CgogICAgQ0hBTkdFTE9HOgoJICAgIENoYW5nZSBQQ0kgaW5pdGlhbGl6YXRpb24gdG8gdXNlIG5ldyBtdWx0aS1idXMgSTJDIEFQSS4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYjI0ZjExOWQ2NzJiNzA5ZDE1M2ZmMmFjMDkxZDRhYTYzZWM2ODc3ZApBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUaHUgU2VwIDcgMTY6NTE6MDQgMjAwNiAtMDQwMAoKICAgIE11bHRpLWJ1cyBJMkMgaW1wbGVtZW50YXRpb24gb2YgTVBDODM0eAoKICAgIEhlbGxvLAoKICAgIEF0dGFjaGVkIGlzIGEgcGF0Y2ggaW1wbGVtZW50aW5nIG11bHRpcGxlIEkyQyBidXNlcyBvbiB0aGUgTVBDODM0eCBDUFUKICAgIGZhbWlseSBhbmQgdGhlIE1QQzgzNDlFTURTIGJvYXJkIGluIHBhcnRpY3VsYXIuCiAgICBUaGlzIHBhdGNoIHJlcXVpcmVzIFBhdGNoIDEgKEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMpLgogICAgVGVzdGluZyB3YXMgcGVyZm9ybWVkIG9uIGEgNTMzTUh6IGJvYXJkLgoKICAgIC8qKiogTm90ZTogVGhpcyBwYXRjaCByZXBsYWNlcyB0aWNrZXQgRE5YIzIwMDYwODMwNDIwMDAwMjcgKioqLwoKICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgoKICAgIENIQU5HRUxPRzoKCSAgICBJbXBsZW1lbnRlZCBkcml2ZXItbGV2ZWwgY29kZSB0byBzdXBwb3J0IHR3byBJMkMgYnVzZXMgb24gdGhlCiAgICBNUEM4MzR4IENQVSBmYW1pbHkgYW5kIHRoZSBNUEM4MzQ5RU1EUyBib2FyZC4gIEF2YWlsYWJsZSBJMkMgYnVzIHNwZWVkcwogICAgYXJlIDUwa0h6LCAxMDBrSHogYW5kIDQwMGtIeiBvbiBlYWNoIGJ1cy4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYmI5OWFkNmQ4MjU3YmY4MjhmMTUwZDQwZjUwN2IzMGQ4MGE0YTdhZQpBdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgpEYXRlOglUaHUgU2VwIDcgMTY6NTA6NTQgMjAwNiAtMDQwMAoKICAgIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMKCiAgICBIZWxsbywKCiAgICBBdHRhY2hlZCBpcyBhIHBhdGNoIHByb3ZpZGluZyBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMgYXQgdGhlCiAgICBjb21tYW5kIGxldmVsLiAgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCBpbmNsdWRlcyBhbiBpbXBsZW1lbnRhdGlvbgogICAgZm9yIHRoZSBNUEM4MzR4IENQVSBhbmQgTVBDODM0OUVNRFMgYm9hcmQuCgogICAgLyoqKiBOb3RlOiBUaGlzIHBhdGNoIHJlcGxhY2VzIHRpY2tldCBETlgjMjAwNjA4MzA0MjAwMDAxOCAqKiovCgogICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CgogICAgT3ZlcnZpZXc6CgogICAgMS4gSW5jbHVkZSBuZXcgJ2kyYycgY29tbWFuZCAoYmFzZWQgb24gVVNCIGltcGxlbWVudGF0aW9uKSB1c2luZwogICAgQ09ORklHX0kyQ19DTURfVFJFRS4KCiAgICAyLiBBbGxvdyBtdWx0aXBsZSBidXNlcyBieSBkZWZpbmluZyBDT05GSUdfSTJDX01VTFRJX0JVUy4gIE5vdGUgdGhhdAogICAgdGhlIGNvbW1hbmRzIHRvIGNoYW5nZSBidXMgbnVtYmVyIGFuZCBzcGVlZCBhcmUgb25seSBhdmFpbGFibGUgdW5kZXIgdGhlCiAgICBuZXcgJ2kyYycgY29tbWFuZCBtZW50aW9uZWQgaW4gdGhlIGZpcnN0IGJ1bGxldC4KCiAgICAzLiBUaGUgb3B0aW9uIENGR19JMkNfTk9QUk9CRVMgaGFzIGJlZW4gZXhwYW5kZWQgdG8gd29yayBpbiBtdWx0aS1idXMKICAgIHN5c3RlbXMuICBXaGVuIENPTkZJR19JMkNfTVVMVElfQlVTIGlzIHVzZWQsIHRoaXMgb3B0aW9uIHRha2VzIHRoZSBmb3JtCiAgICBvZiBhbiBhcnJheSBvZiBidXMtZGV2aWNlIHBhaXJzLiAgT3RoZXJ3aXNlLCBpdCBpcyBhbiBhcnJheSBvZiB1Y2hhci4KCiAgICBDSEFOR0VMT0c6CgkgICAgQWRkZWQgbmV3ICdpMmMnIG1hc3RlciBjb21tYW5kIGZvciBhbGwgSTJDIGludGVyYWN0aW9uLiAgVGhpcyBpcwogICAgY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIENPTkZJR19JMkNfQ01EX1RSRUUuICBOZXcgY29tbWFuZHMgYWRkZWQgZm9yCiAgICBzZXR0aW5nIEkyQyBidXMgc3BlZWQgYXMgd2VsbCBhcyBjaGFuZ2luZyB0aGUgYWN0aXZlIGJ1cyBpZiB0aGUgYm9hcmQKICAgIGhhcyBtb3JlIHRoYW4gb25lIChjb25kaXRpb25hbGx5IGNvbXBpbGVkIHdpdGgKICAgIENPTkZJR19JMkNfTVVMVElfQlVTKS4gIFVwZGF0ZWQgTk9QUk9CRSBsb2dpYyB0byBoYW5kbGUgbXVsdGlwbGUgYnVzZXMuCiAgICBVcGRhdGVkIFJFQURNRS4KCiAgICByZWdhcmRzLAogICAgQmVuCgpjb21taXQgYmVkODVjYWY4NzI3MTRlYmY1MzAxMzk2N2E2OTVjOWQ2M2FjZmM2OApBdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMzEgMTg6MTM6MzYgMjAwNiAtMDYwMAoKICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciBFcnJhdGEgRERSNiBvbiBNUEMgODM0eCBzeXN0ZW1zCgogICAgQ0hBTkdFTE9HOgoKICAgICogRXJyYXRhIEREUjYsIHdoaWNoIGFmZmVjdHMgYWxsIGN1cnJlbnQgTVBDIDgzNHggcHJvY2Vzc29ycywgbGlzdHMgY2hhbmdlcwogICAgICByZXF1aXJlZCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdmFyaW91cyB0eXBlcyBvZiBERFIgbWVtb3J5LiAgVGhpcwogICAgICBwYXRjaCBpbXBsZW1lbnRzIHRob3NlIGNoYW5nZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZmQ2ZTQ3MGY2Mzk4ODMwMDJjN2M1OWQ1NjI2OTBhNWNiMGY0ODY1CkF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAyNSAxODo0NToyMyAyMDA2IC0wNTAwCgogICAgbXBjODN4eDogZml4IFRRTSBidWlsZCBieSBkZWZpbmluZyBhIENGR19GTEFTSF9TSVpFIGZvciBpdAoKY29tbWl0IDMxMDY4YjdjNGFiZWVmY2IyYzhmZDRmYmVjY2M4ZWM2YzZkMDQ3NWEKQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE3OjA3OjAwIDIwMDYgLTA1MDAKCiAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgdmFyaWFibGUgZmxhc2ggbWVtb3J5IHNpemVzIG9uIDgzeHggc3lzdGVtcwoKICAgIENIQU5HRUxPRzoKCiAgICAqIE9uIDgzeHggc3lzdGVtcywgdXNlIHRoZSBDRkdfRkxBU0hfU0laRSBtYWNybyB0byBwcm9ncmFtIHRoZSBMQkMgbG9jYWwgYWNjZXNzCiAgICAgICB3aW5kb3cgcmVnaXN0ZXJzLCBpbnN0ZWFkIG9mIHVzaW5nIGEgaGFyZC1jb2RlZCB2YWx1ZSBvZiA4TUIuCgogICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyZmMzNGFlNjZlNzNmYTc4NDFkMWEwMDZkYzFiNWRjYmMxZjc4OTY1CkF1dGhvcjogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMyAxODozODoxMyAyMDA2ICswODAwCgogICAgbXBjODN4eDogVW5pZmllZCBUUU04MzR4IHZhcmlhYmxlIG5hbWVzIHdpdGggODN4eCBhbmQgY29uc29saWRhdGVkIG1hY3JvcwoKICAgIFVuaWZpZWQgVFFNODM0eCB2YXJpYWJsZSBuYW1lcyB3aXRoIDgzeHggYW5kIGNvbnNvbGlkYXRlZCBtYWNybwogICAgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSA4MzYwIGFuZCBvdGhlciB1cGNvbWluZyA4M3h4IGRldmljZXMuCgogICAgU2lnbmVkLW9mZi1ieTogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZjZlZGE3ZjgwY2NjMTNkNjU4MDIwMjY4YzUwN2Q3MTczY2YyZThhYQpBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBPY3QgMjUgMTQ6NDE6MjEgMjAwNiAtMDUwMAoKICAgIG1wYzgzeHg6IENoYW5nZWQgdG8gdW5pZmllZCBtcHg4M3h4IG5hbWVzIGFuZCBhZGRlZCBjb21tb24gODN4eCBjaGFuZ2VzCgogICAgSW5jb3Jwb3JhdGVkIHRoZSBjb21tb24gdW5pZmllZCB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlIGNoYW5nZXMgaW4gcHJlcGFyYXRpb24KICAgIGZvciByZWxlYXNpbmcgbXBjODM2MCBwYXRjaGVzLgoKICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzg5NGM0NmMyN2M2NDg5MWY5M2FjMDRlZGRlODZhOWZhOTc1OGQ5MgpBdXRob3I6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXVnIDMgMTg6MzY6MDIgMjAwNiArMDgwMAoKICAgIG1wYzgzeHg6IEZpeCBtaXNzaW5nIGJ1aWxkIGZvciBtcGM4MzQ5ZW1kcyBwY2kuYwoKICAgIE1ha2UgcGNpIGJ1aWxkIGZvciBtcGM4MzQ5ZW1kcwoKICAgIFNpZ25lZC1vZmYtYnk6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA5YTgxZmY3NDBiMjlkZWVhMWUyYWIwOGEzYzJhYzEzNmMyZTYyMTkKQXV0aG9yOiBUYW55YSBKaWFuZyA8dGFueWEuamlhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEF1ZyAzIDE4OjM5OjQ5IDIwMDYgKzA4MDAKCiAgICBtcGM4M3h4OiBSZW1vdmVkIHVudXNlZCBmaWxlIHJlc2V0dmVjLlMgZm9yIG1wYzgzeHggY3B1CgogICAgUmVtb3ZlZCB1bnVzZWQgZmlsZSByZXNldHZlYy5TIGZvciBtcGM4M3h4IGNwdQoKICAgIFNpZ25lZC1vZmYtYnk6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA0Zjg5OWZjNDY1YzNlNDRmMmI1NWVjYzcwNjE4ZjU2OTZmYzBkZGYKQXV0aG9yOiBOaWNrIFNwZW5jZSA8Tmljay5TcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJU2F0IFNlcCAzMCAwMDozMjo1OSAyMDA2IC0wNzAwCgogICAgTkFORCBGbGFzaCB2ZXJpZnkgYWNyb3NzIGJsb2NrIGJvdW5kYXJpZXMKCiAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByb2JsZW0gd2hlbiBDT05GSUdfTVREX05BTkRfVkVSSUZZX1dSSVRFIGlzCiAgICBkZWZpbmVkCiAgICBhbmQgdGhlIHdyaXRlIGNyb3NzZXMgYSBibG9jayBib3VuZGFyeS4gVGhlIHBvaW50ZXIgdG8gdGhlIHZlcmlmaWNhdGlvbgogICAgYnVmZmVyIChidWZzdGFydCkgaXMgbm90IGJlaW5nIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgc3RhcnRpbmcgb2YgdGhlCiAgICBuZXcKICAgIGJsb2NrIHNvIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlY29uZCBibG9jayBmYWlscy4KCiAgICBDSEFOR0VMT0c6CgogICAgKiBGaXggTkFORCBGTEFTSCBwYWdlIHZlcmlmaWNhdGlvbiBhY3Jvc3MgYmxvY2sgYm91bmRhcmllcwoKY29tbWl0IGY0ODRkYzc5MWEzOTMyNTM3MjEzYzQzYzY1NGNjMTI5NWM2NGI4NGMKQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IFNlcCA3IDA3OjM5OjQ2IDIwMDYgLTA3MDAKCiAgICBBZGRlZCBSR01JSSBzdXBwb3J0IHRvIHRoZSBUU0VDcyBhbmQgTWFydmVsbCA4ODExMTEgUGh5CgogICAgQWRkZWQgYSBwaHkgaW5pdGlhbGl6YXRpb24gdG8gYWRqdXN0IHRoZSBSR01JSSBSWCBhbmQgVFggdGltaW5nCiAgICBBbHdheXMgc2V0IHRoZSBSMTAwIGJpdCBpbiAxMDAgQmFzZVQgbW9kZSByZWdhcmRsZXNzIG9mIHRoZSBUU0VDIG1vZGUKCiAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ODMxYzhiOGE5Nzc5OWRhNzc5MjNkNmJiYjRjMjYwYzBkNDU1MjFjCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgTm92IDMgMTM6MTA6MDAgMjAwNiArMDgwMAoKICAgIFJlbW92ZSBzb21lIHVudXNlZCBDRkcgZGVmaW5lLgogICAgdW5kZWYgQ0ZHX0RSQU1fVEVTVAoKY29tbWl0IDk5YzA5YzRkZWMzNGY3N2MyNDNiZjUxYmVhNTMyZTNmMzM5NDEwYWQKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBOb3YgMyAxMzowNzozNiAyMDA2ICswODAwCgogICAgQ2hhbmdlIHRoZSBURVhUX0JBU0UgZnJvbSAweEZGRjAwMDAwIHRvIDB4RkYwMDAwMDAuCiAgICBCb3RoIHdvcmsuIDB4RkYwMDAwMDAgc2VlbXMgbW9yZSByZWFzb25hYmxlLgoKY29tbWl0IGM1OTIwMDQ0MzA3MjM1MzA0NGFhNGJmNzM3YTVhNjBmOWE5YWYyMzEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVGh1IE5vdiAyIDE1OjE1OjAxIDIwMDYgKzAxMDAKCiAgICBSZWxlYXNlIFUtQm9vdCAxLjEuNgoKY29tbWl0IGMxZmJlNDEwM2EwZDZjODk1N2Y5MTJhZjkwMmQ3MDViYTY3ODM2ZjIKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOToxNDo0OCAyMDA2ICswODAwCgogICAgVGhpcyBwYXRjaCBjb21lcyBmcm9tIFl1bGkncyBwb3N0ZWQgcGF0Y2ggb24gOC84LzIwMDYKICAgIHRpdGxlZCAiQ0ZJIERyaXZlciBMaXR0bGUtRW5kaWFuIHdyaXRlIElzc3VlIi4KCiAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL21lc3NhZ2UucGhwP21zZ19pZD0zNjMxMTk5OQoKICAgIElmIHRoYXQgcGF0Y2ggYXBwbGllZCwgcGxlYXNlIGRpc2NhcmQgdGhpcyBvbmUuCiAgICBVbnRpbCBub3cgLCBJIGRvIG5vdCBzZWUgaGlzIHBhdGNoIGlzIGFwcGxpZWQuIFNvIHBsZWFzZSBhcHBseSB0aGlzIG9uZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBZdWxpIEJhcmNvaGVuIDx5dWxpQGFyYWJlbGxhc3cuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI4MjVmMTU4ZTQ0OWUxZTljZjc0YzA4ZTU3Mjk1NWUxMjIzOTRjOTYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOToxMjozMSAyMDA2ICswODAwCgogICAgVHNpMTA4IG9uIGNoaXAgaTJjIHN1cHBvcnQuCgogICAgVGhlIGkyYyAgSW50ZXJmYWNlIHByb3ZpZGVzIGEgbWFzdGVyLW9ubHksIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBjYW4gYmUKICAgIHVzZWQgZm9yIGluaXRpYWxpemluZyBUc2kxMDgvVHNpMTA5IHJlZ2lzdGVycyBmcm9tIGFuIEVFUFJPTSBhZnRlciBhCiAgICBkZXZpY2UgcmVzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA5MjI2ZTdkNmYwOWI5YTFhYzA3NGNkOTE4YzgxMjI1YTQ2ODliYmE4CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTk6MTE6MDYgMjAwNiArMDgwMAoKICAgIFRzaTEwOCBvbiBjaGlwIHBjaSBjb250cm9sbGVyIHN1cHBvcnQuCgogICAgSWYgdGhlcmUgaXMgbm8gcGNpIGNhcmQsIHRoZSB0c2kxMDgvMTA5IHBjaSBjb25maWd1cmUgcmVhZCB3aWxsCiAgICBjYXVzZSBhIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uIHRvIHRoZSBwcm9jZXNzb3IuIFBDSSBlcnJvciBzaG91bGQKICAgIGFsc28gYmUgY2xlYXJlZCBhZnRlciB0aGUgcmVhZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQxOTI3Y2VlOTc3MTI2ZTU0N2NlZWJhMjNlNGY5NzhmMzc3Y2ZiOGYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxOTowODo1NSAyMDA2ICswODAwCgogICAgVHVuZHJhIHRzaTEwOCBvbiBjaGlwIEV0aGVybmV0IGNvbnRyb2xsZXIgc3VwcG9ydC4KCiAgICBUaGUgZm9sbG93aW5nIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXI6CiAgICBUaGUgVHNpMTA4LzkgRXRoZXJuZXQgQ29udHJvbGxlciBjb25uZWN0cyBTd2l0Y2ggRmFicmljIHRvIHR3byBpbmRlcGVuZGVudAogICAgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyxFMCBhbmQgRTEuICBJdCB1c2VzIGEgc2luZ2xlIE1hbmFnZW1lbnQgaW50ZXJmYWNlCiAgICB0byBtYW5hZ2UgdGhlIHR3byBwaHlzaWNhbCBjb25uZWN0aW9uIGRldmljZXMgKFBIWXMpLiAgRWFjaCBFdGhlcm5ldCBwb3J0CiAgICBoYXMgaXRzIG93biBzdGF0aXN0aWNzIG1vbml0b3IgdGhhdCB0cmFja3MgYW5kIHJlcG9ydHMga2V5IGludGVyZmFjZQogICAgc3RhdGlzdGljcy4gIEVhY2ggcG9ydCBzdXBwb3J0cyBhIDI1Ni1lbnRyeSBoYXNoIHRhYmxlIGZvciBhZGRyZXNzCiAgICBmaWx0ZXJpbmcuCUluIGFkZGl0aW9uLCBlYWNoIHBvcnQgaXMgYnJpZGdlZCB0byB0aGUgU3dpdGNoIEZhYnJpYwogICAgdGhyb3VnaCBhIDItS2J5dGUgdHJhbnNtaXQgRklGTyBhbmQgYSA0LUtieXRlIFJlY2VpdmUgRklGTy4KCiAgICBFYWNoIEV0aGVybmV0IHBvcnQgYWxzbyBoYXMgYSBwYWlyIG9mIGludGVybmFsIEV0aGVybmV0IERNQSBjaGFubmVscyB0bwogICAgc3VwcG9ydCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGF0YSBmbG93cy4gIFRoZSBFdGhlcm5ldCBETUEgY2hhbm5lbHMKICAgIHVzZSBkZXNjcmlwdG9ycyBzZXQgdXAgaW4gbWVtb3J5LCB0aGUgbWVtb3J5IG1hcCBvZiB0aGUgZGV2aWNlLCBhbmQKICAgIGFjY2VzcyB2aWEgdGhlIFN3aXRjaCBGYWJyaWMuICBUaGUgRXRoZXJuZXQgQ29udHJvbGxlcj9zIERNQSBhcmJpdGVyCiAgICBoYW5kbGVzIGFyYml0cmF0aW9uIGZvciB0aGUgU3dpdGNoIEZhYnJpYy4JVGhlIENvbnRyb2xsZXIgYWxzbwogICAgaGFzIGEgcmVnaXN0ZXIgYnVzaW50ZXJmYWNlIGZvciByZWdpc3RlciBhY2Nlc3NlcyBhbmQgc3RhdHVzIG1vbml0b3IKICAgIGNvbnRyb2wuCgogICAgVGhlIFBNRCAoUGh5c2ljYWwgTWVkaWEgRGV2aWNlKSBpbnRlcmZhY2Ugb3BlcmF0ZXMgaW4gTUlJLCBHTUlJLCBvciBUQkkKICAgIG1vZGVzLiAgVGhlIE1JSSBtb2RlIGlzIHVzZWQgZm9yIGNvbm5lY3Rpbmcgd2l0aCAxMCBvciAxMDAgTWJpdC9zIFBNRHMuCiAgICBUaGUgR01JSSBhbmQgVEJJIG1vZGVzIGFyZSB1c2VkIHRvIGNvbm5lY3Qgd2l0aCBHaWdhYml0IFBNRHMuICBJbnRlcm5hbAogICAgZGF0YSBmbG93cyB0byBhbmQgZnJvbSB0aGUgRXRoZXJuZXQgQ29udHJvbGxlciB0aHJvdWdoIHRoZSBTd2l0Y2ggRmFicmljLgoKICAgIEVhY2ggRXRoZXJuZXQgcG9ydCB1c2VzIGl0cyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBETUEgY2hhbm5lbHMgdG8gbWFuYWdlCiAgICBkYXRhIGZsb3dzIHRocm91Z2ggYnVmZmVyIGRlc2NyaXB0b3JzIHRoYXQgYXJlIHByZWRlZmluZWQgYnkgdGhlCiAgICBzeXN0ZW0gKHRoZSBkZXNjcmlwdG9ycyBjYW4gZXhpc3QgYW55d2hlcmUgaW4gdGhlIHN5c3RlbSBtZW1vcnkgbWFwKS4KICAgIFRoZXNlIGRlc2NyaXB0b3JzIGFyZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBwb2ludCB0byBidWZmZXJzIGZpbGxlZAogICAgd2l0aCBkYXRhIHJlYWR5IHRvIHRyYW5zbWl0IG92ZXIgRXRoZXJuZXQsIG9yIHRoZXkgcG9pbnQgdG8gZW1wdHkKICAgIGJ1ZmZlcnMgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhIGZyb20gRXRoZXJuZXQuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA3OGFhMGMzNDI3ZjNlY2RlYjM0YWFiZmJiZTJkZDIzYjZhZDhmNDBlCkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTk6MDE6MzMgMjAwNiArMDgwMAoKICAgIFR1bmRyYSB0c2kxMDggaGVhZGVyIGZpbGUuCgogICAgVGhlIFR1bmRyYSBTZW1pY29uZHVjdG9yIENvcnBvcmF0aW9uIChUdW5kcmEpIFRzaTEwOCBpcyBhIGhvc3QgYnJpZGdlIGZvcgogICAgUG93ZXJQQyBwcm9jZXNzb3JzIHRoYXQgb2ZmZXJzIG51bWVyb3VzIHN5c3RlbSBpbnRlcmNvbm5lY3Qgb3B0aW9ucyBmb3IKICAgIGVtYmVkZGVkIGFwcGxpY2F0aW9uIGRlc2lnbmVycy4gVGhlIFRzaTEwOCBjYW4gaW50ZXJjb25uZWN0IDYweCBvcgogICAgTVBYIHByb2Nlc3NvcnMgdG8gUENJL1ggcGVyaXBoZXJhbHMsIEREUjItNDAwIG1lbW9yeSwgR2lnYWJpdCBFdGhlcm5ldCwKICAgIGFuZCBGbGFzaC4gUHJvdmlkZWQgdGhlIG1hY3JvIGRlZmluZSBmb3IgdHNpMTA4IGNoaXAuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4N2M0ZGIwOTY5OWM2Yjg5MTc2YjMxMDA0YWZjYjgzZWIxNTg1ZDQ3CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6NTk6MTUgMjAwNiArMDgwMAoKICAgIEFkZCAgbXBjNzQ0OGhwYzIgIChtcGM3NDQ4ICsgdHNpMTA4KSAgYm9hcmQgYXNzb2NpYXRlZCBjb2RlIHN1cHBvcnQuCiAgICBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGhpZ2ggbGV2ZWwgY29kZTp0c2kxMDggaW5pdCArIG1wYzc0NDhocGMyLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4YW5kcmViQHR1bmRyYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjc4MDFiOGFiMTFjNjFiNTc3ZTQ1NzQyYTUxNWJiM2IyM2I4MDI0MQpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyIDE4OjU3OjIxIDIwMDYgKzA4MDAKCiAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgogICAgTWFrZSAsY29uZmlnLm1rIGFuZCBsaW5rIGZpbGUgZm9yIHRoZSBtcGM3NDQ4aHBjMiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM2NDExYzBjM2JiYzc5ZjliYThhZWY1ODI5NmE0MmQ4ZjlkOGEwYTYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxODo1NTowNCAyMDA2ICswODAwCgogICAgQWRkICBtcGM3NDQ4aHBjMiAgKG1wYzc0NDggKyB0c2kxMDgpICBib2FyZCBhc3NvY2lhdGVkIGNvZGUgc3VwcG9ydC4KICAgIFRoZSBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGhlYWRlciBmaWxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4YW5kcmViQHR1bmRyYS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNjI1YmI1ZGRiNTBiMjQzZjkzMTI2MmNhOGM0Njk1NjQwOTQ3MTkxNwpBdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE5vdiAyIDE4OjUyOjIxIDIwMDYgKzA4MDAKCiAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgogICAgVGhlIG1wYzc0NDhocGMyIGJvYXJkIHN1cHBvcnQgbG93IGxldmVsIGFzc2VtYmxlIGxhbmd1YWdlIGluaXQgY29kZS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgogICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDRjNTI3ODNiM2QwMjRlMTUzYzQ5NzJiOTczMzJlMzE0YmMzYmRjNDYKQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBOb3YgMiAxODo0OTo1MSAyMDA2ICswODAwCgogICAgR2VuZXJhbCBjb2RlIG1vZGlmaWNhdGlvbiBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQgc3VwcG9ydC4KICAgIDEuIEFkZCA3NDQ3QSBhbmQgNzQ0OCBwcm9jZXNzb3Igc3VwcG9ydC4KICAgIDIuIEFkZCB0aGUgZm9sbG93aW5nIGZsYWdzLgoKICAgIENGR19DT05GSUdfQlVTX0NMSyA6IElmIHRoZSA3NHh4IGJ1cyBmcmVxdWVuY3kgY2FuIGJlIGNvbmZpZ3VyZWQgZHluYW1pY2FsbHkKICAgIChzdWNoIGFzIGJ5IHN3aXRjaCBvbiBib2FyZCksIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0LgoKICAgIENGR19FWENFUFRJT05fQUZURVJfUkVMT0NBVEU6IElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgYWZ0ZXIgdGhlIHUtYm9vdAogICAgcmVsb2NhdGVzIHRvIFJBTSwgdGhpcyBmbGFnIHNob3VsZCBiZSBzZXQuCgogICAgQ0ZHX1NFUklBTF9IQU5HX0lOX0VYQ0VQVElPTjogSWYgdGhlIHByaW50IG91dCBmdW5jdGlvbiB3aWxsIGNhdXNlIHRoZQogICAgc3lzdGVtIGhhbmcgaW4gZXhjZXB0aW9uLCB0aGlzIGZsYWcgc2hvdWxkIGJlIHNldC4KCiAgICBUaGVyZSBpcyBhIGRlc2lnbiBpc3N1ZSBmb3IgdHNpMTA4LzEwOSBwY2kgY29uZmlndXJlICByZWFkLiBXaGVuIHBjaSBzY2FuCiAgICB0aGUgc2xvdHMsIGlmIHRoZXJlIGlzIG5vIHBjaSBjYXJkLCB0aGUgdHNpMTA4Lzkgd2lsbCBjYXVzZSBhIG1hY2hpbmUKICAgIGNoZWNrIGV4Y2VwdGlvbiBmb3IgbXBjNzQ0OCBwcm9jZXNzb3IuCgogICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA2OTM2NmJmNDJmMjJkNjdlZmNlOGRhM2Y4YzQwYTQzZDRhM2MyNjk1CkF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgTm92IDIgMTg6MzQ6NDcgMjAwNiArMDgwMAoKICAgIEFkZCBSRUFETUUgZmlsZSBmb3IgbXBjNzQ0OGhwYzIgYm9hcmQuCiAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMjU3MjFiNWNlYzJiZTRiY2U3OWNmYWRlMTdlYzhmNmFhMWU2NzUyNgpBdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+CkRhdGU6CVdlZCBOb3YgMSAwMjowNDozOCAyMDA2ICswMTAwCgogICAgRmluaXNoIHVwIHN1cHBvcnQgZm9yIE1hcmVsVjM4QiBib2FyZAogICAgIC0gYWRkIHdhdGNoZG9nIHN1cHBvcnQKICAgICAtIGVuYWJsZSBHUElPX1dLVVBfNyBwaW4gZm9yIGlucHV0CiAgICAgLSBjb2RlIGNsZWFudXAKCmNvbW1pdCBmZmExNTBiYzkwYzk0M2NhMjY1MTcwYmQxYmUzZjI5MzY3NGRkNWM3CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAxOjQ1OjQ2IDIwMDYgKzAxMDAKCiAgICAtIEZpeCBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIEVMREsgNCB3aGVuIGNvbXBpbGluZyBmb3IgTWFyZWxWMzhCOgoJICAqIHJlbW92ZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBldGhhZGRyLmMKCSAgKiBhZGp1c3QgbGlua2VyIHNjcmlwdCAoZml4ZXMgYSBjcmFzaCByZXN1bHRpbmcgZnJvbSBpbmNvcnJlY3QKCSAgZGVmaW5pdGlvbiBvZiBfX3VfYm9vdF9jbWRfc3RhcnQpCiAgICAtIFNvbWUgTWFyZWxWMzhCIGNvZGUgY2xlYW51cC4KCmNvbW1pdCBkYWU4MGYzY2FmOTc1NGE2ZGQzZGRmM2NmOTAzZDBjNDZjYmQ0Mzg1CkF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KRGF0ZToJV2VkIE5vdiAxIDAxOjM4OjE2IDIwMDYgKzAxMDAKCiAgICAtIEFkZCBNUEM1WFhYIHJlZ2lzdGVyIGRlZmluaXRpb24gTVBDNVhYWF9XVV9HUElPX0RBVEFfSSBhbmQgY2hhbmdlIHRoZQogICAgICBNUEM1WFhYX1dVX0dQSU9fREFUQSBtYWNybyB0byBNUEM1WFhYX1dVX0dQSU9fREFUQV9PIChwZXIgTVBDNTIwMCBVc2VyJ3MKICAgICAgTWFudWFsKS4gUmVwbGFjZSB0aGUgdXNlcyBvZiBNUEM1WFhYX1dVX0dQSU9fREFUQSB3aXRoCiAgICAgIE1QQzVYWFhfV1VfR1BJT19EQVRBX08gZm9yIGFmZmVjdGVkIGJvYXJkcy4KCiAgICAtIEFkZCBkZWZpbnRpb25zIGZvciBzb21lIE1QQzVYWFggR1BJTyBwaW5zLgoKY29tbWl0IDgyZDljOWVjMjlhMWJlYzFiMDNiYTYxNjQyNWViYWVkMjMxMDcyYzgKQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgpEYXRlOglXZWQgTm92IDEgMDE6MzQ6MjkgMjAwNiArMDEwMAoKICAgIENoYW5nZWQgTWFyZWxWMzhCIGJvYXJkIG1ha2UgdGFyZ2V0IHRvIGxvd2VyY2FzZS4gQ29uZmlnIGZpbGUgY2xlYW51cC4KCmNvbW1pdCAxOTU0YmU2ZTljOTQyMWI0NWQwYTlkMDViMTAzNTZhY2M3NTYzMTUwCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVN1biBPY3QgMjkgMDE6MDM6NTEgMjAwNiArMDIwMAoKICAgIEF1dG9tYXRpY2FsbHkgYWRqdXN0IEFSRkxBR1Mgc28gIm1ha2UgLXMiIGlzIHJlYWxseSBzaWxlbnQuCgpjb21taXQgZmFlNjg0ZTg5ODQ0ODU2MzgzYmRmMTAxNDQwODg5NTU3ZGYzZTZiMQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAxNjo0NTowMCAyMDA2ICswMjAwCgogICAgW1BBVENIXSBvbWFwOTI1LmM6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDEyNjU1ODE1MDJhYjhlYThjMDhlOGVkYmU5YmY2NGZiZDYyZmQ3NzYKQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMTc6MTI6NTggMjAwNiArMDIwMAoKICAgIFtQQVRDSF0gQWRkIHNvbWUgbWlzc2luZyBtYWNodHlwZXMgZm9yIG5ldHN0YXIgJiB2b2ljZWJsdWUgYm9hcmRzCgogICAgVXNlIE1BQ0hfVFlQRV9ORVRTVEFSIGFuZCBNQUNIX1RZUEVfVk9JQ0VCTFVFIGRlZmluZXMgaW5zdGVhZCBvZgogICAgbnVtYmVycyBpbiBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KCmNvbW1pdCA4NTZmMDU0NDEwY2VmNTJkODY4ZmViMzMwMTY4YjJhNGM0MDkxMzI4CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDI4IDE1OjU1OjUyIDIwMDYgKzAyMDAKCiAgICBbUEFUQ0hdIE5BTkQ6IFBhcnRpdGlvbiBuYW1lIHN1cHBvcnQgYWRkZWQgdG8gTkFORCBzdWJzeXN0ZW0KCiAgICBjaHBhcnQsIG5ib290IGFuZCBOQU5EIHN1YnN5c3RlbSByZWxhdGVkIGNvbW1hbmRzIG5vdyBhY2NlcHQgYWxzbyBwYXJ0aXRpb24KICAgIG5hbWUgdG8gc3BlY2lmeSBvZmZzZXQuCgogICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgogICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgoKY29tbWl0IDA3YTY5YTE4YzJlY2ZkYTkwNDIzMWZkZjIzZTI1MjNlYTc3OTJlYjYKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMjoyOTo0NCAyMDA2ICswMjAwCgogICAgVXBkYXRlIENIQU5HRUxPRy4KCmNvbW1pdCAyNzUxYTk1YWJkMWI5NjkxMTA4MWMzNTdlOTZhMTJmYTk3YjQwZGVlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMDI6Mjk6MTQgMjAwNiArMDIwMAoKICAgIEVuYWJsZSBjb21tYW5kbGluZSBlZGl0aW5nIGFuZCBodXNoIHNoZWxsIG9uIGFsbCBUUU0gYm9hcmRzLgoKY29tbWl0IDgwNzhmMWE1ZjYzYTczOWI4NTMzNDc4ZjZjMmI2MmZiMWUyZjc5ZDcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMjoyODowMiAyMDA2ICswMjAwCgogICAgUkVBRE1FIHNheXMgQ0ZHX0FVVE9fQ09NUExFVEUsIGJ1dCBvY2RlIHVzZXMgQ09ORklHX0FVVE9fQ09NUExFVEUKCmNvbW1pdCA0NzFhN2JlN2EwNDJlOTVlNDQwZjVkZTk2OWM5NzY1MjE0YWU4ZDZlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCAyOCAwMToxNDozMiAyMDA2ICswMjAwCgogICAgQ2hlY2sgZm9yIGlsbGVnYWwgY2hhcmFjdGVyICc9JyBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcy4KCiAgICBNYWtlIHN1cmUgdGhlIHN0cmluZyBwYXNzZWQgYXMgdmFyaWFibGUgbmFtZSBkb2VzIG5vdCBjb250YWluIGEgJz0nCiAgICBjaGFyYWN0ZXIuIFRoaXMgbm90IG9ubHkgcHJldmVudHMgdGhlIGNvbW1vbiBlcnJvciBvciB0eXBpbmcKICAgICJzZXRlbnYgZm9vPWJhciIgaW5zdGVhZCBvZiAic2V0ZW52IGZvbyBiYXIiLCBidXQgKG1vcmUgaW1wb3J0YW50bHkpCiAgICBhbHNvIGNsb3NlcyBhIGJhY2tkb29yIHdoaWNoIGFsbG93ZWQgdG8gZGVsZXRlIHdyaXRlLXByb3RlY3RlZAogICAgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBmb3IgZXhhbXBsZSBieSB1c2luZyAic2V0ZW52IGV0aGFkZHI9Ii4KCmNvbW1pdCAxOTk3M2I2YWQ5ODYzYTU2ZjVjNWZiY2ZkOTBlMjBhYjI0OTBhMmMyCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVNhdCBPY3QgMjggMDA6Mzg6MzkgMjAwNiArMDIwMAoKICAgIE1pbm9yIGNvZGUgY2xlYW51cC4KCmNvbW1pdCBlMTE4ODdhNzdkODEwNzc0MTZhMmQxYzVlMDM1NDkxNmZlZThjMDM0CkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTc6NTU6MzEgMjAwNiArMDIwMAoKICAgIERvbid0IHBhc3MgYW55IGRlYnVnIG9wdGlvbnMgZGlyZWN0bHkgdG8gdGhlIGFzc2VtYmxlcgoKICAgIFdoZW4gcGFzc2luZyB0aGUgLWcgb3B0aW9uIHRvIGdjYywgZ2NjIGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBhCiAgICBzdWl0YWJsZSAtLWc8Zm9ybWF0PiBvcHRpb24gdG8gcGFzcyBvbiB0byB0aGUgYXNzZW1ibGVyLgogICAgVGh1cywgdGhlcmUncyBubyBwb2ludCBpbiBmb3JjaW5nIGEgc3BlY2lmaWMgZGVidWcgb3B0aW9uIG9uIHRoZQogICAgYXNzZW1ibGVyIHVzaW5nIHRoZSAtV2EgbWVjaGFuaXNtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGVhMDhmZjZlMTRmOWViYjhjMDdjZmE3OWM1MWVmNTQwZWIwODczOTMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDI3IDA3OjQ3OjIyIDIwMDYgLTA1MDAKCiAgICBNUEM4Nnh4OiBDbGVhbmVkIHVwIHVudXNlZCBhbmQgY29uZGl0aW9uYWxseSB1c2VkIGxvY2FsIHZhcmlhYmxlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQzODkzNmNkYWU0NmJmZDI2MjNmZjgzZjZjZTliNjE2ZDM2YWIwZjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJRnJpIE9jdCAyNyAxMTo1NToyMSAyMDA2ICswMjAwCgogICAgRml4ICJhciIgZmxhZ3MgaW4gc29tZSBNYWtlZmlsZXMgdG8gYWxsb3cgZm9yIHNpbGVudCAibWFrZSAtcyIKCmNvbW1pdCA0NjUzZjkxYzEzZWQ1MWMyMWNjNGMzODU1NzQ1ZDY5YTNmYjE4MTdmCkF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTQ6Mzg6MjUgMjAwNiAtMDQwMAoKICAgIEZpeCBUU0VDIGRyaXZlciAobm93IGZvciByZWFsKTogYXZvaWQgY3Jhc2hlcyBpZiBQSFkgaXMgbm90IGF0dGFjaGVkCiAgICB0byBhIFRTRUMgKGUuZy4gYSBzd2l0Y2ggaXMgY29ubmVjdGVkIHZpYSBSTUlJKSBvcgogICAgaWYgdGhlIFBIWSBpcyBkZWZlY3RpdmUvaW5jb3JyZWN0bHkgY29uZmlndXJlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCBiOTg1YjVkNmU0ZmI4OGY1MDhmN2FhMGYxMjZjMmUyN2FkYTJiOTk5CkF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+CkRhdGU6CVRodSBPY3QgMjYgMTQ6Mzg6MjUgMjAwNiAtMDQwMAoKICAgIEZpeCBUU0VDIGRyaXZlcjogYXZvaWQgY3Jhc2hlcyBpZiBQSFkgaXMgbm90IGF0dGFjaGVkCiAgICB0byBhIFRTRUMgKGUuZy4gYSBzd2l0Y2ggaXMgY29ubmVjdGVkIHZpYSBSTUlJKSBvcgogICAgaWYgdGhlIFBIWSBpcyBkZWZlY3RpdmUvaW5jb3JyZWN0bHkgY29uZmlndXJlZC4KCiAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KCmNvbW1pdCAyYjJhNDBiZWJiZjE4MjI1MDZlODBlNjMxZDcyNTNlNjBmMGUwZmU2CkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVRodSBPY3QgMjYgMTY6MjQ6MzEgMjAwNiArMDIwMAoKICAgIENvZGUgY2xlYW51cC4KCmNvbW1pdCA1ZTNiMGJjMTlmMDdlZDI3N2Q4NTMyNGFkMDQyNzY0MmM4OTgxYmFmCkF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+CkRhdGU6CVdlZCBPY3QgMjUgMTU6NDg6NTkgMjAwNiArMDIwMAoKICAgIEZpbmlzaCB1cCBzdXBwb3J0IGZvciB0aGUgQVRTVEsxMDAwL0FUU1RLMTAwMiBib2FyZHMKCiAgICBBZGQgYXRzdGsxMDAyX2NvbmZpZyB0YXJnZXQgdG8gTWFrZWZpbGUgYW5kIG1vdmUgdGhlIEFWUjMyIHNlY3Rpb24KICAgIGRvd24gYmVsb3cgQmxhY2tmaW4gc28gdGhhdCBpdCBkb2Vzbid0IGVuZCB1cCBpbiB0aGUgbWlkZGxlIG9mCiAgICBNSVBTLgoKICAgIERyb3AgdGhlIGF1dG9nZW5lcmF0ZWQgbGlua2VyIHNjcmlwdCB0aGluZyBmb3Igbm93LiBXaWxsIGhhdmUgdG8KICAgIHJldmlzaXQgaG93IHRvIGhhbmRsZSBjaGlwcyB3aXRoIGRpZmZlcmVudCBmbGFzaCBhbmQgUkFNIGxheW91dAogICAgbGF0ZXIuCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgYzc2Zjk1MWE3NDdjZmI4N2JhODI2ZWY0NWI1YWVhODJkNWI1ZGJiNApBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CkRhdGU6CVR1ZSBPY3QgMjQgMjM6NDc6MzcgMjAwNiAtMDUwMAoKICAgIEFkZGVkIHN1cHBvcnQgZm9yIE11bHRpLUltYWdlIGZpbGVzIHRoYXQgY29udGFpbiBhIGRldmljZSB0cmVlCgogICAgSWYgYSBNdWx0aS1JbWFnZSBmaWxlIGNvbnRhaW5zIGEgdGhpcmQgaW1hZ2Ugd2UgdHJ5IHRvIHVzZSBpdCBhcyBhCiAgICBkZXZpY2UgdHJlZS4gIFRoZSBkZXZpY2UgdHJlZSBpbWFnZSBpcyBhc3N1bWVkIHRvIGJlIHVuY29tcHJlc3NlZCBpbiB0aGUKICAgIGltYWdlIGZpbGUuICBXZSBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgZGV2aWNlIHRyZWUgaW4gbWVtb3J5CiAgICBhbmQgcHJvdmlkZSBhbiA4ayBwYWQgdG8gYWxsb3cgbW9yZSB0aGFuIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgZ3Jvd3RoLgoKICAgIEFkZGl0aW9uYWxseSwgYSBkZXZpY2UgdHJlZSB0aGF0IHdhcyBjb250YWluZWQgaW4gZmxhc2ggd2lsbCBub3cgYXV0b21hdGljYWxseQogICAgZ2V0IGNvcGllZCB0byBzeXN0ZW0gbWVtb3J5IGFzIHBhcnQgb2YgYm9vdC4gIFByZXZpb3VzbHkgYW4gZXJyb3Igd2FzCiAgICByZXBvcnRlZCBpZiBvbmUgdHJpZWQgdG8gYm9vdCBhIGRldmljZSB0cmVlIHRoYXQgd2FzIGluIGZsYXNoLgoKICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Cgpjb21taXQgN2M1MmM0Yjk0M2ZmNTJiYmU4Nzk2YTdlMmQzZTQ3NmNlYWYzZjUxMgpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMjE6MzU6NTUgMjAwNiArMDIwMAoKICAgIFN3aXRjaCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBDSEFOR0VMT0cgZmlsZS4KICAgICh1c2UgIm1ha2UgQ0hBTkdFTE9HIiB0byB1cGRhdGUgaXQgZnJvbSB0aW1lIHRvIHRpbWUpCgpjb21taXQgN2FkZTBjNjM0YTk3OWMzMmZhOTFhNzRlOGY1Nzc1ZjI0NjUxZmJlNgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxODowNjo0OCAyMDA2ICswMjAwCgogICAgRml4IGJ1ZyBpbiBQUEM0NDAgTkFORCBkcml2ZXIgY3B1L3BwYzR4eC9uZGZjLmMKICAgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjQgT2N0IDIwMDYKCmNvbW1pdCA4YWUzYjcxM2IyMjg2ZTBjMzIxM2I3ODAyMDYyZTRjMTU5OTAxMGRlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMTc6MjQ6NTUgMjAwNiArMDIwMAoKICAgIE1lcmdlIHdpdGggL2hvbWUvd2QvZ2l0L3UtYm9vdC9tYXN0ZXIKCmNvbW1pdCA0N2E2OTg5YzEwNjg1ZDJhYjNlZmNmOTUyMjhjZTUwZDJhNDk2ZDNlCkF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+CkRhdGU6CVR1ZSBPY3QgMjQgMTU6MzI6NTcgMjAwNiArMDIwMAoKICAgIENvZGUgY2xlYW51cAoKY29tbWl0IDNhNzhlM2U3NWI2MzNlY2I2NDEzMTE0ZmZkMTFlMmYwMDBjNGYxMWUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDo1MTozNiAyMDA2ICswMjAwCgogICAgTW92ZSBhdHN0azEwMDAgZmlsZXMgaW50byB2ZW5kb3Igc3BlY2lmaWMgZGlyZWN0b3J5LgogICAgUGF0Y2ggYnkgSGFhdmFyZCBTa2lubmVtb2VuLCAxMiBTZXAgMjAwNgoKY29tbWl0IDZjY2VjNDQ5MmU3NzQyOGZkNmVhZmQzZGZlOTRmYmRmMDhlOTFkMzcKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDo0MjozNyAyMDA2ICswMjAwCgogICAgQWRkIEFUU1RLMTAwMCBhbmQgQVRTVEsxMDAyIGJvYXJkIHN1cHBvcnQKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMDYgU2VwIDIwMDYKCiAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUU1RLMTAwMCB3aXRoIHRoZSBBVFNUSzEwMDIgQ1BVCiAgICBkYXVnaHRlcmJvYXJkLgoKICAgIEFUU1RLMTAwMCBpcyBhIGZ1bGwtZmVhdHVyZWQgZGV2ZWxvcG1lbnQgYm9hcmQgZm9yIEFUMzJBUCBDUFVzLiBJdAogICAgaGFzIHR3byBldGhlcm5ldCBwb3J0cywgYSBoaWdoIHF1YWxpdHkgUVZHQSBMQ0QgcGFuZWwsIGEgbG91ZHNwZWFrZXIsCiAgICBhbmQgY29ubmVjdG9ycyBmb3IgVVNBUlQsIFBTLzIsIFZHQSwgVVNCLCBNTUMvU0QgY2FyZHMgYW5kCiAgICBDb21wYWN0Rmxhc2ggY2FyZHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoaXMgcGFnZToKCiAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvdG9vbHMuYXNwP2ZhbWlseV9pZD02ODIKCiAgICBUaGUgQVRTVEsxMDAyIGlzIGEgZGF1Z2h0ZXJib2FyZCBmb3IgdGhlIEFUU1RLMTAwMCBzdXBwb3J0aW5nIHRoZQogICAgQVQzMkFQNzAwMCBjaGlwLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IGY5M2FlNzg4YzM2NDBmY2RlNWRiMzgzNDcxZDQ1NTQ4ZmY0MDYwZDAKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxNDozMToyNCAyMDA2ICswMjAwCgogICAgQWRkIGNvbW1vbiBzZXJpYWwgZHJpdmVyIGZvciBBdG1lbCBBVDMyIGFuZCBBVDkxIGNoaXBzCiAgICBQYXRjaCBieSBIYWF2YXJkIFNraW5uZW1vZW4sIDA2IFNlcCAyMDA2CgogICAgVGhpcyBpcyBhIGZpcnN0IGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBjb21tb24gc2VyaWFsIGRyaXZlciBmb3IgQXRtZWwKICAgIGNoaXBzLiBGb3Igbm93LCBpdCBzdXBwb3J0cyB0aGUgQVQzMkFQNzAwMCBBVlIzMiBjaGlwLCBidXQgaXQgc2hvdWxkCiAgICBiZSBwb3NzaWJsZSB0byBzdXBwb3J0IEFUOTFSTTkyMDAgYW5kIG90aGVyIEFSTS1iYXNlZCBjaGlwcyB3aXRoIHNvbWUKICAgIG1pbm9yIG1vZGlmaWNhdGlvbnMuCgogICAgVGhlcmUncyBub3RoaW5nIGZ1bmRhbWVudGFsbHkgQVZSMzItc3BlY2lmaWMgaW4gdGhpcyBkcml2ZXIsIGJ1dCBpdAogICAgZG9lcyB1c2Ugc29tZSBmZWF0dXJlcyB3aGljaCBhcmUgY3VycmVudGx5IG9ubHkgZGVmaW5lZCBmb3IgdGhlCiAgICBBVDMyQVAgQ1BVIHBvcnQ6CiAgICAgICogcG1fZ2V0X2Nsb2NrX2ZyZXE6IE9idGFpbiB0aGUgY2xvY2sgZnJlcXVlbmN5IG9mIGEgZ2l2ZW4gZG9tYWluCiAgICAgICogZ2QtPmNvbnNvbGVfdWFydDogQSAic3RydWN0IGRldmljZSIgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dAoJcmVnaXN0ZXIgbWFwcGluZ3MsIGdwaW8gcmVzb3VyY2VzIGFuZCBjbG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZQoJVUFSVCBkZXZpY2UuCgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgZmVhdHVyZXMsIHBsZWFzZSBzZWUgdGhlICJBVDMyQVAKICAgIENQVSIgcGF0Y2guCgpjb21taXQgNzJhMDg3ZTA0NzA1YzI2Y2FkOTgyODc5ZWJkMDZiNTI4MWJmODI1YQpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgT2N0IDI0IDE0OjI3OjM1IDIwMDYgKzAyMDAKCiAgICBBZGQgQVQzMkFQIENQVSBhbmQgQVQzMkFQNzAwMCBTb0Mgc3VwcG9ydAogICAgUGF0Y2ggYnkgSGFhdmFyZCBTa2lubmVtb2VuLCAwNiBTZXAgMjAwNgoKICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQVQzMkFQIENQVSBmYW1pbHkgYW5kIHRoZSBBVDMyQVA3MDAwCiAgICBjaGlwLCB3aGljaCBpcyB0aGUgZmlyc3QgY2hpcCBpbXBsZW1lbnRpbmcgdGhlIEFWUjMyIGFyY2hpdGVjdHVyZS4KCiAgICBUaGUgQVQzMkFQIENQVSBjb3JlIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSBpbXBsZW1lbnRhdGlvbiBmZWF0dXJpbmcgYQogICAgNy1zdGFnZSBwaXBlbGluZSwgc2VwYXJhdGUgaW5zdHJ1Y3Rpb24tIGFuZCBkYXRhIGNhY2hlcywgYW5kIGEgTU1VLgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlICJBVlIzMiBBUCBUZWNobmljYWwgUmVmZXJlbmNlIjoKCiAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcmVzb3VyY2VzL3Byb2RfZG9jdW1lbnRzL2RvYzMyMDAxLnBkZgoKICAgIEluIGFkZGl0aW9uIHRvIHRoaXMsIHRoZSBBVDMyQVA3MDAwIGNoaXAgY29tZXMgd2l0aCBhIGxhcmdlIHNldCBvZgogICAgaW50ZWdyYXRlZCBwZXJpcGhlcmFscywgbWFueSBvZiB3aGljaCBhcmUgc2hhcmVkIHdpdGggdGhlIEFUOTEgc2VyaWVzCiAgICBvZiBBUk0tYmFzZWQgbWljcm9jb250cm9sbGVycyBmcm9tIEF0bWVsLiBGdWxsIGRhdGEgc2hlZXQgaXMKICAgIGF2YWlsYWJsZSBoZXJlOgoKICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9yZXNvdXJjZXMvcHJvZF9kb2N1bWVudHMvZG9jMzIwMDMucGRmCgogICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Cgpjb21taXQgN2I2NGZlZjMzYzY2YmU2NDg4MjZjMGZmOTc1ODI5OGVmMTNkMDYwNApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglUdWUgT2N0IDI0IDE0OjIxOjE2IDIwMDYgKzAyMDAKCiAgICBBZGQgQVZSMzIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgNiBTZXAgMjAwNiAxNjoyMzowMiArMDIwMAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBjb21tb24gaW5mcmFzdHJ1Y3R1cmUgY29kZSBmb3IgdGhlIEF0bWVsIEFWUjMyCiAgICBhcmNoaXRlY3R1cmUuIFNlZSBkb2MvUkVBRE1FLkFWUjMyIGZvciBkZXRhaWxzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgoKY29tbWl0IDJkYTJkOWE0NzY2MDYzYjk4NDhmM2EzNWFkNjAyNTQ5OWNmODcyNjUKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxMzo1NzozMyAyMDA2ICswMjAwCgogICAgVXNlIC1nIGluc3RlYWQgb2YgLWdzdGFicyBpbiBBRkxBR1NfREVCVUcKICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMzAgQXVnIDIwMDYKCiAgICBJbiBjb25maWcubWssIC1XYSwtZ3N0YWJzIGlzIHVuY29uZGl0aW9uYWxseSBhcHBlbmRlZCB0byBBRkxBR1Mgbm8KICAgIG1hdHRlciB3aGF0IHRoZSB0YXJnZXQncyBwcmVmZXJyZWQgZGVidWdnaW5nIGZvcm1hdCBpcy4gVGhpcyBwYXRjaAogICAgc2ltcGx5IHJlcGxhY2VzIC1nc3RhYnMgd2l0aCAtZywgc28gdGhhdCB0aGUgZGVmYXVsdCBkZWJ1Z2dpbmcgZm9ybWF0CiAgICBmb3IgdGhlIGFyY2hpdGVjdHVyZSBpcyB1c2VkLgoKY29tbWl0IDk2NTgyOTg3MjE2OWMyOTk2MDIzODQwZDk4ZTFkODVhZDE0OGQ2MjkKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJVHVlIE9jdCAyNCAxMzo1NToxOCAyMDA2ICswMjAwCgogICAgRml4L3dvcmthcm91bmQgYnJva2VuIGRlcGVuZGVuY3kgaGFuZGxpbmcgd2l0aCBtYWtlIDMuODEKICAgIEJhc2VkIG9uIHBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMjkgQXVnIDIwMDYgMTE6MjA6MzkgKzAyMDAKCmNvbW1pdCA4MzE4ZmJmOGNjMzA0MThiNjIxZWE5ZjM5Yjg0YjRjMWEwOGYwMDNhCkF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KRGF0ZToJTW9uIE9jdCAyMyAyMjoxNzowNSAyMDA2ICswMjAwCgogICAgRml4IHNlcXVvaWEgc2VwYXJhdGUgb2JqZWN0IGRpcmVjb3J5IGJ1aWxkaW5nIHByb2JsZW1zLgoKY29tbWl0IDNkZmE5Y2ZkY2VlNzhiMzBkYTM0MzIzMThiMzI4MjFmZmFiZTk3NGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDIwIDE3OjE2OjM1IDIwMDYgLTA1MDAKCiAgICBVc2UgZ2VuZXJpYyBJMkMgcmVnaXN0ZXIgYmxvY2sgb24gODV4eCBhbmQgODZ4eC4KCiAgICBSZXBsYWNlIHByaXZhdGUgSU1NQVAgSTJDIHN0cnVjdHVyZXMgd2l0aCBnZW5lcmljIHJlZyBibG9jawogICAgYW5kIGFsbG93IDg2eHggdG8gaGF2ZSBtdWx0aXBsZSBJMkMgZGV2aWNlIGJ1c3Nlcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGY1MDEyODI3ZGYxMWNhMGM5YmUxZGY1ZjhiMTUzZTE4OGRjMmZhN2MKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgT2N0IDIwIDE1OjU0OjM0IDIwMDYgLTA1MDAKCiAgICBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb24gYSBmZXcgODV4eCBib2FyZHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyMDQ3NjcyNjg0Y2Y4NWNiNmY5NmExZmJjOTkzMTgwYWFhZjE5YTk5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAyMCAxNTo1MDoxNSAyMDA2IC0wNTAwCgogICAgQ29udmVydGVkIGFsbCA4NXh4IGJvYXJkcyB0byB1c2UgYSBjb21tb24gRlNMIEkyQyBkcml2ZXIuCiAgICBJbnRyb2R1Y2VkIENPRklHX0ZTTF9JMkMgdG8gc2VsZWN0IHRoZSBjb21tb24gRlNMIEkyQyBkcml2ZXIuCiAgICBBbmQgcmVtb3ZlZCBoYXJkIGkyYyBwYXRoIGZyb20gYSBmZXcgdS1ib290LmxkcyBzY2lwdHMgdG9vLgogICAgTWlub3Igd2hpdGVzcGFjZSBjbGVhbnVwcyBhbG9uZyB0aGUgd2F5LgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGQ0NWY2OWUzNjJiMDU4OTJjOWU5MmE3OTA3ZTU4MjA5OTU2MTJhYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTkgMTI6MDI6MjQgMjAwNiAtMDUwMAoKICAgIFJld3JpdGUgYSBzZXJpZXMgb2YgZ290byBzdGF0ZW1lbnRzIGFzIGEgc2VxdWVuY2VzIG9mCiAgICBjb25kaXRpb25hbCBleHByZXNzaW9ucyBpbnN0ZWFkLgoKICAgIFVzZSBjb25zaXN0ZW50IHJldHVybiBjb2RlIDAvLTEgZm9yIGdvb2QvYmFkIGluZGljYXRvcnMuCgogICAgSW5jbHVkZSBvbmUgZmV3ZXIgZmlsZSBpZiB0aGUgZHJpdmVyIGlzbid0IHVzZWQgYXQgYWxsLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzIzN2MwMzNiMDJmZTI5NTg4MDQzNWYxZWI4MDgxOWEwYzk4NzUzMgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBPY3QgMTkgMTE6MDI6MTYgMjAwNiAtMDUwMAoKICAgIE1vdmVkIGkyYyBkcml2ZXIgb3V0IG9mIGNwdS9tcGM4Nnh4L2kyYy5jIGludG8gZHJpdmVycy9mc2xfaTJjLmMKCiAgICBpbiBhbiBlZmZvcnQgdG8gYmVnaW4gdG8gdW5pZnkgdGhlIHVtcHRlZW4gRlNMIEkyQyBkcml2ZXJzIHRoYXQKICAgIGFyZSBhbGwgb3RoZXJ3aXNlIHZlcnkgc2ltaWxhci4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDEzYTdmY2RmMzdmNmVhOTQyOWFlMDRjOWRmNjdmODkzMzY0Y2ZlNGIKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgT2N0IDE5IDExOjMzOjUyIDIwMDYgLTA1MDAKCiAgICAqIEZpeCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBnY2MgNC4wCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBhZjllMWY1YjllNmY5Y2U4MTBmNWU4YmYyOTYxYzk1NDJhNTg2NWMyCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglUdWUgT2N0IDE3IDA2OjE0OjMxIDIwMDYgKzAyMDAKCiAgICBBZGQgbW9uaXRvciBmdW5jdGlvbnMgZm9yIGluZGlyZWN0IGFjY2VzcyB0byBQUEM0NDAgRENSJ3MKICAgIFBhdGNoIGJ5IExlb25pZCBCYXJ5dWRpbiwgMTIgT2N0IDIwMDYKCmNvbW1pdCA1ZjMyNDlhMGExNjhlNDQ2YTRjYzk2NjliMmJjZTBiYzQ1NmYwYTA5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE9jdCAxMyAxNjo0Nzo1MyAyMDA2IC0wNTAwCgogICAgRml4ZWQgbGVhZGluZyB3aGl0ZXNwYWNlIGlzc3Vlcy4KICAgIFJlbW92ZWQgc3B1cmlvdXMgTEFXQVIgdGhpbmcuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAwZWU5MGNiNzdlMDFkNmU4Y2NkMzdlMWJkOTY2Nzg1OTc4NzVjMzkxCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IE9jdCAxMiAxMDo0MjozNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgZmlsZXMgYW5kIGxvY2FsIHZhcmlhYmxlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMWVhZjNhNWZmNDk2MGE0NmYzYTkwNjM1NjhiYTJhZjc4ODNmMDdjNQpBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KRGF0ZToJVHVlIE9jdCAxMCAwMDoyMzozMiAyMDA2IC0wNjAwCgogICAgRml4IHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgY29tcGlsZXIgd2FybmluZy4KCiAgICBXaGVuIENPTkZJR19PRl9GTEFHX1RSRUUgaXMgc2V0LCB0aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgJ2xlbicgaW4KICAgIGRvX2Jvb3RtX2xpbnV4KCkgbWF5IGJlIHVuaW5pdGlhbGl6ZWQuICBUaGVyZSBpcyBubyBwb3NzaWJpbGl0eSBpbiB0aGUKICAgIGN1cnJlbnQgY29kZSB0aGF0IGxlbiB3aWxsIGdldCB1c2VkIHVuaW5pdGlhbGl6ZWQsIGJ1dCB0aGlzIGZpeCBmb2xsb3dzCiAgICB0aGUgZXhpc3RpbmcgY29udmVudGlvbiBvZiBzZXR0aW5nIGJvdGggbGVuIGFuZCBkYXRhIHRvIHplcm8gYXQgdGhlIHNhbWUKICAgIHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgoKY29tbWl0IDczNzZlYjg3YWFhNjAxZjcyOGY5YjhlNWU5Y2QyNzExYTY3ZjUyOWUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgT2N0IDExIDE1OjEzOjAxIDIwMDYgLTA1MDAKCiAgICAqIEZpeCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBnY2MgNC4wCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjY1MWJhYTM2NWU1NDQ3MjQ2YWFkNmE2MzNjY2Q2NjdjZjI0YTM5CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE9jdCAxMSAxMDoxMDo0MyAyMDA2IC0wNTAwCgogICAgTW92ZSAiYXIiIGZsYWdzIHRvIGNvbmZpZy5tayB0byBhbGxvdyBmb3Igc2lsZW50ICJtYWtlIC1zIgoKY29tbWl0IDFmZDU2OTlhNGEyNGY1YzFkYWIxYjMyZjQ4MGJhY2UxZWJiOWZjM2UKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjE5OjAzIDIwMDYgLTA1MDAKCiAgICBDb2Rpbmcgc3R5bGUgY2hhbmdlcyB0byByZW1vdmUgbG9jYWwgdmFyaWJsZSBibG9ja3MKICAgIGFuZCByZWZvcm1hdCBhIGJpdCBuaWNlci4KCmNvbW1pdCA4YjI4M2RiYjNhMDhkMWI4ZDQwNmJjMTVmMTE5ZTA4MWIzZTI2MDZhCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAxMCAxNzoxNjowNCAyMDA2IC0wNTAwCgogICAgRml4IHdoaXRlc3BhY2UgaXNzdWVzLgoKY29tbWl0IDdiMzgyYjcxMjVmMjM5N2NjZTYzMjUzZGY2MmYxODNlM2RmYTI3NzAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjE0OjQ1IDIwMDYgLTA1MDAKCiAgICBGaXggd2hpdGVzcGFjZSBpc3N1ZXMuCgpjb21taXQgZTEwMzkwZGRkNzM2YjBkYWQxNTI4ZWVjNGIwZmUzNWMwODI3MTM5YQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBPY3QgMTAgMTc6MDY6NTMgMjAwNiAtMDUwMAoKICAgIEZpeCB3aGl0ZXNwYWNlIGlzc3Vlcy4KCmNvbW1pdCA4OTg3NWU5NmJhM2YwMjMxNTdiZjUwZDVmOGUzM2JmMjU0OTY0YTc2CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE9jdCAxMCAxNzowMzo0MyAyMDA2IC0wNTAwCgogICAgUmFuIGxpbmRlbnQgYW5kIGNsZWFuZWQgdXAgd2hpdGVzcGFjZSBpc3N1ZXMuCiAgICBGb3JtYXQgZm9yIDgwLWNvbHVtbnMgdG9vLgoKY29tbWl0IDMzMzk2MWFlNzA5NWZjNjZkOGEwNDFmY2UxYWM5ZWU4NzNiMDlkODYKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgT2N0IDEwIDE3OjAyOjIyIDIwMDYgLTA1MDAKCiAgICBGaXggd2hpdGVzcGFjZSBhbmQgODAtY29sIGlzc3Vlcy4KCmNvbW1pdCA1YzkxMmNiMWMzMTI2NmM2NmNhNTliMzZmOWI2Zjg3Mjk2NDIxZDc1CkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDcgMTE6MzY6NTEgMjAwNiArMDIwMAoKICAgIENGR19OQU5EX1FVSUVUX1RFU1QgYWRkZWQgdG8gbm90IHdhcm4gdXBvbiBtaXNzaW5nIE5BTkQgZGV2aWNlCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgNWJjNTI4ZmE0ZGE3NTFkNDcyMzk3YjMwODEzNzIzOGE2NDY1YWZkMgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCA3IDExOjM1OjI1IDIwMDYgKzAyMDAKCiAgICBVcGRhdGUgQUxQUiBjb2RlIChOQU5EIHN1cHBvcnQgd29ya2luZyBub3cpCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgNzdkNTAzNDg0N2QzMjg3NTNiODBjNDZiODNmOTYwYTE0YTI2ZjQwZQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJU2F0IE9jdCA3IDExOjMzOjAzIDIwMDYgKzAyMDAKCiAgICBSZW1vdmUgY29tcGlsZSB3YXJuaW5ncyBpbiBmcGdhIGNvZGUKICAgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgT2N0IDIwMDYKCmNvbW1pdCBmMzQ0Mzg2N2U5MGQyOTc5YTdkZDFjNjViMGQ1Mzc3NzdlMWY5ODUwCkF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgpEYXRlOglTYXQgT2N0IDcgMTE6MzA6NTIgMjAwNiArMDIwMAoKICAgIEFkZCBDT05GSUdfQk9BUkRfUkVTRVQgdG8gY29uZmlndXJlIGJvYXJkIHNwZWNpZmljIHJlc2V0IGZ1bmN0aW9uCiAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Cgpjb21taXQgZjU1ZGYxODE4N2U3YTQ1Y2I3M2ZlYzQzNzBkMTIxMzVlNjY5MWFlMQpBdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgU2VwIDI5IDA4OjIzOjEyIDIwMDYgKzAxMDAKCiAgICBGaXggbWlzc2luZyB0Q3ljbGUvbW9kZnJlcSBjYWxjdWxhdGlvbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4MjcyZGMyZjU4ZjI0NzNkODk5NWZjYzliOTE2NDQwY2ZiYTA4MGYwCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgU2VwIDEzIDEwOjMzOjM1IDIwMDYgLTA1MDAKCiAgICBVcGRhdGVkIGNvbmZpZyBoZWFkZXJzIHRvIGFkZCBkZWZhdWx0IEZEVC1iYXNlZCBib290aW5nCgpjb21taXQgMDlmM2UwOWU5ZWJjZmE3OTE5Y2E4OTMxYTRiNTUwNGZhZGQxZjFkMwpBdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIFNlcCAxMyAxMDozNDoxOCAyMDA2IC0wNTAwCgogICAgQWRkIHN1cHBvcnQgZm9yIGVUU0VDIDMgJiA0IG9uIDg1NDggQ0RTCgogICAgKiBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyBlVFNFQyAzIGFuZCBlVFNFQyA0IG9uIHRoZSA4NTQ4IENEUy4KICAgICAgVGhpcyB3aWxsIG9ubHkgd29yayBvbiByZXYgMS4zIGJvYXJkcyAoYnV0IGRvZXNuJ3QgYnJlYWsgb2xkZXIgYm9hcmRzKQogICAgKiBDbGVhbmVkIHVwIHNvbWUgY29tbWVudHMgdG8gcmVmbGVjdCB0aGUgZXhwYW5kZWQgcm9sZSBvZiB0c2VjCiAgICAgIGluIG90aGVyIHN5c3RlbXMKCmNvbW1pdCAwODRkNjQ4YjEwOWM4OTg0ZjgzNjc0MDQzYzFhN2ZhMzg4NWVmODAxCkF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgU2VwIDEzIDEwOjMzOjU2IDIwMDYgLTA1MDAKCiAgICBBZGRlZCBjb2RlIHRvIHN1cHBvcnQgMi42LjE4IFBDSSBjaGFuZ2VzIGluIHUtYm9vdAoKICAgICogQWRkZWQgY29kZSB0byBzd2l6emxlIHRoZSBJUlEgbWFwIGZvciB0aGUgUENJCgpjb21taXQgYWZiZGM2NDlmODc1MWU0ZjRmMWE2ZjUyN2VkZmUxMzk3NzNmMmMxNQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBTZXAgMTkgMDk6MzQ6MTAgMjAwNiAtMDUwMAoKICAgIE1vZGlmaWVkIG1ha2VmaWxlIGZvciBuZXcgYnVpbGQgbWVjaGFuaXNtLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZDE0YmE2YTc5OGJlYjc1M2U3YTg2NDUwMDQxNGZjYzJkMTk4YjhiYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBTZXAgMTQgMDg6NDA6MzYgMjAwNiAtMDUwMAoKICAgIEhhbmRsZSA4Nnh4IFNWUiB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBuZXcgUmVmZXJlbmNlIE1hbnVhbC4KICAgIEJvdGggODY0MSBhbmQgODY0MUQgaGF2ZSBTVlIgPT0gMHg4MDkwLCBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQKICAgIGJ5IHRoZSBieXRlIGluIGJpdHMgMTYtMjMgaW5zdGVhZC4KICAgIFRoYW5rcyB0byBKYXNvbiBKaW4gZm9yIG5vdGljaW5nLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODhjOGY0OTIxZmM0N2ZiMGViMjM4NGIxNjU4NmYxYmQ3ZjI3NWJlNwpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBBdWcgMjggMTQ6MjU6MzEgMjAwNiArMDgwMAoKICAgIEZpeGVkIGFuIE9GLXRyZWUgb2ZmLWJ5LW9uZSBidWcgd2hlbiBhZGRpbmcgYSBuZXcgcHJvcGVydHkgbmFtZS4KICAgIFRoaXMgYnVnIHdpbGwgY2F1c2UgdGhlIGtlcm5lbCBib290aW5nIHRvIHBhdXNlIGEgbG9uZyB0aW1lLgoKICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CiAgICAoY2hlcnJ5IHBpY2tlZCBmcm9tIDJmMTU3NzZjY2M2ZGMzMjM3N2Q4YmE5NjUyYjhmNTgwNTljMjdjNmQgY29tbWl0KQoKY29tbWl0IDliZmY3YTY5YTg4NWFkZWJiZDJiZDQ1OTkwNDk0ZWM0Y2Y5OThhMzAKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDI5IDExOjA1OjA5IDIwMDYgLTA1MDAKCiAgICBSZW1vdmUgdHJhaWxpbmcgZW1wdHkgbGluZXMuCgpjb21taXQgY2Q2ZDczZDViODk1YTU5MzVhYzRmZGUwYTM1NjI4ODE0MmE1ODRlMApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjkgMDk6NDg6NDkgMjAwNiAtMDUwMAoKICAgIFJlbW92ZSBib2d1cyBtc3luYyBhbmQgdXNlIHZvbGF0aWxlIGFzbS4KCmNvbW1pdCA3NzhkNDUwNDljZTU5MjdiNjViM2ZmMWQ4ZTY2OTJiNjU0YmRkNDllCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyOSAwODoxNzoxNCAyMDA2IC0wNTAwCgogICAgQWRkIG15c2VsZiBhcyBtYWludGFpbmVyIGZvciBNUEM4NjQxSFBDTi4KCmNvbW1pdCAyZjE1Nzc2Y2NjNmRjMzIzNzdkOGJhOTY1MmI4ZjU4MDU5YzI3YzZkCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAyOCAxNDoyNTozMSAyMDA2ICswODAwCgogICAgRml4ZWQgYW4gT0YtdHJlZSBvZmYtYnktb25lIGJ1ZyB3aGVuIGFkZGluZyBhIG5ldyBwcm9wZXJ0eSBuYW1lLgogICAgVGhpcyBidWcgd2lsbCBjYXVzZSB0aGUga2VybmVsIGJvb3RpbmcgdG8gcGF1c2UgYSBsb25nIHRpbWUuCgogICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA1NTY3ODA2YjY3ZDBhZTgzNDkzYWE4ODIzYWQzYjZjOTE0ZjU4MWQ3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEF1ZyAyNSAxNDozODozNCAyMDA2IC0wNDAwCgogICAgQ2hhbmdlIHJhbWRpc2thZGRyIGFuZCBkdGJhZGRyCiAgICBSZW1vdmUgUEVYIGZsdWZmIGNvbW1hbmRzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyYjc4NDIxZDlkYjQ5YzIxYTgyMWFmOGExOWMyMWMxZjdkZmIyOWUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDIzIDEzOjMyOjQ1IDIwMDYgLTA1MDAKCiAgICAqIEFub3RoZXIgc21hbGwgZml4IGZvciBib290aW5nIHdpdGggZGlzYWJsZV9vZgoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNGE3Y2MwZjIxOTE4ZTZlY2YwN2VkNTcwNzVkNjdkZjJjNGExMjk5YwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgMjMgMTE6MDQ6NDMgMjAwNiAtMDUwMAoKICAgIENsZWFudXAgYW5kIGxpbmRlbnQgbmV3IEFIQ0kgZHJpdmVyLgoKY29tbWl0IGRhYmY5ZWY4YzEwYjRkZWFkNWVmMjEwNmVmNzQyYjFjMDZiNTQyZGUKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZyA8amFzb25AYnVzLmFwLmZyZWVzY2FsZS5uZXQ+CkRhdGU6CVdlZCBBdWcgMjMgMTk6MTU6MTIgMjAwNiArMDgwMAoKICAgIEFkZCBBSENJIGRlZmluZSBhbmQgc2F0YSBzdXBwb3J0IGZvciBNUEM4NjQxSFBDTiBib2FyZC4KCiAgICBTaWduZWQtb2ZmLWJ5Okphc29uIEppbjxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0NzgyYWM4MGIwMmYwZDAxYWZkMzA5ZTIyMDBkZDNjNzAzN2YyYmE0CkF1dGhvcjogSmluIFpoZW5neGlvbmcgPGphc29uQGJ1cy5hcC5mcmVlc2NhbGUubmV0PgpEYXRlOglXZWQgQXVnIDIzIDE5OjEwOjQ0IDIwMDYgKzA4MDAKCiAgICBBZGQgQUhDSSBzdXBwb3J0IHRvIHUtYm9vdAoKICAgIEFkZCBBSENJIHN1cHBvcnQgaW4gdS1ib290LCBlbmFibGUgdGhlIHNhdGEgZGlzayBjb250cm9sbGVycyB3aGljaAogICAgZm9sbG93aW5nIHRoZSBBSENJIHByb3RvY29sLgoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluPGphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGQ4ZWEyYWNmNWYxMzdjYWU5OTQxN2RmNGY1NzNkMDM2ZWUzODQ2NjgKQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDIzIDE3OjU0OjMyIDIwMDYgKzA4MDAKCiAgICBBZGQgZHRiIGJvb3QtdXAgcGFyYW1ldGVyIHRvIGRlZmF1bHQgYm9vdCBjb21tYW5kcy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGI5Mzc3NWMyMDM2Yjk5YmFhMzkwZWE0MjVjNDc3MTg5NWJiYzYzYzQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE4OjI2OjA4IDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIGV2ZW4gbW9yZSBwb29ybHkgaW50cm9kdWNlZCB3aGl0ZXNwYWNlLgoKY29tbWl0IGFlNjI0MTY4NWNiY2YwYzc5YTM2MzY1MzBkMmNlYWIxZmIyOTFhOTQKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDE4OjA3OjAwIDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIG1vcmUgcG9vcmx5IGludHJvZHVjZWQgd2hpdGVzcGFjZS4KCmNvbW1pdCAyYzMzZThhMWM1MzViM2FlOTFjZjBiMjg0NDgwNjAwYmYzZjU3YzU3CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyMiAxNzo1NDowNSAyMDA2IC0wNTAwCgogICAgQ2xlYW51cCBwb29ybHkgaW50cm9kdWNlZCB3aGl0ZXNwYWNlLgoKY29tbWl0IDgwZTk1NWM3ZGQ5OGY0YjRmZDIzYzIxMTNjYWY3NWVkMmI3N2I1YjMKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDEyOjI1OjI3IDIwMDYgLTA1MDAKCiAgICBHZW5lcmFsIGluZGVudCBhbmQgd2hpdGVzcGFjZSBjbGVhbnVwcy4KCmNvbW1pdCBmZmZmM2FlNTZmNTg0MmNhMzY3OWU0Y2U3OTIyYjgxOWE4N2FhZDlmCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAyMiAxMjowNjoxOCAyMDA2IC0wNTAwCgogICAgR2VuZXJhbCBpbmRlbnQgYW5kIHdoaXRlc3BhY2UgY2xlYW51cHMuCgpjb21taXQgNDFhMGU4YjMwNGQzZmY1NWZlMjdhMjMwNTA3YWFjNzk2ODQwMTZhYwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjIgMTA6NDI6MjEgMjAwNiAtMDUwMAoKICAgIENsZWFudXAgY29tcGlsZXIgd2FybmluZ3MuCgpjb21taXQgNWRlNjJjNDdhODYyOGIzZGE0ZDczZjdjMDcwMjdmMzJhMzM0MmQ0MApBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMjIgMDk6MzE6NTkgMjAwNiAtMDUwMAoKICAgIEZpeCBkaXNhYmxlX29mIGJvb3RpbmcKCiAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDg3YTQ0OWM4YWMzOTY0MjBjYjI0MjYwZjcxN2VhOWU2ZmFhODIwNDcKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDIyIDA5OjIzOjU1IDIwMDYgLTA1MDAKCiAgICBTdXBwb3J0IGZvciBGRFQgaW4gdUltYWdlIGZvcm1hdCwgZXJyb3Igd2hlbiB1c2luZyBGRFQgZnJvbSBmbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzVjMjk5YzM4MzY5ZDAxYWRkZDVlMDU0YjhhMTYyMTdiNzBmNGE4NgpBdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBBdWcgMTUgMTU6MTI6NTUgMjAwNiAtMDQwMAoKICAgIFVubG9jayBjYWNoZSBiZWZvcmUga2VybmVsIHN0YXJ0cyB1cCBmb3IgTVBDODZ4eAoKY29tbWl0IDY3MjU2Njc4ZjAwYzA5YjBhN2YxOWU4NjJlNWMxODQ3NTUzZDMxYmMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE1IDE1OjEzOjE1IDIwMDYgLTA0MDAKCiAgICBDb3B5IEdsb2JhbCBEYXRhIFBvaW50ZXIgdG8gcjI5IGZvciBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUgoKY29tbWl0IDFjOGY2ZDhmYjAyOGYxNTYwOTRkMDVmMmQxNDI5OGU2NDc5MzY0YWMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgQXVnIDE1IDE1OjEyOjU1IDIwMDYgLTA0MDAKCiAgICBVbmxvY2sgY2FjaGUgYmVmb3JlIGtlcm5lbCBzdGFydHMgdXAgZm9yIE1QQzg2eHgKCmNvbW1pdCAwZDljY2M1NWVkZjlhN2YzYzViMmI2MjYzNTgwYTZlYThkNzAyYTA0CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyAxNSAxNToxMzoxNSAyMDA2IC0wNDAwCgogICAgQ29weSBHbG9iYWwgRGF0YSBQb2ludGVyIHRvIHIyOSBmb3IgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIKCmNvbW1pdCA4NmM4ZTE3ZjI1ZTk3MmE3ZTI3Mjk1MGEwNzM1ZmFkODRlMDgyYjg4CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNiAxMzo1OTo0NyAyMDA2IC0wNTAwCgogICAgKiBGaXggZGlzYWJsZV9vZiBib290aW5nCgogICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAyNWM3NTFlOWFkYzg2ZTIyZmUzYjViNDdjZjI4MDYzNzliNTc1ZGI3CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEF1ZyAxNiAxMDo1NDowOSAyMDA2IC0wNTAwCgogICAgKiBTdXBwb3J0IGZvciBGRFQgaW4gdUltYWdlIGZvcm1hdCwgZXJyb3Igd2hlbiB1c2luZyBGRFQgZnJvbSBmbGFzaAoKICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgODk5NjIwYzJkNjZkNGVlZjNiMmEwMDM0ZDA2MmU3MWQ0NWQ4ODZjOQpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNSAxNDoyMjozNSAyMDA2ICswMjAwCgogICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIEFMUFIgYm9hcmQgZnJvbSBQcm9kcml2ZQogICAgTkFORCBuZWVkcyBzb21lIGFkZGl0aW9uYWwgdGVzdGluZwogICAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDE1IEF1ZyAyMDA2Cgpjb21taXQgZjBmZjQ2OTJmZjMzNzJkZWM1NTA3NGE4ZWI0NDQ5NDNhYjA5NWFiYgpBdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KRGF0ZToJVHVlIEF1ZyAxNSAxNDoxNTo1MSAyMDA2ICswMjAwCgogICAgQWRkIEZQR0EgQWx0ZXJhIEN5Y2xvbmUgMiBzdXBwb3J0CiAgICBQYXRjaCBieSBIZWlrbyBTY2hvY2hlciwgMTUgQXVnIDIwMDYKCmNvbW1pdCBmZWNmMWM3ZTRkZTFiMjc3OWVkYzE4NzQyYjkxYzIyYmRjMzJiNjhiCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJTW9uIEF1ZyAxNCAxNTozMzozOCAyMDA2IC0wNTAwCgogICAgRml4IEJBVDAgdG8gYWN0dWFsbHkgYmUgY2FjaGVhYmxlLCBub24tZ3VhcmRlZCBhcyBkb2N1bWVudGVkLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNDBiYzgzNTU5ZGI1NzQ1NjgxOTA5ZmQ3MzgyYWU1MDk1NjdlMTE2ZApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBBdWcgOSAxNTozMjoxNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlZCBNUEM4NjQxSFBDTiBEVFMgc291cmNlIGZpbGUgZnJvbSBidWlsZC4KICAgIEl0IGlzIG5vIGxvbmdlciBsaW5rZWQgaW50byBVLUJvb3Q7IGl0cyBzb3VyY2VzIGFyZQogICAgbm93IGxvY2F0ZWQgaW4gdGhlIGtlcm5lbCB0cmVlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgMzRjM2MwZTAxZGJmMWY4Y2MyYmQwOGRlOTJmMmI4OWJhODQ5MjFlYgpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDc6MDMgMjAwNiAtMDUwMAoKICAgICogU3dpdGNoZWQgZGVmYXVsdCBQQ0kgc3BlZWQgZm9yIDg1NDAgQURTIGJhY2sgdG8gMzNNSHoKCiAgICAqIEFkZGVkIGNvbW1lbnRzIGFuZCBhIHByaW50ZiB0byB3YXJuIHRoYXQgUENJLVggd29uJ3QKICAgICAgd29yayBhdCAzM01IegogICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgYjZjNWUxMzczYjZlYTBiYjM3YTE4ZTRhZWVjZWMwMDYxM2QxY2QzOQpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDY6MzUgMjAwNiAtMDUwMAoKICAgICogRml4ZWQgYSBidWcgd2hlcmUgODU1NSBQQ0kgY29kZSB1c2VkIHRoZSBvbGQgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZjFkZmZmZDhjMjZmOGVjZGQ2MzBhMGFlNGM4MzRlNzUxZTRlNDUyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NjoxMyAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBWSUEgY29uZmlndXJhdGlvbiB0YWJsZQoKICAgICogQWRkZWQgc3VwcG9ydCBmb3IgUENJMiBvbiBDRFMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGM4OGY5ZmU2NmI2NDI0N2U1YjZhMzg0MTBiYTMxNWNhMjU1OTZkMTYKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjQxIDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIFBDSSBtZW1vcnkgZGVmaW5pdGlvbnMgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDk3MDc0ZWQ5NjU1MzA5YjY0MjMxYmMyY2VlNjlmZTg1Mzk5ZjgwNTUKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjE3IDIwMDYgLTA1MDAKCiAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyBzZWNvbmQgUENJIGJ1cyBvbiA4NXh4IFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmMGU2ZjU3ZjcxYjNjNGZkZDEzMDI4ZWIwM2MzZjNlOTE5MjZkZGEyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NDo0OSAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24gUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGE0ZTExNTU4YjgxMGVmMmNkZGZmZGY3YjlkODZiYzExMzA0NDE5NjAKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ0OjIzIDIwMDYgLTA1MDAKCiAgICAqIE1hZGUgc3VyZSB0aGUgY29kZSB3aGljaCBkaXNhYmxlcyBwcmVmZXRjaCBmb3IgUENJIGRldmljZXMgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcHJlZmV0Y2ggcmVnaW9uIHRvIDAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDBlMTYzODdkYjFkNGFhY2Q1YmYzNWNiNmQ3YzE5NDI3NjVjMDM0N2IKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQzOjM2IDIwMDYgLTA1MDAKCiAgICAqIEFkZCBGbGF0IERldiBUcmVlIGNvbnN0cnVjdGlvbiBmb3IgTVBDODV4eCBBRFMgYW5kIENEUyBib2FyZHMgUGF0Y2ggYnkgSm9uIExvZWxpZ2VyIDE3LUphbi0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4NTVlNmZiMDczZjlkMDRmZTRhN2YwNmMxMDdlY2JhYzYzNDRkZGQ0CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MzowMCAyMDA2IC0wNTAwCgogICAgKiBSZW1vdmVkIHRoZSBvZnRyZWUuZHRzIGZvciBzdHh4dHggaW4gbGlnaHQgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIGZsYXQgZGV2aWNlIHRyZWUgaGFuZGxpbmcgY29kZSBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgNTQ5OGQ5MDMxMmFhZDlmNmJkYmYwNDc5ODYwMjdjMzViMDNjZDE2MwpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDI6MjQgMjAwNiAtMDUwMAoKICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKCmNvbW1pdCAwMjY3NzY4ZWRkYzVjYTdiYzE4NjViYzQwYzg2NjgyOWFjNWVmYmZlCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MTozNyAyMDA2IC0wNTAwCgogICAgKiBNb2RpZnkgYm9vdG0gY29tbWFuZCB0byBzdXBwb3J0IGJvb3Rpbmcgd2l0aCBmbGF0IGRldmljZSB0cmVlcyBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgOGZjOGJkMmNjNDc5YjZjZDE4OGZkZWRlNDAxMGUwZTA1Mjk3MGI4YQpBdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgQXVnIDkgMTQ6MzM6NTAgMjAwNiArMDEwMAoKICAgIEFkZCBSYXBpZGlvIHN1cHBvcnQgZm9yIHRoZSBNUEM4NjQxSFBDTgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDkxYTQxNGM3ZDFmYjBlYWM5MTI1OTJjZDk5NWIzMGM5ZjIzMDQ1YzkKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEF1ZyA4IDExOjMyOjQzIDIwMDYgKzAxMDAKCiAgICBGaXggY2FzbGF0IGNhbGN1bGF0aW9uCgogICAgU2lnbmVkLW9mZi1ieTogSm9obiBUcmFpbGwgPGpvaG4udHJhaWxsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgNzA5ZDMwNzNlNzQxNTMyNzhlNzkwNGE3MDgxOWJiZWY3ZGY1MGUxYQpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBdWcgMyAxNjoxNzo1NiAyMDA2IC0wNTAwCgogICAgQ29udmVydCB0byBtYWMtYWRkcmVzcyBpbiBldGhlcm5ldCBub2Rlcy4KCmNvbW1pdCA3MTc0OGFmODMzY2ExMDE3ZWRmMTQxNWJlMzc2MzY2ZmYyOTM3ZDE3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAxMjo0MTozNSAyMDA2IC0wNDAwCgogICAgQ29ycmVjdCB0aGUgaXJxIHZhbHVlIG9mIERVQVJUMgoKY29tbWl0IDljYjNlODgxNmFlNGQ4NTRlN2RjMjIxMjhjM2VlYTNkNzBiYjk4MmMKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI4IDEyOjQxOjQxIDIwMDYgLTA0MDAKCiAgICBDaGFuZ2UgdGhlIHNwYWNlIHNpemUgb2YgUEVYIElPIGluIFJFQURNRQoKY29tbWl0IDIzOWRiMzdjOTRmN2E5Mjk0MWM0NDY1ZmVjZWI4NjdjNjA5MjQxYzUKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglGcmkgSnVsIDI4IDEyOjQxOjE4IDIwMDYgLTA0MDAKCiAgICBNb3ZlIGdldF9ib2FyZF9zeXNfY2xrIHRvIGJvYXJkIGRpcmVjdG9yeQoKY29tbWl0IDQ5MjkwMGI5ODU0MzlmYmNlMWExMThhZmRlMWUzNWRlZjg3MGRiMDMKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAwOTowMzo1NCAyMDA2ICswMTAwCgogICAgRml4IDg2NDFIUENOIHBvbGx1dGlvbgoKY29tbWl0IDUxNWFiOGE2MmU4NTc0ZTJiYWJjNmU4ZGNjNDM1NDRhZDIyMWM1YjIKQXV0aG9yOiBKb2huIFRyYWlsbCA8am9obi50cmFpbGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCAyOCAwODoxNjowNiAyMDA2ICswMTAwCgogICAgRml4IDg2NDFIUENOIHRpbWViYXNlCgpjb21taXQgYzg2MzYwYjgzMGYxZWVjZDdhNzIyMDg1NzVkZGU0ZjU3ODc5ZmFlYQpBdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBKdWwgMjggMDA6MDE6MzQgMjAwNiArMDgwMAoKICAgIEZpeGVkIE9GIGRldmljZSB0cmVlIG9mIG1wYzg2eHhocGNuIGJvYXJkLgoKICAgIFRoZSBjaGFuZ2VzIHdvcmtzIGluIHdpdGgga2VybmVsIGlycSBtYXBwaW5nIHJld29yay4KCiAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJlYTNmMjhkMjg1OTQyYmYzZjdhYjMzOWNlODUxNzhkZWQ1NDQyMjUKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVsIDEyIDEwOjQ4OjA1IDIwMDYgLTA0MDAKCiAgICBBZGQgc3VwcG9ydCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBtYWMgYWRkcmVzc2VzIHRvIG9yIGZyb20gSUQgRUVQUk9NLgoKICAgIEFkZGVkIGNvZGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgTWFjIGFkZHJlc3NlcyB0by9mcm9tIElEIEVFUFJPTSgweDU3KS4KICAgIFdpdGggYXR0YWNoZWQgcGF0Y2gsIHdlIGNhbiB1c2UgY29tbWFuZCAibWFjL21hYyByZWFkL21hYyBzYXZlLyIKICAgIHRvIHJlYWQgYW5kIHdyaXRlIEVFUFJPTSB1bmRlciB1LWJvb3QgcHJvbXB0LgoKICAgIFUtYm9vdCB3aWxsIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gb2YgRUVQUk9NIHdoaWxlIGJvb3R1cCwKICAgIGlmIGl0IGlzIHJpZ2h0LCB0aGVuIHUtYm9vdCB3aWxsIGNoZWNrIHdoZXRoZXIgdGhlIG1hYyBhZGRyZXNzCiAgICBvZiBlVFNFQzAvMS8yLzMgaXMgYXZhaWxhbGJlIChub24temVybykuCgogICAgSWYgdGhlcmUgaXMgbWFjIGFkZHJlc3MgYXZhaWxhYmUgaW4gRUVQUk9NLCB1LWJvb3Qgd2lsbCB1c2UgaXQsCiAgICBvdGhlcmV3aXNlLCB1LWJvb3Qgd2lsbCB1c2UgdGhlIG1hYyBhZGRyZXNzIGRlZmluZWQgaW4KICAgIE1QQzg2NDFIUENOLmguIFRoaXMgbWF0Y2hlcyB0aGUgcmVxdWlyZW1lbnQgdG8gc2V0IHVuaXF1ZSBtYWMgYWRkcmVzcwogICAgZm9yIGVhY2ggVFNFQyBwb3J0LgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGZjYjI4ZTc2MzQxNWUwZTRlNjZiMGY0NTg0MmQxNTU3YWUxOThlNWUKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZyA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBKdWwgMTMgMTA6MzU6MTAgMjAwNiAtMDUwMAoKICAgIEZpeGVkIGluaXRyZCBpc3N1ZSBieSBkZWZpbmUgYmlnIFJBTQoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBlNmNkMmExNzg1ZDc0ZWMzZDMwYTg2ZjFjYjM2MGJlOGRlNDc4MTUxCkF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIEp1bCA3IDEwOjAxOjQ1IDIwMDYgLTA1MDAKCiAgICBXZSBtYWRlIGEgdS1ib290IHBhdGNoIHRvIGZpeCB0aGUgaGFuZyB1cCBpc3N1ZQogICAgd2hlbiBib290aW5nIGZpbGVzeXN0ZW0gZnJvbSByYW1kaXNrLgoKICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzODQzM2NjYzU4NTBlZTcwNTQ5YWYwYjJiYzViOTIwMzU1ZWY1Mzg4CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NzowMyAyMDA2IC0wNTAwCgogICAgKiBTd2l0Y2hlZCBkZWZhdWx0IFBDSSBzcGVlZCBmb3IgODU0MCBBRFMgYmFjayB0byAzM01IegogICAgKiBBZGRlZCBjb21tZW50cyBhbmQgYSBwcmludGYgdG8gd2FybiB0aGF0IFBDSS1YIHdvbid0CiAgICAgIHdvcmsgYXQgMzNNSHoKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IGU0YzJhMGViMGMzZTNmZmJmODI0ODAwMTg0ZWU0MmJkYzk5ZDViMTkKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ2OjM1IDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIGEgYnVnIHdoZXJlIDg1NTUgUENJIGNvZGUgdXNlZCB0aGUgb2xkIHZhcmlhYmxlIGFuZAogICAgICBmdW5jdGlvbiBuYW1lcwogICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgY2JmYzdjZTc1NmI4OGViMjZlNTUzN2JjN2I2MjVjNDQ1YzZkY2ZhYwpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDY6MTMgMjAwNiAtMDUwMAoKICAgICogQWRkZWQgVklBIGNvbmZpZ3VyYXRpb24gdGFibGUKICAgICogQWRkZWQgc3VwcG9ydCBmb3IgUENJMiBvbiBDRFMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDUyYzdhNjhiOGQ1ODdlYmNmNWE2YjA1MWI1OGIzZDNmZmEzNzdkZGMKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjQxIDIwMDYgLTA1MDAKCiAgICAqIEZpeGVkIFBDSSBtZW1vcnkgZGVmaW5pdGlvbnMKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDA4NzQ1NDYwOWU0NzI5NTQ0M2FmNzkzYTI4MmNkZGNkOTFhNWY0OWMKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjE3IDIwMDYgLTA1MDAKCiAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyBzZWNvbmQgUENJIGJ1cyBvbiA4NXh4CiAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgoKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiNjM2YWFlYjZmZDUxNmE0NDJmYjYxMWJiZWVkZGYzMDc3YTY4N2ZiCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0NDo0OSAyMDA2IC0wNTAwCgogICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24KICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDIwYWJiYzZmZmZhMTE1NjkwMTA3Y2M5NDJjN2FiZjg0YmRjMDNhMWIKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQ0OjIzIDIwMDYgLTA1MDAKCiAgICAqIE1hZGUgc3VyZSB0aGUgY29kZSB3aGljaCBkaXNhYmxlcyBwcmVmZXRjaCBmb3IgUENJIGRldmljZXMKICAgICAgc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcHJlZmV0Y2ggcmVnaW9uIHRvIDAKICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDQwZDVmYTM1ZDAyZGYyMjU4MDU5M2JmMDAzOWFiMTczMzY3ZThlZjAKQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgpEYXRlOglXZWQgSnVuIDI4IDEwOjQzOjM2IDIwMDYgLTA1MDAKCiAgICAqIEFkZCBGbGF0IERldiBUcmVlIGNvbnN0cnVjdGlvbiBmb3IgTVBDODV4eCBBRFMgYW5kIENEUyBib2FyZHMKICAgICAgUGF0Y2ggYnkgSm9uIExvZWxpZ2VyIDE3LUphbi0yMDA2CgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZTdlOGIwY2I1YTBjNDlkYzE4MDA3NWI5NmRmMjk2YTg5M2JmMTQ2CkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MzowMCAyMDA2IC0wNTAwCgogICAgKiBSZW1vdmVkIHRoZSBvZnRyZWUuZHRzIGZvciBzdHh4dHggaW4gbGlnaHQgb2YgdGhlIGNoYW5nZXMKICAgICAgdG8gdGhlIGZsYXQgZGV2aWNlIHRyZWUgaGFuZGxpbmcgY29kZQogICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgMWIzODBlYzIyNTY2NWU3Mzk1OTY3N2YzODkzZGM2NThjNTkyNWUwNQpBdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+CkRhdGU6CVdlZCBKdW4gMjggMTA6NDI6MjQgMjAwNiAtMDUwMAoKICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlCiAgICAgIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKCmNvbW1pdCA5OGE5YzRkNDY4YTk0MmEwOWViZTg5NzliZWM1MDgwMTdmM2U0NDYyCkF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAxMDo0MTozNyAyMDA2IC0wNTAwCgogICAgKiBNb2RpZnkgYm9vdG0gY29tbWFuZCB0byBzdXBwb3J0IGJvb3Rpbmcgd2l0aCBmbGF0IGRldmljZSB0cmVlcwogICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Cgpjb21taXQgZGEwMTJhYjY2MWZkNGFiMTY5ZGQ3YjliMzIyMDFhNGRmNjJjZjM0YQpBdXRob3I6IEppbiBaaGVuZ3hpb25nIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEp1biAyOCAwODo0Mzo1NiAyMDA2IC0wNTAwCgogICAgQ2hhbmdlIElkIHRvIHN5bWJvbGljIG5hbWUgZm9yIFJUTDgxMzkKCiAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGJjMDljZjNjMmJmYjhkNTRjNjU5Y2JiMzMyZjc5ZDA5NTA5ODJmZDAKQXV0aG9yOiBKaW4gWmhlbmd4aW9uZy1SNjQxODggPEphc29uLkppbkBmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDI3IDE4OjEyOjEwIDIwMDYgKzA4MDAKCiAgICBGaXggUlRMODEzOSBpbiBiaWcgZW5kaWFuCgogICAgc2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KICAgIHNpZ25lZC1vZmYtYnk6IFdlaSBaaGFuZyA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZmNmYjlhNTc5NDdmYzIwM2I5OWZlODFhYjA1NzhmNzI4NjI2MWY5ZgpBdXRob3I6IEppbiBaaGVuZ3hpb25nLVI2NDE4OCA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBKdW4gMjcgMTg6MTI6MjMgMjAwNiArMDgwMAoKICAgIEZpeCBUc2VjIGJ1ZyB3aGVuIG5vIGxpbmsKCiAgICAgV2hlbiB0ZnRwIGEgbm9uLWV4aXN0IGZpbGUgZnJvbSB0aGUgdGZ0cCBzZXJ2ZXIsIHUtYm9vdCB3aWxsIGNoZWNrCiAgICAgdGhlIGxpbmsgb2YgYWxsIGV0aCBwb3J0LiBUaGUgb3JpZ2luYWwgZmlsZSB3aWxsIHJldHVybiB3cm9uZyBsaW5rCiAgICAgc3RhdGUgb24gdGhlIG5vIGxpbmsgcG9ydHMuCgogICAgc2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBiZDIyYzJiOTc1MTRmYmZiMGUwM2JkOWM3MmIzNDQ1ZTRkYmQ1N2UyCkF1dGhvcjogSmluIFpoZW5neGlvbmctUjY0MTg4IDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyNyAxODoxMjowMiAyMDA2ICswODAwCgogICAgRml4IGJ1ZyBmb3IgaW9fYmFyIHNpemUgZHVyaW5nIHBjaSBzY2FuCgogICAgRHVyaW5nIHRoZSBwY2kgc2NhbiBwcm9jZXNzLCBTb21lIGRldmljZXMgcmV0dXJuIGJhcl9yZXBvbnNlIHdpdGggdGhlCiAgICBoaWdoZXN0IGJ5dGVzIDAsIHN1Y2ggYXMgdGhlIHBjaSBicmlkZ2UgaW4gdWxpMTU3NSByZXR1cm4gYmFyX3Jlc3BvbnNlCiAgICB3aXRoIDB4ZmZmZmZmLCBTbyB0aGUgYmFyX3NpemUgc2hvdWxkIGJlIG1hbnVhbGx5IHNldCB1bmRlciA2NEsuCgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBmYTdkYjljMzc3YmMyMzUzYTE3YmYxZDM4MWQ2NWE2YzQxODcyOGYwCkF1dGhvcjogSmluIFpoZW5neGlvbmctUjY0MTg4IDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyNyAxODoxMTo1NCAyMDA2ICswODAwCgogICAgRW5hYmxlIFBDSUUxIGZvciBNUEM4NjQxSFBDTiBib2FyZAoKICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgOTlkNzBlM2E0N2FmZmI5YmFlMDQxYTJjYWVjZTdjZDUxNmUyMTNiMwpBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglNb24gSnVuIDI2IDExOjA2OjAwIDIwMDYgKzAyMDAKCiAgICBNb3JlIGNvZGUgY2xlYW51cAoKY29tbWl0IDY4NDYyM2NlOTJjNWZkMzJlN2RiMmQ2ZTAxNjk0NWE2N2M1ZmZhYmEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgSnVuIDIyIDA4OjUxOjQ2IDIwMDYgLTA1MDAKCiAgICBGaXggYnVnIGluIDg2NDFocGNuIHJlc2V0IGNvbW1hbmQgd2l0aCBubyBhcmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+CiAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA4YmU0MjlhNWRkYmYwZWJlMmQ5NDE3NGJhNThmY2ZjN2EyNDI4NWRjCkF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIEp1biAyMCAxNzo0NzoxNSAyMDA2ICswODAwCgogICAgUmV3b3JrZWQgSVJRIG1hcHBpbmcgaW4gT0YtdHJlZS4KCmNvbW1pdCAwZTRjMmExN2NhMzQwMDFlZDM2ZDI1OWYxM2NiODhhZGE0NjExYThjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVGh1IEp1biAxNSAyMTozMzozNyAyMDA2IC0wNTAwCgogICAgRG8gbm90IGVuYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uIG9uIHNlY29uZGFyeSBDUFVzLgogICAgRG8gbm90IHNldCB1cCBCQVRzIG9uIHNlY29uZGFyeSBDUFVzLiAgTGV0IExpbnV4IGRvIHRoZSBuYXN0eS4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IDM4NmVkYTAyMjQ3MzM5NGFkOGYzNmI4NmYyYmRjOWI0Y2I4MTYyOTEKQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KRGF0ZToJV2VkIEp1biAxNCAxODoxNDo1NiAyMDA2ICswMjAwCgogICAgQ29kZSBjbGVhbnVwCgpjb21taXQgMTZjOGQ1ZTc2YWUwZjc4ZjM5YTYwNjA4NTc0YWRmZTBmZWI5Y2M3MApBdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgpEYXRlOglXZWQgSnVuIDE0IDE3OjQ1OjUzIDIwMDYgKzAyMDAKCiAgICBWYXJpb3VzIFVTQiByZWxhdGVkIHBhdGNoZXMKICAgIC0gQWRkIHN1cHBvcnQgZm9yIG1wYzh4eCBVU0IgZGV2aWNlLgogICAgLSBBZGQgc3VwcG9ydCBmb3IgQ29tbW9uIERldmljZSBDbGFzcyAtIEFic3RyYWN0IENvbnRyb2wgTW9kZWwgVVNCIGNvbnNvbGUuCiAgICAtIEFkZCBzdXBwb3J0IGZvciBmbG93IGNvbnRyb2wgaW4gVVNCIHNsYXZlIGRldmljZXMuCiAgICAtIEFkZCBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBnc2VyaWFsIGFuZCBjZGNfYWNtIHVzaW5nIGVudmlyb25tZW50LgogICAgLSBNaW5vciBjaGFuZ2VzIHRvIHVzYmRjb3JlX29tYXAxNTEwLmMgdXNiZGNvcmVfb21hcDE1MTAuaAogICAgLSBVcGRhdGUgdXNiY29yZSBzbGlnaHRseSB0byBlYXNlIGhvc3QgZW51bWVyYXRpb24uCiAgICAtIEZpeCBub24tcG9ydGFibGUgZW5kaWFuIHByb2JsZW1zIGluIHVzYmRjb3JlIGFuZCB1c2JkY29yZV9lcDAuCiAgICAtIEFkZCBBZGRlclVTQl9jb25maWcgYXMgYSBkZWZjb25maWcgdG8gZW5hYmxlIHVzYWdlIG9mIHRoZSBVU0IgY29uc29sZQogICAgICBieSBkZWZhdWx0IHdpdGggdGhlIEFkZGVyODd4IFUtQm9vdCBwb3J0LgogICAgUGF0Y2hlcyBieSBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+LCAyOSBNYXkgMjAwNgoKY29tbWl0IDhlY2M5NzE2MThmNTYwMjlhZDk5ZDM1MTZmOGIyOTdhNmVkNTg5NzEKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDcgMTA6NTM6NTUgMjAwNiAtMDUwMAoKICAgIEZpeCBhIGdldF9ib2FyZF9zeXNfY2xrKCkgdXNlLWJlZm9yZS1kZWYgd2FybmluZy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgoKY29tbWl0IGQ5YmY0ODU4ZmNhNWFhNGQ2NTFiMjgzMjcwZjc3ZGE3MmViYWRmZDUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgSnVuIDcgMTA6NTI6NDkgMjAwNiAtMDUwMAoKICAgIEFsbG93IERUQyBwYXRoIHRvIGJlIHBhc3NlZCBpbi4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgoKY29tbWl0IGM4M2FlOWVhNmQ5M2FiYmU3NTFiZjhhMzM5NjIzNmEwODRlNTZmODcKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgSnVuIDYgMTY6NTQ6MjkgMjAwNiAtMDQwMAoKICAgIE1vZGlmeSB0aGUgSVJRIG9mIERVQVJUMgoKY29tbWl0IGM5MzRmNjU1ZjlhZWNhNzBhNWM1Zjg4YjQ2NWQ5ZTlkNTdhOGQyMmUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgTWF5IDMxIDEzOjU1OjM1IDIwMDYgLTA1MDAKCiAgICBSZXZpZXcgY2xlYW51cHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBjYjU5NjVmYjk1Yjc3YTQ5ZjRlNmFmOTUyNDhlMGM4NDlmNGFmMDNlCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMjo0NDo0NCAyMDA2IC0wNTAwCgogICAgV2hpdGUgc3BhY2UgY2xlYW51cC4KICAgIFNvbWUgODAtY29sdW1uIGNsZWFudXBzLgogICAgQ29udmVydCBwcmludGYoKSB0byBwdXRzKCkgd2hlcmUgcG9zc2libGUuCiAgICBVc2UgI2luY2x1ZGUgInNwZF9zZHJhbS5oIiBhcyBuZWVkZWQuCiAgICBFbmhhbmNlZCByZXNldCBjb21tYW5kIHVzYWdlIG1lc3NhZ2UgYSBiaXQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCAzZDVjNWJlNTQ3NDQ1ZGQzYmQyZWI3MzY4ZDgwZGYwM2VhNDM3OTcwCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMTozOTozNCAyMDA2IC0wNTAwCgogICAgUmVtb3ZlZCB1bm5lZWRlZCBsb2NhbF9idXNfaW5pdCgpIGZyb20gODY0MUhQQ04gYm9hcmQuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCA0ZDNkNzI5YzE2YzM5MmQyOTgyZDMyNjZiNjU5ZDMzM2M5Mjc2OTdkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJV2VkIE1heSAzMSAxMToyNDoyOCAyMDA2IC0wNTAwCgogICAgTW92ZWQgbXBjODY0MWhwY25fYm9hcmRfcmVzZXQoKSBvdXQgb2YgY3B1LyBpbnRvIGJvYXJkLy4KCiAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgoKY29tbWl0IGIyYTk0MWRlMDYwMzUwYWQxNTg3OGQ4MjE5ODI1ZjQ5NTBlOWJiOGUKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglXZWQgTWF5IDMxIDEwOjA3OjI4IDIwMDYgLTA1MDAKCiAgICBSZW1vdmUgZGVhZCBkZWJ1ZyBjb2RlLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgMTI2YWE3MGYxMGJhM2QyMGUwYTZmNGQzMjMyODI1MDUxM2I3Nzc3MApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVR1ZSBNYXkgMzAgMTc6NDc6MDAgMjAwNiAtMDUwMAoKICAgIE1vdmUgbXBjODZ4eCBQSVhJUyBjb2RlIHRvIGJvYXJkIGRpcmVjdG9yeQoKICAgIEZpcnN0IGN1dCBhdCBtb3ZpbmcgdGhlIFBJWElTIHBsYXRmb3JtIGNvZGUgb3V0IG9mCiAgICB0aGUgODZ4eCBjcHUgZGlyZWN0b3J5IGFuZCBpbnRvIGJvYXJkL21wYzg2NDFocGNuCiAgICB3aGVyZSBpdCBiZWxvbmdzLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Cgpjb21taXQgZGRmODNhMmZjZWYxYTY3MGM0NWZjNTg1MTE5ZGNjMWZlMDYyYzRhOQpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMzAgMTY6NTY6MTQgMjAwNiArMDIwMAoKICAgIFN1cHBvcnQgZ2VuZXJpYyBPSENJIHN1cHBvcnQgZm9yIHRoZSBzM2MyNHgwIGNwdS4KCmNvbW1pdCAzOGNlZTEyZGNmY2MyNTczNzFjOTAxYzdlMTNlNThlY2FiMGEzNWQ4CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1heSAzMCAwOToxMDozMiAyMDA2IC0wNTAwCgogICAgSW1wcm92ZSAicmVzZXQiIGNvbW1hbmQncyBpbnRlcmFjdGlvbiB3aXRoIHdhdGNoZG9nLgoKCSJyZXNldCBhbHRiYW5rIiB3aWxsIHJlc2V0IGFub3RoZXIgYmFuayBXSVRIT1VUIHdhdGNoIGRvZyB0aW1lciBlbmFibGVkCgkicmVzZXQgYWx0YmFuayB3ZCIgd2lsbCByZXNldCBhbm90aGVyIGJhbmsgV0lUSCB3YXRjaCBkb2cgZW5hYmxlZAoJImRpc3dkIiB3aWxsIGRpc2FibGUgd2F0Y2ggZG9nIGFmdGVyIHUtYm9vdCBib290cyB1cCBzdWNjZXNzZnVsbHkKCiAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgoKY29tbWl0IDcwMjA1ZTVhNmRkYzg1MjhiMTFkYjllYjRkM2ZhMDIwOWQ5ZmNlMmEKQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgpEYXRlOglUdWUgTWF5IDMwIDA4OjUxOjE5IDIwMDYgLTA1MDAKCiAgICBGaXggdHdvIFNEUkFNIHNldHVwIGJ1Z3MuCgoJRml4IEVDQyBzZXR1cCBidWcuCglFbmFibGUgMVQvMlQgYmFzZWQgb24gbnVtYmVyIG9mIERJTU1zIHByZXNlbnQuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkMTFmZWM1MDE1MzM0ZGViMjAxMGUzNmNlMDBiYjExOGNjNTQyOWE1CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1heSAyNiAxMDoyNDo0OCAyMDA2IC0wNTAwCgogICAgQWRkIGZpcnN0IGRyYWZ0IG9mIHRoZSBNUEM4NjQxSFBDTiBkb2MvUkVBRE1FLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgZWQ0NWQ2YzkzMGI1OTM5NzE4YTg3ZWUxMmUyNWNmOWEwNTk3OGQ0YQpBdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+CkRhdGU6CUZyaSBNYXkgMjYgMTA6MTM6MDQgMjAwNiAtMDUwMAoKICAgIEFkZGVkIHBjaUA4MDAwIGJsb2NrLgogICAgVXBkYXRlZCBldGhlcm5ldCBpbnRlcnJ1cHQgbWFwcGluZ3MgKG1vdmVkIHVwIDQ4KS4KICAgIENsZWFuZWQgdXAgYSBmZXcgY29tbWVudHMuCgogICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KCmNvbW1pdCAzMDMzZWJiMjBmZDdjMzcyYzdiY2EzYzk5NTVhNDY5MmJiMjI0MGI3CkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJRnJpIE1heSAyNiAxMDowMToxNiAyMDA2IC0wNTAwCgogICAgQWxsb3cgYXJncyBvbiByZXNldCBjb21tYW5kLgoKICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Cgpjb21taXQgMzAxZjFhYTM4NGQwZWRjYWU2YTIyZmQ5YWRiOTMzYWQ3MTY5NWVjYwpBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CVR1ZSBNYXkgMjMgMTM6Mzg6MzUgMjAwNiArMDIwMAoKICAgIENoYW5nZWQgdGhlIG1wMnVzYiAoYXQ5MXJtOTIwMCkgYm9hcmQgdG8gdXNlIHRoZSBnZW5lcmljIE9IQ0kgZHJpdmVyLiBTb21lCiAgICBmaXhlcyB0byB0aGUgbGF0dGVyLgoKY29tbWl0IDI0ZTM3NjQ1ZTczNzhiMjBmYThmMjBlMjk5NmM4ZmI4ZTkwYzcwYzkKQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgpEYXRlOglUdWUgTWF5IDIzIDEwOjMzOjExIDIwMDYgKzAyMDAKCiAgICBNb3JlIGNsZWFudXAgZm9yIHRoZSBkZWx0YSBib2FyZCBhbmQgdGhlIGdlbmVyaWMgdXNiX29oY2kgZHJpdmVyLiBBZGRlZAogICAgQ0ZHX1VTQl9CT0FSRF9JTklUIGFuZCBDRkdfVVNCX0NQVV9JTklUIGZvciBlbmFibGluZyBib2FyZCBhbmQgY3B1IHNwZWNpZmljCiAgICBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBob29rcyByZXNwZWN0aXZlbHkuCgpjb21taXQgM2UzMjZlY2U5ZWJhODE4NGY1ZDQ4YWE0ZmI4Nzc2MGE4ZjZmMGYxMApBdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+CkRhdGU6CU1vbiBNYXkgMjIgMTY6MzM6NTQgMjAwNiArMDIwMAoKICAgIFRoaXMgcGF0Y2ggYWRkcyBVU0Igc3RvcmFnZSBzdXBwb3J0IGZvciB0aGUgZGVsdGEgYm9hcmQuIFRoaXMgaXMgdGhlIGZpcnN0CiAgICBib2FyZCB0byBtYWtlIHVzZSBvZiBhIGdlbmVyaWMgT0hDSSBkcml2ZXIsIHRoYXQgY2FsbHMgaG9va3MgZm9yIGJvYXJkCiAgICBkZXBlbmRhbnQgaW5pdGlhbGl6YXRpb24uCgpjb21taXQgMTRlMzcwODFmZjNjYWM3ZWJlNmU5MzgzNjUyMzQyOTg1M2I2YjI5MgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTM6Mjg6MzkgMjAwNiAtMDUwMAoKICAgIENoYW5nZSBhcmJpdHJhdGlvbiB0byByb3VuZC1yb2JpbiBmb3IgU01QIGxpbnV4LgoKY29tbWl0IDlhNjU1ODc2ZTU5OTViZTgwZjQ5MDU0ZTI1MDk1MDBlODcxZTRkM2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgpEYXRlOglGcmkgTWF5IDE5IDEzOjI2OjM0IDIwMDYgLTA1MDAKCiAgICBFbmFibGUgZHVhbCBERFIgY29udHJvbGxlcnMgYW5kIGludGVybGVhdmluZy4KCmNvbW1pdCA1ODZkMWQ1YWJkM2U1MjVmMWUxZDliODFlNWE2MWE0ZGE2YjJmYTNjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KRGF0ZToJRnJpIE1heSAxOSAxMzoyMjo0NCAyMDA2IC0wNTAwCgogICAgVXBkYXRlIDg2eHggYWRkcmVzcyBtYXAgYW5kIExBV0JBUnMuCgpjb21taXQgY2NjY2U1ZDA1ODFiYjBiYTQ2MDI3OTlhNGI1MTEyZTU4ZDE1NzljYgpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTM6MTQ6MTUgMjAwNiAtMDUwMAoKICAgIFJlbW92ZSBMMiBDYWNoZSBpbnZhbGlkYXRlIHBvbGxpbmcuCgpjb21taXQgZjM1ZWM2OGZiMDY2Y2VjMGUzNjI5NGJmZTA3ZGVjMmQ0ZThhZDNhOApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+CkRhdGU6CUZyaSBNYXkgMTkgMTI6MzM6MDkgMjAwNiAtMDUwMAoKICAgIEVuYWJsZSAybmQgQ1BVIGFuZCBJMkMuCgpjb21taXQgYmY2OTBkY2I1MTJkMzRjNGZjZWVjMGViMWU1YzBlODhhOWRiNWQ1NApBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CU1vbiBNYXkgMTUgMDc6MjY6NTYgMjAwNiAtMDUwMAoKICAgIFVwZGF0ZSBpbnRlcnJ1cHQgbWFwcGluZy4KCmNvbW1pdCA2Y2ZlYTMzNDc3YjA0YjYzZWQ0NzM4NmVkMTYyOTUyOTQ4NGMzM2JhCkF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAxMCAwOTozODowNiAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVlZGVkIElOSVRfUkFNX0xPQ0sgY2FjaGUgdHdpZGRsaW5nLgogICAgQ29ycmVjdGx5IHRyYWNrcyByMjkgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlciBub3cuCgogICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KCmNvbW1pdCBkNGRkMzE3YjU4YzEyNmEyYTdlNzNmNDc2NGVjYzFhN2M5N2Y4NzZjCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIE1heSAxMCAwOTozMzowNyAyMDA2IC0wNTAwCgogICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZsYXNoLmMgZmlsZS4KCmNvbW1pdCAxOGI2YzhjZDhhZjZjYzdmMzUxODBjZWRjNGFkYjMyMzZjYzFhMWI4CkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJVHVlIE1heSA5IDA4OjIzOjQ5IDIwMDYgLTA1MDAKCiAgICBHZXQgTVBDODY0MUhQQ04gZmxhc2ggaW1hZ2VzIHdvcmtpbmcuCgoJRW5hYmxlIHRoZSBDRkkgZHJpdmVyLgoJUmVtb3ZlIGJvZ3VzIExBV0JBUjcgY3J1ZnQuCglVc2UgY29ycmVjdCBURVhUX0JBU0UsIEZpeHVwIGxvYWQgc2NyaXB0LgoJRW5hYmxlIFNQRCBFRVBST00gZHVyaW5nIEREUiBzZXR1cC4KCVVzZSBnZW5lcmljIFJGQyAxOTE4IElQIGFkZHJlc3NlcyBieSBkZWZhdWx0LgoKY29tbWl0IDVjOWVmYjM2YTZiNTQzMTQyM2Y1Mjg4OGEwZTNiNGI1MTVmZTdlY2EKQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgpEYXRlOglUaHUgQXByIDI3IDEwOjE1OjE2IDIwMDYgLTA1MDAKCiAgICBDbGVhbnVwIHdoaXRlc3BhY2VzIGFuZCBzdHlsZSBpc3N1ZXMuCiAgICBSZW1vdmVkIC8vLXN0eWxlIGNvbW1lbnRzLgogICAgVXNlIDgwLWNvbHVtbiBsaW5lcy4KICAgIFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgogICAgUmVtb3ZlIGRlYWQgY29kZSBhbmQgZGVidWcgY3J1ZnQuCgpjb21taXQgYTIzMjBhNmJmODExM2EwOTU0NGM0MmQxNjBkMTBhYzY5ZDA0OWEwMwpBdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+CkRhdGU6CVRodSBBcHIgMjcgMDg6MjI6MzkgMjAwNiAtMDUwMAoKICAgIFJldmVydCBiYWQgUENJIHByZWZldGNoIGxpbWl0IGNoYW5nZS4KCmNvbW1pdCBkZWJiNzM1NGQxZWE0ZjY5NDE1NDgxOGRmNWU1YjUyM2Y1YzFjYzFkCkF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KRGF0ZToJV2VkIEFwciAyNiAxNzo1ODo1NiAyMDA2IC0wNTAwCgogICAgSW5pdGlhbCBzdXBwb3J0IGZvciBNUEM4NjQxIEhQQ04gYm9hcmQuCg==