ZGlmZiAtLWdpdCBhL2FwaS9jdXJyZW50LnhtbCBiL2FwaS9jdXJyZW50LnhtbAppbmRleCAwZWZjNDY2Li43MGYyYmZmIDEwMDY0NAotLS0gYS9hcGkvY3VycmVudC54bWwKKysrIGIvYXBpL2N1cnJlbnQueG1sCkBAIC03MDUsNiArNzA1LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORkMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk5GQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX0FDVElWSVRZIgogIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTMxMDkyLDYgKzMxMTAzLDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSVBFX0VYVEVSTkFMX1NUT1JBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPC9jbGFzcz4KIDwvcGFja2FnZT4KIDxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYXBwLmJhY2t1cCIKZGlmZiAtLWdpdCBhL2NtZHMvc2VydmljZW1hbmFnZXIvc2VydmljZV9tYW5hZ2VyLmMgYi9jbWRzL3NlcnZpY2VtYW5hZ2VyL3NlcnZpY2VfbWFuYWdlci5jCmluZGV4IDIyZDViMzkuLmE1YTFmMDEgMTAwNjQ0Ci0tLSBhL2NtZHMvc2VydmljZW1hbmFnZXIvc2VydmljZV9tYW5hZ2VyLmMKKysrIGIvY21kcy9zZXJ2aWNlbWFuYWdlci9zZXJ2aWNlX21hbmFnZXIuYwpAQCAtMzQsNiArMzQsNyBAQAogICAgIHsgQUlEX01FRElBLCAibWVkaWEucGxheWVyIiB9LAogICAgIHsgQUlEX01FRElBLCAibWVkaWEuY2FtZXJhIiB9LAogICAgIHsgQUlEX01FRElBLCAibWVkaWEuYXVkaW9fcG9saWN5IiB9LAorICAgIHsgQUlEX05GQywgICAibmZjIiB9LAogICAgIHsgQUlEX1JBRElPLCAicmFkaW8ucGhvbmUiIH0sCiAgICAgeyBBSURfUkFESU8sICJyYWRpby5zbXMiIH0sCiAgICAgeyBBSURfUkFESU8sICJyYWRpby5waG9uZXN1YmluZm8iIH0sCmRpZmYgLS1naXQgYS9jbWRzL3N0YWdlZnJpZ2h0L0FuZHJvaWQubWsgYi9jbWRzL3N0YWdlZnJpZ2h0L0FuZHJvaWQubWsKaW5kZXggOWE5NzI4NC4uNWI3NDAwNyAxMDA2NDQKLS0tIGEvY21kcy9zdGFnZWZyaWdodC9BbmRyb2lkLm1rCisrKyBiL2NtZHMvc3RhZ2VmcmlnaHQvQW5kcm9pZC5tawpAQCAtMTMsNyArMTMsNyBAQAogCSQoSk5JX0hfSU5DTFVERSkgXAogCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodCBcCiAJZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAotCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZQorCSQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4CiAKIExPQ0FMX0NGTEFHUyArPSAtV25vLW11bHRpY2hhcgogCkBAIC0zNyw3ICszNyw3IEBACiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAogCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodCBcCi0JJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlCisJJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgKIAogTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCiAKQEAgLTYxLDcgKzYxLDcgQEAKIExPQ0FMX0NfSU5DTFVERVM6PSBcCiAJJChKTklfSF9JTkNMVURFKSBcCiAJZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0IFwKLQkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUKKwkkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heAogCiBMT0NBTF9DRkxBR1MgKz0gLVduby1tdWx0aWNoYXIKIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlci5qYXZhCmluZGV4IDQ3MzY0MDQuLjVhZThhMWYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyLmphdmEKQEAgLTc2Myw2ICs3NjMsMTMgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19DQU5UX1NBVkVfU1RBVEUgPSAxPDwwOwogICAgICAgICAKICAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ZsYWdzfTogdGhpcyBwcm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBhCisgICAgICAgICAqIHBlcnNpc3RlbnQgc3lzdGVtIGFwcC4KKyAgICAgICAgICogQGhpZGUKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUEVSU0lTVEVOVCA9IDE8PDE7CisKKyAgICAgICAgLyoqCiAgICAgICAgICAqIEZsYWdzIG9mIGluZm9ybWF0aW9uLiAgTWF5IGJlIGFueSBvZgogICAgICAgICAgKiB7QGxpbmsgI0ZMQUdfQ0FOVF9TQVZFX1NUQVRFfS4KICAgICAgICAgICogQGhpZGUKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Db250ZXh0SW1wbC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKaW5kZXggZmRhMDhmNi4uMmRkNTgxOSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEKQEAgLTMxNDAsNiArMzE0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWG1sVXRpbHMud3JpdGVNYXBYbWwobWNyLm1hcFRvV3JpdGVUb0Rpc2ssIHN0cik7CisgICAgICAgICAgICAgICAgRmlsZVV0aWxzLnN5bmMoc3RyKTsKICAgICAgICAgICAgICAgICBzdHIuY2xvc2UoKTsKICAgICAgICAgICAgICAgICBzZXRGaWxlUGVybWlzc2lvbnNGcm9tTW9kZShtRmlsZS5nZXRQYXRoKCksIG1Nb2RlLCAwKTsKICAgICAgICAgICAgICAgICBGaWxlU3RhdHVzIHN0YXQgPSBuZXcgRmlsZVN0YXR1cygpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL2FkbWluL0RldmljZVBvbGljeU1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9hZG1pbi9EZXZpY2VQb2xpY3lNYW5hZ2VyLmphdmEKaW5kZXggMjk2ZDcwYTQuLjU3MDM1MWQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9hZG1pbi9EZXZpY2VQb2xpY3lNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL2FkbWluL0RldmljZVBvbGljeU1hbmFnZXIuamF2YQpAQCAtNTExLDYgKzUxMSwxMiBAQAogICAgIH0KICAgICAKICAgICAvKioKKyAgICAgKiBGbGFnIGZvciB7QGxpbmsgI3dpcGVEYXRhKGludCl9OiBhbHNvIGVyYXNlIHRoZSBkZXZpY2UncyBleHRlcm5hbAorICAgICAqIHN0b3JhZ2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0lQRV9FWFRFUk5BTF9TVE9SQUdFID0gMHgwMDAxOworCisgICAgLyoqCiAgICAgICogQXNrIHRoZSB1c2VyIGRhdGUgYmUgd2lwZWQuICBUaGlzIHdpbGwgY2F1c2UgdGhlIGRldmljZSB0byByZWJvb3QsCiAgICAgICogZXJhc2luZyBhbGwgdXNlciBkYXRhIHdoaWxlIG5leHQgYm9vdGluZyB1cC4gIEV4dGVybmFsIHN0b3JhZ2Ugc3VjaAogICAgICAqIGFzIFNEIGNhcmRzIHdpbGwgbm90IGJlIGVyYXNlZC4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9wYWNrYWdlLmh0bWwgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvcGFja2FnZS5odG1sCmluZGV4IDVmZjI0MGMuLjlhYzQyZGMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9wYWNrYWdlLmh0bWwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL3BhY2thZ2UuaHRtbApAQCAtMSw3ICsxLDExIEBACiA8SFRNTD4KIDxCT0RZPgotUHJvdmlkZXMgY2xhc3NlcyB0aGF0IG1hbmFnZSBCbHVldG9vdGggZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBzY2FubmluZyBmb3IKLWRldmljZXMsIGNvbm5lY3Rpbmcgd2l0aCBkZXZpY2VzLCBhbmQgbWFuYWdpbmcgZGF0YSB0cmFuc2ZlciBiZXR3ZWVuIGRldmljZXMuCis8cD5Qcm92aWRlcyBjbGFzc2VzIHRoYXQgbWFuYWdlIEJsdWV0b290aCBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIHNjYW5uaW5nIGZvcgorZGV2aWNlcywgY29ubmVjdGluZyB3aXRoIGRldmljZXMsIGFuZCBtYW5hZ2luZyBkYXRhIHRyYW5zZmVyIGJldHdlZW4gZGV2aWNlcy48L3A+CisKKzxwPkZvciBhIGNvbXBsZXRlIGd1aWRlIHRvIHVzaW5nIHRoZSBCbHVldG9vdGggQVBJcywgc2VlIHRoZSA8YQoraHJlZj0ie0Bkb2NSb290fWd1aWRlL3RvcGljcy93aXJlbGVzcy9ibHVldG9vdGguaHRtbCI+Qmx1ZXRvb3RoPC9hPiBkZXZlbG9wZXIgZ3VpZGUuPC9wPgore0Btb3JlfQogCiA8cD5UaGUgQmx1ZXRvb3RoIEFQSXMgbGV0IGFwcGxpY2F0aW9uczo8L3A+CiA8dWw+CkBAIC0yMCw5ICsyNCw2IEBACiBwZXJtaXNzaW9uLgogPC9wPgogCi08cD5Gb3IgYSBkZXRhaWxlZCBndWlkZSB0byB1c2luZyB0aGUgQmx1ZXRvb3RoIEFQSXMsIHNlZSB0aGUgPGEKLWhyZWY9IntAZG9jUm9vdH1ndWlkZS90b3BpY3Mvd2lyZWxlc3MvYmx1ZXRvb3RoLmh0bWwiPkJsdWV0b290aCBEZXYgR3VpZGUgdG9waWM8L2E+LjwvcD4KLQogPHAgY2xhc3M9Im5vdGUiPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4KIE5vdCBhbGwgQW5kcm9pZCBkZXZpY2VzIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgQmx1ZXRvb3RoIGZ1bmN0aW9uYWxpdHkuPC9wPgogPC9CT0RZPgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZXh0LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRleHQuamF2YQppbmRleCA2OTNiZTIxLi4wZGQyZTRhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRleHQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRleHQuamF2YQpAQCAtMTU1NSwxNiArMTU1NSw2IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0lQX1NFUlZJQ0UgPSAic2lwIjsKIAogICAgIC8qKgotICAgICAqIFVzZSB3aXRoIHtAbGluayAjZ2V0U3lzdGVtU2VydmljZX0gdG8gcmV0cmlldmUgYW4KLSAgICAgKiB7QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuSU5mY01hbmFnZXIuSU5mY01hbmFnZXJ9IGZvcgotICAgICAqIGFjY2Vzc2luZyBORkMgbWV0aG9kcy4KLSAgICAgKgotICAgICAqIEBzZWUgI2dldFN5c3RlbVNlcnZpY2UKLSAgICAgKiBAaGlkZQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5GQ19TRVJWSUNFID0gIm5mYyI7Ci0KLSAgICAvKioKICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBpcyBhbGxvd2VkIGZvciBhIHBhcnRpY3VsYXIKICAgICAgKiBwcm9jZXNzIGFuZCB1c2VyIElEIHJ1bm5pbmcgaW4gdGhlIHN5c3RlbS4KICAgICAgKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05kZWZNZXNzYWdlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZk1lc3NhZ2UuamF2YQppbmRleCBmY2ZmMmM5Li4zNzgzMDRlIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZk1lc3NhZ2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZk1lc3NhZ2UuamF2YQpAQCAtMjEsMTAgKzIxLDEyIEBACiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOwogCiAvKioKLSAqIE5ERUYgTWVzc2FnZSBkYXRhLgotICogPHA+Ci0gKiBJbW11dGFibGUgZGF0YSBjbGFzcy4gQW4gTkRFRiBtZXNzYWdlIGFsd2F5cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgTkRFRgotICogcmVjb3Jkcy4KKyAqIFJlcHJlc2VudHMgYW4gTkRFRiAoTkZDIERhdGEgRXhjaGFuZ2UgRm9ybWF0KSBkYXRhIG1lc3NhZ2UgdGhhdCBjb250YWlucyBvbmUgb3IgbW9yZSB7QGxpbmsKKyAqIE5kZWZSZWNvcmR9cy4KKyAqIDxwPkFuIE5ERUYgbWVzc2FnZSBpbmNsdWRlcyAicmVjb3JkcyIgdGhhdCBjYW4gY29udGFpbiBkaWZmZXJlbnQgc2V0cyBvZiBkYXRhLCBzdWNoIGFzCisgKiBNSU1FLXR5cGUgbWVkaWEsIGEgVVJJLCBvciBvbmUgb2YgdGhlIHN1cHBvcnRlZCBSVEQgdHlwZXMgKHNlZSB7QGxpbmsgTmRlZlJlY29yZH0pLiBBbiBOREVGCisgKiBtZXNzYWdlIGFsd2F5cyBjb250YWlucyB6ZXJvIG9yIG1vcmUgTkRFRiByZWNvcmRzLjwvcD4KKyAqIDxwPlRoaXMgaXMgYW4gaW1tdXRhYmxlIGRhdGEgY2xhc3MuCiAgKi8KIHB1YmxpYyBjbGFzcyBOZGVmTWVzc2FnZSBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgRkxBR19NQiA9IChieXRlKSAweDgwOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05kZWZSZWNvcmQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL25mYy9OZGVmUmVjb3JkLmphdmEKaW5kZXggYzA4ZjJlZC4uMjNmZDJjYSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05kZWZSZWNvcmQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZlJlY29yZC5qYXZhCkBAIC0yMiwyMCArMjIsMTggQEAKIGltcG9ydCBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb247CiAKIC8qKgotICogTkRFRiBSZWNvcmQgZGF0YS4KLSAqIDxwPgotICogSW1tdXRhYmxlIGRhdGEgY2xhc3MuIEFuIE5ERUYgcmVjb3JkIGFsd2F5cyBjb250YWlucworICogUmVwcmVzZW50cyBhIGxvZ2ljYWwgKHVuY2h1bmtlZCkgTkRFRiAoTkZDIERhdGEgRXhjaGFuZ2UgRm9ybWF0KSByZWNvcmQuCisgKiA8cD5BbiBOREVGIHJlY29yZCBhbHdheXMgY29udGFpbnM6CiAgKiA8dWw+Ci0gKiA8bGk+My1iaXQgVE5GIGZpZWxkCi0gKiA8bGk+VmFyaWFibGUgbGVuZ3RoIHR5cGUKLSAqIDxsaT5WYXJpYWJsZSBsZW5ndGggSUQKLSAqIDxsaT5WYXJpYWJsZSBsZW5ndGggcGF5bG9hZAorICogPGxpPjMtYml0IFRORiAoVHlwZSBOYW1lIEZvcm1hdCkgZmllbGQ6IEluZGljYXRlcyBob3cgdG8gaW50ZXJwcmV0IHRoZSB0eXBlIGZpZWxkCisgKiA8bGk+VmFyaWFibGUgbGVuZ3RoIHR5cGU6IERlc2NyaWJlcyB0aGUgcmVjb3JkIGZvcm1hdAorICogPGxpPlZhcmlhYmxlIGxlbmd0aCBJRDogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlY29yZAorICogPGxpPlZhcmlhYmxlIGxlbmd0aCBwYXlsb2FkOiBUaGUgYWN0dWFsIGRhdGEgcGF5bG9hZAogICogPC91bD4KLSAqIFRoZSBUTkYgKFR5cGUgTmFtZSBGb3JtYXQpIGZpZWxkIGluZGljYXRlcyBob3cgdG8gaW50ZXJwcmV0IHRoZSB0eXBlIGZpZWxkLgotICogPHA+Ci0gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsb2dpY2FsICh1bmNodW5rZWQpIE5ERUYgcmVjb3JkLiBUaGUgdW5kZXJseWluZworICogPHA+VGhlIHVuZGVybHlpbmcgcmVjb3JkCiAgKiByZXByZXNlbnRhdGlvbiBtYXkgYmUgY2h1bmtlZCBhY3Jvc3Mgc2V2ZXJhbCBOREVGIHJlY29yZHMgd2hlbiB0aGUgcGF5bG9hZCBpcwogICogbGFyZ2UuCisgKiA8cD5UaGlzIGlzIGFuIGltbXV0YWJsZSBkYXRhIGNsYXNzLgogICovCiBwdWJsaWMgY2xhc3MgTmRlZlJlY29yZCBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgIC8qKgpAQCAtMTcwLDYgKzE2OCwxMCBAQAogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBudWxsIGFyZ3VtZW50Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodG5mIDwgMCB8fCB0bmYgPiAweDA3KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUTkYgb3V0IG9mIHJhbmdlICIgKyB0bmYpOworICAgICAgICB9CisKICAgICAgICAgLyogZ2VuZXJhdGUgZmxhZyAqLwogICAgICAgICBieXRlIGZsYWdzID0gRkxBR19NQiB8IEZMQUdfTUU7CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL25mYy9OZGVmVGFnLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZlRhZy5qYXZhCmluZGV4IDI1MzAzYzMuLjQ1Y2RjMzEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL25mYy9OZGVmVGFnLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05kZWZUYWcuamF2YQpAQCAtMTYsMjQgKzE2LDI0IEBACiAKIHBhY2thZ2UgYW5kcm9pZC5uZmM7CiAKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKKwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKIAogLyoqCi0gKiBOZGVmVGFnIGlzIGEgVGFnIHRoYXQgaGFzIE5ERUYgbWVzc2FnZXMgb3IgY2FuIHN0b3JlIE5ERUYgbWVzc2FnZXMuCisgKiBSZXByZXNlbnRzIGEgZGlzY292ZXJlZCB0YWcgdGhhdCBjb250YWlucyB7QGxpbmsgTmRlZk1lc3NhZ2V9cyAob3IgYSB0YWcgdGhhdCBjYW4gc3RvcmUgdGhlbSkuCisgKiBJbiBwcmFjdGljZSwgYSB0YWcgaXMgYSB0aGluZyB0aGF0IGFuIE5GQy1lbmFibGVkIGRldmljZSBjYW4gY29tbXVuaWNhdGUgd2l0aC4gVGhpcworICogY2xhc3MgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBzdWNoIGEgdGFnIGFuZCBjYW4gY29udGFpbiB0aGUgTkRFRiBtZXNzYWdlcyBzaGFyZWQgYnkgdGhlIHRhZy4KKyAqIDxwPkFuIE5ERUYgdGFnIGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBOREVGIG1lc3NhZ2VzIChyZXByZXNlbnRlZCBieSB7QGxpbmsgTmRlZk1lc3NhZ2V9CisgKiBvYmplY3RzKSBpbiBhZGRpdGlvbiB0byB0aGUgYmFzaWMgdGFnIHByb3BlcnRpZXMgb2YgVUlEIGFuZCBUeXBlLgogICogPHA+Ci0gKiBOREVGIFRhZydzIGNvbnRhaW4gemVybyBvciBtb3JlIE5ERUYgTWVzc2FnZXMgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2ljCi0gKiBUYWcgcHJvcGVydGllcyBvZiBVSUQgYW5kIFR5cGUuCi0gKiA8cD4KLSAqIE5ERUYgVGFnJ3MgdGhhdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2lsbCB1c3VhbGx5IGNvbnRhaW4gYSBzaW5nbGUgTkRFRgotICogTWVzc2FnZSAoYW5kIHRoYXQgTWVzc2FnZSBjYW4gY29udGFpbiBtdWx0aXBsZSBOREVGIFJlY29yZHMpLiBIb3dldmVyIGl0Ci0gKiBpcyBwb3NzaWJsZSBmb3IgTkRFRiBUYWcncyB0byBjb250YWluIG11bHRpcGxlIE5ERUYgTWVzc2FnZXMuCi0gKiA8cD4KLSAqIFRoaXMgY2xhc3MgaXMgYSBpbW11dGFibGUgZGF0YSBjbGFzcyB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZW50cyBvZiB0aGUgTkRFRgotICogTWVzc2FnZShzKSBhcyByZWFkIGF0IFRhZyBkaXNjb3ZlcnkgdGltZS4KLSAqIDxwPgotICogTmZjQWRhcHRlci5jcmVhdGVOZGVmVGFnQ29ubmVjdGlvbigpIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgY29udGVudHMgb2YKLSAqIHNvbWUgTkRFRiBUYWcncy4KKyAqIHtAbGluayBOZGVmVGFnfXMgdGhhdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2lsbCB1c3VhbGx5IGNvbnRhaW4gYSBzaW5nbGUge0BsaW5rIE5kZWZNZXNzYWdlfQorICogKGFuZCB0aGF0IE1lc3NhZ2UgY2FuIGNvbnRhaW4gbXVsdGlwbGUge0BsaW5rIE5kZWZSZWNvcmR9cykuIEhvd2V2ZXIgaXQKKyAqIGlzIHBvc3NpYmxlIGZvciB7QGxpbmsgTmRlZlRhZ31zIHRvIGNvbnRhaW4gbXVsdGlwbGUge0BsaW5rIE5kZWZNZXNzYWdlfXMuCisgKiA8cD57QGxpbmsgTmZjQWRhcHRlciNjcmVhdGVOZGVmVGFnQ29ubmVjdGlvbiBjcmVhdGVOZGVmVGFnQ29ubmVjdGlvbigpfSBjYW4gYmUgdXNlZCB0byBtb2RpZnkgdGhlCisgKiBjb250ZW50cyBvZiBzb21lIHRhZ3MuCisgKiA8cD5UaGlzIGlzIGFuIGltbXV0YWJsZSBkYXRhIGNsYXNzLgogICovCiBwdWJsaWMgY2xhc3MgTmRlZlRhZyBleHRlbmRzIFRhZyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgIHByaXZhdGUgZmluYWwgTmRlZk1lc3NhZ2VbXSBtTWVzc2FnZXM7CkBAIC00Myw4ICs0Myw4IEBACiAgICAgICogdGFnIGlzIGRpc2NvdmVyZWQgYW5kIGJ5IFBhcmNlbGFibGUgbWV0aG9kcy4KICAgICAgKiBAaGlkZQogICAgICAqLwotICAgIHB1YmxpYyBOZGVmVGFnKGludCB0eXBlLCBieXRlW10gdWlkLCBpbnQgbmF0aXZlSGFuZGxlLCBOZGVmTWVzc2FnZVtdIG1lc3NhZ2VzKSB7Ci0gICAgICAgIHN1cGVyKHR5cGUsIHRydWUsIHVpZCwgbmF0aXZlSGFuZGxlKTsKKyAgICBwdWJsaWMgTmRlZlRhZyhTdHJpbmcgdHlwZU5hbWUsIGJ5dGVbXSB1aWQsIGludCBuYXRpdmVIYW5kbGUsIE5kZWZNZXNzYWdlW10gbWVzc2FnZXMpIHsKKyAgICAgICAgc3VwZXIodHlwZU5hbWUsIHRydWUsIHVpZCwgbmF0aXZlSGFuZGxlKTsKICAgICAgICAgbU1lc3NhZ2VzID0gbWVzc2FnZXMuY2xvbmUoKTsKICAgICB9CiAKQEAgLTY0LDEwICs2NCwyMiBAQAogCiAgICAgLyoqCiAgICAgICogR2V0IG9ubHkgdGhlIE5ERUYgTWVzc2FnZXMgZnJvbSBhIHNpbmdsZSBOREVGIHRhcmdldCBvbiBhIHRhZy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIHJldHJpZXZlcyB0aGUgTkRFRiBNZXNzYWdlcyB0aGF0IHdlcmUgZm91bmQgb24gdGhlIFRhZyBhdCBkaXNjb3ZlcnkKKyAgICAgKiB0aW1lLiBJdCBkb2VzIG5vdCBjYXVzZSBhbnkgZnVydGhlciBSRiBhY3Rpdml0eSwgYW5kIGRvZXMgbm90IGJsb2NrLgorICAgICAqIDxwPgorICAgICAqIE1vc3QgdGFncyBvbmx5IGNvbnRhaW4gYSBzaW5nbGUgTkRFRiBtZXNzYWdlLgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldCBPbmUgb2YgdGFyZ2V0cyBzdHJpbmdzIHByb3ZpZGVkIGJ5IGdldE5kZWZUYXJnZXRzKCkKKyAgICAgKiBAcmV0dXJuIE5ERUYgTWVzc2FnZXMgZm91bmQgYXQgVGFnIGRpc2NvdmVyeQogICAgICAqLwogICAgIHB1YmxpYyBOZGVmTWVzc2FnZVtdIGdldE5kZWZNZXNzYWdlcyhTdHJpbmcgdGFyZ2V0KSB7Ci0gICAgICAgIC8vVE9ETyhueHApOiBuZXcgYXBpIG1ldGhvZAotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgLy8gVE9ETzogaGFuZGxlIG11bHRpcHJvdG9jb2wKKyAgICAgICAgU3RyaW5nW10gbG9jYWxUeXBlcyA9IGNvbnZlcnRUb05kZWZUeXBlKG1UeXBlTmFtZSk7CisgICAgICAgIGlmICghdGFyZ2V0LmVxdWFscyhsb2NhbFR5cGVzWzBdKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBnZXROZGVmTWVzc2FnZXMoKTsKICAgICB9CiAKICAgICAvKiogVE9ETyhucGVsbHkpOgpAQCAtODEsMTMgKzkzLDM1IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFSR0VUX01JRkFSRV9DTEFTU0lDID0gInR5cGVfbWlmYXJlX2NsYXNzaWMiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRBUkdFVF9PVEhFUiA9ICJvdGhlciI7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNoTWFwPFN0cmluZywgU3RyaW5nW10+IE5ERUZfVFlQRVNfQ09OVkVSVElPTl9UQUJMRSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nW10+KCkgeworICAgICAgICB7CisgICAgICAgICAgICAvLyBUT0RPOiBoYW5kbGUgbXVsdGlwcm90b2NvbAorICAgICAgICAgICAgLy8gVE9ETzogbW92ZSBJTlRFUk5BTF9UQVJHRVRfVHlwZSB0byBUQVJHRVRfVFlQRSBtYXBwaW5nIHRvIE5GQyBzZXJ2aWNlCisgICAgICAgICAgICBwdXQoVGFnLklOVEVSTkFMX1RBUkdFVF9UWVBFX0pFV0VMLCBuZXcgU3RyaW5nW10geyBOZGVmVGFnLlRBUkdFVF9UWVBFXzEgfSk7CisgICAgICAgICAgICBwdXQoVGFnLklOVEVSTkFMX1RBUkdFVF9UWVBFX01JRkFSRV9VTCwgbmV3IFN0cmluZ1tdIHsgTmRlZlRhZy5UQVJHRVRfVFlQRV8yIH0pOworICAgICAgICAgICAgcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfMUssIG5ldyBTdHJpbmdbXSB7IE5kZWZUYWcuVEFSR0VUX01JRkFSRV9DTEFTU0lDIH0pOworICAgICAgICAgICAgcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfNEssIG5ldyBTdHJpbmdbXSB7IE5kZWZUYWcuVEFSR0VUX01JRkFSRV9DTEFTU0lDIH0pOworICAgICAgICAgICAgcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9GRUxJQ0EsIG5ldyBTdHJpbmdbXSB7IE5kZWZUYWcuVEFSR0VUX1RZUEVfMyB9KTsKKyAgICAgICAgICAgIHB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfSVNPMTQ0NDNfNCwgbmV3IFN0cmluZ1tdIHsgTmRlZlRhZy5UQVJHRVRfVFlQRV80IH0pOworICAgICAgICAgICAgcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfREVTRklSRSwgbmV3IFN0cmluZ1tdIHsgTmRlZlRhZy5UQVJHRVRfVFlQRV80IH0pOworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgU3RyaW5nW10gY29udmVydFRvTmRlZlR5cGUoU3RyaW5nIGludGVybmFsVHlwZU5hbWUpIHsKKyAgICAgICAgU3RyaW5nW10gcmVzdWx0ID0gIE5ERUZfVFlQRVNfQ09OVkVSVElPTl9UQUJMRS5nZXQoaW50ZXJuYWxUeXBlTmFtZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXSB7IE5kZWZUYWcuVEFSR0VUX09USEVSIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBSZXR1cm4gdGhlCiAgICAgICoKICAgICAgKiBAcmV0dXJuCiAgICAgICovCiAgICAgcHVibGljIFN0cmluZ1tdIGdldE5kZWZUYXJnZXRzKCkgewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05kZWZUeXBlKG1UeXBlTmFtZSk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xMDksNyArMTQzLDcgQEAKICAgICAgICAgICAgIGludCBtZXNzYWdlc0xlbmd0aCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIE5kZWZNZXNzYWdlW10gbWVzc2FnZXMgPSBuZXcgTmRlZk1lc3NhZ2VbbWVzc2FnZXNMZW5ndGhdOwogICAgICAgICAgICAgaW4ucmVhZFR5cGVkQXJyYXkobWVzc2FnZXMsIE5kZWZNZXNzYWdlLkNSRUFUT1IpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBOZGVmVGFnKHRhZy5tVHlwZSwgdGFnLm1VaWQsIHRhZy5tTmF0aXZlSGFuZGxlLCBtZXNzYWdlcyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IE5kZWZUYWcodGFnLm1UeXBlTmFtZSwgdGFnLm1VaWQsIHRhZy5tTmF0aXZlSGFuZGxlLCBtZXNzYWdlcyk7CiAgICAgICAgIH0KICAgICAgICAgcHVibGljIE5kZWZUYWdbXSBuZXdBcnJheShpbnQgc2l6ZSkgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBOZGVmVGFnW3NpemVdOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05kZWZUYWdDb25uZWN0aW9uLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZlRhZ0Nvbm5lY3Rpb24uamF2YQppbmRleCAwNjk2YjM3Li40Nzk1ZmE3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZlRhZ0Nvbm5lY3Rpb24uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmRlZlRhZ0Nvbm5lY3Rpb24uamF2YQpAQCAtMjIsNyArMjIsMTIgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogCiAvKioKLSAqIE5kZWZUYWdDb25uZWN0aW9uIGlzIGEgY29ubmVjdGlvbiB0byBhbiBOREVGIHRhcmdldCBvbiBhbiBOREVGIHRhZy4KKyAqIEEgY29ubmVjdGlvbiB0byBhbiBOREVGIHRhcmdldCBvbiBhbiB7QGxpbmsgTmRlZlRhZ30uCisgKiA8cD5Zb3UgY2FuIGFjcXVpcmUgdGhpcyBraW5kIG9mIGNvbm5lY3Rpb24gd2l0aCB7QGxpbmsgTmZjQWRhcHRlciNjcmVhdGVOZGVmVGFnQ29ubmVjdGlvbgorICogY3JlYXRlTmRlZlRhZ0Nvbm5lY3Rpb24oKX0uIFVzZSB0aGUgY29ubmVjdGlvbiB0byByZWFkIG9yIHdyaXRlIHtAbGluayBOZGVmTWVzc2FnZX1zLgorICogPHAgY2xhc3M9Im5vdGUiPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4KKyAqIFVzZSBvZiB0aGlzIGNsYXNzIHJlcXVpcmVzIHRoZSB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30KKyAqIHBlcm1pc3Npb24uCiAgKi8KIHB1YmxpYyBjbGFzcyBOZGVmVGFnQ29ubmVjdGlvbiBleHRlbmRzIFJhd1RhZ0Nvbm5lY3Rpb24gewogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5ERUZfTU9ERV9SRUFEX09OQ0UgPSAxOwpAQCAtMzcsMTYgKzQyLDM3IEBACiAgICAgICogSW50ZXJuYWwgY29uc3RydWN0b3IsIHRvIGJlIHVzZWQgYnkgTmZjQWRhcHRlcgogICAgICAqIEBoaWRlCiAgICAgICovCi0gICAgTmRlZlRhZ0Nvbm5lY3Rpb24oSU5mY0FkYXB0ZXIgc2VydmljZSwgTmRlZlRhZyB0YWcpIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgIC8qIHBhY2thZ2UgcHJpdmF0ZSAqLyBOZGVmVGFnQ29ubmVjdGlvbihJTmZjQWRhcHRlciBzZXJ2aWNlLCBOZGVmVGFnIHRhZywgU3RyaW5nIHRhcmdldCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgIHN1cGVyKHNlcnZpY2UsIHRhZyk7CisgICAgICAgIFN0cmluZ1tdIHRhcmdldHMgPSB0YWcuZ2V0TmRlZlRhcmdldHMoKTsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IHZhbGlkaXR5CisgICAgICAgIGZvciAoaT0wOyBpPHRhcmdldHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuZXF1YWxzKHRhcmdldHNbaV0pKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gdGFyZ2V0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIFRhcmdldCBub3QgZm91bmQKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEludGVybmFsIGNvbnN0cnVjdG9yLCB0byBiZSB1c2VkIGJ5IE5mY0FkYXB0ZXIKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIC8qIHBhY2thZ2UgcHJpdmF0ZSAqLyBOZGVmVGFnQ29ubmVjdGlvbihJTmZjQWRhcHRlciBzZXJ2aWNlLCBOZGVmVGFnIHRhZykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMoc2VydmljZSwgdGFnLCB0YWcuZ2V0TmRlZlRhcmdldHMoKVswXSk7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogUmVhZCBOREVGIG1lc3NhZ2UocykuCiAgICAgICogVGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIG1vc3QgdXAgdG8gZGF0ZSBwYXlsb2FkLCBhbmQgY2FuIGJsb2NrLgotICAgICAqIEl0IGNhbiBiZSBjYW5jZWxlZCB3aXRoIGNsb3NlKCkuCisgICAgICogSXQgY2FuIGJlIGNhbmNlbGVkIHdpdGgge0BsaW5rIFJhd1RhZ0Nvbm5lY3Rpb24jY2xvc2V9LgogICAgICAqIE1vc3QgTkRFRiB0YWdzIHdpbGwgY29udGFpbiBqdXN0IG9uZSBOREVGIG1lc3NhZ2UuCi0gICAgICogPHA+CisgICAgICogPHA+UmVxdWlyZXMge0BsaW5rIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbiNORkN9IHBlcm1pc3Npb24uCiAgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHRhZyBpcyBub3QgTkRFRiBmb3JtYXR0ZWQKICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHRoZSB0YXJnZXQgaXMgbG9zdCBvciBjb25uZWN0aW9uIGNsb3NlZAogICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCkBAIC03OSwxNSArMTA1LDE2IEBACiAgICAgLyoqCiAgICAgICogQXR0ZW1wdCB0byB3cml0ZSBhbiBOREVGIG1lc3NhZ2UgdG8gYSB0YWcuCiAgICAgICogVGhpcyBtZXRob2Qgd2lsbCBibG9jayB1bnRpbCB0aGUgZGF0YSBpcyB3cml0dGVuLiBJdCBjYW4gYmUgY2FuY2VsZWQKLSAgICAgKiB3aXRoIGNsb3NlKCkuCisgICAgICogd2l0aCB7QGxpbmsgUmF3VGFnQ29ubmVjdGlvbiNjbG9zZX0uCiAgICAgICogTWFueSB0YWdzIGFyZSB3cml0ZS1vbmNlLCBzbyB1c2UgdGhpcyBtZXRob2QgY2FyZWZ1bGx5LgogICAgICAqIFNwZWNpZmljYXRpb24gYWxsb3dzIGZvciBtdWx0aXBsZSBOREVGIG1lc3NhZ2VzIHBlciBOREVGIHRhZywgYnV0IGl0IGlzCiAgICAgICogZW5jb3VyYWdlIHRvIG9ubHkgd3JpdGUgb25lIG1lc3NhZ2UsIHRoaXMgc28gQVBJIG9ubHkgdGFrZXMgYSBzaW5nbGUKLSAgICAgKiBtZXNzYWdlLiBVc2UgTmRlZlJlY29yZCB0byB3cml0ZSBzZXZlcmFsIHJlY29yZHMgdG8gYSBzaW5nbGUgdGFnLgotICAgICAqIEZvciB3cml0ZS1tYW55IHRhZ3MsIHVzZSBtYWtlUmVhZE9ubHkoKSBhZnRlciB0aGlzIG1ldGhvZCB0byBhdHRlbXB0CisgICAgICogbWVzc2FnZS4gVXNlIHtAbGluayBOZGVmUmVjb3JkfSB0byB3cml0ZSBzZXZlcmFsIHJlY29yZHMgdG8gYSBzaW5nbGUgdGFnLgorICAgICAqIEZvciB3cml0ZS1tYW55IHRhZ3MsIHVzZSB7QGxpbmsgI21ha2VSZWFkT25seX0gYWZ0ZXIgdGhpcyBtZXRob2QgdG8gYXR0ZW1wdAogICAgICAqIHRvIHByZXZlbnQgZnVydGhlciBtb2RpZmljYXRpb24uIEZvciB3cml0ZS1vbmNlIHRhZ3MgdGhpcyBpcyBub3QKLSAgICAgKiBuZWNjZXNhcnkuCi0gICAgICogUmVxdWlyZXMgTkZDX1dSSVRFIHBlcm1pc3Npb24uCisgICAgICogbmVjZXNzYXJ5LgorICAgICAqIDxwPlJlcXVpcmVzIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfSBwZXJtaXNzaW9uLgorICAgICAqCiAgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHRhZyBpcyBub3Qgc3VpdGFibGUgZm9yIE5ERUYgbWVzc2FnZXMKICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHRoZSB0YXJnZXQgaXMgbG9zdCBvciBjb25uZWN0aW9uIGNsb3NlZCBvciB0aGUKICAgICAgKiAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGZhaWxlZApAQCAtMTE0LDggKzE0MSw4IEBACiAgICAgLyoqCiAgICAgICogQXR0ZW1wdHMgdG8gbWFrZSB0aGUgTkRFRiBkYXRhIGluIHRoaXMgdGFnIHJlYWQtb25seS4KICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJsb2NrIHVudGlsIHRoZSBhY3Rpb24gaXMgY29tcGxldGUuIEl0IGNhbiBiZSBjYW5jZWxlZAotICAgICAqIHdpdGggY2xvc2UoKS4KLSAgICAgKiBSZXF1aXJlcyBORkNfV1JJVEUgcGVybWlzc2lvbi4KKyAgICAgKiB3aXRoIHtAbGluayBSYXdUYWdDb25uZWN0aW9uI2Nsb3NlfS4KKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRhZyBpcyBub3cgcmVhZC1vbmx5CiAgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiB0aGUgdGFyZ2V0IGlzIGxvc3QsIG9yIGNvbm5lY3Rpb24gY2xvc2VkCiAgICAgICovCkBAIC0xNDEsNyArMTY4LDggQEAKIAogICAgIC8qKgogICAgICAqIFJlYWQvV3JpdGUgbW9kZSBoaW50LgotICAgICAqIFByb3ZpZGVzIGEgaGludCBpZiBmdXJ0aGVyIHJlYWRzIG9yIHdyaXRlcyBhcmUgbGlrZWx5IHRvIHN1Y2VlZC4KKyAgICAgKiBQcm92aWRlcyBhIGhpbnQgaWYgZnVydGhlciByZWFkcyBvciB3cml0ZXMgYXJlIGxpa2VseSB0byBzdWNjZWVkLgorICAgICAqIDxwPlJlcXVpcmVzIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfSBwZXJtaXNzaW9uLgogICAgICAqIEByZXR1cm4gb25lIG9mIE5ERUZfTU9ERQogICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gaWYgdGhlIHRhcmdldCBpcyBsb3N0IG9yIGNvbm5lY3Rpb24gY2xvc2VkCiAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmZjQWRhcHRlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05mY0FkYXB0ZXIuamF2YQppbmRleCAwMmI5ZmI3MS4uZDc2YWM0MSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL05mY0FkYXB0ZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvTmZjQWRhcHRlci5qYXZhCkBAIC0xNSwxNiArMTUsMTggQEAKIAogaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5TZGtDb25zdGFudDsKIGltcG9ydCBhbmRyb2lkLmFubm90YXRpb24uU2RrQ29uc3RhbnQuU2RrQ29uc3RhbnRUeXBlOworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5JUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQubmZjLklOZmNBZGFwdGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKLS8vVE9ETyhucGVsbHkpIHBlcm1pc3Npb24ge0BsaW5rIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbiNORkNfTU9ESUZZfQogLyoqCi0gKiBSZXByZXNlbnRzIGEgbG9jYWwgTkZDIEFkYXB0ZXIuCisgKiBSZXByZXNlbnRzIHRoZSBkZXZpY2UncyBsb2NhbCBORkMgYWRhcHRlci4KICAqIDxwPgogICogVXNlIHRoZSBzdGF0aWMge0BsaW5rICNnZXREZWZhdWx0QWRhcHRlcn0gbWV0aG9kIHRvIGdldCB0aGUgZGVmYXVsdCBORkMKICAqIEFkYXB0ZXIgZm9yIHRoaXMgQW5kcm9pZCBkZXZpY2UuIE1vc3QgQW5kcm9pZCBkZXZpY2VzIHdpbGwgaGF2ZSBvbmx5IG9uZSBORkMKQEAgLTM1LDcgKzM3LDcgQEAKICAqIHRvIE5GQyBUYWdzLgogICogPHAgY2xhc3M9Im5vdGUiPgogICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBTb21lIG1ldGhvZHMgcmVxdWlyZSB0aGUKLSAqIFRPRE8gcGVybWlzc2lvbi4KKyAqIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfSBwZXJtaXNzaW9uLgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgTmZjQWRhcHRlciB7CiAgICAgLyoqCkBAIC0xNTMsNiArMTU1LDI2IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogSGVscGVyIHRvIGNoZWNrIGlmIHRoaXMgZGV2aWNlIGhhcyBGRUFUVVJFX05GQywgYnV0IHdpdGhvdXQgdXNpbmcKKyAgICAgKiBhIGNvbnRleHQuCisgICAgICogRXF1aXZhbGVudCB0bworICAgICAqIGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5oYXNTeXN0ZW1GZWF0dXJlKFBhY2thZ2VNYW5hZ2VyLkZFQVRVUkVfTkZDKQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaGFzTmZjRmVhdHVyZSgpIHsKKyAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgaWYgKHBtID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgIkNhbm5vdCBnZXQgcGFja2FnZSBtYW5hZ2VyLCBhc3N1bWluZyBubyBORkMgZmVhdHVyZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gcG0uaGFzU3lzdGVtRmVhdHVyZShQYWNrYWdlTWFuYWdlci5GRUFUVVJFX05GQyk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJQYWNrYWdlIG1hbmFnZXIgcXVlcnkgZmFpbGVkLCBhc3N1bWluZyBubyBORkMgZmVhdHVyZSIsIGUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogR2V0IGEgaGFuZGxlIHRvIHRoZSBkZWZhdWx0IE5GQyBBZGFwdGVyIG9uIHRoaXMgQW5kcm9pZCBkZXZpY2UuCiAgICAgICogPHA+CiAgICAgICogTW9zdCBBbmRyb2lkIGRldmljZXMgd2lsbCBvbmx5IGhhdmUgb25lIE5GQyBBZGFwdGVyIChORkMgQ29udHJvbGxlcikuCkBAIC0xNjYsMTAgKzE4OCwxNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc0lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUT0RPKG5wZWxseSk6IGNoZWNrIHdoaWNoIG1ldGhvZCB0byB1c2UgaGVyZSB0byBnZXQgdGhlIHNlcnZpY2UKLSAgICAgICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5ORkNfU0VSVklDRSk7CisgICAgICAgICAgICAvKiBpcyB0aGlzIGRldmljZSBtZWFudCB0byBoYXZlIE5GQyAqLworICAgICAgICAgICAgaWYgKCFoYXNOZmNGZWF0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJ0aGlzIGRldmljZSBkb2VzIG5vdCBoYXZlIE5GQyBzdXBwb3J0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGdldCBhIGhhbmRsZSB0byBORkMgc2VydmljZSAqLworICAgICAgICAgICAgSUJpbmRlciBiID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgibmZjIik7CiAgICAgICAgICAgICBpZiAoYiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7ICAvLyBUaGlzIGRldmljZSBkb2VzIG5vdCBoYXZlIE5GQworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgImNvdWxkIG5vdCByZXRyaWV2ZSBORkMgc2VydmljZSIpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzQWRhcHRlciA9IG5ldyBOZmNBZGFwdGVyKElOZmNBZGFwdGVyLlN0dWIuYXNJbnRlcmZhY2UoYikpOwpAQCAtMjMxLDggKzI2MCw3IEBACiAgICAgICogPGxpPnByb3ZpZGUgdGhlIE5ERUYgbWVzc2FnZSBvbiBvdmVyIExMQ1AgdG8gcGVlciBORkMgYWRhcHRlcnMKICAgICAgKiA8L3VsPgogICAgICAqIFRoZSBOREVGIG1lc3NhZ2UgaXMgcHJlc2VydmVkIGFjcm9zcyByZWJvb3QuCi0gICAgICogPHA+Ci0gICAgICogUmVxdWlyZXMgTkZDX1dSSVRFIHBlcm1pc3Npb24KKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKgogICAgICAqIEBwYXJhbSBtZXNzYWdlIE5ERUYgbWVzc2FnZSB0byBtYWtlIHB1YmxpYwogICAgICAqLwpAQCAtMjQ2LDggKzI3NCw3IEBACiAKICAgICAvKioKICAgICAgKiBHZXQgdGhlIE5ERUYgTWVzc2FnZSB0aGF0IHRoaXMgYWRhcHRlciBhcHBlYXJzIGFzIHRvIFRhZyByZWFkZXJzLgotICAgICAqIDxwPgotICAgICAqIFJlcXVpcmVzIE5GQ19XUklURSBwZXJtaXNzaW9uCisgICAgICogPHA+UmVxdWlyZXMge0BsaW5rIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbiNORkN9IHBlcm1pc3Npb24uCiAgICAgICoKICAgICAgKiBAcmV0dXJuIE5ERUYgTWVzc2FnZSB0aGF0IGlzIHB1YmxpY2x5IHJlYWRhYmxlCiAgICAgICovCkBAIC0yNjIsNiArMjg5LDcgQEAKIAogICAgIC8qKgogICAgICAqIENyZWF0ZSBhIHJhdyB0YWcgY29ubmVjdGlvbiB0byB0aGUgZGVmYXVsdCBUYXJnZXQKKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKi8KICAgICBwdWJsaWMgUmF3VGFnQ29ubmVjdGlvbiBjcmVhdGVSYXdUYWdDb25uZWN0aW9uKFRhZyB0YWcpIHsKICAgICAgICAgdHJ5IHsKQEAgLTI3NCwxNCArMzAyLDIwIEBACiAKICAgICAvKioKICAgICAgKiBDcmVhdGUgYSByYXcgdGFnIGNvbm5lY3Rpb24gdG8gdGhlIHNwZWNpZmllZCBUYXJnZXQKKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKi8KICAgICBwdWJsaWMgUmF3VGFnQ29ubmVjdGlvbiBjcmVhdGVSYXdUYWdDb25uZWN0aW9uKFRhZyB0YWcsIFN0cmluZyB0YXJnZXQpIHsKLSAgICAgICAgLy9UT0RPCi0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSYXdUYWdDb25uZWN0aW9uKG1TZXJ2aWNlLCB0YWcsIHRhcmdldCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJORkMgc2VydmljZSBkaWVkIiwgZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgogICAgICAqIENyZWF0ZSBhbiBOREVGIHRhZyBjb25uZWN0aW9uIHRvIHRoZSBkZWZhdWx0IFRhcmdldAorICAgICAqIDxwPlJlcXVpcmVzIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfSBwZXJtaXNzaW9uLgogICAgICAqLwogICAgIHB1YmxpYyBOZGVmVGFnQ29ubmVjdGlvbiBjcmVhdGVOZGVmVGFnQ29ubmVjdGlvbihOZGVmVGFnIHRhZykgewogICAgICAgICB0cnkgewpAQCAtMjk0LDkgKzMyOCwxNCBAQAogCiAgICAgLyoqCiAgICAgICogQ3JlYXRlIGFuIE5ERUYgdGFnIGNvbm5lY3Rpb24gdG8gdGhlIHNwZWNpZmllZCBUYXJnZXQKKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKi8KICAgICBwdWJsaWMgTmRlZlRhZ0Nvbm5lY3Rpb24gY3JlYXRlTmRlZlRhZ0Nvbm5lY3Rpb24oTmRlZlRhZyB0YWcsIFN0cmluZyB0YXJnZXQpIHsKLSAgICAgICAgLy9UT0RPCi0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBOZGVmVGFnQ29ubmVjdGlvbihtU2VydmljZSwgdGFnLCB0YXJnZXQpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiTkZDIHNlcnZpY2UgZGllZCIsIGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvUmF3VGFnQ29ubmVjdGlvbi5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvbmZjL1Jhd1RhZ0Nvbm5lY3Rpb24uamF2YQppbmRleCA2N2E4MzZmLi4yNjVlYjFiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9uZmMvUmF3VGFnQ29ubmVjdGlvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL25mYy9SYXdUYWdDb25uZWN0aW9uLmphdmEKQEAgLTIyLDE4ICsyMiwxNiBAQAogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKIC8qKgotICogUmF3VGFnQ29ubmVjdGlvbiBpcyBhIGxvdy1sZXZlbCBjb25uZWN0aW9uIHRvIGEgVGFnLgorICogQSBsb3ctbGV2ZWwgY29ubmVjdGlvbiB0byBhIHtAbGluayBUYWd9IHRhcmdldC4KKyAqIDxwPllvdSBjYW4gYWNxdWlyZSB0aGlzIGtpbmQgb2YgY29ubmVjdGlvbiB3aXRoIHtAbGluayBOZmNBZGFwdGVyI2NyZWF0ZVJhd1RhZ0Nvbm5lY3Rpb24KKyAqIGNyZWF0ZVJhd1RhZ0Nvbm5lY3Rpb24oKX0uIFVzZSB0aGUgY29ubmVjdGlvbiB0byBzZW5kIGFuZCByZWNlaXZlIGRhdGEgd2l0aCB7QGxpbmsgI3RyYW5zY2VpdmUKKyAqIHRyYW5zY2VpdmUoKX0uCiAgKiA8cD4KLSAqIFRoZSBvbmx5IGRhdGEgdHJhbnNmZXIgbWV0aG9kIHRoYXQgVGFnQ29ubmVjdGlvbiBvZmZlcnMgaXMgdHJhbnNjZWl2ZSgpLgotICogQXBwbGljYXRpb25zIG11c3QgaW1wbGVtZW50IHRoZXJlIG93biBwcm90b2NvbCBzdGFjayBvbiB0b3Agb2YgdHJhbnNjZWl2ZSgpLgotICogPHA+Ci0gKiBVc2UgTmZjQWRhcHRlci5jcmVhdGVSYXdUYWdDb25uZWN0aW9uKCkgdG8gY3JlYXRlIGEgUmF3VGFnQ29ubmVjdGlvbiBvYmplY3QuCisgKiBBcHBsaWNhdGlvbnMgbXVzdCBpbXBsZW1lbnQgdGhlaXIgb3duIHByb3RvY29sIHN0YWNrIG9uIHRvcCBvZiB7QGxpbmsgI3RyYW5zY2VpdmUgdHJhbnNjZWl2ZSgpfS4KICAqCi0gKiAqIDxwIGNsYXNzPSJub3RlIj48c3Ryb25nPk5vdGU6PC9zdHJvbmc+Ci0gKiBNb3N0IG1ldGhvZHMgcmVxdWlyZSB0aGUge0BsaW5rIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbiNCTFVFVE9PVEh9Ci0gKiBwZXJtaXNzaW9uIGFuZCBzb21lIGFsc28gcmVxdWlyZSB0aGUKLSAqIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jQkxVRVRPT1RIX0FETUlOfSBwZXJtaXNzaW9uLgotCisgKiA8cCBjbGFzcz0ibm90ZSI+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPgorICogVXNlIG9mIHRoaXMgY2xhc3MgcmVxdWlyZXMgdGhlIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfQorICogcGVybWlzc2lvbi4KICAqLwogcHVibGljIGNsYXNzIFJhd1RhZ0Nvbm5lY3Rpb24gewogCkBAIC00MSwzNiArMzksNjAgQEAKICAgICAvKnBhY2thZ2UqLyBmaW5hbCBJTmZjVGFnIG1UYWdTZXJ2aWNlOwogICAgIC8qcGFja2FnZSovIGZpbmFsIFRhZyBtVGFnOwogICAgIC8qcGFja2FnZSovIGJvb2xlYW4gbUlzQ29ubmVjdGVkOworICAgIC8qcGFja2FnZSovIFN0cmluZyBtU2VsZWN0ZWRUYXJnZXQ7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIk5GQyI7CiAKLSAgICAvKiBwYWNrYWdlIHByaXZhdGUgKi8gUmF3VGFnQ29ubmVjdGlvbihJTmZjQWRhcHRlciBzZXJ2aWNlLCBUYWcgdGFnKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAvKiBwYWNrYWdlIHByaXZhdGUgKi8gUmF3VGFnQ29ubmVjdGlvbihJTmZjQWRhcHRlciBzZXJ2aWNlLCBUYWcgdGFnLCBTdHJpbmcgdGFyZ2V0KSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nW10gdGFyZ2V0cyA9IHRhZy5nZXRSYXdUYXJnZXRzKCk7CisgICAgICAgIGludCBpOworCisgICAgICAgIC8vIENoZWNrIHRhcmdldCB2YWxpZGl0eQorICAgICAgICBmb3IgKGk9MDtpPHRhcmdldHMubGVuZ3RoO2krKykgeworICAgICAgICAgICAgaWYgKHRhcmdldC5lcXVhbHModGFyZ2V0c1tpXSkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSB0YXJnZXRzLmxlbmd0aCkgeworICAgICAgICAgICAgLy8gVGFyZ2V0IG5vdCBmb3VuZAorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgICAgICB9CisKICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOwogICAgICAgICBtVGFnU2VydmljZSA9IHNlcnZpY2UuZ2V0TmZjVGFnSW50ZXJmYWNlKCk7CiAgICAgICAgIG1TZXJ2aWNlLm9wZW5UYWdDb25uZWN0aW9uKHRhZyk7ICAvLyBUT0RPKG54cCk6IGRvbid0IGNvbm5lY3QgdW50aWwgY29ubmVjdCgpCiAgICAgICAgIG1UYWcgPSB0YWc7CisgICAgICAgIG1TZWxlY3RlZFRhcmdldCA9IHRhcmdldDsKKyAgICB9CisKKyAgICAvKiBwYWNrYWdlIHByaXZhdGUgKi8gUmF3VGFnQ29ubmVjdGlvbihJTmZjQWRhcHRlciBzZXJ2aWNlLCBUYWcgdGFnKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhzZXJ2aWNlLCB0YWcsIHRhZy5nZXRSYXdUYXJnZXRzKClbMF0pOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdldCB0aGUgVGFnIHRoaXMgY29ubmVjdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGguCisgICAgICogR2V0IHRoZSB7QGxpbmsgVGFnfSB0aGlzIGNvbm5lY3Rpb24gaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgICAqIDxwPlJlcXVpcmVzIHtAbGluayBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24jTkZDfSBwZXJtaXNzaW9uLgogICAgICAqLwogICAgIHB1YmxpYyBUYWcgZ2V0VGFnKCkgewogICAgICAgICByZXR1cm4gbVRhZzsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KKyAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldFRhZ1RhcmdldCgpIHsKLSAgICAgICAgLy9UT0RPCi0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gbVNlbGVjdGVkVGFyZ2V0OwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEhlbHBlciB0byBpbmRpY2F0ZSBpZiB0cmFuc2NlaXZlKCkgY2FsbHMgbWlnaHQgc3VjY2VlZC4KKyAgICAgKiBIZWxwZXIgdG8gaW5kaWNhdGUgaWYge0BsaW5rICN0cmFuc2NlaXZlIHRyYW5zY2VpdmUoKX0gY2FsbHMgbWlnaHQgc3VjY2VlZC4KICAgICAgKiA8cD4KICAgICAgKiBEb2VzIG5vdCBjYXVzZSBSRiBhY3Rpdml0eSwgYW5kIGRvZXMgbm90IGJsb2NrLgotICAgICAqIDxwPgotICAgICAqIFJldHVybnMgdHJ1ZSBpZiBjb25uZWN0KCkgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksIGFuZCB0aGUgVGFnIGlzIG5vdAotICAgICAqIHlldCBrbm93biB0byBiZSBvdXQgb2YgcmFuZ2UuIEFwcGxpY2F0aW9ucyBtdXN0IHN0aWxsIGhhbmRsZSBJT0V4Y2VwdGlvbgotICAgICAqIHdoaWxlIHVzaW5nIHRyYW5zY2VpdmUoKS4KKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYge0BsaW5rICNjb25uZWN0fSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhbmQgdGhlIHtAbGluayBUYWd9IGlzIGJlbGlldmVkCisgICAgICogdG8gYmUgd2l0aGluIHJhbmdlLiBBcHBsaWNhdGlvbnMgbXVzdCBzdGlsbCBoYW5kbGUge0BsaW5rIGphdmEuaW8uSU9FeGNlcHRpb259CisgICAgICogd2hpbGUgdXNpbmcge0BsaW5rICN0cmFuc2NlaXZlIHRyYW5zY2VpdmUoKX0sIGluIGNhc2UgY29ubmVjdGlvbiBpcyBsb3N0IGFmdGVyIHRoaXMgbWV0aG9kCisgICAgICogcmV0dXJucyB0cnVlLgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIGlzQ29ubmVjdGVkKCkgewogICAgICAgICAvLyBUT0RPKG54cCk6IHVwZGF0ZSBtSXNDb25uZWN0ZWQgd2hlbiB0YWcgZ29lcyBvdXQgb2YgcmFuZ2UgLQpAQCAtODAsMTMgKzEwMiwxMyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIENvbm5lY3QgdG8gdGFnLgorICAgICAqIENvbm5lY3QgdG8gdGhlIHtAbGluayBUYWd9IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbm5lY3Rpb24uCiAgICAgICogPHA+CiAgICAgICogVGhpcyBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgogICAgICAqIDxwPgotICAgICAqIGNsb3NlKCkgY2FuIGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkIHRvIGNhbmNlbCB0aGlzIGNvbm5lY3Rpb24KKyAgICAgKiB7QGxpbmsgI2Nsb3NlfSBjYW4gYmUgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgdG8gY2FuY2VsIHRoaXMgY29ubmVjdGlvbgogICAgICAqIGF0dGVtcHQuCi0gICAgICoKKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHRoZSB0YXJnZXQgaXMgbG9zdCwgb3IgY29ubmVjdCBjYW5jZWxlZAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGNvbm5lY3QoKSB0aHJvd3MgSU9FeGNlcHRpb24gewpAQCAtOTUsMTMgKzExNywxNCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIENsb3NlIHRhZyBjb25uZWN0aW9uLgorICAgICAqIENsb3NlIHRoaXMgY29ubmVjdGlvbi4KICAgICAgKiA8cD4KLSAgICAgKiBDYXVzZXMgYmxvY2tpbmcgb3BlcmF0aW9ucyBzdWNoIGFzIHRyYW5zY2VpdmUoKSBvciBjb25uZWN0KCkgdG8KLSAgICAgKiBiZSBjYW5jZWxlZCBhbmQgaW1tZWRpYXRlbHkgdGhyb3cgSU9FeGNlcHRpb24uCisgICAgICogQ2F1c2VzIGJsb2NraW5nIG9wZXJhdGlvbnMgc3VjaCBhcyB7QGxpbmsgI3RyYW5zY2VpdmUgdHJhbnNjZWl2ZSgpfSBvciB7QGxpbmsgI2Nvbm5lY3R9IHRvCisgICAgICogYmUgY2FuY2VsZWQgYW5kIGltbWVkaWF0ZWx5IHRocm93IHtAbGluayBqYXZhLmlvLklPRXhjZXB0aW9ufS4KICAgICAgKiA8cD4KLSAgICAgKiBUaGlzIG9iamVjdCBjYW5ub3QgYmUgcmUtdXNlZCBhZnRlciBjYWxsaW5nIGNsb3NlKCkuIEZ1cnRoZXIgY2FsbHMKLSAgICAgKiB0byB0cmFuc2NlaXZlKCkgb3IgY29ubmVjdCgpIHdpbGwgZmFpbC4KKyAgICAgKiBPbmNlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgdGhpcyBvYmplY3QgY2Fubm90IGJlIHJlLXVzZWQgYW5kIHNob3VsZCBiZSBkaXNjYXJkZWQuIEZ1cnRoZXIKKyAgICAgKiBjYWxscyB0byB7QGxpbmsgI3RyYW5zY2VpdmUgdHJhbnNjZWl2ZSgpfSBvciB7QGxpbmsgI2Nvbm5lY3R9IHdpbGwgZmFpbC4KKyAgICAgKiA8cD5SZXF1aXJlcyB7QGxpbmsgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uI05GQ30gcGVybWlzc2lvbi4KICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHsKICAgICAgICAgbUlzQ29ubmVjdGVkID0gZmFsc2U7CkBAIC0xMTMsMTIgKzEzNiwxMSBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFNlbmQgZGF0YSB0byBhIHRhZywgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UuCisgICAgICogU2VuZCBkYXRhIHRvIGEgdGFnIGFuZCByZWNlaXZlIHRoZSByZXNwb25zZS4KICAgICAgKiA8cD4KICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJsb2NrIHVudGlsIHRoZSByZXNwb25zZSBpcyByZWNlaXZlZC4gSXQgY2FuIGJlIGNhbmNlbGVkCi0gICAgICogd2l0aCBjbG9zZSgpLgotICAgICAqIDxwPgotICAgICAqIFJlcXVpcmVzIE5GQ19XUklURSBwZXJtaXNzaW9uLgorICAgICAqIHdpdGgge0BsaW5rICNjbG9zZX0uCisgICAgICogPHA+UmVxdWlyZXMge0BsaW5rIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbiNORkN9IHBlcm1pc3Npb24uCiAgICAgICoKICAgICAgKiBAcGFyYW0gZGF0YSBieXRlcyB0byBzZW5kCiAgICAgICogQHJldHVybiBieXRlcyByZWNlaXZlZCBpbiByZXNwb25zZQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmZjL1RhZy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvbmZjL1RhZy5qYXZhCmluZGV4IDhmNzMxZTcuLmFiZjAyYjUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL25mYy9UYWcuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvVGFnLmphdmEKQEAgLTE2LDI3ICsxNiwzMCBAQAogCiBwYWNrYWdlIGFuZHJvaWQubmZjOwogCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CiAKIC8qKgotICogSW1tdXRhYmxlIGRhdGEgY2xhc3MsIHJlcHJlc2VudHMgYSBkaXNjb3ZlcmVkIHRhZy4KKyAqIFJlcHJlc2VudHMgYSAoZ2VuZXJpYykgZGlzY292ZXJlZCB0YWcuCiAgKiA8cD4KICAqIEEgdGFnIGlzIGEgcGFzc2l2ZSBORkMgZWxlbWVudCwgc3VjaCBhcyBORkMgRm9ydW0gVGFnJ3MsIE1pZmFyZSBjbGFzcyBUYWdzLAogICogU29ueSBGZWxpY2EgVGFncy4KICAqIDxwPgogICogVGFnJ3MgaGF2ZSBhIHR5cGUgYW5kIHVzdWFsbHkgaGF2ZSBhIFVJRC4KICAqIDxwPgotICogVGFnIG9iamVjdHMgYXJlIHBhc3NlZCB0byBhcHBsaWNhdGlvbnMgdmlhIHRoZSBOZmNBZGFwdGVyLkVYVFJBX1RBRyBleHRyYQotICogaW4gTmZjQWRhcHRlci5BQ1RJT05fVEFHX0RJU0NPVkVSRUQgaW50ZW50cy4gVGhlIFRhZyBvYmplY3QgaXMgaW1tdXRhYmxlCi0gKiBhbmQgcmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgdGhlIFRhZyBhdCB0aGUgdGltZSBvZiBkaXNjb3ZlcnkuIEl0IGNhbiBiZQotICogZGlyZWN0bHkgcXVlcmllZCBmb3IgaXRzIFVJRCBhbmQgVHlwZSwgb3IgdXNlZCB0byBjcmVhdGUgYSBUYWdDb25uZWN0aW9uCi0gKiAoTmZjQWRhcHRlci5jcmVhdGVUYWdDb25uZWN0aW9uKCkpLgorICoge0BsaW5rIFRhZ30gb2JqZWN0cyBhcmUgcGFzc2VkIHRvIGFwcGxpY2F0aW9ucyB2aWEgdGhlIHtAbGluayBOZmNBZGFwdGVyI0VYVFJBX1RBR30gZXh0cmEKKyAqIGluIHtAbGluayBOZmNBZGFwdGVyI0FDVElPTl9UQUdfRElTQ09WRVJFRH0gaW50ZW50cy4gQSB7QGxpbmsgVGFnfSBvYmplY3QgaXMgaW1tdXRhYmxlCisgKiBhbmQgcmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgdGhlIHRhZyBhdCB0aGUgdGltZSBvZiBkaXNjb3ZlcnkuIEl0IGNhbiBiZQorICogZGlyZWN0bHkgcXVlcmllZCBmb3IgaXRzIFVJRCBhbmQgVHlwZSwgb3IgdXNlZCB0byBjcmVhdGUgYSB7QGxpbmsgUmF3VGFnQ29ubmVjdGlvbn0KKyAqICh3aXRoIHtAbGluayBOZmNBZGFwdGVyI2NyZWF0ZVJhd1RhZ0Nvbm5lY3Rpb24gY3JlYXRlUmF3VGFnQ29ubmVjdGlvbigpfSkuCiAgKiA8cD4KLSAqIFRoaXMgVGFnIG9iamVjdCBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSBhIFRhZ0Nvbm5lY3Rpb24gd2hpbGUgaXQgaXMgaW4KLSAqIHJhbmdlLiBJZiBpdCBpcyByZW1vdmVkIGFuZCB0aGVuIHJldHVybmVkIHRvIHJhbmdlIHRoZW4gdGhlIG1vc3QgcmVjZW50Ci0gKiBUYWcgb2JqZWN0IChpbiBBQ1RJT05fVEFHX0RJU0NPVkVSRUQpIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhCi0gKiBUYWdDb25uZWN0aW9uLgorICogQSB7QGxpbmsgVGFnfSBjYW4gIGJlIHVzZWQgdG8gY3JlYXRlIGEge0BsaW5rIFJhd1RhZ0Nvbm5lY3Rpb259IG9ubHkgd2hpbGUgdGhlIHRhZyBpcyBpbgorICogcmFuZ2UuIElmIGl0IGlzIHJlbW92ZWQgYW5kIHRoZW4gcmV0dXJuZWQgdG8gcmFuZ2UsIHRoZW4gdGhlIG1vc3QgcmVjZW50CisgKiB7QGxpbmsgVGFnfSBvYmplY3QgKGluIHtAbGluayBOZmNBZGFwdGVyI0FDVElPTl9UQUdfRElTQ09WRVJFRH0pIHNob3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhCisgKiB7QGxpbmsgUmF3VGFnQ29ubmVjdGlvbn0uCisgKiA8cD5UaGlzIGlzIGFuIGltbXV0YWJsZSBkYXRhIGNsYXNzLgogICovCiBwdWJsaWMgY2xhc3MgVGFnIGltcGxlbWVudHMgUGFyY2VsYWJsZSB7CiAKQEAgLTExMiwxNyArMTE1LDczIEBACiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQVJHRVRfT1RIRVIgPSAib3RoZXIiOwogCi0gICAgLypwYWNrYWdlKi8gZmluYWwgaW50IG1UeXBlOworICAgIC8qcGFja2FnZSovIGZpbmFsIFN0cmluZyBtVHlwZU5hbWU7CiAgICAgLypwYWNrYWdlKi8gZmluYWwgYm9vbGVhbiBtSXNOZGVmOwogICAgIC8qcGFja2FnZSovIGZpbmFsIGJ5dGVbXSBtVWlkOwogICAgIC8qcGFja2FnZSovIGZpbmFsIGludCBtTmF0aXZlSGFuZGxlOwogCisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9JU08xNDQ0M18zQSA9ICJJc28xNDQ0My0zQSI7CisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9JU08xNDQ0M18zQiA9ICJJc28xNDQ0My0zQiI7CisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9JU08xNDQ0M180ID0gIklzbzE0NDQzLTQiOworICAgIC8qcGFja2FnZSovIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX1VMID0gIk1pZmFyZVVMIjsKKyAgICAvKnBhY2thZ2UqLyBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVSTkFMX1RBUkdFVF9UWVBFX01JRkFSRV8xSyA9ICJNaWZhcmUxSyI7CisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfNEsgPSAiTWlmYXJlNEsiOworICAgIC8qcGFja2FnZSovIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX0RFU0ZJUkUgPSAiTWlmYXJlREVTRklSRSI7CisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfVU5LTk9XTiA9ICJVbmtub3duIE1pZmFyZSI7CisgICAgLypwYWNrYWdlKi8gc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9UQVJHRVRfVFlQRV9GRUxJQ0EgPSAiRmVsaWNhIjsKKyAgICAvKnBhY2thZ2UqLyBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVSTkFMX1RBUkdFVF9UWVBFX0pFV0VMID0gIkpld2VsIjsKKyAgICAvKnBhY2thZ2UqLyBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVSTkFMX1RBUkdFVF9UWVBFX1VOS05PV04gPSAiVW5rbm93biBUeXBlIjsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBJbnRlZ2VyPiBJTlRfVFlQRVNfQ09OVkVSVElPTl9UQUJMRSA9IG5ldyBIYXNoTWFwPFN0cmluZywgSW50ZWdlcj4oKSB7CisJCXsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfSVNPMTQ0NDNfM0EsIFRhZy5ORkNfVEFHX0lTTzE0NDQzX0EgKTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfSVNPMTQ0NDNfM0IsIFRhZy5ORkNfVEFHX0lTTzE0NDQzX0IgKTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX1VMLCBUYWcuTkZDX1RBR19NSUZBUkUgKTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFXzFLLCBUYWcuTkZDX1RBR19NSUZBUkUgKTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFXzRLLCBUYWcuTkZDX1RBR19NSUZBUkUgKTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX0RFU0ZJUkUsIFRhZy5ORkNfVEFHX01JRkFSRSApOworCQkJcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9GRUxJQ0EsIFRhZy5ORkNfVEFHX0ZFTElDQSApOworCQkJcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9KRVdFTCwgVGFnLk5GQ19UQUdfSkVXRUwgKTsKKwkJfQorCX07CisKKwlwcml2YXRlIGludCBjb252ZXJ0VG9JbnQoU3RyaW5nIGludGVybmFsVHlwZU5hbWUpIHsKKwkJSW50ZWdlciByZXN1bHQgPSBJTlRfVFlQRVNfQ09OVkVSVElPTl9UQUJMRS5nZXQoaW50ZXJuYWxUeXBlTmFtZSk7CisJCWlmIChyZXN1bHQgPT0gbnVsbCkgeworCQkgICAgcmV0dXJuIFRhZy5ORkNfVEFHX09USEVSOworCQl9CisJCXJldHVybiByZXN1bHQ7CisgICAgfQorCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZ1tdPiBSQVdfVFlQRVNfQ09OVkVSVElPTl9UQUJMRSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nW10+KCkgeworCQl7CisJCQkvKiBUT0RPOiBoYW5kbGUgbXVsdGlwcm90b2NvbCAqLworCQkJcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9JU08xNDQ0M18zQSwgbmV3IFN0cmluZ1tdIHsgVGFnLlRBUkdFVF9JU09fMTQ0NDNfM0EgfSk7CisJCQlwdXQoVGFnLklOVEVSTkFMX1RBUkdFVF9UWVBFX0lTTzE0NDQzXzNCLCBuZXcgU3RyaW5nW10geyBUYWcuVEFSR0VUX0lTT18xNDQ0M18zQiB9KTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX1VMLCBuZXcgU3RyaW5nW10geyBUYWcuVEFSR0VUX0lTT18xNDQ0M18zQSB9KTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFXzFLLCBuZXcgU3RyaW5nW10geyBUYWcuVEFSR0VUX0lTT18xNDQ0M18zQSB9KTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFXzRLLCBuZXcgU3RyaW5nW10geyBUYWcuVEFSR0VUX0lTT18xNDQ0M18zQSB9KTsKKwkJCXB1dChUYWcuSU5URVJOQUxfVEFSR0VUX1RZUEVfTUlGQVJFX0RFU0ZJUkUsIG5ldyBTdHJpbmdbXSB7IFRhZy5UQVJHRVRfSVNPXzE0NDQzXzNBIH0pOworCQkJcHV0KFRhZy5JTlRFUk5BTF9UQVJHRVRfVFlQRV9NSUZBUkVfVU5LTk9XTiwgbmV3IFN0cmluZ1tdIHsgVGFnLlRBUkdFVF9JU09fMTQ0NDNfM0EgfSk7CisJCQlwdXQoVGFnLklOVEVSTkFMX1RBUkdFVF9UWVBFX0ZFTElDQSwgbmV3IFN0cmluZ1tdIHsgVGFnLlRBUkdFVF9KSVNfWF82MzE5XzQgfSk7CisJCQlwdXQoVGFnLklOVEVSTkFMX1RBUkdFVF9UWVBFX0pFV0VMLCBuZXcgU3RyaW5nW10geyBUYWcuVEFSR0VUX1RPUEFaIH0pOworCQl9CisJfTsKKworCXByaXZhdGUgU3RyaW5nW10gY29udmVydFRvUmF3KFN0cmluZyBpbnRlcm5hbFR5cGVOYW1lKSB7CisJICAgIFN0cmluZ1tdIHJlc3VsdCA9ICBSQVdfVFlQRVNfQ09OVkVSVElPTl9UQUJMRS5nZXQoaW50ZXJuYWxUeXBlTmFtZSk7CisJICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworCSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXSB7IFRhZy5UQVJHRVRfT1RIRVIgfTsKKwkgICAgfQorCSAgICByZXR1cm4gcmVzdWx0OworCX0KKwogICAgIC8qKgogICAgICAqIEhpZGRlbiBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGJ5IE5GQyBzZXJ2aWNlIG9ubHkuCiAgICAgICogQGhpZGUKICAgICAgKi8KLSAgICBwdWJsaWMgVGFnKGludCB0eXBlLCBib29sZWFuIGlzTmRlZiwgYnl0ZVtdIHVpZCwgaW50IG5hdGl2ZUhhbmRsZSkgewotICAgICAgICBtVHlwZSA9IHR5cGU7CisgICAgcHVibGljIFRhZyhTdHJpbmcgdHlwZU5hbWUsIGJvb2xlYW4gaXNOZGVmLCBieXRlW10gdWlkLCBpbnQgbmF0aXZlSGFuZGxlKSB7CisgICAgICAgIG1UeXBlTmFtZSA9IHR5cGVOYW1lOwogICAgICAgICBtSXNOZGVmID0gaXNOZGVmOwogICAgICAgICBtVWlkID0gdWlkLmNsb25lKCk7CiAgICAgICAgIG1OYXRpdmVIYW5kbGUgPSBuYXRpdmVIYW5kbGU7CkBAIC0xNDMsOCArMjAyLDcgQEAKICAgICAgKiBAcmV0dXJuCiAgICAgICovCiAgICAgcHVibGljIFN0cmluZ1tdIGdldFJhd1RhcmdldHMoKSB7Ci0gICAgICAgIC8vVE9ETwotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1JhdyhtVHlwZU5hbWUpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTU4LDcgKzIxNiw3IEBACiAgICAgICogQGhpZGUKICAgICAgKi8KICAgICBwdWJsaWMgaW50IGdldFR5cGUoKSB7Ci0gICAgICAgIHJldHVybiBtVHlwZTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0ludChtVHlwZU5hbWUpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTg3LDcgKzI0NSw3IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgZGVzdCwgaW50IGZsYWdzKSB7CiAgICAgICAgIGJvb2xlYW5bXSBib29sZWFucyA9IG5ldyBib29sZWFuW10ge21Jc05kZWZ9OwotICAgICAgICBkZXN0LndyaXRlSW50KG1UeXBlKTsKKyAgICAgICAgZGVzdC53cml0ZVN0cmluZyhtVHlwZU5hbWUpOwogICAgICAgICBkZXN0LndyaXRlQm9vbGVhbkFycmF5KGJvb2xlYW5zKTsKICAgICAgICAgZGVzdC53cml0ZUludChtVWlkLmxlbmd0aCk7CiAgICAgICAgIGRlc3Qud3JpdGVCeXRlQXJyYXkobVVpZCk7CkBAIC0xOTgsNyArMjU2LDcgQEAKICAgICAgICAgICAgIG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8VGFnPigpIHsKICAgICAgICAgcHVibGljIFRhZyBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBpbikgewogICAgICAgICAgICAgYm9vbGVhbltdIGJvb2xlYW5zID0gbmV3IGJvb2xlYW5bMV07Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIFN0cmluZyB0eXBlID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgaW4ucmVhZEJvb2xlYW5BcnJheShib29sZWFucyk7CiAgICAgICAgICAgICBib29sZWFuIGlzTmRlZiA9IGJvb2xlYW5zWzBdOwogICAgICAgICAgICAgaW50IHVpZExlbmd0aCA9IGluLnJlYWRJbnQoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL25mYy9wYWNrYWdlLmh0bWwgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NTRjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZmMvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxIVE1MPgorPEJPRFk+CitQcm92aWRlcyBhY2Nlc3MgdG8gTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIGZ1bmN0aW9uYWxpdHksIGFsbG93aW5nIGFwcGxpY2F0aW9ucyB0byBjb25uZWN0Cit0byBORkMgdGFncywgdGhlbiB0cmFuc21pdCBhbmQgcmVjaWV2aW5nIGRhdGEuIEEgInRhZyIgbWF5IGFjdHVhbGx5IGJlIGFub3RoZXIgZGV2aWNlIHRoYXQgYXBwZWFycworYXMgYSB0YWcuCisKKzxwPkhlcmUncyBhIHN1bW1hcnkgb2YgdGhlIGNsYXNzZXM6PC9wPgorCis8ZGw+CisgIDxkdD57QGxpbmsgYW5kcm9pZC5uZmMuTmZjQWRhcHRlcn08L2R0PgorICA8ZGQ+VGhpcyByZXByZXNlbnRzIHRoZSBkZXZpY2UncyBORkMgYWRhcHRlciwgd2hpY2ggaXMgeW91ciBlbnRyeS1wb2ludCB0byBwZXJmb3JtaW5nIE5GQworb3BlcmF0aW9ucy4gT25jZSB5b3UgYWNxdWlyZSBhbiBpbnN0YW5jZSB3aXRoIHtAbGluayBhbmRyb2lkLm5mYy5OZmNBZGFwdGVyI2dldERlZmF1bHRBZGFwdGVyfSwgeW91CitjYW4gY3JlYXRlIGNvbm5lY3Rpb25zIHRvIHRhZ3MuPC9kZD4KKyAgPGR0PntAbGluayBhbmRyb2lkLm5mYy5OZGVmVGFnfSBhbmQge0BsaW5rIGFuZHJvaWQubmZjLlRhZ308L2R0PgorICA8ZGQ+VGhlc2Ugb2JqZWN0cyByZXByZXNlbnQgYSB0YWcuIEEgdGFnIGlzIGEgdGhpbmcgdGhhdCB0aGUgTkZDLWVuYWJsZWQgZGV2aWNlIGNhbgorY29tbXVuaWNhdGUgd2l0aCB3aGVuIHdpdGhpbiByYW5nZS4gVXN1YWxseSwgeW91J2xsIHdvcmsgd2l0aCB7QGxpbmsgYW5kcm9pZC5uZmMuTmRlZlRhZ30sIHdoaWNoCityZXByZXNlbnRzIGEgdGFnIHRoYXQncyBjb21wbGlhbnQgd2l0aCB0aGUgTkZDIERhdGEgRXhjaGFuZ2UgRm9ybWF0IChOREVGKTsgYSB7QGxpbmsKK2FuZHJvaWQubmZjLlRhZ30gcmVwcmVzZW50cyBhIGdlbmVyYWxpemVkIHRhZy4gTm90ZSB0aGF0IHtAbGluayBhbmRyb2lkLm5mYy5OZGVmVGFnfSBleHRlbmRzCit7QGxpbmsgYW5kcm9pZC5uZmMuVGFnfS48L2RkPgorICA8ZHQ+e0BsaW5rIGFuZHJvaWQubmZjLk5kZWZUYWdDb25uZWN0aW9ufSBhbmQge0BsaW5rIGFuZHJvaWQubmZjLlJhd1RhZ0Nvbm5lY3Rpb259PC9kdD4KKyAgPGRkPlRoZXNlIG9iamVjdHMgcmVwcmVzZW50IGEgY29ubmVjdGlvbiB0byBhIHRhZywgcmVzcGVjdGl2ZSB0byB0aGUgdHlwZSBvZiB0YWcgY29ubmVjdGVkCisoZWl0aGVyIHtAbGluayBhbmRyb2lkLm5mYy5OZGVmVGFnfSBvciB7QGxpbmsgYW5kcm9pZC5uZmMuVGFnfSkuIE5vdGUgdGhhdCB7QGxpbmsKK2FuZHJvaWQubmZjLk5kZWZUYWdDb25uZWN0aW9ufSBleHRlbmRzIHtAbGluayBhbmRyb2lkLm5mYy5SYXdUYWdDb25uZWN0aW9ufS48L2RkPgorICA8ZHQ+e0BsaW5rIGFuZHJvaWQubmZjLk5kZWZNZXNzYWdlfTwvZHQ+CisgIDxkZD5SZXByZXNlbnRzIGFuIE5ERUYgZGF0YSBtZXNzYWdlLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IGluIHdoaWNoICJyZWNvcmRzIgorY2FycnlpbmcgZGF0YSBhcmUgdHJhbnNtaXR0ZWQgYmV0d2VlbiBkZXZpY2VzIGFuZCB0YWdzLiBZb3VyIGFwcGxpY2F0aW9uIGNhbiByZWNlaXZlIHRoZXNlCittZXNzYWdlcyBmcm9tIGFuIHtAbGluayBhbmRyb2lkLm5mYy5OZGVmVGFnQ29ubmVjdGlvbn0uPC9kZD4KKyAgPGR0PntAbGluayBhbmRyb2lkLm5mYy5OZGVmUmVjb3JkfTwvZHQ+CisgIDxkZD5SZXByZXNlbnRzIGEgcmVjb3JkLCB3aGljaCBpcyBkZWxpdmVyZWQgaW4gYSB7QGxpbmsgYW5kcm9pZC5uZmMuTmRlZk1lc3NhZ2V9IGFuZCBkZXNjcmliZXMgdGhlCit0eXBlIG9mIGRhdGEgYmVpbmcgc2hhcmVkIGFuZCBjYXJyaWVzIHRoZSBkYXRhIGl0c2VsZi48L2RkPgorPC9kbD4KKworPHAgY2xhc3M9Im5vdGUiPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4KK05vdCBhbGwgQW5kcm9pZC1wb3dlcmVkIGRldmljZXMgcHJvdmlkZSBORkMgZnVuY3Rpb25hbGl0eS48L3A+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9vcy9GaWxlVXRpbHMuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0ZpbGVVdGlscy5qYXZhCmluZGV4IGExN2I3ZmUuLjliNTc4NzMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0ZpbGVVdGlscy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0ZpbGVVdGlscy5qYXZhCkBAIC05MSw3ICs5MSwyMiBAQAogICAgICAqIEByZXR1cm4gdm9sdW1lIElEIG9yIC0xCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGdldEZhdFZvbHVtZUlkKFN0cmluZyBtb3VudFBvaW50KTsKLSAgICAgICAgCisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGZzeW5jIG9uIHRoZSBnaXZlbiBGaWxlT3V0cHV0U3RyZWFtLiAgVGhlIHN0cmVhbSBhdCB0aGlzCisgICAgICogcG9pbnQgbXVzdCBiZSBmbHVzaGVkIGJ1dCBub3QgeWV0IGNsb3NlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gc3luYyhGaWxlT3V0cHV0U3RyZWFtIHN0cmVhbSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHN0cmVhbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3RyZWFtLmdldEZEKCkuc3luYygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gY29weSBhIGZpbGUgZnJvbSBzcmNGaWxlIHRvIGRlc3RGaWxlLCByZXR1cm4gdHJ1ZSBpZiBzdWNjZWVkLCByZXR1cm4KICAgICAvLyBmYWxzZSBpZiBmYWlsCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNvcHlGaWxlKEZpbGUgc3JjRmlsZSwgRmlsZSBkZXN0RmlsZSkgewpAQCAtMTE4LDcgKzEzMyw3IEBACiAgICAgICAgICAgICBpZiAoZGVzdEZpbGUuZXhpc3RzKCkpIHsKICAgICAgICAgICAgICAgICBkZXN0RmlsZS5kZWxldGUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvdXQgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShkZXN0RmlsZSk7CisgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIG91dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGRlc3RGaWxlKTsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzQwOTZdOwogICAgICAgICAgICAgICAgIGludCBieXRlc1JlYWQ7CkBAIC0xMjYsNiArMTQxLDExIEBACiAgICAgICAgICAgICAgICAgICAgIG91dC53cml0ZShidWZmZXIsIDAsIGJ5dGVzUmVhZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBvdXQuZmx1c2goKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBvdXQuZ2V0RkQoKS5zeW5jKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBvdXQuY2xvc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhCmluZGV4IGY2OTVkYmIuLmE3MThmYzYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1Byb2Nlc3MuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Qcm9jZXNzLmphdmEKQEAgLTg2LDYgKzg2LDEyIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0lGSV9VSUQgPSAxMDEwOwogCiAgICAgLyoqCisgICAgICogRGVmaW5lcyB0aGUgVUlEL0dJRCBmb3IgdGhlIE5GQyBzZXJ2aWNlIHByb2Nlc3MuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBORkNfVUlEID0gMTAyMjsKKworICAgIC8qKgogICAgICAqIERlZmluZXMgdGhlIHN0YXJ0IG9mIGEgcmFuZ2Ugb2YgVUlEcyAoYW5kIEdJRHMpLCBnb2luZyBmcm9tIHRoaXMKICAgICAgKiBudW1iZXIgdG8ge0BsaW5rICNMQVNUX0FQUExJQ0FUSU9OX1VJRH0gdGhhdCBhcmUgcmVzZXJ2ZWQgZm9yIGFzc2lnbmluZwogICAgICAqIHRvIGFwcGxpY2F0aW9ucy4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1ZpYnJhdG9yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9WaWJyYXRvci5qYXZhCmluZGV4IDE4OTVjZjguLjU4ZWQ5ODYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1ZpYnJhdG9yLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvVmlicmF0b3IuamF2YQpAQCAtMTYsNiArMTYsOCBAQAogCiBwYWNrYWdlIGFuZHJvaWQub3M7CiAKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCiAvKioKICAqIENsYXNzIHRoYXQgb3BlcmF0ZXMgdGhlIHZpYnJhdG9yIG9uIHRoZSBkZXZpY2UuCiAgKiA8cD4KQEAgLTIzLDYgKzI1LDggQEAKICAqLwogcHVibGljIGNsYXNzIFZpYnJhdG9yCiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJWaWJyYXRvciI7CisKICAgICBJVmlicmF0b3JTZXJ2aWNlIG1TZXJ2aWNlOwogICAgIHByaXZhdGUgZmluYWwgQmluZGVyIG1Ub2tlbiA9IG5ldyBCaW5kZXIoKTsKIApAQCAtNDAsOSArNDQsMTQgQEAKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB2aWJyYXRlKGxvbmcgbWlsbGlzZWNvbmRzKQogICAgIHsKKyAgICAgICAgaWYgKG1TZXJ2aWNlID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byB2aWJyYXRlOyBubyB2aWJyYXRvciBzZXJ2aWNlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBtU2VydmljZS52aWJyYXRlKG1pbGxpc2Vjb25kcywgbVRva2VuKTsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byB2aWJyYXRlLiIsIGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02MSwxMyArNzAsMTggQEAKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB2aWJyYXRlKGxvbmdbXSBwYXR0ZXJuLCBpbnQgcmVwZWF0KQogICAgIHsKKyAgICAgICAgaWYgKG1TZXJ2aWNlID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byB2aWJyYXRlOyBubyB2aWJyYXRvciBzZXJ2aWNlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIC8vIGNhdGNoIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBzZXJ2ZXIgd2lsbCBkbyBub3RoaW5nLiAgcGF0dGVybiBtYXkKICAgICAgICAgLy8gbm90IGJlIG51bGwsIGxldCB0aGF0IGJlIGNoZWNrZWQsIGJlY2F1c2UgdGhlIHNlcnZlciB3aWxsIGRyb3AgaXQKICAgICAgICAgLy8gYW55d2F5CiAgICAgICAgIGlmIChyZXBlYXQgPCBwYXR0ZXJuLmxlbmd0aCkgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBtU2VydmljZS52aWJyYXRlUGF0dGVybihwYXR0ZXJuLCByZXBlYXQsIG1Ub2tlbik7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdG8gdmlicmF0ZS4iLCBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oKTsKQEAgLTc5LDkgKzkzLDEzIEBACiAgICAgICovCiAgICAgcHVibGljIHZvaWQgY2FuY2VsKCkKICAgICB7CisgICAgICAgIGlmIChtU2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIG1TZXJ2aWNlLmNhbmNlbFZpYnJhdGUobVRva2VuKTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBjYW5jZWwgdmlicmF0aW9uLiIsIGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQppbmRleCA5YzRhZWZlLi4wOTE4NDRlIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQpAQCAtMTYzLDcgKzE2Myw4IEBACiAgICAgICAgICAgICBAVmlld0RlYnVnLkludFRvU3RyaW5nKGZyb20gPSBUWVBFX0tFWUdVQVJEX0RJQUxPRywgdG8gPSAiVFlQRV9LRVlHVUFSRF9ESUFMT0ciKSwKICAgICAgICAgICAgIEBWaWV3RGVidWcuSW50VG9TdHJpbmcoZnJvbSA9IFRZUEVfU1lTVEVNX0VSUk9SLCB0byA9ICJUWVBFX1NZU1RFTV9FUlJPUiIpLAogICAgICAgICAgICAgQFZpZXdEZWJ1Zy5JbnRUb1N0cmluZyhmcm9tID0gVFlQRV9JTlBVVF9NRVRIT0QsIHRvID0gIlRZUEVfSU5QVVRfTUVUSE9EIiksCi0gICAgICAgICAgICBAVmlld0RlYnVnLkludFRvU3RyaW5nKGZyb20gPSBUWVBFX0lOUFVUX01FVEhPRF9ESUFMT0csIHRvID0gIlRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRyIpCisgICAgICAgICAgICBAVmlld0RlYnVnLkludFRvU3RyaW5nKGZyb20gPSBUWVBFX0lOUFVUX01FVEhPRF9ESUFMT0csIHRvID0gIlRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRyIpLAorICAgICAgICAgICAgQFZpZXdEZWJ1Zy5JbnRUb1N0cmluZyhmcm9tID0gVFlQRV9TRUNVUkVfU1lTVEVNX09WRVJMQVksIHRvID0gIlRZUEVfU0VDVVJFX1NZU1RFTV9PVkVSTEFZIikKICAgICAgICAgfSkKICAgICAgICAgcHVibGljIGludCB0eXBlOwogICAgIApAQCAtMzQxLDcgKzM0MiwxOSBAQAogICAgICAgICAgKiBXaW5kb3cgdHlwZTogcGFuZWwgdGhhdCBzbGlkZXMgb3V0IGZyb20gdGhlIHN0YXR1cyBiYXIKICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfU1RBVFVTX0JBUl9QQU5FTCAgID0gRklSU1RfU1lTVEVNX1dJTkRPVysxNDsKLSAgICAgICAgCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFdpbmRvdyB0eXBlOiBzZWN1cmUgc3lzdGVtIG92ZXJsYXkgd2luZG93cywgd2hpY2ggbmVlZCB0byBiZSBkaXNwbGF5ZWQKKyAgICAgICAgICogb24gdG9wIG9mIGV2ZXJ5dGhpbmcgZWxzZS4gIFRoZXNlIHdpbmRvd3MgbXVzdCBub3QgdGFrZSBpbnB1dAorICAgICAgICAgKiBmb2N1cywgb3IgdGhleSB3aWxsIGludGVyZmVyZSB3aXRoIHRoZSBrZXlndWFyZC4KKyAgICAgICAgICoKKyAgICAgICAgICogVGhpcyBpcyBleGFjdGx5IGxpa2Uge0BsaW5rICNUWVBFX1NZU1RFTV9PVkVSTEFZfSBleGNlcHQgdGhhdCBvbmx5IHRoZQorICAgICAgICAgKiBzeXN0ZW0gaXRzZWxmIGlzIGFsbG93ZWQgdG8gY3JlYXRlIHRoZXNlIG92ZXJsYXlzLiAgQXBwbGljYXRpb25zIGNhbm5vdAorICAgICAgICAgKiBvYnRhaW4gcGVybWlzc2lvbiB0byBjcmVhdGUgc2VjdXJlIHN5c3RlbSBvdmVybGF5cy4KKyAgICAgICAgICogQGhpZGUKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfU0VDVVJFX1NZU1RFTV9PVkVSTEFZID0gRklSU1RfU1lTVEVNX1dJTkRPVysxNTsKKwogICAgICAgICAvKioKICAgICAgICAgICogRW5kIG9mIHR5cGVzIG9mIHN5c3RlbSB3aW5kb3dzLgogICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9Ccm93c2VyRnJhbWUuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9Ccm93c2VyRnJhbWUuamF2YQppbmRleCBhMmM4MGYyLi44NGRlZWIwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvQnJvd3NlckZyYW1lLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L0Jyb3dzZXJGcmFtZS5qYXZhCkBAIC03MSw2ICs3MSw3IEBACiAgICAgLy8gdGhhdCBpZiB0aGUgVUkgdGhyZWFkIHBvc3RzIGFueSBtZXNzYWdlcyBhZnRlciB0aGUgbWVzc2FnZQogICAgIC8vIHF1ZXVlIGhhcyBiZWVuIGNsZWFyZWQsdGhleSBhcmUgaWdub3JlZC4KICAgICBwcml2YXRlIGJvb2xlYW4gbUJsb2NrTWVzc2FnZXMgPSBmYWxzZTsKKyAgICBwcml2YXRlIGludCBtT3JpZW50YXRpb24gPSAtMTsKIAogICAgIC8vIElzIHRoaXMgZnJhbWUgdGhlIG1haW4gZnJhbWU/CiAgICAgcHJpdmF0ZSBib29sZWFuIG1Jc01haW5GcmFtZTsKQEAgLTQ3Myw3ICs0NzQsMTAgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBPUklFTlRBVElPTl9DSEFOR0VEOiB7Ci0gICAgICAgICAgICAgICAgbmF0aXZlT3JpZW50YXRpb25DaGFuZ2VkKG1zZy5hcmcxKTsKKyAgICAgICAgICAgICAgICBpZiAobU9yaWVudGF0aW9uICE9IG1zZy5hcmcxKSB7CisgICAgICAgICAgICAgICAgICAgIG1PcmllbnRhdGlvbiA9IG1zZy5hcmcxOworICAgICAgICAgICAgICAgICAgICBuYXRpdmVPcmllbnRhdGlvbkNoYW5nZWQobXNnLmFyZzEpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L0hUTUw1QXVkaW8uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9IVE1MNUF1ZGlvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI5Mjg4MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9IVE1MNUF1ZGlvLmphdmEKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQud2Via2l0OworCitpbXBvcnQgYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PbkNvbXBsZXRpb25MaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uRXJyb3JMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uUHJlcGFyZWRMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uU2Vla0NvbXBsZXRlTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZXI7CitpbXBvcnQgamF2YS51dGlsLlRpbWVyVGFzazsKKworLyoqCisgKiA8cD5IVE1MNSBzdXBwb3J0IGNsYXNzIGZvciBBdWRpby4KKyAqLworY2xhc3MgSFRNTDVBdWRpbyBleHRlbmRzIEhhbmRsZXIKKyAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBNZWRpYVBsYXllci5PbkJ1ZmZlcmluZ1VwZGF0ZUxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUGxheWVyLk9uQ29tcGxldGlvbkxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUGxheWVyLk9uRXJyb3JMaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVBsYXllci5PblByZXBhcmVkTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFQbGF5ZXIuT25TZWVrQ29tcGxldGVMaXN0ZW5lciB7CisgICAgLy8gTG9nZ2luZyB0YWcuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPR1RBRyA9ICJIVE1MNUF1ZGlvIjsKKworICAgIHByaXZhdGUgTWVkaWFQbGF5ZXIgbU1lZGlhUGxheWVyOworCisgICAgLy8gVGhlIEMrKyBNZWRpYVBsYXllclByaXZhdGVBbmRyb2lkIG9iamVjdC4KKyAgICBwcml2YXRlIGludCBtTmF0aXZlUG9pbnRlcjsKKworICAgIHByaXZhdGUgc3RhdGljIGludCBJRExFICAgICAgICA9ICAwOworICAgIHByaXZhdGUgc3RhdGljIGludCBJTklUSUFMSVpFRCA9ICAxOworICAgIHByaXZhdGUgc3RhdGljIGludCBQUkVQQVJFRCAgICA9ICAyOworICAgIHByaXZhdGUgc3RhdGljIGludCBTVEFSVEVEICAgICA9ICA0OworICAgIHByaXZhdGUgc3RhdGljIGludCBDT01QTEVURSAgICA9ICA1OworICAgIHByaXZhdGUgc3RhdGljIGludCBQQVVTRUQgICAgICA9ICA2OworICAgIHByaXZhdGUgc3RhdGljIGludCBTVE9QUEVEICAgICA9IC0yOworICAgIHByaXZhdGUgc3RhdGljIGludCBFUlJPUiAgICAgICA9IC0xOworCisgICAgcHJpdmF0ZSBpbnQgbVN0YXRlID0gSURMRTsKKworICAgIHByaXZhdGUgU3RyaW5nIG1Vcmw7CisgICAgcHJpdmF0ZSBib29sZWFuIG1Bc2tUb1BsYXkgPSBmYWxzZTsKKworICAgIC8vIFRpbWVyIHRocmVhZCAtPiBVSSB0aHJlYWQKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVElNRVVQREFURSA9IDEwMDsKKworICAgIC8vIFRoZSBzcGVjIHNheXMgdGhlIHRpbWVyIHNob3VsZCBmaXJlIGV2ZXJ5IDI1MCBtcyBvciBsZXNzLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSU1FVVBEQVRFX1BFUklPRCA9IDI1MDsgIC8vIG1zCisgICAgLy8gVGhlIHRpbWVyIGZvciB0aW1ldXBhdGUgZXZlbnRzLgorICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNldmVudC1tZWRpYS10aW1ldXBkYXRlCisgICAgcHJpdmF0ZSBUaW1lciBtVGltZXI7CisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBUaW1ldXBkYXRlVGFzayBleHRlbmRzIFRpbWVyVGFzayB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIEhUTUw1QXVkaW8udGhpcy5vYnRhaW5NZXNzYWdlKFRJTUVVUERBVEUpLnNlbmRUb1RhcmdldCgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7CisgICAgICAgICAgICBjYXNlIFRJTUVVUERBVEU6IHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVN0YXRlICE9IEVSUk9SICYmIG1NZWRpYVBsYXllci5pc1BsYXlpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gbU1lZGlhUGxheWVyLmdldEN1cnJlbnRQb3NpdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlT25UaW1ldXBkYXRlKHBvc2l0aW9uLCBtTmF0aXZlUG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBtU3RhdGUgPSBFUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBldmVudCBsaXN0ZW5lcnMgZm9yIE1lZGlhUGxheWVyCisgICAgLy8gVGhvc2UgYXJlIGNhbGxlZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB3ZSBjcmVhdGVkIHRoZSBNZWRpYVBsYXllcgorICAgIC8vIChpLmUuIHRoZSB3ZWJ2aWV3Y29yZSB0aHJlYWQgaGVyZSkKKworICAgIC8vIE1lZGlhUGxheWVyLk9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIKKyAgICBwdWJsaWMgdm9pZCBvbkJ1ZmZlcmluZ1VwZGF0ZShNZWRpYVBsYXllciBtcCwgaW50IHBlcmNlbnQpIHsKKyAgICAgICAgbmF0aXZlT25CdWZmZXJpbmcocGVyY2VudCwgbU5hdGl2ZVBvaW50ZXIpOworICAgIH0KKworICAgIC8vIE1lZGlhUGxheWVyLk9uQ29tcGxldGlvbkxpc3RlbmVyOworICAgIHB1YmxpYyB2b2lkIG9uQ29tcGxldGlvbihNZWRpYVBsYXllciBtcCkgeworICAgICAgICByZXNldE1lZGlhUGxheWVyKCk7CisgICAgICAgIG1TdGF0ZSA9IElETEU7CisgICAgICAgIG5hdGl2ZU9uRW5kZWQobU5hdGl2ZVBvaW50ZXIpOworICAgIH0KKworICAgIC8vIE1lZGlhUGxheWVyLk9uRXJyb3JMaXN0ZW5lcgorICAgIHB1YmxpYyBib29sZWFuIG9uRXJyb3IoTWVkaWFQbGF5ZXIgbXAsIGludCB3aGF0LCBpbnQgZXh0cmEpIHsKKyAgICAgICAgbVN0YXRlID0gRVJST1I7CisgICAgICAgIHJlc2V0TWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgbVN0YXRlID0gSURMRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIE1lZGlhUGxheWVyLk9uUHJlcGFyZWRMaXN0ZW5lcgorICAgIHB1YmxpYyB2b2lkIG9uUHJlcGFyZWQoTWVkaWFQbGF5ZXIgbXApIHsKKyAgICAgICAgbVN0YXRlID0gUFJFUEFSRUQ7CisgICAgICAgIGlmIChtVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgbVRpbWVyLnNjaGVkdWxlKG5ldyBUaW1ldXBkYXRlVGFzaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVVUERBVEVfUEVSSU9ELCBUSU1FVVBEQVRFX1BFUklPRCk7CisgICAgICAgIH0KKyAgICAgICAgbmF0aXZlT25QcmVwYXJlZChtcC5nZXREdXJhdGlvbigpLCAwLCAwLCBtTmF0aXZlUG9pbnRlcik7CisgICAgICAgIGlmIChtQXNrVG9QbGF5KSB7CisgICAgICAgICAgICBtQXNrVG9QbGF5ID0gZmFsc2U7CisgICAgICAgICAgICBwbGF5KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBNZWRpYVBsYXllci5PblNlZWtDb21wbGV0ZUxpc3RlbmVyCisgICAgcHVibGljIHZvaWQgb25TZWVrQ29tcGxldGUoTWVkaWFQbGF5ZXIgbXApIHsKKyAgICAgICAgbmF0aXZlT25UaW1ldXBkYXRlKG1wLmdldEN1cnJlbnRQb3NpdGlvbigpLCBtTmF0aXZlUG9pbnRlcik7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gbmF0aXZlUHRyIGlzIHRoZSBDKysgcG9pbnRlciB0byB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSFRNTDVBdWRpbyhpbnQgbmF0aXZlUHRyKSB7CisgICAgICAgIC8vIFNhdmUgdGhlIG5hdGl2ZSBwdHIKKyAgICAgICAgbU5hdGl2ZVBvaW50ZXIgPSBuYXRpdmVQdHI7CisgICAgICAgIHJlc2V0TWVkaWFQbGF5ZXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVzZXRNZWRpYVBsYXllcigpIHsKKyAgICAgICAgaWYgKG1NZWRpYVBsYXllciA9PSBudWxsKSB7CisgICAgICAgICAgICBtTWVkaWFQbGF5ZXIgPSBuZXcgTWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1NZWRpYVBsYXllci5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIG1NZWRpYVBsYXllci5zZXRPbkJ1ZmZlcmluZ1VwZGF0ZUxpc3RlbmVyKHRoaXMpOworICAgICAgICBtTWVkaWFQbGF5ZXIuc2V0T25Db21wbGV0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1NZWRpYVBsYXllci5zZXRPbkVycm9yTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1NZWRpYVBsYXllci5zZXRPblByZXBhcmVkTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1NZWRpYVBsYXllci5zZXRPblNlZWtDb21wbGV0ZUxpc3RlbmVyKHRoaXMpOworCisgICAgICAgIGlmIChtVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgbVRpbWVyLmNhbmNlbCgpOworICAgICAgICB9CisgICAgICAgIG1UaW1lciA9IG5ldyBUaW1lcigpOworICAgICAgICBtU3RhdGUgPSBJRExFOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXREYXRhU291cmNlKFN0cmluZyB1cmwpIHsKKyAgICAgICAgbVVybCA9IHVybDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUgIT0gSURMRSkgeworICAgICAgICAgICAgICAgIHJlc2V0TWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1NZWRpYVBsYXllci5zZXREYXRhU291cmNlKHVybCk7CisgICAgICAgICAgICBtU3RhdGUgPSBJTklUSUFMSVpFRDsKKyAgICAgICAgICAgIG1NZWRpYVBsYXllci5wcmVwYXJlQXN5bmMoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLmUoTE9HVEFHLCAiY291bGRuJ3QgbG9hZCB0aGUgcmVzb3VyY2U6ICIgKyB1cmwgKyAiIGV4YzogIiArIGUpOworICAgICAgICAgICAgcmVzZXRNZWRpYVBsYXllcigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHBsYXkoKSB7CisgICAgICAgIGlmICgobVN0YXRlID09IEVSUk9SIHx8IG1TdGF0ZSA9PSBJRExFKSAmJiBtVXJsICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc2V0TWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgICAgIHNldERhdGFTb3VyY2UobVVybCk7CisgICAgICAgICAgICBtQXNrVG9QbGF5ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RhdGUgPj0gUFJFUEFSRUQpIHsKKyAgICAgICAgICAgIG1NZWRpYVBsYXllci5zdGFydCgpOworICAgICAgICAgICAgbVN0YXRlID0gU1RBUlRFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwYXVzZSgpIHsKKyAgICAgICAgaWYgKG1TdGF0ZSA9PSBTVEFSVEVEKSB7CisgICAgICAgICAgICBpZiAobVRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtVGltZXIucHVyZ2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1NZWRpYVBsYXllci5wYXVzZSgpOworICAgICAgICAgICAgbVN0YXRlID0gUEFVU0VEOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNlZWsoaW50IG1zZWMpIHsKKyAgICAgICAgaWYgKG1TdGF0ZSA+PSBQUkVQQVJFRCkgeworICAgICAgICAgICAgbU1lZGlhUGxheWVyLnNlZWtUbyhtc2VjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZWFyZG93bigpIHsKKyAgICAgICAgbU1lZGlhUGxheWVyLnJlbGVhc2UoKTsKKyAgICAgICAgbVN0YXRlID0gRVJST1I7CisgICAgICAgIG1OYXRpdmVQb2ludGVyID0gMDsKKyAgICB9CisKKyAgICBwcml2YXRlIGZsb2F0IGdldE1heFRpbWVTZWVrYWJsZSgpIHsKKyAgICAgICAgcmV0dXJuIG1NZWRpYVBsYXllci5nZXREdXJhdGlvbigpIC8gMTAwMC4wZjsKKyAgICB9CisKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU9uQnVmZmVyaW5nKGludCBwZXJjZW50LCBpbnQgbmF0aXZlUG9pbnRlcik7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVPbkVuZGVkKGludCBuYXRpdmVQb2ludGVyKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU9uUHJlcGFyZWQoaW50IGR1cmF0aW9uLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBuYXRpdmVQb2ludGVyKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZU9uVGltZXVwZGF0ZShpbnQgcG9zaXRpb24sIGludCBuYXRpdmVQb2ludGVyKTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9XZWJUZXh0Vmlldy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlRleHRWaWV3LmphdmEKaW5kZXggZTgyZWQ5Zi4uZjdhZmRiOSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlRleHRWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlRleHRWaWV3LmphdmEKQEAgLTI4OCw2ICsyODgsMjEgQEAKICAgICAgICAgcmV0dXJuIHB0ciA9PSBtTm9kZVBvaW50ZXI7CiAgICAgfQogCisgICAgLyoqCisgICAgICogRW5zdXJlIHRoYXQgdGhlIHVuZGVybHlpbmcgdGV4dGZpZWxkIGlzIGxpbmVkIHVwIHdpdGggdGhlIFdlYlRleHRWaWV3LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBsaW5lVXBTY3JvbGwoKSB7CisgICAgICAgIGlmIChtV2ViVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBmbG9hdCBtYXhTY3JvbGxYID0gVG91Y2guZ2V0TWF4U2Nyb2xsWCh0aGlzLCBnZXRMYXlvdXQoKSwgbVNjcm9sbFkpOworICAgICAgICAgICAgaWYgKERlYnVnRmxhZ3MuV0VCX1RFWFRfVklFVykgeworICAgICAgICAgICAgICAgIExvZy52KExPR1RBRywgIm9uVG91Y2hFdmVudCB4PSIgKyBtU2Nyb2xsWCArICIgeT0iCisgICAgICAgICAgICAgICAgICAgICAgICArIG1TY3JvbGxZICsgIiBtYXhYPSIgKyBtYXhTY3JvbGxYKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1XZWJWaWV3LnNjcm9sbEZvY3VzZWRUZXh0SW5wdXQobWF4U2Nyb2xsWCA+IDAgPworICAgICAgICAgICAgICAgICAgICBtU2Nyb2xsWCAvIG1heFNjcm9sbFggOiAwLCBtU2Nyb2xsWSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBAT3ZlcnJpZGUgcHVibGljIElucHV0Q29ubmVjdGlvbiBvbkNyZWF0ZUlucHV0Q29ubmVjdGlvbigKICAgICAgICAgICAgIEVkaXRvckluZm8gb3V0QXR0cnMpIHsKICAgICAgICAgSW5wdXRDb25uZWN0aW9uIGNvbm5lY3Rpb24gPSBzdXBlci5vbkNyZWF0ZUlucHV0Q29ubmVjdGlvbihvdXRBdHRycyk7CkBAIC0zNTksNiArMzc0LDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25TY3JvbGxDaGFuZ2VkKGludCBsLCBpbnQgdCwgaW50IG9sZGwsIGludCBvbGR0KSB7CisgICAgICAgIHN1cGVyLm9uU2Nyb2xsQ2hhbmdlZChsLCB0LCBvbGRsLCBvbGR0KTsKKyAgICAgICAgbGluZVVwU2Nyb2xsKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgb25TZWxlY3Rpb25DaGFuZ2VkKGludCBzZWxTdGFydCwgaW50IHNlbEVuZCkgewogICAgICAgICBpZiAobUluU2V0VGV4dEFuZEtlZXBTZWxlY3Rpb24pIHJldHVybjsKICAgICAgICAgLy8gVGhpcyBjb2RlIGlzIGNvcGllZCBmcm9tIFRleHRWaWV3Lm9uRHJhdygpLiAgVGhhdCBjb2RlIGRvZXMgbm90IGdldApAQCAtMzc4LDYgKzM5OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICArICIgc2VsRW5kPSIgKyBzZWxFbmQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbVdlYlZpZXcuc2V0U2VsZWN0aW9uKHNlbFN0YXJ0LCBzZWxFbmQpOworICAgICAgICAgICAgbGluZVVwU2Nyb2xsKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ4MSwxNiArNTAzLDcgQEAKICAgICAgICAgICAgIC8vIHRvIGJpZyBmb3IgdGhlIGNhc2Ugb2YgYSBzbWFsbCB0ZXh0ZmllbGQuCiAgICAgICAgICAgICBpbnQgc21hbGxlclNsb3AgPSBzbG9wLzI7CiAgICAgICAgICAgICBpZiAoZHggPiBzbWFsbGVyU2xvcCB8fCBkeSA+IHNtYWxsZXJTbG9wKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1XZWJWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4U2Nyb2xsWCA9IChmbG9hdCkgVG91Y2guZ2V0TWF4U2Nyb2xsWCh0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMYXlvdXQoKSwgbVNjcm9sbFkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWdGbGFncy5XRUJfVEVYVF9WSUVXKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cudihMT0dUQUcsICJvblRvdWNoRXZlbnQgeD0iICsgbVNjcm9sbFggKyAiIHk9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1TY3JvbGxZICsgIiBtYXhYPSIgKyBtYXhTY3JvbGxYKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtV2ViVmlldy5zY3JvbGxGb2N1c2VkVGV4dElucHV0KG1heFNjcm9sbFggPiAwID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2Nyb2xsWCAvIG1heFNjcm9sbFggOiAwLCBtU2Nyb2xsWSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFNjcm9sbGluZyBpcyBoYW5kbGVkIGluIG9uU2Nyb2xsQ2hhbmdlZC4KICAgICAgICAgICAgICAgICBtU2Nyb2xsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbmNlbExvbmdQcmVzcygpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlZpZXdDb3JlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvV2ViVmlld0NvcmUuamF2YQppbmRleCBiZjRkOTViLi5mNTRiMjA3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvV2ViVmlld0NvcmUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvV2ViVmlld0NvcmUuamF2YQpAQCAtMjgsNiArMjgsNyBAQAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUG9pbnQ7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uOworaW1wb3J0IGFuZHJvaWQubWVkaWEuTWVkaWFGaWxlOwogaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKIGltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CkBAIC0yNTUsNiArMjU2LDEzIEBACiAgICAgICAgIHJldHVybiBtU2V0dGluZ3M7CiAgICAgfQogCisgICAgLyoKKyAgICAgKiBHaXZlbiBtaW1lVHlwZSwgY2hlY2sgd2hldGhlciBpdCdzIHN1cHBvcnRlZCBpbiBBbmRyb2lkIG1lZGlhIGZyYW1ld29yay4KKyAgICAgKiBtaW1lVHlwZSBjb3VsZCBiZSBzdWNoIGFzICJhdWRpby9vZ2ciIGFuZCAidmlkZW8vbXA0Ii4KKyAgICAgKi8KKyAgICAvKiBwYWNrYWdlICovIHN0YXRpYyBib29sZWFuIHN1cHBvcnRzTWltZVR5cGUoU3RyaW5nIG1pbWVUeXBlKSB7CisgICAgICAgIHJldHVybiBNZWRpYUZpbGUuZ2V0RmlsZVR5cGVGb3JNaW1lVHlwZShtaW1lVHlwZSkgPiAwOworICAgIH0KICAgICAvKioKICAgICAgKiBBZGQgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgY2xpZW50J3MgY29uc29sZS4KICAgICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBhZGQKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9UZXh0Vmlldy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKaW5kZXggOTA4MGY5Ni4uZDcxOTc4MyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEKQEAgLTI5NTYsNiArMjk1NiwyNSBAQAogICAgICAgICBpZiAoaW1tICE9IG51bGwpIGltbS5yZXN0YXJ0SW5wdXQodGhpcyk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogSXQgd291bGQgYmUgYmV0dGVyIHRvIHJlbHkgb24gdGhlIGlucHV0IHR5cGUgZm9yIGV2ZXJ5dGhpbmcuIEEgcGFzc3dvcmQgaW5wdXRUeXBlIHNob3VsZCBoYXZlCisgICAgICogYSBwYXNzd29yZCB0cmFuc2Zvcm1hdGlvbi4gV2Ugc2hvdWxkIGhlbmNlIHVzZSBpc1Bhc3N3b3JkSW5wdXRUeXBlIGluc3RlYWQgb2YgdGhpcyBtZXRob2QuCisgICAgICoKKyAgICAgKiBXZSBzaG91bGQ6CisgICAgICogLSBDYWxsIHNldElucHV0VHlwZSBpbiBzZXRLZXlMaXN0ZW5lciBpbnN0ZWFkIG9mIGNoYW5naW5nIHRoZSBpbnB1dCB0eXBlIGRpcmVjdGx5ICh3aGljaAorICAgICAqIHdvdWxkIGluc3RhbGwgdGhlIGNvcnJlY3QgdHJhbnNmb3JtYXRpb24pLgorICAgICAqIC0gUmVmdXNlIHRoZSBpbnN0YWxsYXRpb24gb2YgYSBub24tcGFzc3dvcmQgdHJhbnNmb3JtYXRpb24gaW4gc2V0VHJhbnNmb3JtYXRpb24gaWYgdGhlIGlucHV0CisgICAgICogdHlwZSBpcyBwYXNzd29yZC4KKyAgICAgKgorICAgICAqIEhvd2V2ZXIsIHRoaXMgaXMgbGlrZSB0aGlzIGZvciBsZWdhY3kgcmVhc29ucyBhbmQgd2UgY2Fubm90IGJyZWFrIGV4aXN0aW5nIGFwcHMuIFRoaXMgbWV0aG9kCisgICAgICogaXMgdXNlZnVsIHNpbmNlIGl0IG1hdGNoZXMgd2hhdCB0aGUgdXNlciBjYW4gc2VlIChvYmZ1c2NhdGVkIHRleHQgb3Igbm90KS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB0cmFuc2Zvcm1hdGlvbiBtZXRob2QgaXMgb2YgdGhlIHBhc3N3b3JkIHR5cGUuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGhhc1Bhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QoKSB7CisgICAgICAgIHJldHVybiBtVHJhbnNmb3JtYXRpb24gaW5zdGFuY2VvZiBQYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kOworICAgIH0KKwogICAgIHByaXZhdGUgYm9vbGVhbiBpc1Bhc3N3b3JkSW5wdXRUeXBlKGludCBpbnB1dFR5cGUpIHsKICAgICAgICAgZmluYWwgaW50IHZhcmlhdGlvbiA9IGlucHV0VHlwZSAmIChFZGl0b3JJbmZvLlRZUEVfTUFTS19DTEFTUwogICAgICAgICAgICAgICAgIHwgRWRpdG9ySW5mby5UWVBFX01BU0tfVkFSSUFUSU9OKTsKQEAgLTcxMzUsNyArNzE1NCw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBib29sZWFuIGNhbkN1dCgpIHsKLSAgICAgICAgaWYgKG1UcmFuc2Zvcm1hdGlvbiBpbnN0YW5jZW9mIFBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QpIHsKKyAgICAgICAgaWYgKGhhc1Bhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTcxNDksNyArNzE2OCw3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBib29sZWFuIGNhbkNvcHkoKSB7Ci0gICAgICAgIGlmIChtVHJhbnNmb3JtYXRpb24gaW5zdGFuY2VvZiBQYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kKSB7CisgICAgICAgIGlmIChoYXNQYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC03Mzk4LDggKzc0MTcsMTMgQEAKICAgICAgICAgICAgIE1lbnVIYW5kbGVyIGhhbmRsZXIgPSBuZXcgTWVudUhhbmRsZXIoKTsKIAogICAgICAgICAgICAgaWYgKGNhblNlbGVjdFRleHQoKSkgewotICAgICAgICAgICAgICAgIG1lbnUuYWRkKDAsIElEX1NUQVJUX1NFTEVDVElOR19URVhULCAwLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5zZWxlY3RUZXh0KS4KLSAgICAgICAgICAgICAgICAgICAgIHNldE9uTWVudUl0ZW1DbGlja0xpc3RlbmVyKGhhbmRsZXIpOworICAgICAgICAgICAgICAgIGlmICghaGFzUGFzc3dvcmRUcmFuc2Zvcm1hdGlvbk1ldGhvZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdEN1cnJlbnRXb3JkIGlzIG5vdCBhdmFpbGFibGUgb24gYSBwYXNzd29yZCBmaWVsZCBhbmQgd291bGQgcmV0dXJuIGFuCisgICAgICAgICAgICAgICAgICAgIC8vIGFyYml0cmFyeSAxMC1jaGFyYXRlciBzZWxlY3Rpb24gYXJvdW5kIHByZXNzZWQgcG9zaXRpb24uIERpc2NhcmQgaXQuCisgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdEFsbCBpcyBzdGlsbCB1c2VmdWwgdG8gYmUgYWJsZSB0byBjbGVhciB0aGUgZmllbGQgdXNpbmcgdGhlIGRlbGV0ZSBrZXkuCisgICAgICAgICAgICAgICAgICAgIG1lbnUuYWRkKDAsIElEX1NUQVJUX1NFTEVDVElOR19URVhULCAwLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5zZWxlY3RUZXh0KS4KKyAgICAgICAgICAgICAgICAgICAgc2V0T25NZW51SXRlbUNsaWNrTGlzdGVuZXIoaGFuZGxlcik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1lbnUuYWRkKDAsIElEX1NFTEVDVF9BTEwsIDAsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnNlbGVjdEFsbCkuCiAgICAgICAgICAgICAgICAgICAgICBzZXRPbk1lbnVJdGVtQ2xpY2tMaXN0ZW5lcihoYW5kbGVyKS4KICAgICAgICAgICAgICAgICAgICAgIHNldEFscGhhYmV0aWNTaG9ydGN1dCgnYScpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9TaHV0ZG93blRocmVhZC5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9TaHV0ZG93blRocmVhZC5qYXZhCmluZGV4IDcxNGIyNTkuLjFmY2Q2NTQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvU2h1dGRvd25UaHJlYWQuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL1NodXRkb3duVGhyZWFkLmphdmEKQEAgLTM2NCw3ICszNjQsNyBAQAogICAgICAgICAgICAgLy8gdmlicmF0b3IgaXMgYXN5bmNocm9ub3VzIHNvIHdlIG5lZWQgdG8gd2FpdCB0byBhdm9pZCBzaHV0dGluZyBkb3duIHRvbyBzb29uLgogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoU0hVVERPV05fVklCUkFURV9NUyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB1bnVzZWQpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL0xsY3BDb25uZWN0aW9ubGVzc1NvY2tldC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIGNvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9MbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQuamF2YQpyZW5hbWUgdG8gY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL25mYy9MbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQuamF2YQppbmRleCBlY2NkZWIxMy4uYTljZjZiOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL0xsY3BDb25uZWN0aW9ubGVzc1NvY2tldC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0LmphdmEKQEAgLTE0LDQ4ICsxNCwyOCBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBMbGNwQ29ubmVjdGlvbkxlc3NTb2NrZXQuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChEYW5pZWwgVG9tYXMpCi0gKiBDcmVhdGVkICAgICAgICAgOiAxOC0wMi0yMDEwCi0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZDsKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubmZjOwogCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIAogaW1wb3J0IGFuZHJvaWQubmZjLkVycm9yQ29kZXM7CiBpbXBvcnQgYW5kcm9pZC5uZmMuSUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldDsKIGltcG9ydCBhbmRyb2lkLm5mYy5MbGNwUGFja2V0OwotCiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAotLyoqCi0gKiBMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQgcmVwcmVzZW50cyBhIExMQ1AgQ29ubmVjdGlvbmxlc3Mgb2JqZWN0IHRvIGJlIHVzZWQKLSAqIGluIGEgY29ubmVjdGlvbmxlc3MgY29tbXVuaWNhdGlvbgotICoKLSAqIEBzaW5jZSBBQTAyLjAxCi0gKiBAaGlkZQotICovCiBwdWJsaWMgY2xhc3MgTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHsKLQotCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQiOwogCiAgICAgLyoqCiAgICAgICogVGhlIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgTkZDIHNlcnZpY2UgYW5kIHVzZWQgdG8gaWRlbnRpZnkgdGhlIExMQ1AgY29ubmVjdGlvbmxlc3Mgc29ja2V0IGluCiAgICAgICogZXZlcnkgY2FsbCBvZiB0aGlzIGNsYXNzLgotICAgICAqCi0gICAgICogQGhpZGUKICAgICAgKi8KICAgICBwcm90ZWN0ZWQgaW50IG1IYW5kbGU7CiAKIAogICAgIC8qKgogICAgICAqIFRoZSBlbnRyeSBwb2ludCBmb3IgTExDUCBDb25uZWN0aW9ubGVzcyBzb2NrZXQgb3BlcmF0aW9ucy4KLSAgICAgKgotICAgICAqIEBoaWRlCiAgICAgICovCiAgICAgcHJvdGVjdGVkIElMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQgbVNlcnZpY2U7CiAKQEAgLTY2LDcgKzQ2LDYgQEAKICAgICAgKiBAcGFyYW0gc2VydmljZSBUaGUgZW50cnkgcG9pbnQgdG8gdGhlIE5mYyBTZXJ2aWNlIGZvciAgTExDUCBDb25uZWN0aW9ubGVzcyBzb2NrZXQgIGNsYXNzLgogICAgICAqIEBwYXJhbSBoYW5kbGUgVGhlIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgTkZDIHNlcnZpY2UgYW5kIHVzZWQgdG8gaWRlbnRpZnkKICAgICAgKiAgICAgICAgICAgIHRoZSBzb2NrZXQgaW4gc3Vic2VxdWVudCBjYWxscy4KLSAgICAgKiBAaGlkZQogICAgICAqLwogCUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldChJTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHNlcnZpY2UsIGludCBoYW5kbGUpIHsKICAgICAgICAgdGhpcy5tU2VydmljZSA9IHNlcnZpY2U7CkBAIC03OSw3ICs1OCw2IEBACiAgICAgICogQHBhcmFtIHBhY2tldCBTZXJ2aWNlIEFjY2VzcyBQb2ludCBudW1iZXIgcmVsYXRlZCB0byBhIExMQ1AKICAgICAgKiAgICAgICAgICAgIENvbm5lY3Rpb25sZXNzIGNsaWVudCBhbmQgYSBkYXRhIGJ1ZmZlciB0byBzZW5kCiAgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiB0aGUgTExDUCBsaW5rIGhhcyBiZWVuIGxvc3Qgb3IgZGVhY3RpdmF0ZWQuCi0gICAgICogQHNpbmNlIEFBMDIuMDEKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBzZW5kVG8oTGxjcFBhY2tldCBwYWNrZXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAJCXRyeSB7CkBAIC05OSw3ICs3Nyw2IEBACiAgICAgICogQHJldHVybiBkYXRhIGRhdGEgcmVjZWl2ZWQgZnJvbSBhIHNwZWNpZmljIExMQ1AgQ29ubmVjdGlvbmxlc3MgY2xpZW50CiAgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiB0aGUgTExDUCBsaW5rIGhhcyBiZWVuIGxvc3Qgb3IgZGVhY3RpdmF0ZWQuCiAgICAgICogQHNlZSBMbGNwUGFja2V0Ci0gICAgICogQHNpbmNlIEFBMDIuMDEKICAgICAgKi8KICAgICBwdWJsaWMgTGxjcFBhY2tldCByZWNlaXZlRnJvbSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAJCXRyeSB7CkBAIC0xMTgsOCArOTUsNiBAQAogCiAgICAgLyoqCiAgICAgICogQ2xvc2UgdGhlIGNyZWF0ZWQgQ29ubmVjdGlvbmxlc3Mgc29ja2V0LgotICAgICAqCi0gICAgICogQHNpbmNlIEFBMDIuMDEKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHsKIAkJdHJ5IHsKQEAgLTEzMyw3ICsxMDgsNiBAQAogICAgICAqIFJldHVybnMgdGhlIGxvY2FsIFNlcnZpY2UgQWNjZXNzIFBvaW50IG51bWJlciBvZiB0aGUgc29ja2V0CiAgICAgICoKICAgICAgKiBAcmV0dXJuIHNhcAotICAgICAqIEBzaW5jZSBBQTAyLjAxCiAgICAgICovCiAgICAgcHVibGljIGludCBnZXRTYXAoKSB7CiAgICAgCWludCBzYXAgPSAwOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL0xsY3BFeGNlcHRpb24uamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcEV4Y2VwdGlvbi5qYXZhCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIGNvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9MbGNwRXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIGNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcEV4Y2VwdGlvbi5qYXZhCmluZGV4IDFlMmUyZGEuLmRhNGU5MWUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9MbGNwRXhjZXB0aW9uLmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL25mYy9MbGNwRXhjZXB0aW9uLmphdmEKQEAgLTE0LDIwICsxNCwxMSBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBMTENQRXhjZXB0aW9uLmphdmEKLSAqIE9yaWdpbmFsLUF1dGhvciA6IFRydXN0ZWQgTG9naWMgUy5BLiAoRGFuaWVsIFRvbWFzKQotICogQ3JlYXRlZCAgICAgICAgIDogMjQtMDItMjAxMAotICovCi0KLXBhY2thZ2UgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQ7CitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLm5mYzsKIAogLyoqCiAgKiBHZW5lcmljIGV4Y2VwdGlvbiB0aHJvd24gaW4gY2FzZSBzb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5lZCBkdXJpbmcgYSAKICAqIExMQ1AgY29tbXVuaWNhdGlvbi4KLSAqCi0gKiBAc2luY2UgQUEwMi4wMQotICogQGhpZGUKICAqLwogcHVibGljIGNsYXNzIExsY3BFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24gewogICAgLyoqCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTGxjcFNlcnZpY2VTb2NrZXQuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcFNlcnZpY2VTb2NrZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBjb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTGxjcFNlcnZpY2VTb2NrZXQuamF2YQpyZW5hbWUgdG8gY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL25mYy9MbGNwU2VydmljZVNvY2tldC5qYXZhCmluZGV4IDFiZGY3MmYuLjQ2MDc1MjcgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9MbGNwU2VydmljZVNvY2tldC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcFNlcnZpY2VTb2NrZXQuamF2YQpAQCAtMTQsMjkgKzE0LDE5IEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCi0vKioKLSAqIEZpbGUgICAgICAgICAgICA6IExMQ1BTZXJ2ZXJTb2NrZXQuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChEYW5pZWwgVG9tYXMpCi0gKiBDcmVhdGVkICAgICAgICAgOiAxOC0wMi0yMDEwCi0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZDsKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubmZjOwogCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIAogaW1wb3J0IGFuZHJvaWQubmZjLkVycm9yQ29kZXM7CiBpbXBvcnQgYW5kcm9pZC5uZmMuSUxsY3BTb2NrZXQ7CiBpbXBvcnQgYW5kcm9pZC5uZmMuSUxsY3BTZXJ2aWNlU29ja2V0OwotCiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAogLyoqCiAgKiBMbGNwU2VydmljZVNvY2tldCByZXByZXNlbnRzIGEgTExDUCBTZXJ2aWNlIHRvIGJlIHVzZWQgaW4gYQogICogQ29ubmVjdGlvbi1vcmllbnRlZCBjb21tdW5pY2F0aW9uCi0gKgotICogQHNpbmNlIEFBMDIuMDEKLSAqIEBoaWRlCiAgKi8KIHB1YmxpYyBjbGFzcyBMbGNwU2VydmljZVNvY2tldCB7CiAKQEAgLTQ1LDE1ICszNSwxMSBAQAogCS8qKgogCSAqIFRoZSBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIE5GQyBzZXJ2aWNlIGFuZCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBMTENQCiAJICogU2VydmljZSBzb2NrZXQgaW4gZXZlcnkgY2FsbCBvZiB0aGlzIGNsYXNzLgotCSAqCi0JICogQGhpZGUKIAkgKi8KIAlwcm90ZWN0ZWQgaW50IG1IYW5kbGU7CiAKIAkvKioKIAkgKiBUaGUgZW50cnkgcG9pbnQgZm9yIExMQ1AgU2VydmljZSBzb2NrZXQgb3BlcmF0aW9ucy4KLQkgKgotCSAqIEBoaWRlCiAJICovCiAJcHJvdGVjdGVkIElMbGNwU2VydmljZVNvY2tldCBtU2VydmljZTsKIApAQCAtOTIsNyArNzgsNiBAQAogCSAqIEBwYXJhbSBoYW5kbGUKIAkgKiAgICAgICAgICAgIFRoZSBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIE5GQyBzZXJ2aWNlIGFuZCB1c2VkIHRvIGlkZW50aWZ5CiAJICogICAgICAgICAgICB0aGUgc29ja2V0IGluIHN1YnNlcXVlbnQgY2FsbHMuCi0JICogQGhpZGUKIAkgKi8KIAlMbGNwU2VydmljZVNvY2tldChJTGxjcFNlcnZpY2VTb2NrZXQgc2VydmljZSwgSUxsY3BTb2NrZXQgc29ja2V0U2VydmljZSwgaW50IGhhbmRsZSkgewogCQl0aGlzLm1TZXJ2aWNlID0gc2VydmljZTsKQEAgLTExMiw3ICs5Nyw2IEBACiAJICogICAgICAgICAgICAgaWYgbm90IGVub3VnaCByZXNzb3VyY2VzIGFyZSBhdmFpbGFibGUKIAkgKgogCSAqIEBzZWUgTGxjcFNvY2tldAotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIExsY3BTb2NrZXQgYWNjZXB0KCkgdGhyb3dzIElPRXhjZXB0aW9uLCBMbGNwRXhjZXB0aW9uIHsKIApAQCAtMTQxLDcgKzEyNSw2IEBACiAJICoKIAkgKiBAcGFyYW0gdGltZW91dAogCSAqICAgICAgICAgICAgdmFsdWUgb2YgdGhlIHRpbWVvdXQgZm9yIHRoZSBhY2NlcHQgcmVxdWVzdAotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIHZvaWQgc2V0QWNjZXB0VGltZW91dChpbnQgdGltZW91dCkgewogCQl0cnkgewpAQCAtMTU1LDcgKzEzOCw2IEBACiAJICogR2V0IHRoZSB0aW1lb3V0IHZhbHVlIG9mIHRoZSBhY2NlcHQgcmVxdWVzdAogCSAqCiAJICogQHJldHVybiBtVGltZW91dAotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIGludCBnZXRBY2NlcHRUaW1lb3V0KCkgewogCQl0cnkgewpAQCAtMTY4LDggKzE1MCw2IEBACiAKIAkvKioKIAkgKiBDbG9zZSB0aGUgY3JlYXRlZCBMbGNwIFNlcnZpY2Ugc29ja2V0Ci0JICoKLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyB2b2lkIGNsb3NlKCkgewogCQl0cnkgewpAQCAtMTc4LDUgKzE1OCw0IEBACiAJCQlMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gY2xvc2UoKTogIiwgZSk7CiAJCX0KIAl9Ci0KIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9MbGNwU29ja2V0LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL0xsY3BTb2NrZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBjb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTGxjcFNvY2tldC5qYXZhCnJlbmFtZSB0byBjb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL0xsY3BTb2NrZXQuamF2YQppbmRleCBlYmRlM2UxLi5hZTc0MDAyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTGxjcFNvY2tldC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTGxjcFNvY2tldC5qYXZhCkBAIC0xNCwyOCArMTQsMTggQEAKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKLS8qKgotICogRmlsZSAgICAgICAgICAgIDogTGxjcENsaWVudFNvY2tldC5qYXZhCi0gKiBPcmlnaW5hbC1BdXRob3IgOiBUcnVzdGVkIExvZ2ljIFMuQS4gKERhbmllbCBUb21hcykKLSAqIENyZWF0ZWQgICAgICAgICA6IDE4LTAyLTIwMTAKLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkOworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5uZmM7CiAKIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwogCiBpbXBvcnQgYW5kcm9pZC5uZmMuRXJyb3JDb2RlczsKIGltcG9ydCBhbmRyb2lkLm5mYy5JTGxjcFNvY2tldDsKLQogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKIC8qKgogICogTGxjcENsaWVudFNvY2tldCByZXByZXNlbnRzIGEgTExDUCBDb25uZWN0aW9uLU9yaWVudGVkIGNsaWVudCB0byBiZSB1c2VkIGluIGEKICAqIGNvbm5lY3Rpb24tb3JpZW50ZWQgY29tbXVuaWNhdGlvbgotICoKLSAqIEBzaW5jZSBBQTAyLjAxCi0gKiBAaGlkZQogICovCiBwdWJsaWMgY2xhc3MgTGxjcFNvY2tldCB7CiAKQEAgLTQ0LDE1ICszNCwxMSBAQAogCS8qKgogCSAqIFRoZSBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIE5GQyBzZXJ2aWNlIGFuZCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBMTENQCiAJICogc29ja2V0IGluIGV2ZXJ5IGNhbGwgb2YgdGhpcyBjbGFzcy4KLQkgKgotCSAqIEBoaWRlCiAJICovCiAJcHJvdGVjdGVkIGludCBtSGFuZGxlOwogCiAJLyoqCiAJICogVGhlIGVudHJ5IHBvaW50IGZvciBMTENQIHNvY2tldCBvcGVyYXRpb25zLgotCSAqCi0JICogQGhpZGUKIAkgKi8KIAlwcm90ZWN0ZWQgSUxsY3BTb2NrZXQgbVNlcnZpY2U7CiAKQEAgLTkyLDcgKzc4LDYgQEAKIAkgKiBAcGFyYW0gaGFuZGxlCiAJICogICAgICAgICAgICBUaGUgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBORkMgc2VydmljZSBhbmQgdXNlZCB0byBpZGVudGlmeQogCSAqICAgICAgICAgICAgdGhlIHNvY2tldCBpbiBzdWJzZXF1ZW50IGNhbGxzLgotCSAqIEBoaWRlCiAJICovCiAJTGxjcFNvY2tldChJTGxjcFNvY2tldCBzZXJ2aWNlLCBpbnQgaGFuZGxlKSB7CiAJCXRoaXMubVNlcnZpY2UgPSBzZXJ2aWNlOwpAQCAtMTA5LDcgKzk0LDYgQEAKIAkgKiBAdGhyb3dzIExsY3BFeGNlcHRpb24KIAkgKiAgICAgICAgICAgICBpZiB0aGUgY29ubmVjdGlvbiByZXF1ZXN0IGlzIHJlamVjdGVkIGJ5IHRoZSByZW1vdGUgTExDUAogCSAqICAgICAgICAgICAgIFNlcnZpY2UKLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyB2b2lkIGNvbm5lY3QoaW50IHNhcCkgdGhyb3dzIElPRXhjZXB0aW9uLCBMbGNwRXhjZXB0aW9uIHsKIAkJdHJ5IHsKQEAgLTEzNyw3ICsxMjEsNiBAQAogCSAqIEB0aHJvd3MgTGxjcEV4Y2VwdGlvbgogCSAqICAgICAgICAgICAgIGlmIHRoZSBjb25uZWN0aW9uIHJlcXVlc3QgaXMgcmVqZWN0ZWQgYnkgdGhlIHJlbW90ZSBMTENQCiAJICogICAgICAgICAgICAgU2VydmljZQotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIHZvaWQgY29ubmVjdChTdHJpbmcgc24pIHRocm93cyBJT0V4Y2VwdGlvbiwgTGxjcEV4Y2VwdGlvbiB7CiAJCXRyeSB7CkBAIC0xNjAsNyArMTQzLDYgQEAKIAkgKgogCSAqIEBwYXJhbSB0aW1lb3V0CiAJICogICAgICAgICAgICB0aW1lb3V0IHZhbHVlIGZvciB0aGUgY29ubmVjdCByZXF1ZXN0Ci0JICogQHNpbmNlIEFBMDIuMDEKIAkgKi8KIAlwdWJsaWMgdm9pZCBzZXRDb25uZWN0VGltZW91dChpbnQgdGltZW91dCkgewogCQl0cnkgewpAQCAtMTc0LDcgKzE1Niw2IEBACiAJICogR2V0IHRoZSB0aW1lb3V0IHZhbHVlIG9mIHRoZSBjb25uZWN0IHJlcXVlc3QKIAkgKgogCSAqIEByZXR1cm4gbVRpbWVvdXQKLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyBpbnQgZ2V0Q29ubmVjdFRpbWVvdXQoKSB7CiAJCXRyeSB7CkBAIC0xOTEsNyArMTcyLDYgQEAKIAkgKgogCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24KIAkgKiAgICAgICAgICAgICBpZiB0aGUgTExDUCBoYXMgYmVlbiBsb3N0IG9yIGRlYWN0aXZhdGVkLgotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogCQl0cnkgewpAQCAtMjEwLDcgKzE5MCw2IEBACiAJICoKIAkgKiBAdGhyb3dzIElPRXhjZXB0aW9uCiAJICogICAgICAgICAgICAgaWYgdGhlIExMQ1AgaGFzIGJlZW4gbG9zdCBvciBkZWFjdGl2YXRlZC4KLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyB2b2lkIHNlbmQoYnl0ZVtdIGRhdGEpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAJCXRyeSB7CkBAIC0yMzIsNyArMjExLDYgQEAKIAkgKiBAcmV0dXJuIGxlbmd0aCBsZW5ndGggb2YgdGhlIGRhdGEgcmVjZWl2ZWQKIAkgKiBAdGhyb3dzIElPRXhjZXB0aW9uCiAJICogICAgICAgICAgICAgaWYgdGhlIExMQ1AgaGFzIGJlZW4gbG9zdCBvciBkZWFjdGl2YXRlZC4KLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyBpbnQgcmVjZWl2ZShieXRlW10gcmVjZWl2ZUJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKIAkJaW50IHJlY2VpdmVkTGVuZ3RoID0gMDsKQEAgLTI1Miw3ICsyMzAsNiBAQAogCSAqIFJldHVybnMgdGhlIGxvY2FsIFNlcnZpY2UgQWNjZXNzIFBvaW50IG51bWJlciBvZiB0aGUgc29ja2V0CiAJICoKIAkgKiBAcmV0dXJuIGxvY2FsU2FwCi0JICogQHNpbmNlIEFBMDIuMDEKIAkgKi8KIAlwdWJsaWMgaW50IGdldExvY2FsU2FwKCkgewogCQl0cnkgewpAQCAtMjY3LDcgKzI0NCw2IEBACiAJICogUmV0dXJucyB0aGUgbG9jYWwgTWF4aW11bSBJbmZvcm1hdGlvbiBVbml0KE1JVSkgb2YgdGhlIHNvY2tldAogCSAqCiAJICogQHJldHVybiBtaXUKLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyBpbnQgZ2V0TG9jYWxTb2NrZXRNaXUoKSB7CiAJCXRyeSB7CkBAIC0yODIsNyArMjU4LDYgQEAKIAkgKiBSZXR1cm5zIHRoZSBsb2NhbCBSZWNlaXZlIFdpbmRvdyhSVykgb2YgdGhlIHNvY2tldAogCSAqCiAJICogQHJldHVybiBydwotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIGludCBnZXRMb2NhbFNvY2tldFJ3KCkgewogCQl0cnkgewpAQCAtMzAxLDcgKzI3Niw2IEBACiAJICogQHJldHVybiByZW1vdGVNaXUKIAkgKiBAdGhyb3dzIExsY3BFeGNlcHRpb24KIAkgKiAgICAgICAgICAgICBpZiB0aGUgTGxjcENsaWVudFNvY2tldCBpcyBub3QgaW4gYSBDT05ORUNURURfU1RBVEUKLQkgKiBAc2luY2UgQUEwMi4wMQogCSAqLwogCXB1YmxpYyBpbnQgZ2V0UmVtb3RlU29ja2V0TWl1KCkgdGhyb3dzIExsY3BFeGNlcHRpb24gewogCQl0cnkgewpAQCAtMzI1LDcgKzI5OSw2IEBACiAJICogQHJldHVybiBydwogCSAqIEB0aHJvd3MgTGxjcEV4Y2VwdGlvbgogCSAqICAgICAgICAgICAgIGlmIHRoZSBMbGNwQ2xpZW50U29ja2V0IGlzIG5vdCBpbiBhIENPTk5FQ1RFRF9TVEFURQotCSAqIEBzaW5jZSBBQTAyLjAxCiAJICovCiAJcHVibGljIGludCBnZXRSZW1vdGVTb2NrZXRSdygpIHRocm93cyBMbGNwRXhjZXB0aW9uIHsKIAkJdHJ5IHsKQEAgLTM0MCw2ICszMTMsNCBAQAogCQkJcmV0dXJuIDA7CiAJCX0KIAl9Ci0KLQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL05mY0V4Y2VwdGlvbi5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL25mYy9OZmNFeGNlcHRpb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBjb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvTmZjRXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIGNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTmZjRXhjZXB0aW9uLmphdmEKaW5kZXggMjQ5N2MxNS4uMjlhOTljNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL05mY0V4Y2VwdGlvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvTmZjRXhjZXB0aW9uLmphdmEKQEAgLTE0LDIwICsxNCwxMSBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBORkNFeGNlcHRpb24uamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChKZXJlbWllIENvcmJpZXIpCi0gKiBDcmVhdGVkICAgICAgICAgOiAyNi0wOC0yMDA5Ci0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZDsKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubmZjOwogCiAvKioKICAqIEdlbmVyaWMgZXhjZXB0aW9uIHRocm93biBpbiBjYXNlIHNvbWV0aGluZyB1bmV4cGVjdGVkIGhhcHBlbmVkIGR1cmluZyB0aGUKICAqIE5GQ01hbmFnZXIgb3BlcmF0aW9ucy4KLSAqCi0gKiBAc2luY2UgQUEwMS4wNAotICogQGhpZGUKICAqLwogcHVibGljIGNsYXNzIE5mY0V4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CiAgICAvKioKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9QMnBEZXZpY2UuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvUDJwRGV2aWNlLmphdmEKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL1AycERldmljZS5qYXZhCnJlbmFtZSB0byBjb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL1AycERldmljZS5qYXZhCmluZGV4IDY1ODAwZjIuLjhhYjlhYWQgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9QMnBEZXZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL1AycERldmljZS5qYXZhCkBAIC0xNCwyMCArMTQsMTMgQEAKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKLS8qKgotICogRmlsZSAgICAgICAgICAgIDogUDJQRGV2aWNlLmphdmEKLSAqIE9yaWdpbmFsLUF1dGhvciA6IFRydXN0ZWQgTG9naWMgUy5BLiAoRGFuaWVsIFRvbWFzKQotICogQ3JlYXRlZCAgICAgICAgIDogMjYtMDItMjAxMAotICovCi0KLXBhY2thZ2UgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQ7CitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLm5mYzsKIAogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CiAKIC8qKgogICogUDJwRGV2aWNlIGlzIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbGwgc3VwcG9ydGVkIFAyUCB0YXJnZXRzIHRoZQogICogTmZjTWFuYWdlciBjYW4gaGFuZGxlLgotICogQGhpZGUKICAqLwogcHVibGljIGFic3RyYWN0IGNsYXNzIFAycERldmljZSB7CiAKQEAgLTQ4LDE5ICs0MSwxNiBAQAogCiAgICAgLyoqCiAgICAgICogVGFyZ2V0IGhhbmRsZSwgdXNlZCBieSBuYXRpdmUgY2FsbHMuCi0gICAgICogQGhpZGUKICAgICAgKi8KICAgICBwcm90ZWN0ZWQgaW50IG1IYW5kbGU7CiAJCiAgICAgLyoqCiAgICAgICogRmxhZyBzZXQgd2hlbiB0aGUgb2JqZWN0IGlzIGNsb3NlZCBhbmQgdGh1cyBub3QgdXNhYmxlIGFueSBtb3JlLgotICAgICAqIEBoaWRlCiAgICAgICovCiAJcHJvdGVjdGVkIGJvb2xlYW4gaXNDbG9zZWQgPSBmYWxzZTsKIAogICAgIC8qKgogICAgICAqIFByZXZlbnQgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBiZSBwdWJsaWMuCi0gICAgICogQGhpZGUKICAgICAgKi8KIAlwcm90ZWN0ZWQgUDJwRGV2aWNlKCkgewogCX0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9QMnBJbml0aWF0b3IuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvUDJwSW5pdGlhdG9yLmphdmEKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL1AycEluaXRpYXRvci5qYXZhCnJlbmFtZSB0byBjb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL1AycEluaXRpYXRvci5qYXZhCmluZGV4IDZiOTNiY2UuLjQ2YWU5YWIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9QMnBJbml0aWF0b3IuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbmZjL1AycEluaXRpYXRvci5qYXZhCkBAIC0xNCwxMiArMTQsNyBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBQMlBJbml0aWF0b3IuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChEYW5pZWwgVG9tYXMpCi0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZDsKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubmZjOwogCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIApAQCAtMzIsOCArMjcsNiBAQAogICogY29tbXVuaWNhdGlvbi4KICAqCiAgKiBAc2VlIFAycFRhcmdldAotICogQHNpbmNlIEFBMDIuMDEKLSAqIEBoaWRlCiAgKi8KIHB1YmxpYyBjbGFzcyBQMnBJbml0aWF0b3IgZXh0ZW5kcyBQMnBEZXZpY2UgewogCkBAIC00MSw3ICszNCw2IEBACiAKIAkvKioKICAgICAgKiBUaGUgZW50cnkgcG9pbnQgZm9yIFAyUCB0YWcgb3BlcmF0aW9ucy4KLSAgICAgKiBAaGlkZQogICAgICAqLwogCXByaXZhdGUgZmluYWwgSVAycEluaXRpYXRvciBtU2VydmljZTsKIApAQCAtNTAsOCArNDIsNiBAQAogICAgICAqCiAgICAgICogQHBhcmFtIGhhbmRsZSBUaGUgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBORkMgc2VydmljZSBhbmQgdXNlZCB0byBpZGVudGlmeQogICAgICAqIAkJCQkgdGhlIHRhZyBpbiBzdWJzZXF1ZW50IGNhbGxzLgotICAgICAqCi0gICAgICogQGhpZGUKICAgICAgKi8KICAgICBQMnBJbml0aWF0b3IoSVAycEluaXRpYXRvciBzZXJ2aWNlLCBpbnQgaGFuZGxlKSB7CiAgICAgICAgIHRoaXMubVNlcnZpY2UgPSBzZXJ2aWNlOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL1AycFRhcmdldC5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL25mYy9QMnBUYXJnZXQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBjb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvUDJwVGFyZ2V0LmphdmEKcmVuYW1lIHRvIGNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvUDJwVGFyZ2V0LmphdmEKaW5kZXggYWE5ZTk0Zi4uN2I1OWRhMyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL1AycFRhcmdldC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9uZmMvUDJwVGFyZ2V0LmphdmEKQEAgLTE0LDEyICsxNCw3IEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCi0vKioKLSAqIEZpbGUgICAgICAgICAgICA6IFAyUFRhcmdldC5qYXZhCi0gKiBPcmlnaW5hbC1BdXRob3IgOiBUcnVzdGVkIExvZ2ljIFMuQS4gKERhbmllbCBUb21hcykKLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkOworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5uZmM7CiAKIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwogCkBAIC0zMiw4ICsyNyw2IEBACiAgKiBQMnBUYXJnZXQgcmVwcmVzZW50cyB0aGUgdGFyZ2V0IGluIGFuIE5GQy1JUDEgcGVlci10by1wZWVyIGNvbW11bmljYXRpb24uCiAgKgogICogQHNlZSBQMnBJbml0aWF0b3IKLSAqIEBzaW5jZSBBQTAyLjAxCi0gKiBAaGlkZQogICovCiBwdWJsaWMgY2xhc3MgUDJwVGFyZ2V0IGV4dGVuZHMgUDJwRGV2aWNlIHsKIApAQCAtNDEsMTkgKzM0LDE2IEBACiAKIAkvKioKICAgICAgKiBUaGUgZW50cnkgcG9pbnQgZm9yIFAyUCB0YWcgb3BlcmF0aW9ucy4KLSAgICAgKiBAaGlkZQogICAgICAqLwogCXByaXZhdGUgZmluYWwgSVAycFRhcmdldCBtU2VydmljZTsKIAogICAgIC8qKgogICAgICAqIEZsYWcgc2V0IHdoZW4gdGhlIG9iamVjdCBpcyBjbG9zZWQgYW5kIHRodXMgbm90IHVzYWJsZSBhbnkgbW9yZS4KLSAgICAgKiBAaGlkZQogICAgICAqLwogCXByaXZhdGUgZmluYWwgYm9vbGVhbiBpc0Nsb3NlZCA9IGZhbHNlOwogCiAgICAgLyoqCiAgICAgICogRmxhZyBzZXQgd2hlbiB0aGUgdGFnIGlzIGNvbm5lY3RlZC4KLSAgICAgKiBAaGlkZQogICAgICAqLwogCXByaXZhdGUgYm9vbGVhbiBpc0Nvbm5lY3RlZCA9IGZhbHNlOwogCkBAIC02Miw4ICs1Miw2IEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIGRhdGEgc2VudCBieSB0aGUgUDJwSW5pdGlhdG9yLgogICAgICAqIEB0aHJvd3MgTmZjRXhjZXB0aW9uIGlmIGFjY2Vzc2luZyBhIGNsb3NlZCB0YXJnZXQuCi0gICAgICoKLSAgICAgKiBAaGlkZQogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGNoZWNrU3RhdGUoKSB0aHJvd3MgTmZjRXhjZXB0aW9uIHsKICAgICAJaWYoaXNDbG9zZWQpIHsKQEAgLTc2LDggKzY0LDYgQEAKICAgICAgKgogICAgICAqIEBwYXJhbSBoYW5kbGUgVGhlIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgTkZDIHNlcnZpY2UgYW5kIHVzZWQgdG8gaWRlbnRpZnkKICAgICAgKiAJCQkJIHRoZSB0YWcgaW4gc3Vic2VxdWVudCBjYWxscy4KLSAgICAgKgotICAgICAqIEBoaWRlCiAgICAgICovCiAgICAgUDJwVGFyZ2V0KElQMnBUYXJnZXQgc2VydmljZSwgaW50IGhhbmRsZSkgewogICAgICAgICB0aGlzLm1TZXJ2aWNlID0gc2VydmljZTsKQEAgLTE4MSw1ICsxNjcsNCBAQAogICAgIHB1YmxpYyBpbnQgZ2V0TW9kZSgpIHsKICAgICAgICAgcmV0dXJuIFAycERldmljZS5NT0RFX1AyUF9UQVJHRVQ7CiAgICAgfQotCiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvQXRvbWljRmlsZS5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0F0b21pY0ZpbGUuamF2YQppbmRleCBlNjc1ZWYwLi5iMDkzOTc3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvQXRvbWljRmlsZS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9BdG9taWNGaWxlLmphdmEKQEAgLTc3LDYgKzc3LDcgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBmaW5pc2hXcml0ZShGaWxlT3V0cHV0U3RyZWFtIHN0cikgewogICAgICAgICBpZiAoc3RyICE9IG51bGwpIHsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKHN0cik7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIHN0ci5jbG9zZSgpOwogICAgICAgICAgICAgICAgIG1CYWNrdXBOYW1lLmRlbGV0ZSgpOwpAQCAtODgsNiArODksNyBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIGZhaWxXcml0ZShGaWxlT3V0cHV0U3RyZWFtIHN0cikgewogICAgICAgICBpZiAoc3RyICE9IG51bGwpIHsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKHN0cik7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIHN0ci5jbG9zZSgpOwogICAgICAgICAgICAgICAgIG1CYXNlTmFtZS5kZWxldGUoKTsKQEAgLTEwOSw2ICsxMTEsNyBAQAogICAgIHB1YmxpYyB2b2lkIHRydW5jYXRlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0obUJhc2VOYW1lKTsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKGZvcyk7CiAgICAgICAgICAgICBmb3MuY2xvc2UoKTsKICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQ291bGRuJ3QgYXBwZW5kICIgKyBtQmFzZU5hbWUpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0JhdHRlcnlTdGF0c0ltcGwuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9CYXR0ZXJ5U3RhdHNJbXBsLmphdmEKaW5kZXggYTllNTA1Mi4uMzZhY2I4NSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0JhdHRlcnlTdGF0c0ltcGwuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvQmF0dGVyeVN0YXRzSW1wbC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgYW5kcm9pZC5uZXQuVHJhZmZpY1N0YXRzOwogaW1wb3J0IGFuZHJvaWQub3MuQmF0dGVyeU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CYXR0ZXJ5U3RhdHM7CitpbXBvcnQgYW5kcm9pZC5vcy5GaWxlVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKIGltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKQEAgLTQ0ODIsNiArNDQ4Myw3IEBACiAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIHN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKG1GaWxlLmNob29zZUZvcldyaXRlKCkpOwogICAgICAgICAgICAgc3RyZWFtLndyaXRlKG5leHQubWFyc2hhbGwoKSk7CiAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKTsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKHN0cmVhbSk7CiAgICAgICAgICAgICBzdHJlYW0uY2xvc2UoKTsKICAgICAgICAgICAgIG1GaWxlLmNvbW1pdCgpOwogICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvWnlnb3RlSW5pdC5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1p5Z290ZUluaXQuamF2YQppbmRleCBhNDA5ZWM4Li4zOTdhZTYwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvWnlnb3RlSW5pdC5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9aeWdvdGVJbml0LmphdmEKQEAgLTU2Myw2ICs1NjMsOCBAQAogCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgewogICAgICAgICB0cnkgeworICAgICAgICAgICAgVk1SdW50aW1lLmdldFJ1bnRpbWUoKS5zZXRNaW5pbXVtSGVhcFNpemUoNSAqIDEwMjQgKiAxMDI0KTsKKwogICAgICAgICAgICAgLy8gU3RhcnQgcHJvZmlsaW5nIHRoZSB6eWdvdGUgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICAgICBTYW1wbGluZ1Byb2ZpbGVySW50ZWdyYXRpb24uc3RhcnQoKTsKIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL3N0b3JhZ2UvRXh0ZXJuYWxTdG9yYWdlRm9ybWF0dGVyLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3Mvc3RvcmFnZS9FeHRlcm5hbFN0b3JhZ2VGb3JtYXR0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjUwMjJlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL3N0b3JhZ2UvRXh0ZXJuYWxTdG9yYWdlRm9ybWF0dGVyLmphdmEKQEAgLTAsMCArMSwyMjggQEAKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwub3Muc3RvcmFnZTsKKworaW1wb3J0IGFuZHJvaWQuYXBwLlByb2dyZXNzRGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLklNb3VudFNlcnZpY2U7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRvYXN0OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKKworLyoqCisgKiBUYWtlcyBjYXJlIG9mIHVubW91bnRpbmcgYW5kIGZvcm1hdHRpbmcgZXh0ZXJuYWwgc3RvcmFnZS4KKyAqLworcHVibGljIGNsYXNzIEV4dGVybmFsU3RvcmFnZUZvcm1hdHRlciBleHRlbmRzIFNlcnZpY2UKKyAgICAgICAgaW1wbGVtZW50cyBEaWFsb2dJbnRlcmZhY2UuT25DYW5jZWxMaXN0ZW5lciB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiRXh0ZXJuYWxTdG9yYWdlRm9ybWF0dGVyIjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPUk1BVF9PTkxZID0gImNvbS5hbmRyb2lkLmludGVybmFsLm9zLnN0b3JhZ2UuRk9STUFUX09OTFkiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPUk1BVF9BTkRfRkFDVE9SWV9SRVNFVCA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5zdG9yYWdlLkZPUk1BVF9BTkRfRkFDVE9SWV9SRVNFVCI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9BTFdBWVNfUkVTRVQgPSAiYWx3YXlzX3Jlc2V0IjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29tcG9uZW50TmFtZSBDT01QT05FTlRfTkFNRQorICAgICAgICAgICAgPSBuZXcgQ29tcG9uZW50TmFtZSgiYW5kcm9pZCIsIEV4dGVybmFsU3RvcmFnZUZvcm1hdHRlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAgLy8gQWNjZXNzIHVzaW5nIGdldE1vdW50U2VydmljZSgpCisgICAgcHJpdmF0ZSBJTW91bnRTZXJ2aWNlIG1Nb3VudFNlcnZpY2UgPSBudWxsOworCisgICAgcHJpdmF0ZSBTdG9yYWdlTWFuYWdlciBtU3RvcmFnZU1hbmFnZXIgPSBudWxsOworCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VMb2NrOworCisgICAgcHJpdmF0ZSBQcm9ncmVzc0RpYWxvZyBtUHJvZ3Jlc3NEaWFsb2cgPSBudWxsOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1GYWN0b3J5UmVzZXQgPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUFsd2F5c1Jlc2V0ID0gZmFsc2U7CisKKyAgICBTdG9yYWdlRXZlbnRMaXN0ZW5lciBtU3RvcmFnZUxpc3RlbmVyID0gbmV3IFN0b3JhZ2VFdmVudExpc3RlbmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25TdG9yYWdlU3RhdGVDaGFuZ2VkKFN0cmluZyBwYXRoLCBTdHJpbmcgb2xkU3RhdGUsIFN0cmluZyBuZXdTdGF0ZSkgeworICAgICAgICAgICAgTG9nLmkoVEFHLCAiUmVjZWl2ZWQgc3RvcmFnZSBzdGF0ZSBjaGFuZ2VkIG5vdGlmaWNhdGlvbiB0aGF0ICIgKworICAgICAgICAgICAgICAgICAgICBwYXRoICsgIiBjaGFuZ2VkIHN0YXRlIGZyb20gIiArIG9sZFN0YXRlICsKKyAgICAgICAgICAgICAgICAgICAgIiB0byAiICsgbmV3U3RhdGUpOworICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3NTdGF0ZSgpOworICAgICAgICB9CisgICAgfTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlKCkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZSgpOworCisgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RPUkFHRV9TRVJWSUNFKTsKKyAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlci5yZWdpc3Rlckxpc3RlbmVyKG1TdG9yYWdlTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgbVdha2VMb2NrID0gKChQb3dlck1hbmFnZXIpZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpKQorICAgICAgICAgICAgICAgIC5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJFeHRlcm5hbFN0b3JhZ2VGb3JtYXR0ZXIiKTsKKyAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IG9uU3RhcnRDb21tYW5kKEludGVudCBpbnRlbnQsIGludCBmbGFncywgaW50IHN0YXJ0SWQpIHsKKyAgICAgICAgaWYgKEZPUk1BVF9BTkRfRkFDVE9SWV9SRVNFVC5lcXVhbHMoaW50ZW50LmdldEFjdGlvbigpKSkgeworICAgICAgICAgICAgbUZhY3RvcnlSZXNldCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGludGVudC5nZXRCb29sZWFuRXh0cmEoRVhUUkFfQUxXQVlTX1JFU0VULCBmYWxzZSkpIHsKKyAgICAgICAgICAgIG1BbHdheXNSZXNldCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVByb2dyZXNzRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIG1Qcm9ncmVzc0RpYWxvZyA9IG5ldyBQcm9ncmVzc0RpYWxvZyh0aGlzKTsKKyAgICAgICAgICAgIG1Qcm9ncmVzc0RpYWxvZy5zZXRJbmRldGVybWluYXRlKHRydWUpOworICAgICAgICAgICAgbVByb2dyZXNzRGlhbG9nLnNldENhbmNlbGFibGUodHJ1ZSk7CisgICAgICAgICAgICBtUHJvZ3Jlc3NEaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVCk7CisgICAgICAgICAgICBpZiAoIW1BbHdheXNSZXNldCkgeworICAgICAgICAgICAgICAgIG1Qcm9ncmVzc0RpYWxvZy5zZXRPbkNhbmNlbExpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3NTdGF0ZSgpOworICAgICAgICAgICAgbVByb2dyZXNzRGlhbG9nLnNob3coKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBTZXJ2aWNlLlNUQVJUX1JFREVMSVZFUl9JTlRFTlQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25EZXN0cm95KCkgeworICAgICAgICBpZiAobVN0b3JhZ2VNYW5hZ2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1TdG9yYWdlTWFuYWdlci51bnJlZ2lzdGVyTGlzdGVuZXIobVN0b3JhZ2VMaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Qcm9ncmVzc0RpYWxvZyAhPSBudWxsKSB7CisgICAgICAgICAgICBtUHJvZ3Jlc3NEaWFsb2cuZGlzbWlzcygpOworICAgICAgICB9CisgICAgICAgIG1XYWtlTG9jay5yZWxlYXNlKCk7CisgICAgICAgIHN1cGVyLm9uRGVzdHJveSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBJQmluZGVyIG9uQmluZChJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ2FuY2VsKERpYWxvZ0ludGVyZmFjZSBkaWFsb2cpIHsKKyAgICAgICAgSU1vdW50U2VydmljZSBtb3VudFNlcnZpY2UgPSBnZXRNb3VudFNlcnZpY2UoKTsKKyAgICAgICAgU3RyaW5nIGV4dFN0b3JhZ2VQYXRoID0gRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkudG9TdHJpbmcoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1vdW50U2VydmljZS5tb3VudFZvbHVtZShleHRTdG9yYWdlUGF0aCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdGFsa2luZyB3aXRoIG1vdW50IHNlcnZpY2UiLCBlKTsKKyAgICAgICAgfQorICAgICAgICBzdG9wU2VsZigpOworICAgIH0KKworICAgIHZvaWQgZmFpbChpbnQgbXNnKSB7CisgICAgICAgIFRvYXN0Lm1ha2VUZXh0KHRoaXMsIG1zZywgVG9hc3QuTEVOR1RIX0xPTkcpLnNob3coKTsKKyAgICAgICAgaWYgKG1BbHdheXNSZXNldCkgeworICAgICAgICAgICAgc2VuZEJyb2FkY2FzdChuZXcgSW50ZW50KCJhbmRyb2lkLmludGVudC5hY3Rpb24uTUFTVEVSX0NMRUFSIikpOworICAgICAgICB9CisgICAgICAgIHN0b3BTZWxmKCk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVQcm9ncmVzc1N0YXRlKCkgeworICAgICAgICBTdHJpbmcgc3RhdHVzID0gRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlU3RhdGUoKTsKKyAgICAgICAgaWYgKEVudmlyb25tZW50Lk1FRElBX01PVU5URUQuZXF1YWxzKHN0YXR1cykKKyAgICAgICAgICAgICAgICB8fCBFbnZpcm9ubWVudC5NRURJQV9NT1VOVEVEX1JFQURfT05MWS5lcXVhbHMoc3RhdHVzKSkgeworICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3NEaWFsb2coUi5zdHJpbmcucHJvZ3Jlc3NfdW5tb3VudGluZyk7CisgICAgICAgICAgICBJTW91bnRTZXJ2aWNlIG1vdW50U2VydmljZSA9IGdldE1vdW50U2VydmljZSgpOworICAgICAgICAgICAgU3RyaW5nIGV4dFN0b3JhZ2VQYXRoID0gRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbW91bnRTZXJ2aWNlLnVubW91bnRWb2x1bWUoZXh0U3RvcmFnZVBhdGgsIHRydWUpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdGFsa2luZyB3aXRoIG1vdW50IHNlcnZpY2UiLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChFbnZpcm9ubWVudC5NRURJQV9OT0ZTLmVxdWFscyhzdGF0dXMpCisgICAgICAgICAgICAgICAgfHwgRW52aXJvbm1lbnQuTUVESUFfVU5NT1VOVEVELmVxdWFscyhzdGF0dXMpCisgICAgICAgICAgICAgICAgfHwgRW52aXJvbm1lbnQuTUVESUFfVU5NT1VOVEFCTEUuZXF1YWxzKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHVwZGF0ZVByb2dyZXNzRGlhbG9nKFIuc3RyaW5nLnByb2dyZXNzX2VyYXNpbmcpOworICAgICAgICAgICAgZmluYWwgSU1vdW50U2VydmljZSBtb3VudFNlcnZpY2UgPSBnZXRNb3VudFNlcnZpY2UoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBleHRTdG9yYWdlUGF0aCA9IEVudmlyb25tZW50LmdldEV4dGVybmFsU3RvcmFnZURpcmVjdG9yeSgpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAobW91bnRTZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuZXcgVGhyZWFkKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91bnRTZXJ2aWNlLmZvcm1hdFZvbHVtZShleHRTdG9yYWdlUGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0Lm1ha2VUZXh0KEV4dGVybmFsU3RvcmFnZUZvcm1hdHRlci50aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi5zdHJpbmcuZm9ybWF0X2Vycm9yLCBUb2FzdC5MRU5HVEhfTE9ORykuc2hvdygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUZhY3RvcnlSZXNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kQnJvYWRjYXN0KG5ldyBJbnRlbnQoImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQVNURVJfQ0xFQVIiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludGVudCBoYW5kbGluZyBpcyBhc3luY2hyb25vdXMgLS0gYXNzdW1lIGl0IHdpbGwgaGFwcGVuIHNvb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BTZWxmKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3Qgc3VjY2VlZCwgb3IgYXJlbid0IGRvaW5nIGEgZnVsbCBmYWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNldCwgdGhlbiBpdCBpcyB0aW1lIHRvIHJlbW91bnQgdGhlIHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MgJiYgbUFsd2F5c1Jlc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEJyb2FkY2FzdChuZXcgSW50ZW50KCJhbmRyb2lkLmludGVudC5hY3Rpb24uTUFTVEVSX0NMRUFSIikpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudFNlcnZpY2UubW91bnRWb2x1bWUoZXh0U3RvcmFnZVBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0YWxraW5nIHdpdGggbW91bnQgc2VydmljZSIsIGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BTZWxmKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LnN0YXJ0KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIExvZy53KCJNZWRpYUZvcm1hdCIsICJVbmFibGUgdG8gbG9jYXRlIElNb3VudFNlcnZpY2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChFbnZpcm9ubWVudC5NRURJQV9CQURfUkVNT1ZBTC5lcXVhbHMoc3RhdHVzKSkgeworICAgICAgICAgICAgZmFpbChSLnN0cmluZy5tZWRpYV9iYWRfcmVtb3ZhbCk7CisgICAgICAgIH0gZWxzZSBpZiAoRW52aXJvbm1lbnQuTUVESUFfQ0hFQ0tJTkcuZXF1YWxzKHN0YXR1cykpIHsKKyAgICAgICAgICAgIGZhaWwoUi5zdHJpbmcubWVkaWFfY2hlY2tpbmcpOworICAgICAgICB9IGVsc2UgaWYgKEVudmlyb25tZW50Lk1FRElBX1JFTU9WRUQuZXF1YWxzKHN0YXR1cykpIHsKKyAgICAgICAgICAgIGZhaWwoUi5zdHJpbmcubWVkaWFfcmVtb3ZlZCk7CisgICAgICAgIH0gZWxzZSBpZiAoRW52aXJvbm1lbnQuTUVESUFfU0hBUkVELmVxdWFscyhzdGF0dXMpKSB7CisgICAgICAgICAgICBmYWlsKFIuc3RyaW5nLm1lZGlhX3NoYXJlZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmYWlsKFIuc3RyaW5nLm1lZGlhX3Vua25vd25fc3RhdGUpOworICAgICAgICAgICAgTG9nLncoVEFHLCAiVW5rbm93biBzdG9yYWdlIHN0YXRlOiAiICsgc3RhdHVzKTsKKyAgICAgICAgICAgIHN0b3BTZWxmKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVQcm9ncmVzc0RpYWxvZyhpbnQgbXNnKSB7CisgICAgICAgIGlmIChtUHJvZ3Jlc3NEaWFsb2cgPT0gbnVsbCkgeworICAgICAgICAgICAgbVByb2dyZXNzRGlhbG9nID0gbmV3IFByb2dyZXNzRGlhbG9nKHRoaXMpOworICAgICAgICAgICAgbVByb2dyZXNzRGlhbG9nLnNldEluZGV0ZXJtaW5hdGUodHJ1ZSk7CisgICAgICAgICAgICBtUHJvZ3Jlc3NEaWFsb2cuc2V0Q2FuY2VsYWJsZShmYWxzZSk7CisgICAgICAgICAgICBtUHJvZ3Jlc3NEaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVCk7CisgICAgICAgICAgICBtUHJvZ3Jlc3NEaWFsb2cuc2hvdygpOworICAgICAgICB9CisKKyAgICAgICAgbVByb2dyZXNzRGlhbG9nLnNldE1lc3NhZ2UoZ2V0VGV4dChtc2cpKTsKKyAgICB9CisKKyAgICBJTW91bnRTZXJ2aWNlIGdldE1vdW50U2VydmljZSgpIHsKKyAgICAgICAgaWYgKG1Nb3VudFNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgSUJpbmRlciBzZXJ2aWNlID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgibW91bnQiKTsKKyAgICAgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTW91bnRTZXJ2aWNlID0gSU1vdW50U2VydmljZS5TdHViLmFzSW50ZXJmYWNlKHNlcnZpY2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJDYW4ndCBnZXQgbW91bnQgc2VydmljZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBtTW91bnRTZXJ2aWNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQuamF2YSBiL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmMDFiNi4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBOYXRpdmVMbGNwQ29ubmVjdGlvbkxlc3NTb2NrZXQuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChTeWx2YWluIEZvbnRlbmVhdSkKLSAqIENyZWF0ZWQgICAgICAgICA6IDE4LTAyLTIwMTAKLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmludGVybmFsOwotCi1pbXBvcnQgYW5kcm9pZC5uZmMuTGxjcFBhY2tldDsKLQotLyoqCi0gKiBMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQgcmVwcmVzZW50cyBhIExMQ1AgQ29ubmVjdGlvbmxlc3Mgb2JqZWN0IHRvIGJlIHVzZWQKLSAqIGluIGEgY29ubmVjdGlvbmxlc3MgY29tbXVuaWNhdGlvbgotICoKLSAqIEBzaW5jZSBBQTAyLjAxCi0gKiBAaGlkZQotICovCi0KLXB1YmxpYyBjbGFzcyBOYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQgewotCi0gICAgcHJpdmF0ZSBpbnQgbUhhbmRsZTsKLQotICAgIHByaXZhdGUgaW50IG1TYXA7Ci0KLSAgICBwcml2YXRlIGludCBtTGlua01pdTsKLQotICAgIHB1YmxpYyBOYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQoKXs7Ci0gICAgfQotCi0gICAgcHVibGljIE5hdGl2ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldChpbnQgc2FwKXsKLSAgICAgICAgbVNhcCA9IHNhcDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9TZW5kVG8oaW50IHNhcCwgYnl0ZVtdIGRhdGEpOwotCi0gICAgcHVibGljIG5hdGl2ZSBMbGNwUGFja2V0IGRvUmVjZWl2ZUZyb20oaW50IGxpbmtNaXUpOwotCi0gICAgcHVibGljIG5hdGl2ZSBib29sZWFuIGRvQ2xvc2UoKTsKLQotICAgIHB1YmxpYyBpbnQgZ2V0TGlua01pdSgpewotICAgICAgICByZXR1cm4gbUxpbmtNaXU7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTYXAoKXsKLSAgICAgICAgcmV0dXJuIG1TYXA7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRIYW5kbGUoKXsKLSAgICAgICAgcmV0dXJuIG1IYW5kbGU7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQuamF2YSBiL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVMbGNwU2VydmljZVNvY2tldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzlkNjliLi4wMDAwMDAwCi0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVMbGNwU2VydmljZVNvY2tldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLS8qKgotICogRmlsZSAgICAgICAgICAgIDogTmF0aXZlTGxjcFNlcnZlclNvY2tldC5qYXZhCi0gKiBPcmlnaW5hbC1BdXRob3IgOiBUcnVzdGVkIExvZ2ljIFMuQS4gKFN5bHZhaW4gRm9udGVuZWF1KQotICogQ3JlYXRlZCAgICAgICAgIDogMTgtMDItMjAxMAotICovCi0KLXBhY2thZ2UgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuaW50ZXJuYWw7Ci0KLS8qKgotICogTGxjcFNlcnZpY2VTb2NrZXQgcmVwcmVzZW50cyBhIExMQ1AgU2VydmljZSB0byBiZSB1c2VkIGluIGEKLSAqIENvbm5lY3Rpb24tb3JpZW50ZWQgY29tbXVuaWNhdGlvbgotICoge0BoaWRlfQotICovCi0KLXB1YmxpYyBjbGFzcyBOYXRpdmVMbGNwU2VydmljZVNvY2tldCB7Ci0KLSAgICBwcml2YXRlIGludCBtSGFuZGxlOwotCi0gICAgcHJpdmF0ZSBpbnQgbUxvY2FsTWl1OwotCi0gICAgcHJpdmF0ZSBpbnQgbUxvY2FsUnc7Ci0KLSAgICBwcml2YXRlIGludCBtTG9jYWxMaW5lYXJCdWZmZXJMZW5ndGg7Ci0KLSAgICBwcml2YXRlIGludCBtU2FwOwotCi0gICAgcHJpdmF0ZSBpbnQgbVRpbWVvdXQ7Ci0KLSAgICBwcml2YXRlIFN0cmluZyBtU2VydmljZU5hbWU7Ci0KLSAgICBwdWJsaWMgTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQoKXsKLQotICAgIH0KLQotICAgIHB1YmxpYyBOYXRpdmVMbGNwU2VydmljZVNvY2tldChTdHJpbmcgc2VydmljZU5hbWUpewotICAgICAgICBtU2VydmljZU5hbWUgPSBzZXJ2aWNlTmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgbmF0aXZlIE5hdGl2ZUxsY3BTb2NrZXQgZG9BY2NlcHQoaW50IHRpbWVvdXQsIGludCBtaXUsIGludCBydywgaW50IGxpbmVhckJ1ZmZlckxlbmd0aCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9DbG9zZSgpOwotCi0gICAgcHVibGljIGludCBnZXRIYW5kbGUoKXsKLSAgICAgICAgcmV0dXJuIG1IYW5kbGU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0QWNjZXB0VGltZW91dChpbnQgdGltZW91dCl7Ci0gICAgICAgIG1UaW1lb3V0ID0gdGltZW91dDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldEFjY2VwdFRpbWVvdXQoKXsKLSAgICAgICAgcmV0dXJuIG1UaW1lb3V0OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0UncoKXsKLSAgICAgICAgcmV0dXJuIG1Mb2NhbFJ3OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0TWl1KCl7Ci0gICAgICAgIHJldHVybiBtTG9jYWxNaXU7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRMaW5lYXJCdWZmZXJMZW5ndGgoKXsKLSAgICAgICAgcmV0dXJuIG1Mb2NhbExpbmVhckJ1ZmZlckxlbmd0aDsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTGxjcFNvY2tldC5qYXZhIGIvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL2ludGVybmFsL05hdGl2ZUxsY3BTb2NrZXQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE4Y2ZhYS4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTGxjcFNvY2tldC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLS8qKgotICogRmlsZSAgICAgICAgICAgIDogTmF0aXZlTGxjcENsaWVudFNvY2tldC5qYXZhCi0gKiBPcmlnaW5hbC1BdXRob3IgOiBUcnVzdGVkIExvZ2ljIFMuQS4gKFN5bHZhaW4gRm9udGVuZWF1KQotICogQ3JlYXRlZCAgICAgICAgIDogMTgtMDItMjAxMAotICovCi0KLXBhY2thZ2UgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuaW50ZXJuYWw7Ci0KLS8qKgotICogTGxjcENsaWVudFNvY2tldCByZXByZXNlbnRzIGEgTExDUCBDb25uZWN0aW9uLU9yaWVudGVkIGNsaWVudCB0byBiZSB1c2VkIGluIGEKLSAqIGNvbm5lY3Rpb24tb3JpZW50ZWQgY29tbXVuaWNhdGlvbgotICogQGhpZGUKLSAqLwotCi1wdWJsaWMgY2xhc3MgTmF0aXZlTGxjcFNvY2tldCB7Ci0KLSAgICBwcml2YXRlIGludCBtSGFuZGxlOwotCi0gICAgcHJpdmF0ZSBpbnQgbVNhcDsKLQotICAgIHByaXZhdGUgaW50IG1Mb2NhbE1pdTsKLQotICAgIHByaXZhdGUgaW50IG1Mb2NhbFJ3OwotCi0gICAgcHJpdmF0ZSBpbnQgbVRpbWVvdXQ7Ci0KLSAgICBwdWJsaWMgTmF0aXZlTGxjcFNvY2tldCgpewotCi0gICAgfQotCi0gICAgcHVibGljIE5hdGl2ZUxsY3BTb2NrZXQoaW50IHNhcCwgaW50IG1pdSwgaW50IHJ3KXsKLSAgICAgICAgbVNhcCA9IHNhcDsKLSAgICAgICAgbUxvY2FsTWl1ID0gbWl1OwotICAgICAgICBtTG9jYWxSdyA9IHJ3OwotICAgIH0KLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb0Nvbm5lY3QoaW50IG5TYXAsIGludCB0aW1lb3V0KTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb0Nvbm5lY3RCeShTdHJpbmcgc24sIGludCB0aW1lb3V0KTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb0Nsb3NlKCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9TZW5kKGJ5dGVbXSBkYXRhKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgaW50IGRvUmVjZWl2ZShieXRlW10gcmVjdkJ1ZmYpOwotCi0gICAgcHVibGljIG5hdGl2ZSBpbnQgZG9HZXRSZW1vdGVTb2NrZXRNaXUoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgaW50IGRvR2V0UmVtb3RlU29ja2V0UncoKTsKLQotCi0KLSAgICBwdWJsaWMgdm9pZCBzZXRDb25uZWN0VGltZW91dChpbnQgdGltZW91dCl7Ci0gICAgICAgIG1UaW1lb3V0ID0gdGltZW91dDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldENvbm5lY3RUaW1lb3V0KCl7Ci0gICAgICAgIHJldHVybiBtVGltZW91dDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFNhcCgpewotICAgICAgICByZXR1cm4gbVNhcDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldE1pdSgpewotICAgICAgICByZXR1cm4gbUxvY2FsTWl1OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0UncoKXsKLSAgICAgICAgcmV0dXJuIG1Mb2NhbFJ3OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0SGFuZGxlKCl7Ci0gICAgICAgIHJldHVybiBtSGFuZGxlOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL2ludGVybmFsL05hdGl2ZU5kZWZUYWcuamF2YSBiL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVOZGVmVGFnLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOWIwMzk1Li4wMDAwMDAwCi0tLSBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVOZGVmVGFnLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBOYXRpdmVOZGVmVGFnLmphdmEKLSAqIE9yaWdpbmFsLUF1dGhvciA6IFRydXN0ZWQgTG9naWMgUy5BLiAoU3lsdmFpbiBGb250ZW5lYXUpCi0gKiBDcmVhdGVkICAgICAgICAgOiAxOC0wMi0yMDEwCi0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5pbnRlcm5hbDsKLQotLyoqCi0gKiBOYXRpdmUgaW50ZXJmYWNlIHRvIHRoZSBOREVGIHRhZyBmdW5jdGlvbnMKLSAqCi0gKiBAaGlkZQotICovCi1wdWJsaWMgY2xhc3MgTmF0aXZlTmRlZlRhZyB7Ci0gICAgcHJpdmF0ZSBpbnQgbUhhbmRsZTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYnl0ZVtdIGRvUmVhZCgpOwotCi0gICAgcHVibGljIG5hdGl2ZSBib29sZWFuIGRvV3JpdGUoYnl0ZVtdIGJ1Zik7Ci19CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTmZjTWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL2ludGVybmFsL05hdGl2ZU5mY01hbmFnZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmMzQ4YS4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTmZjTWFuYWdlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0vKioKLSAqIEZpbGUgICAgICAgICAgICA6IE5hdGl2ZU5mY01hbmFnZXIuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChTeWx2YWluIEZvbnRlbmVhdSkKLSAqIENyZWF0ZWQgICAgICAgICA6IDE4LTAyLTIwMTAKLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmludGVybmFsOwotCi1pbXBvcnQgYW5kcm9pZC5hbm5vdGF0aW9uLlNka0NvbnN0YW50OwotaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5TZGtDb25zdGFudC5TZGtDb25zdGFudFR5cGU7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci0KLWltcG9ydCBhbmRyb2lkLm5mYy5Gb3JtYXRFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5uZmMuTmRlZlRhZzsKLWltcG9ydCBhbmRyb2lkLm5mYy5OZmNBZGFwdGVyOwotaW1wb3J0IGFuZHJvaWQubmZjLk5kZWZNZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQubmZjLlRhZzsKLQotLyoqCi0gKiBOYXRpdmUgaW50ZXJmYWNlIHRvIHRoZSBORkMgTWFuYWdlciBmdW5jdGlvbnMKLSAqIEBoaWRlCi0gKi8KLXB1YmxpYyBjbGFzcyBOYXRpdmVOZmNNYW5hZ2VyIHsKLQotICAgIEBTZGtDb25zdGFudChTZGtDb25zdGFudFR5cGUuQlJPQURDQVNUX0lOVEVOVF9BQ1RJT04pCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URVJOQUxfTExDUF9MSU5LX1NUQVRFX0NIQU5HRURfRVhUUkEgPSAiY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuZXh0cmEuSU5URVJOQUxfTExDUF9MSU5LX1NUQVRFIjsKLQotICAgIEBTZGtDb25zdGFudChTZGtDb25zdGFudFR5cGUuQlJPQURDQVNUX0lOVEVOVF9BQ1RJT04pCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URVJOQUxfTExDUF9MSU5LX1NUQVRFX0NIQU5HRURfQUNUSU9OID0gImNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmFjdGlvbi5JTlRFUk5BTF9MTENQX0xJTktfU1RBVEVfQ0hBTkdFRCI7Ci0KLSAgICBAU2RrQ29uc3RhbnQoU2RrQ29uc3RhbnRUeXBlLkJST0FEQ0FTVF9JTlRFTlRfQUNUSU9OKQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIElOVEVSTkFMX1RBUkdFVF9ERVNFTEVDVEVEX0FDVElPTiA9ICJjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5hY3Rpb24uSU5URVJOQUxfVEFSR0VUX0RFU0VMRUNURUQiOwotCi0gICAgLyogTmF0aXZlIHN0cnVjdHVyZSAqLwotICAgIHByaXZhdGUgaW50IG1OYXRpdmU7Ci0KLSAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0KLSAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbU5mY0hhbmRsZXI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIk5hdGl2ZU5mY01hbmFnZXIiOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19OREVGX1RBRyA9IDA7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0NBUkRfRU1VTEFUSU9OID0gMTsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfTExDUF9MSU5LX0FDVElWQVRJT04gPSAyOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19MTENQX0xJTktfREVBQ1RJVkFURUQgPSAzOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19UQVJHRVRfREVTRUxFQ1RFRCA9IDQ7Ci0KLSAgICBwdWJsaWMgTmF0aXZlTmZjTWFuYWdlcihDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgbU5mY0hhbmRsZXIgPSBuZXcgTmZjSGFuZGxlcigpOwotICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogSW5pdGlhbGl6ZXMgTmF0aXZlIHN0cnVjdHVyZQotICAgICAqLwotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBpbml0aWFsaXplTmF0aXZlU3RydWN0dXJlKCk7Ci0KLSAgICAvKioKLSAgICAgKiBJbml0aWFsaXplcyBORkMgc3RhY2suCi0gICAgICovCi0gICAgcHVibGljIG5hdGl2ZSBib29sZWFuIGluaXRpYWxpemUoKTsKLQotICAgIC8qKgotICAgICAqIERlaW5pdGlhbGl6ZXMgTkZDIHN0YWNrLgotICAgICAqLwotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkZWluaXRpYWxpemUoKTsKLQotICAgIC8qKgotICAgICAqIEVuYWJsZSBkaXNjb3J5IGZvciB0aGUgTmRlZk1lc3NhZ2UgYW5kIFRyYW5zYWN0aW9uIG5vdGlmaWNhdGlvbgotICAgICAqLwotICAgIHB1YmxpYyBuYXRpdmUgdm9pZCBlbmFibGVEaXNjb3ZlcnkoaW50IG1vZGUpOwotCi0gICAgcHVibGljIG5hdGl2ZSB2b2lkIGRpc2FibGVEaXNjb3ZlcnkoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgdm9pZCByZWFkZXJEaXNjb3ZlcnkoKTsKLQotICAgIC8qKgotICAgICAqIERpc2FibGVzIGFuIE5GQ01hbmFnZXIgbW9kZSBvZiBvcGVyYXRpb24uIEFsbG93cyB0byBkaXNhYmxlIHRhZyByZWFkZXIsCi0gICAgICogcGVlciB0byBwZWVyIGluaXRpYXRvciBvciB0YXJnZXQgbW9kZXMuCi0gICAgICoKLSAgICAgKiBAcGFyYW0gbW9kZSBkaXNjb3ZlcnkgbW9kZSB0byBlbmFibGUuIE11c3QgYmUgb25lIG9mIHRoZSBwcm92aWRlZAotICAgICAqICAgICAgICAgICAgTkZDTWFuYWdlci5ESVNDT1ZFUllfTU9ERV8qIGNvbnN0YW50cy4KLSAgICAgKi8KLSAgICBwdWJsaWMgbmF0aXZlIHZvaWQgZGlzYWJsZURpc2NvdmVyeU1vZGUoaW50IG1vZGUpOwotCi0gICAgcHVibGljIG5hdGl2ZSBpbnRbXSBkb0dldFNlY3VyZUVsZW1lbnRMaXN0KCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIHZvaWQgZG9TZWxlY3RTZWN1cmVFbGVtZW50KGludCBzZUlEKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgdm9pZCBkb0Rlc2VsZWN0U2VjdXJlRWxlbWVudChpbnQgc2VJRCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIE5hdGl2ZVAycERldmljZSBkb09wZW5QMnBDb25uZWN0aW9uKGludCB0aW1lb3V0KTsKLQotICAgIHB1YmxpYyBuYXRpdmUgTmF0aXZlTmZjVGFnIGRvT3BlblRhZ0Nvbm5lY3Rpb24oaW50IHRpbWVvdXQpOwotCi0gICAgcHVibGljIG5hdGl2ZSBpbnQgZG9HZXRMYXN0RXJyb3IoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgdm9pZCBkb1NldFByb3BlcnRpZXMoaW50IHBhcmFtLCBpbnQgdmFsdWUpOwotCi0gICAgcHVibGljIG5hdGl2ZSB2b2lkIGRvQ2FuY2VsKCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIE5hdGl2ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldCBkb0NyZWF0ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldChpbnQgblNhcCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0IGRvQ3JlYXRlTGxjcFNlcnZpY2VTb2NrZXQoaW50IG5TYXAsIFN0cmluZyBzbiwgaW50IG1pdSwKLSAgICAgICAgICAgIGludCBydywgaW50IGxpbmVhckJ1ZmZlckxlbmd0aCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIE5hdGl2ZUxsY3BTb2NrZXQgZG9DcmVhdGVMbGNwU29ja2V0KGludCBzYXAsIGludCBtaXUsIGludCBydywKLSAgICAgICAgICAgIGludCBsaW5lYXJCdWZmZXJMZW5ndGgpOwotCi0gICAgcHVibGljIG5hdGl2ZSBib29sZWFuIGRvQ2hlY2tMbGNwKCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9BY3RpdmF0ZUxsY3AoKTsKLQotICAgIHByaXZhdGUgY2xhc3MgTmZjSGFuZGxlciBleHRlbmRzIEhhbmRsZXIgewotCi0gICAgICAgIHByaXZhdGUgaW50IGNvbnZlcnRUeXBlKFN0cmluZyB0eXBlTmFtZSkgewotICAgICAgICAgICAgaWYgKHR5cGVOYW1lLmVxdWFscygiSXNvMTQ0NDMiKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBUYWcuTkZDX1RBR19JU08xNDQ0M180QjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKCJNaWZhcmVVTCIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRhZy5ORkNfVEFHX01JRkFSRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKCJNaWZhcmUxSyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRhZy5ORkNfVEFHX01JRkFSRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKCJNaWZhcmU0SyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRhZy5ORkNfVEFHX01JRkFSRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKCJNaWZhcmVERVNGSVJFIikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGFnLk5GQ19UQUdfTUlGQVJFOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlTmFtZS5lcXVhbHMoIlVua25vd24gTWlmYXJlIikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGFnLk5GQ19UQUdfTUlGQVJFOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlTmFtZS5lcXVhbHMoIkZlbGljYSIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRhZy5ORkNfVEFHX0ZFTElDQTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZU5hbWUuZXF1YWxzKCJKZXdlbCIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRhZy5ORkNfVEFHX0pFV0VMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGFnLk5GQ19UQUdfT1RIRVI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgewotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfTkRFRl9UQUc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJUYWcgZGV0ZWN0ZWQsIG5vdGlmeWluZyBhcHBsaWNhdGlvbnMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZU5mY1RhZyBuYXRpdmVUYWcgPSAoTmF0aXZlTmZjVGFnKSBtc2cub2JqOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hdGl2ZVRhZy5kb0Nvbm5lY3QoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYXRpdmVUYWcuY2hlY2tOREVGKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZmYgPSBuYXRpdmVUYWcuZG9SZWFkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5kZWZNZXNzYWdlW10gbXNnTmRlZiA9IG5ldyBOZGVmTWVzc2FnZVsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnTmRlZlswXSA9IG5ldyBOZGVmTWVzc2FnZShidWZmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZGVmVGFnIHRhZyA9IG5ldyBOZGVmVGFnKGNvbnZlcnRUeXBlKG5hdGl2ZVRhZy5nZXRUeXBlKCkpLCBuYXRpdmVUYWcuZ2V0VWlkKCksIG5hdGl2ZVRhZy5nZXRIYW5kbGUoKSwgbXNnTmRlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0QWN0aW9uKE5mY0FkYXB0ZXIuQUNUSU9OX05ERUZfVEFHX0RJU0NPVkVSRUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShOZmNBZGFwdGVyLkVYVFJBX1RBRywgdGFnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIk5ERUYgdGFnIGZvdW5kLCBzdGFydGluZyBjb3JyZXNwb25kaW5nIGFjdGl2aXR5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRBY3Rpdml0eShpbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJObyBhY3Rpdml0eSBmb3VuZCwgZGlzY29ubmVjdGluZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVUYWcuZG9Bc3luY0Rpc2Nvbm5lY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChGb3JtYXRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlVuYWJsZSB0byBjcmVhdGUgTkRFRiBtZXNzYWdlIG9iamVjdCAodGFnIGVtcHR5IG9yIG5vdCB3ZWxsIGZvcm1hdGVkKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVRhZy5kb0FzeW5jRGlzY29ubmVjdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiVW5hYmxlIHRvIHJlYWQgTkRFRiBtZXNzYWdlICh0YWcgZW1wdHkgb3Igbm90IHdlbGwgZm9ybWF0ZWQpIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVUYWcuZG9Bc3luY0Rpc2Nvbm5lY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhZyB0YWcgPSBuZXcgVGFnKGNvbnZlcnRUeXBlKG5hdGl2ZVRhZy5nZXRUeXBlKCkpLCBmYWxzZSwgbmF0aXZlVGFnLmdldFVpZCgpLCBuYXRpdmVUYWcuZ2V0SGFuZGxlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0QWN0aW9uKE5mY0FkYXB0ZXIuQUNUSU9OX1RBR19ESVNDT1ZFUkVEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKE5mY0FkYXB0ZXIuRVhUUkFfVEFHLCB0YWcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJOb24tTkRFRiB0YWcgZm91bmQsIHN0YXJ0aW5nIGNvcnJlc3BvbmRpbmcgYWN0aXZpdHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJObyBhY3Rpdml0eSBmb3VuZCwgZGlzY29ubmVjdGluZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlVGFnLmRvQXN5bmNEaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBjb25uZWN0IHRvIHRhZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVRhZy5kb0FzeW5jRGlzY29ubmVjdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTVNHX0NBUkRfRU1VTEFUSU9OOgotICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiQ2FyZCBFbXVsYXRpb24gbWVzc2FnZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGFpZCA9IChieXRlW10pIG1zZy5vYmo7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBTZW5kIGJyb2FkY2FzdCBvcmRlcmVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgVHJhbnNhY3Rpb25JbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbkludGVudC5zZXRBY3Rpb24oTmZjQWRhcHRlci5BQ1RJT05fVFJBTlNBQ1RJT05fREVURUNURUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNhY3Rpb25JbnRlbnQucHV0RXh0cmEoTmZjQWRhcHRlci5FWFRSQV9BSUQsIGFpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJCcm9hZGNhc3RpbmcgQ2FyZCBFbXVsYXRpb24gZXZlbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnNlbmRPcmRlcmVkQnJvYWRjYXN0KFRyYW5zYWN0aW9uSW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX05PVElGWSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19MTENQX0xJTktfQUNUSVZBVElPTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVAycERldmljZSBkZXZpY2UgPSAoTmF0aXZlUDJwRGV2aWNlKSBtc2cub2JqOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJMTENQIEFjdGl2YXRpb24gbWVzc2FnZSIpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLmdldE1vZGUoKSA9PSBOYXRpdmVQMnBEZXZpY2UuTU9ERV9QMlBfVEFSR0VUKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldmljZS5kb0Nvbm5lY3QoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBMbGNwIGNvbXBsaWFuY3kgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvQ2hlY2tMbGNwKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFjdGl2YXRlIExsY3AgTGluayAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvQWN0aXZhdGVMbGNwKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJJbml0aWF0b3IgQWN0aXZhdGUgTExDUCBPSyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyb2FkY2FzdCBJbnRlbnQgTGluayBMTENQIGFjdGl2YXRlZCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVudCBMbGNwTGlua0ludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMbGNwTGlua0ludGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEFjdGlvbihJTlRFUk5BTF9MTENQX0xJTktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExsY3BMaW5rSW50ZW50LnB1dEV4dHJhKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJOQUxfTExDUF9MSU5LX1NUQVRFX0NIQU5HRURfRVhUUkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZmNBZGFwdGVyLkxMQ1BfTElOS19TVEFURV9BQ1RJVkFURUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkJyb2FkY2FzdGluZyBpbnRlcm5hbCBMTENQIGFjdGl2YXRpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KExsY3BMaW5rSW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLmRvRGlzY29ubmVjdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlLmdldE1vZGUoKSA9PSBOYXRpdmVQMnBEZXZpY2UuTU9ERV9QMlBfSU5JVElBVE9SKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgTGxjcCBjb21wbGlhbmN5ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvQ2hlY2tMbGNwKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWN0aXZhdGUgTGxjcCBMaW5rICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb0FjdGl2YXRlTGxjcCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJUYXJnZXQgQWN0aXZhdGUgTExDUCBPSyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJvYWRjYXN0IEludGVudCBMaW5rIExMQ1AgYWN0aXZhdGVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgTGxjcExpbmtJbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMbGNwTGlua0ludGVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9uKElOVEVSTkFMX0xMQ1BfTElOS19TVEFURV9DSEFOR0VEX0FDVElPTik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMbGNwTGlua0ludGVudC5wdXRFeHRyYShJTlRFUk5BTF9MTENQX0xJTktfU1RBVEVfQ0hBTkdFRF9FWFRSQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmZjQWRhcHRlci5MTENQX0xJTktfU1RBVEVfQUNUSVZBVEVEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkJyb2FkY2FzdGluZyBpbnRlcm5hbCBMTENQIGFjdGl2YXRpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnNlbmRCcm9hZGNhc3QoTGxjcExpbmtJbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfTExDUF9MSU5LX0RFQUNUSVZBVEVEOgotICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJvYWRjYXN0IEludGVudCBMaW5rIExMQ1AgYWN0aXZhdGVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJMTENQIExpbmsgRGVhY3RpdmF0ZWQgbWVzc2FnZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50IExsY3BMaW5rSW50ZW50ID0gbmV3IEludGVudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgTGxjcExpbmtJbnRlbnQuc2V0QWN0aW9uKE5mY0FkYXB0ZXIuQUNUSU9OX0xMQ1BfTElOS19TVEFURV9DSEFOR0VEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIExsY3BMaW5rSW50ZW50LnB1dEV4dHJhKE5mY0FkYXB0ZXIuRVhUUkFfTExDUF9MSU5LX1NUQVRFX0NIQU5HRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0RFQUNUSVZBVEVEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkJyb2FkY2FzdGluZyBMTENQIGRlYWN0aXZhdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZE9yZGVyZWRCcm9hZGNhc3QoTGxjcExpbmtJbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5ORkNfTExDUCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19UQVJHRVRfREVTRUxFQ1RFRDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJyb2FkY2FzdCBJbnRlbnQgVGFyZ2V0IERlc2VsZWN0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlRhcmdldCBEZXNlbGVjdGVkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgVGFyZ2V0RGVzZWxlY3RlZEludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldERlc2VsZWN0ZWRJbnRlbnQuc2V0QWN0aW9uKElOVEVSTkFMX1RBUkdFVF9ERVNFTEVDVEVEX0FDVElPTik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJCcm9hZGNhc3RpbmcgSW50ZW50Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kT3JkZXJlZEJyb2FkY2FzdChUYXJnZXREZXNlbGVjdGVkSW50ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX0xMQ1ApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVua25vd24gbWVzc2FnZSByZWNlaXZlZCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBMb2csIGRvbid0IGNyYXNoIQotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkV4Y2VwdGlvbiBpbiBOZmNIYW5kbGVyLmhhbmRsZU1lc3NhZ2U6IiwgZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgLyoqCi0gICAgICogTm90aWZpZXMgTmRlZiBNZXNzYWdlCi0gICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIG5vdGlmeU5kZWZNZXNzYWdlTGlzdGVuZXJzKE5hdGl2ZU5mY1RhZyB0YWcpIHsKLSAgICAgICAgTWVzc2FnZSBtc2cgPSBtTmZjSGFuZGxlci5vYnRhaW5NZXNzYWdlKCk7Ci0KLSAgICAgICAgbXNnLndoYXQgPSBNU0dfTkRFRl9UQUc7Ci0gICAgICAgIG1zZy5vYmogPSB0YWc7Ci0KLSAgICAgICAgbU5mY0hhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBOb3RpZmllcyB0cmFuc2FjdGlvbgotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBub3RpZnlUYXJnZXREZXNlbGVjdGVkKCkgewotICAgICAgICBNZXNzYWdlIG1zZyA9IG1OZmNIYW5kbGVyLm9idGFpbk1lc3NhZ2UoKTsKLQotICAgICAgICBtc2cud2hhdCA9IE1TR19UQVJHRVRfREVTRUxFQ1RFRDsKLQotICAgICAgICBtTmZjSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIE5vdGlmaWVzIHRyYW5zYWN0aW9uCi0gICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIG5vdGlmeVRyYW5zYWN0aW9uTGlzdGVuZXJzKGJ5dGVbXSBhaWQpIHsKLSAgICAgICAgTWVzc2FnZSBtc2cgPSBtTmZjSGFuZGxlci5vYnRhaW5NZXNzYWdlKCk7Ci0KLSAgICAgICAgbXNnLndoYXQgPSBNU0dfQ0FSRF9FTVVMQVRJT047Ci0gICAgICAgIG1zZy5vYmogPSBhaWQ7Ci0KLSAgICAgICAgbU5mY0hhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBOb3RpZmllcyBQMlAgRGV2aWNlIGRldGVjdGVkLCB0byBhY3RpdmF0ZSBMTENQIGxpbmsKLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgbm90aWZ5TGxjcExpbmtBY3RpdmF0aW9uKE5hdGl2ZVAycERldmljZSBkZXZpY2UpIHsKLSAgICAgICAgTWVzc2FnZSBtc2cgPSBtTmZjSGFuZGxlci5vYnRhaW5NZXNzYWdlKCk7Ci0KLSAgICAgICAgbXNnLndoYXQgPSBNU0dfTExDUF9MSU5LX0FDVElWQVRJT047Ci0gICAgICAgIG1zZy5vYmogPSBkZXZpY2U7Ci0KLSAgICAgICAgbU5mY0hhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBOb3RpZmllcyBQMlAgRGV2aWNlIGRldGVjdGVkLCB0byBhY3RpdmF0ZSBMTENQIGxpbmsKLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgbm90aWZ5TGxjcExpbmtEZWFjdGl2YXRlZCgpIHsKLSAgICAgICAgTWVzc2FnZSBtc2cgPSBtTmZjSGFuZGxlci5vYnRhaW5NZXNzYWdlKCk7Ci0KLSAgICAgICAgbXNnLndoYXQgPSBNU0dfTExDUF9MSU5LX0RFQUNUSVZBVEVEOwotCi0gICAgICAgIG1OZmNIYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTmZjVGFnLmphdmEgYi9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlTmZjVGFnLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Y2Y0NWIuLjAwMDAwMDAKLS0tIGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL2ludGVybmFsL05hdGl2ZU5mY1RhZy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLS8qKgotICogRmlsZSAgICAgICAgICAgIDogTmF0aXZlTmZjVGFnLmphdmEKLSAqIE9yaWdpbmFsLUF1dGhvciA6IFRydXN0ZWQgTG9naWMgUy5BLiAoU3lsdmFpbiBGb250ZW5lYXUpCi0gKiBDcmVhdGVkICAgICAgICAgOiAxOC0wMi0yMDEwCi0gKi8KLQotcGFja2FnZSBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5pbnRlcm5hbDsKLQotLyoqCi0gKiBOYXRpdmUgaW50ZXJmYWNlIHRvIHRoZSBORkMgdGFnIGZ1bmN0aW9ucwotICoKLSAqIEBoaWRlCi0gKi8KLXB1YmxpYyBjbGFzcyBOYXRpdmVOZmNUYWcgewotICAgIHByaXZhdGUgaW50IG1IYW5kbGU7Ci0KLSAgICBwcml2YXRlIFN0cmluZyBtVHlwZTsKLQotICAgIHByaXZhdGUgYnl0ZVtdIG1VaWQ7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9Db25uZWN0KCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9EaXNjb25uZWN0KCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIHZvaWQgZG9Bc3luY0Rpc2Nvbm5lY3QoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYnl0ZVtdIGRvVHJhbnNjZWl2ZShieXRlW10gZGF0YSk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gY2hlY2tOREVGKCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJ5dGVbXSBkb1JlYWQoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb1dyaXRlKGJ5dGVbXSBidWYpOwotCi0gICAgcHJpdmF0ZSBOYXRpdmVOZmNUYWcoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIE5hdGl2ZU5mY1RhZyhpbnQgaGFuZGxlLCBTdHJpbmcgdHlwZSwgYnl0ZVtdIHVpZCkgewotICAgICAgICBtSGFuZGxlID0gaGFuZGxlOwotICAgICAgICBtVHlwZSA9IHR5cGU7Ci0gICAgICAgIG1VaWQgPSB1aWQuY2xvbmUoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldEhhbmRsZSgpIHsKLSAgICAgICAgcmV0dXJuIG1IYW5kbGU7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkgewotICAgICAgICByZXR1cm4gbVR5cGU7Ci0gICAgfQotCi0gICAgcHVibGljIGJ5dGVbXSBnZXRVaWQoKSB7Ci0gICAgICAgIHJldHVybiBtVWlkOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVQMnBEZXZpY2UuamF2YSBiL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9pbnRlcm5hbC9OYXRpdmVQMnBEZXZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY3NDMwOS4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvaW50ZXJuYWwvTmF0aXZlUDJwRGV2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotLyoqCi0gKiBGaWxlICAgICAgICAgICAgOiBOYXRpdmVQMnBEZXZpY2UuamF2YQotICogT3JpZ2luYWwtQXV0aG9yIDogVHJ1c3RlZCBMb2dpYyBTLkEuIChTeWx2YWluIEZvbnRlbmVhdSkKLSAqIENyZWF0ZWQgICAgICAgICA6IDE4LTAyLTIwMTAKLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmludGVybmFsOwotCi0vKioKLSAqIE5hdGl2ZSBpbnRlcmZhY2UgdG8gdGhlIFAyUCBJbml0aWF0b3IgZnVuY3Rpb25zCi0gKgotICogQGhpZGUKLSAqLwotcHVibGljIGNsYXNzIE5hdGl2ZVAycERldmljZSB7Ci0KLSAgICAvKioKLSAgICAqIFBlZXItdG8tUGVlciBUYXJnZXQuCi0gICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHNob3J0IE1PREVfUDJQX1RBUkdFVCAgICAgICAgICA9IDB4MDA7Ci0KLSAgICAvKioKLSAgICAqIFBlZXItdG8tUGVlciBJbml0aWF0b3IuCi0gICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHNob3J0IE1PREVfUDJQX0lOSVRJQVRPUiAgICAgICA9IDB4MDE7Ci0KLSAgICAvKioKLSAgICAqIEludmFsaWQgdGFyZ2V0IHR5cGUuCi0gICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHNob3J0IE1PREVfSU5WQUxJRCAgICAgICAgICAgICA9IDB4ZmY7Ci0KLSAgICBwcml2YXRlIGludCBtSGFuZGxlOwotCi0gICAgcHJpdmF0ZSBpbnQgbU1vZGU7Ci0KLSAgICBwcml2YXRlIGJ5dGVbXSBtR2VuZXJhbEJ5dGVzOwotCi0gICAgcHVibGljIG5hdGl2ZSBieXRlW10gZG9SZWNlaXZlKCk7Ci0KLSAgICBwdWJsaWMgbmF0aXZlIGJvb2xlYW4gZG9TZW5kKGJ5dGVbXSBkYXRhKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb0Nvbm5lY3QoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYm9vbGVhbiBkb0Rpc2Nvbm5lY3QoKTsKLQotICAgIHB1YmxpYyBuYXRpdmUgYnl0ZVtdIGRvVHJhbnNjZWl2ZShieXRlW10gZGF0YSk7Ci0KLSAgICBwdWJsaWMgaW50IGdldEhhbmRsZSgpIHsKLSAgICAgICAgcmV0dXJuIG1IYW5kbGU7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRNb2RlKCkgewotICAgICAgICByZXR1cm4gbU1vZGU7Ci0gICAgfQotCi0gICAgcHVibGljIGJ5dGVbXSBnZXRHZW5lcmFsQnl0ZXMoKSB7Ci0gICAgICAgIHJldHVybiBtR2VuZXJhbEJ5dGVzOwotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL3BhY2thZ2UuaHRtbCBiL2NvcmUvamF2YS9jb20vdHJ1c3RlZGxvZ2ljL3RydXN0ZWRuZmMvYW5kcm9pZC9wYWNrYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMGI2MDUuLjAwMDAwMDAKLS0tIGEvY29yZS9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL3BhY2thZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MyArMCwwIEBACi08aHRtbD4KLTxib2R5PgotCi08cD5Qcm92aWRlcyBjbGFzc2VzIHRoYXQgbWFuYWdlIHRoZSBORkMgZnVuY3Rpb25hbGl0eS48L3A+Ci0KLTxwPlRoZSBORkMgZnVuY3Rpb25hbGl0eSBpcyByZWxhdGVkIHRvIE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbi48L3A+Ci0KLTxwPlRoZSBORkMgQVBJcyBsZXQgYXBwbGljYXRpb25zOjwvcD4KLTx1bD4KLSAgPGxpPlNjYW4gZm9yIHJlbW90ZSBORkMgdGFyZ2V0cyAoTkZDIFRhZyBvciBORkMgUGVlcik8L2xpPgotICA8bGk+VHJhbnNmZXIgcmF3IGRhdGEgdG8gYW5kIGZyb20gcmVtb3RlIE5GQyB0YXJnZXRzIChORkMgVGFncyBvciBORkMgUGVlcik8L2xpPgotICA8bGk+UmVhZC9Xcml0ZSBOREVGIGRhdGEgZnJvbS90byByZW1vdGUgTkZDIHRhcmdldHMgKE5GQyBUYWdzKTwvbGk+Ci0gIDxsaT5Fc3RhYmxpc2ggTExDUCBjb25uZWN0aW9uIHdpdGggYSByZW1vdGUgTkZDIHRhcmdldCAoTkZDIFBlZXIgd2l0aCBMTENQIHN1cHBvcnQpPC9saT4KLSAgPGxpPkV4Y2hhbmdlIGRhdGEgd2l0aCBhIHJlbW90ZSBORkMgdGFyZ2V0IHRocm91Z2ggTExDUCBzZXJ2aWNlcyAoTkZDIFBlZXIgd2l0aCBMTENQIHN1cHBvcnQpPC9saT4KLSAgPGxpPkJlIG5vdGlmaWVkIG9mIHRyYW5zYWN0aW9ucyBvbiB0aGUgbG9jYWwgU2VjdXJlIEVsZW1lbnQgYnkgYW4gZXh0ZXJuYWwgTkZDIHJlYWRlcjwvbGk+Ci08L3VsPgotCi0KLTxoMT5TZXR0aW5nIFVwIE5GQzwvaDE+Ci0KLTxwPgotQmVmb3JlIGFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlIE5GQyBmZWF0dXJlLCBpdCBuZWVkcyB0byBjaGVjayBpZiBORkMgaXMKLXN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIGJ5IGdldHRpbmcgYW4gaW5zdGFuY2Ugb2YgdGhlCi17QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlcn0gY2xhc3MuCi08L3A+Ci0KLTxwcmU+Ci0JTmZjTWFuYWdlciBtTmZjTWFuYWdlciA9IChOZmNNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTkZDX1NFUlZJQ0UpOwotCWlmIChtTmZjTWFuYWdlciA9PSBudWxsKSB7Ci0JCS8vIERldmljZSBkb2VzIG5vdCBzdXBwb3J0IE5GQwotCX0KLTwvcHJlPgotCi08cD4KLUFuIGFwcGxpY2F0aW9uIGNhbiBlbnN1cmUgdGhhdCBORkMgaXMgZW5hYmxlZC4KLUlmIG5vdCwgYW4gYXBwbGljYXRpb24gd2l0aCB0aGUgbmVlZGVkIHBlcm1pc3Npb24gY2FuIHJlcXVlc3QgdGhhdCBORkMgYmUKLWVuYWJsZWQuCi08L3A+Ci0KLTxwcmU+Ci0JaWYgKCFtTmZjTWFuYWdlci5pc0VuYWJsZWQpIHsKLQkJLy8gTkZDIGlzIGN1cnJlbnRseSBkaXNhYmxlZC4KLQkJLy8gRW5hYmxlIE5GQy4KLQkJbU5mY01hbmFnZXIuZW5hYmxlKCk7Ci0JfQotPC9wcmU+Ci0KLTxwPgotQmVmb3JlIHVzaW5nIHRoZSBjYXJkIGVtdWxhdGlvbiBtb2RlLCBhbiBhcHBsaWNhdGlvbiBjYW4gZW5zdXJlIHRoYXQgYSBzZWN1cmUKLWVsZW1lbnQgaXMgc2VsZWN0ZWQgKHtAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI2dldFNlbGVjdGVkU2VjdXJlRWxlbWVudH0pLgotSWYgbm90LCBhbiBhcHBsaWNhdGlvbiB3aXRoIHRoZSBuZWVkZWQgcGVybWlzc2lvbiBjYW4gcmVjb3ZlciB0aGUgbGlzdCBvZgotYXZhaWxhYmxlIHNlY3VyZSBlbGVtZW50cyBvbiB0aGUgZGV2aWNlCi0oe0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjZ2V0U2VjdXJlRWxlbWVudExpc3R9KSBhbmQgc2VsZWN0IG9uZQotKHtAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI3NlbGVjdFNlY3VyZUVsZW1lbnR9KS4KLTwvcD4KLQotPHA+Ci1CZWZvcmUgdXNpbmcgdGhlIE5GQyBmZWF0dXJlLCBhbiBhcHBsaWNhdGlvbiBjYW4gY29uZmlndXJlIHRoZSBORkMgZGV2aWNlIGJ5Ci1jYWxsaW5nIHtAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI3NldFByb3BlcnRpZXN9LiBUaGlzIGZ1bmN0aW9uIGFsbG93czoKLTwvcD4KLTx1bD4KLSAgPGxpPkVuYWJsaW5nL2Rpc2FibGluZyB0aGUgTkZDIGRldmljZSBjYXBhYmlsaXRpZXMgKFJGIHR5cGVzLCBiYXVkcmF0ZXMsCi0gIE5GQ0lQLTEgbW9kZSBhbmQgcm9sZS4uLik8L2xpPgotICA8bGk+U2V0dGluZ3MgdGhlIE5GQ0lQLTEgZ2VuZXJhbCBieXRlcyBhbmQgdGhlIExMQ1AgbGluayBwYXJhbWV0ZXJzPC9saT4KLTwvdWw+Ci08cD4KLVRoZSBzZXR0aW5nIHByb3BlcnRpZXMgY2FuIGJlIGN1c3RvbWl6ZWQgYWNjb3JkaW5nIHRvIHRoZSBEZXZpY2UgY2FwYWJpbGl0aWVzLgotVGhlIG5leHQgdGFibGUgZ2l2ZSB0aGUgbWluaW1hbCBzZXQgb2YgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgdGhlIERldmljZS4KLURlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIHRoZSB0YWJsZSBtYXkgYmUgY29tcGxldGVkLgotPC9wPgotPHRhYmxlPgotICA8VFI+PFRIPiBQcm9wZXJ0eSBOYW1lIDwvVEg+PFRIPiBQcm9wZXJ0eSBWYWx1ZXMgPC9USD48L1RSPgotICA8VFI+PFREPiBkaXNjb3ZlcnkuZmVsaWNhICAgIDwvVEQ+PFREPiA8Yj50cnVlPC9iPnxmYWxzZSA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IGRpc2NvdmVyeS5pc28xNDQ0M0EgPC9URD48VEQ+IDxiPnRydWU8L2I+fGZhbHNlIDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gZGlzY292ZXJ5LmlzbzE0NDQzQiA8L1REPjxURD4gPGI+dHJ1ZTwvYj58ZmFsc2UgPC9URD48L1RSPgotICA8VFI+PFREPiBkaXNjb3ZlcnkuaXNvMTU2OTMgIDwvVEQ+PFREPiA8Yj50cnVlPC9iPnxmYWxzZSA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IGRpc2NvdmVyeS5uZmNpcCAgICAgPC9URD48VEQ+IDxiPnRydWU8L2I+fGZhbHNlIDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gbmZjaXAuYmF1ZHJhdGUgICAgIDwvVEQ+PFREPiAxMDZ8MjEyfDQyNCA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IG5mY2lwLmdlbmVyYWxieXRlcyA8L1REPjxURD4gIDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gbmZjaXAubW9kZSAgICAgICAgIDwvVEQ+PFREPiBhY3RpdmV8cGFzc2l2ZXw8Yj5hbGw8L2I+IDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gbmZjaXAucm9sZSAgICAgICAgIDwvVEQ+PFREPiBpbml0aWF0b3J8dGFyZ2V0fDxiPmJvdGg8L2I+IDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gbGxjcC5sdG8gPC9URD48VEQ+IDxiPjE1MDwvYj4gKDAgdG8gMjU1KSA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IGxsY3Aub3B0IDwvVEQ+PFREPiAgIDxiPjA8L2I+ICgwIHRvIDMpIDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gbGxjcC5taXUgPC9URD48VEQ+IDxiPjEyODwvYj4gKDEyOCB0byAyMTc2KSA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IGxsY3Aud2tzIDwvVEQ+PFREPiAgIDxiPjE8L2I+ICgwIHRvIDE1KSA8L1REPjwvVFI+Ci08L3RhYmxlPiAKLTxwPihkZWZhdWx0IHZhbHVlcyBpbiBib2xkKTwvcD4KLQotCi08aDE+TkZDIFBlcm1pc3Npb25zPC9oMT4KLQotPHA+Ci1UbyBjaGFuZ2UgdGhlIE5GQyBzZXJ2aWNlIHNldHRpbmdzIHN1Y2ggYXMgZW5hYmxpbmcgdGhlIE5GQyB0YXJnZXRzCi1kaXNjb3Zlcnkgb3IgYWN0aXZhdGluZyB0aGUgc2VjdXJlIGVsZW1lbnQsIGFuIGFwcGxpY2F0aW9uIG11c3QgZGVjbGFyZSB0aGUKLU5GQ19BRE1JTiBwZXJtaXNzaW9uLgotPC9wPgotPHA+Ci1UbyBwZXJmb3JtIE5GQyByYXcgY29tbXVuaWNhdGlvbiB3aXRoIGEgcmVtb3RlIE5GQyB0YXJnZXQgaW4KLVJlYWRlci9Xcml0ZSBNb2RlIG9yIFBlZXItdG8tUGVlciBNb2RlLCBhbiBhcHBsaWNhdGlvbiBtdXN0IGRlY2xhcmUgdGhlIE5GQ19SQVcKLXBlcm1pc3Npb24uCi08L3A+Ci08cD4KLVRvIHJlY2VpdmUgTkRFRiBtZXNzYWdlIG9yIFNlY3VyZSBFbGVtZW50IGludGVudHMsIGFuIGFwcGxpY2F0aW9uIG11c3QgZGVjbGFyZQotdGhlIE5GQ19OT1RJRlkgcGVybWlzc2lvbi4KLTwvcD4KLTxwPgotVG8gcmVjZWl2ZSB0aGUgTExDUCBsaW5rIGludGVudCBhbmQgcGVyZm9ybSBhbiBMTENQIGNvbW11bmljYXRpb24gd2l0aCBhIHJlbW90ZSBORkMgdGFyZ2V0LCBhbiBhcHBsaWNhdGlvbiBtdXN0Ci1kZWNsYXJlIHRoZSBORkNfTExDUCBwZXJtaXNzaW9uLgotPC9wPgotCi0KLTxoMT5ORkMgVXNhZ2U8L2gxPgotCi08cD4KLVRoZSBmb2xsb3dpbmcgY29kZSBzYW1wbGVzIGlsbHVzdHJhdGUgdGhlIEFQSXMgdXNhZ2UgcmVnYXJkaW5nIHRoZSBORkMgc2VydmljZQotdXNlIGNhc2VzLgotPC9wPgotCi08aDI+UmVhZGVyL1dyaXRlciBNb2RlIE5ERUYgbWVzc2FnZSBub3RpZmljYXRpb248L2gyPgotCi08cD4KLVRoaXMgY29kZSBzYW1wbGUgaWxsdXN0cmF0ZXMgdGhlIE5ERUYgbWVzc2FnZSBub3RpZmljYXRpb24gdGhyb3VnaCBhbiBJbnRlbnQgZGVjbGFyZWQgaW4gdGhlIG1hbmlmZXN0IGFuZCBhIHJlY2VpdmVyIGltcGxlbWVudGVkIGluIHRoZSBhcHBsaWNhdGlvbi4KLTwvcD4KLTxwPk1haW4gaW52b2x2ZWQgY2xhc3Nlcy9tZXRob2RzOjwvcD4KLQotPHA+TWFuaWZlc3QgRXhhbXBsZTo8L3A+Ci08cHJlPgotCSZsdDtyZWNlaXZlciBhbmRyb2lkOm5hbWU9Ii5OZmNSZWFkZXJEZW1vUmVjZWl2ZXIiPgotICAgICAgICAgICAgJmx0O2ludGVudC1maWx0ZXI+Ci0gICAgICAgICAgICAgICAmbHQ7YWN0aW9uIGFuZHJvaWQ6bmFtZT0gImNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmFjdGlvbi5OREVGX1RBR19ESVNDT1ZFUkVEIi8+Ci0gICAgICAgICAgICAmbHQ7L2ludGVudC1maWx0ZXI+Ci0gICAgICAgICZsdDsvcmVjZWl2ZXI+Ci08L3ByZT4KLQotPHA+UmVjZWl2ZXIgRXhhbXBsZTo8L3A+Ci08dWw+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmRlZk1lc3NhZ2V9PC9saT4KLSAgPGxpPntAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI05ERUZfVEFHX0RJU0NPVkVSRURfQUNUSU9OfTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNOREVGX01FU1NBR0VfRVhUUkF9PC9saT4KLTwvdWw+Ci08cHJlPgotcHVibGljIGNsYXNzIE5kZWZNZXNzYWdlUmVjZWl2ZXJTYW1wbGUgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlciB7Ci0JcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotCQlpZiAoaW50ZW50LmdldEFjdGlvbigpLmVxdWFscyhOZmNNYW5hZ2VyLk5ERUZfVEFHX0RJU0NPVkVSRVJEX0FDVElPTikpIHsKLQkJCU5kZWZNZXNzYWdlIG1zZyA9IGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoTmZjTWFuYWdlci5OREVGX01FU1NBR0VfRVhUUkEpOwotCQkKLQkJLyogTWFuYWdlIHRoZSBOZGVmTWVzc2FnZSByZWNlaXZlZCAqLwotCX0KLTwvcHJlPgotCi08aDI+UmVhZGVyL1dyaXRlciBNb2RlIHJhdyBleGNoYW5nZTwvaDI+Ci0KLTxwPgotVGhpcyBjb2RlIHNhbXBsZSBpbGx1c3RyYXRlcyByYXcgZXhjaGFuZ2VzIHdpdGggYSBORkMgdGFyZ2V0IGluIFJlYWRlci9Xcml0ZXIKLW1vZGUuCi08L3A+Ci08cD5NYWluIGludm9sdmVkIGNsYXNzZXMvbWV0aG9kczo8L3A+Ci08dWw+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNvcGVuVGFnQ29ubmVjdGlvbn08L2xpPgotICA8bGk+e0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY1RhZ308L2xpPgotPC91bD4KLQotPHByZT4KLXB1YmxpYyBjbGFzcyBUYWdSZWFkZXJTYW1wbGUgewotCi0JLyoqIFRoZSBORkMgbWFuYWdlciB0byBhY2Nlc3MgTkZDIGZlYXR1cmVzICovCi0JcHJpdmF0ZSBOZmNNYW5hZ2VyIG1hbmFnZXIgPSAoTmZjTWFuYWdlcikgZ2V0U3lzdGVtU2VydmljZShDb250ZXh0Lk5GQ19TRVJWSUNFKTsKLQotCXByaXZhdGUgdm9pZCBydW5UYWdSZWFkZXIoKSB7Ci0JCU5mY1RhZyB0YWcgPSBudWxsOwotCQlTdHJpbmcgdHlwZTsKLQkJYnl0ZVtdIGNtZCA9IHsgMHgwMSwgMHgwMiwgMHgwMyB9OwotCQlieXRlW10gcmVzOwotCi0JCXdoaWxlICh0cnVlKSB7Ci0JCQl0cnkgewotCQkJCUxvZy5pKCJORkMgZXhhbXBsZSIsICJQbGVhc2Ugd2F2ZSBpbiBmcm9udCBvZiB0aGUgdGFnIik7Ci0JCQkJLy8gT3BlbiBhIGNvbm5lY3Rpb24gb24gbmV4dCBhdmFpbGFibGUgdGFnCi0JCQkJdHJ5IHsKLQkJCQkJdGFnID0gbWFuYWdlci5vcGVuVGFnQ29ubmVjdGlvbigpOwotCQkJCX0gY2F0Y2ggKE5mY0V4Y2VwdGlvbiBlKSB7Ci0JCQkJCS8vIFRPRE86IEhhbmRsZSBvcGVuIGZhaWx1cmUKLQkJCQl9Ci0KLQkJCQkvLyBMb29rIGZvciBhIG1pZmFyZSA0awotCQkJCXR5cGUgPSB0YWcuZ2V0VHlwZSgpOwotCQkJCWlmICh0eXBlLmVxdWFscygiTWlmYXJlNEsiKSkgewotCQkJCQlMb2cuaSgiTkZDIGV4YW1wbGUiLCAiVGFnIGRldGVjdGVkIik7Ci0JCQkJCXRhZy5jb25uZWN0KCk7Ci0JCQkJCS8vIFJlYWR5IHRvIGNvbW11bmljYXRlLCB3ZSBjYW4gc2VuZCB0cmFuc2NlaXZlICEKLQkJCQkJcmVzID0gdGFnLnRyYW5zY2VpdmUoY21kKTsKLQkJCQl9IGVsc2UgewotCQkJCQlMb2cuaSgiTkZDIGV4YW1wbGUiLCAiVW5rbm93biB0YWciKTsKLQkJCQl9Ci0JCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0JCQkJLy8gVE9ETzogSGFuZGxlIGJyb2tlbiBjb25uZWN0aW9uCi0JCQl9IGZpbmFsbHkgewotCQkJCWlmICh0YWcgIT0gbnVsbCkgewotCQkJCQl0YWcuY2xvc2UoKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci19Ci08L3ByZT4KLQotPGgyPlBlZXItdG8tUGVlciBNb2RlIHJhdyBleGNoYW5nZTwvaDI+Ci0KLTxwPgotVGhpcyBjb2RlIHNhbXBsZSBpbGx1c3RyYXRlcyByYXcgZXhjaGFuZ2VzIHdpdGggYSBORkMgdGFyZ2V0IGluIFBlZXItdG8tUGVlcgotbW9kZS4KLTwvcD4KLTxwPk1haW4gaW52b2x2ZWQgY2xhc3Nlcy9tZXRob2RzOjwvcD4KLTx1bD4KLSAgPGxpPntAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI29wZW5QMnBDb25uZWN0aW9ufTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuUDJwRGV2aWNlfTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuUDJwSW5pdGlhdG9yfTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuUDJwVGFyZ2V0fTwvbGk+Ci08L3VsPgotCi08cHJlPgotcHVibGljIGNsYXNzIFAycFNhbXBsZSB7Ci0KLQkvKiogVGhlIE5GQyBtYW5hZ2VyIHRvIGFjY2VzcyBORkMgZmVhdHVyZXMgKi8KLQlwcml2YXRlIE5mY01hbmFnZXIgbWFuYWdlciA9IChOZmNNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTkZDX1NFUlZJQ0UpOwotCi0JcHJpdmF0ZSB2b2lkIHJ1blAycCgpIHsKLQkJUDJwRGV2aWNlIGRldmljZVAycDsKLQkJUDJwSW5pdGlhdG9yIGluaXRpYXRvcjsKLQkJUDJwVGFyZ2V0IHRhcmdldDsKLQkJYnl0ZVtdIGRhdGEgPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKLQkJYnl0ZVtdIGVjaG8gPSBuZXcgYnl0ZVtkYXRhLmxlbmd0aCAqIDEwXTsKLQotCQl0cnkgewotCQkJZGV2aWNlUDJwID0gbWFuYWdlci5vcGVuUDJwQ29ubmVjdGlvbigpOwotCi0JCQlpZiAoZGV2aWNlUDJwLmdldE1vZGUoKSA9PSBQMnBEZXZpY2UuTU9ERV9QMlBfSU5JVElBVE9SKSB7Ci0JCQkJdGFyZ2V0ID0gbmV3IFAycFRhcmdldChkZXZpY2VQMnApOwotCQkJCS8vIENvbm5lY3QgdG8gdGhlIGRldGVjdGVkIFAyUCB0YXJnZXQKLQkJCQl0YXJnZXQuY29ubmVjdCgpOwotCQkJCS8vIHNlbmQgZGF0YSB0byB0aGUgdGFyZ2V0Ci0JCQkJdGFyZ2V0LnRyYW5zY2VpdmUoZGF0YSk7Ci0JCQkJLy8gZGlzY29ubmVjdCB0aGUgY29ubmVjdGVkIHRhcmdldAotCQkJCXRhcmdldC5kaXNjb25uZWN0KCk7Ci0JCQl9IGVsc2UgaWYgKGRldmljZVAycC5nZXRNb2RlKCkgPT0gUDJwRGV2aWNlLk1PREVfUDJQX1RBUkdFVCkgewotCQkJCWluaXRpYXRvciA9IG5ldyBQMnBJbml0aWF0b3IoZGV2aWNlUDJwKTsKLQkJCQkvL3RhcmdldCBpbiByZWNlaXZlIHN0YXRlIAotCQkJCWVjaG8gPSBpbml0aWF0b3IucmVjZWl2ZSgpOwkKLQkJCQkvLyBzZW5kIGJhY2sgdGhlIGRhdGEgcmVjZWl2ZWQKLQkJCQlpbml0aWF0b3Iuc2VuZChlY2hvKTsKLQkJCX0KLQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZTApIHsKLQotCQl9IGNhdGNoIChOZmNFeGNlcHRpb24gZTEpIHsKLQotCQl9Ci0JfQotfQotPC9wcmU+Ci0KLTxoMj5QZWVyLXRvLVBlZXIgTW9kZSBMTENQIGV4Y2hhbmdlPC9oMj4KLQotPHA+Ci1UaGlzIGNvZGUgc2FtcGxlIGlsbHVzdHJhdGVzIGhvdyB0byBnZXQgTExDUCBsaW5rIHN0YXRlIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBkZWNsYXJhdGlvbiBvZiBhIFJlY2VpdmVyIGluIHRoZSBtYW5pZmVzdCBvZiB0aGUgYXBwbGljYXRpb24gIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gCi1vZiB0aGUgcmVjZWl2ZXIgaW4gdGhlIGFwcGxpY2F0aW9uLgotPC9wPgotPHA+TWFuaWZlc3QgRXhhbXBsZTo8L3A+Ci08cHJlPgotCSZsdDtyZWNlaXZlciBhbmRyb2lkOm5hbWU9Ii5MbGNwTW9kZVJlY2VpdmVyU2FtcGxlIj4KLSAgICAgICAgICAgICZsdDtpbnRlbnQtZmlsdGVyPgotCQkmbHQ7YWN0aW9uIGFuZHJvaWQ6bmFtZT0gImNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmFjdGlvbi5MTENQX0xJTktfU1RBVEVfQ0hBTkdFRCIvPgotICAgICAgICAgICAgJmx0Oy9pbnRlbnQtZmlsdGVyPgotICAgICAgICAmbHQ7L3JlY2VpdmVyPgotPC9wcmU+Ci0KLTxwPlJlY2VpdmVyIEV4YW1wbGU6PC9wPgotPHVsPgotICA8bGk+e0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjTExDUF9MSU5LX1NUQVRFX0NIQU5HRURfQUNUSU9OfTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNMTENQX0xJTktfU1RBVEVfQ0hBTkdFRF9FWFRSQX08L2xpPiAKLTwvdWw+IAotPHByZT4KLXB1YmxpYyBjbGFzcyBMbGNwTW9kZVJlY2VpdmVyU2FtcGxlIGV4dGVuZHMgQnJvYWRjYXN0UmVjZWl2ZXIgewotCXB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKLQotCQlpZiAoaW50ZW50LmdldEFjdGlvbigpLmVxdWFscyhOZmNNYW5hZ2VyLkxMQ1BfTElOS19TVEFURV9DSEFOR0VEX0FDVElPTikpewotCQkJYnl0ZVtdIGFpZCA9IGludGVudC5nZXRCeXRlQXJyYXlFeHRyYShOZmNNYW5hZ2VyLkxMQ1BfTElOS19TVEFURV9DSEFOR0VEX0VYVFJBKTsKLQkJCS8qIENyZWF0ZSBhbiBMTENQIHNlcnZpY2Ugb3IgY2xpZW50IGFuZCBzdGFydCBhbiBMTENQIGNvbW11bmljYXRpb24gKi8KLQkJfSAKLQl9Ci08L3ByZT4KLQotCi08cD4KLVRoaXMgY29kZSBzYW1wbGVzIGlsbHVzdHJhdGUgTExDUCBleGNoYW5nZXMgd2l0aCBhIE5GQyBQZWVyLgotPC9wPgotPHA+TWFpbiBpbnZvbHZlZCBjbGFzc2VzL21ldGhvZHM6PC9wPgotPHVsPgotICA8bGk+e0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjY3JlYXRlTGxjcFNvY2tldH08L2xpPgotICA8bGk+e0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjY3JlYXRlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0fTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNjcmVhdGVMbGNwU2VydmljZVNvY2tldH08L2xpPgotICA8bGk+e0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLkxsY3BTb2NrZXR9PC9saT4KLSAgPGxpPntAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5MbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXR9PC9saT4KLSAgPGxpPntAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5MbGNwUGFja2V0fTwvbGk+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTGxjcFNlcnZpY2VTb2NrZXR9PC9saT4KLTwvdWw+Ci0KLTxwcmU+Ci1wdWJsaWMgY2xhc3MgTGxjcFNlcnZlclNhbXBsZSB7Ci0KLQkvKiogVGhlIE5GQyBtYW5hZ2VyIHRvIGFjY2VzcyBORkMgZmVhdHVyZXMgKi8KLQlwcml2YXRlIE5mY01hbmFnZXIgbWFuYWdlciA9IChOZmNNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTkZDX1NFUlZJQ0UpOwotCi0JcHJpdmF0ZSB2b2lkIHJ1bkxsY3BDbGllbnQoKSB7Ci0JCUxsY3BTb2NrZXQgc29jazsKLQkJYnl0ZVtdIGRhdGEgPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKLQkJYnl0ZVtdIGVjaG8gPSBuZXcgYnl0ZVtkYXRhLmxlbmd0aCAqIDEwXTsKLQkJaW50IGxlbmd0aCA9IDA7Ci0KLQkJc29jayA9IG1hbmFnZXIuY3JlYXRlTGxjcFNvY2tldCgoc2hvcnQpIDEyOCwgKGJ5dGUpIDIsIDEwMjQpOwotCQkKLQkJLy8gc2V0IGEgdGltZW91dCBpbiBtcyBmb3IgY29ubmVjdCByZXF1ZXN0Ci0JCXNvY2suc2V0Q29ubmVjdFRpbWVvdXQoMTApOwotCQkKLQkJdHJ5IHsKLQkJCS8vIENvbm5lY3QgdG8gcmVtb3RlIHNlcnZpY2UKLQkJCS8vIE5PVEU6IGNvdWxkIGJlIHNvY2suY29ubmVjdCgiY29tLnRydXN0ZWQtbG9naWMudG5mYy50ZXN0YXBwIik7Ci0JCQlzb2NrLmNvbm5lY3QoKGJ5dGUpIDB4MTApOwotCi0JCQkvLyBTZW5kIGRhdGEKLQkJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewotCQkJCXNvY2suc2VuZChkYXRhKTsKLQkJCX0KLQotCQkJLy8gUmVjZWl2ZSBlY2hvCi0JCQl3aGlsZSAobGVuZ3RoIDwgMTAgKiBkYXRhLmxlbmd0aCkgewotCQkJCWxlbmd0aCArPSBzb2NrLnJlY2VpdmUoZWNobyk7Ci0JCQl9Ci0KLQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewotCQkJLy8gVE9ETzogSGFuZGxlIGJyb2tlbiBjb25uZWN0aW9uIGJyb2tlbiAobGluayBkb3duLCByZW1vdGUgY2xvc3VyZQotCQkJLy8gb3IgY29ubmVjdCByZWplY3RlZCkgb3IgVGltZW91dCBleHBpcmVkCi0JCX0KLQl9Ci19Ci08L3ByZT4KLQotPHByZT4KLXB1YmxpYyBjbGFzcyBMbGNwQ2xpZW50U2FtcGxlIHsKLQotCS8qKiBUaGUgTkZDIG1hbmFnZXIgdG8gYWNjZXNzIE5GQyBmZWF0dXJlcyAqLwotCXByaXZhdGUgTmZjTWFuYWdlciBtYW5hZ2VyID0gKE5mY01hbmFnZXIpIGdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5ORkNfU0VSVklDRSk7Ci0KLQlwcml2YXRlIHZvaWQgcnVuTGxjcENsaWVudCgpIHsKLQkJTGxjcFNvY2tldCBzb2NrOwotCQlieXRlW10gZGF0YSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OwotCQlieXRlW10gZWNobyA9IG5ldyBieXRlW2RhdGEubGVuZ3RoICogMTBdOwotCQlpbnQgbGVuZ3RoID0gMDsKLQotCQlzb2NrID0gbWFuYWdlci5jcmVhdGVMbGNwU29ja2V0KChzaG9ydCkgMTI4LCAoYnl0ZSkgMiwgMTAyNCk7Ci0JCXRyeSB7Ci0JCQkvLyBDb25uZWN0IHRvIHJlbW90ZSBzZXJ2aWNlCi0JCQkvLyBOT1RFOiBjb3VsZCBiZSBzb2NrLmNvbm5lY3QoImNvbS50cnVzdGVkLWxvZ2ljLnRuZmMudGVzdGFwcCIpOwotCQkJc29jay5jb25uZWN0KChieXRlKSAweDEwKTsKLQotCQkJLy8gU2VuZCBkYXRhCi0JCQlmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKLQkJCQlzb2NrLnNlbmQoZGF0YSk7Ci0JCQl9Ci0KLQkJCS8vIFJlY2VpdmUgZWNobwotCQkJd2hpbGUgKGxlbmd0aCA8IDEwICogZGF0YS5sZW5ndGgpIHsKLQkJCQlsZW5ndGggKz0gc29jay5yZWNlaXZlKGVjaG8pOwotCQkJfQotCi0JCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLQkJCS8vIFRPRE86IEhhbmRsZSBicm9rZW4gY29ubmVjdGlvbiBicm9rZW4gKGxpbmsgZG93biwgcmVtb3RlIGNsb3N1cmUKLQkJCS8vIG9yIGNvbm5lY3QgcmVqZWN0ZWQpCi0JCX0KLQl9Ci19Ci08L3ByZT4KLQotPGgyPkNhcmQgRW11bGF0aW9uIE1vZGUgdHJhbnNhY3Rpb24gbm90aWZpY2F0aW9uPC9oMj4KLQotPHA+Ci1UaGlzIGNvZGUgc2FtcGxlIGlsbHVzdHJhdGVzIGhvdyB0byBnZXQgdGhlIGNhcmQgZW11bGF0aW9uIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBkZWNsYXJhdGlvbiBvZiBhIFJlY2VpdmVyIGluIHRoZSBtYW5pZmVzdCBvZiB0aGUgYXBwbGljYXRpb24gIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gCi1vZiB0aGUgcmVjZWl2ZXIgaW4gdGhlIGFwcGxpY2F0aW9uLgotPC9wPgotPHA+TWFuaWZlc3QgRXhhbXBsZTo8L3A+Ci08cHJlPgotCSZsdDtyZWNlaXZlciBhbmRyb2lkOm5hbWU9Ii5OZmNSZWFkZXJEZW1vUmVjZWl2ZXIiPgotICAgICAgICAgICAgJmx0O2ludGVudC1maWx0ZXI+Ci0JCSZsdDthY3Rpb24gYW5kcm9pZDpuYW1lPSAiY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuYWN0aW9uLlRSQU5TQUNUSU9OX0RFVEVDVEVEIi8+Ci0gICAgICAgICAgICAmbHQ7L2ludGVudC1maWx0ZXI+Ci0gICAgICAgICZsdDsvcmVjZWl2ZXI+Ci08L3ByZT4KLQotPHA+UmVjZWl2ZXIgRXhhbXBsZTo8L3A+Ci08dWw+Ci0gIDxsaT57QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNUUkFOU0FDVElPTl9ERVRFQ1RFRF9BQ1RJT059PC9saT4KLSAgPGxpPntAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI0FJRF9FWFRSQX08L2xpPiAKLTwvdWw+IAotPHByZT4KLXB1YmxpYyBjbGFzcyBDYXJkRW11bGF0aW9uUmVjZWl2ZXJTYW1wbGUgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlciB7Ci0JcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotCi0JCWlmIChpbnRlbnQuZ2V0QWN0aW9uKCkuZXF1YWxzKE5mY01hbmFnZXIuVFJBTlNBQ1RJT05fREVURUNURURfQUNUSU9OKSl7Ci0JCQlieXRlW10gYWlkID0gaW50ZW50LmdldEJ5dGVBcnJheUV4dHJhKE5mY01hbmFnZXIuQUlEX0VYVFJBKTsKLQkJCS8qIE1hbmFnZSB0aGUgQUlEOiAqLwotCQkJLyogRm9yIGV4YW1wbGUgc3RhcnQgYW4gYWN0aXZpdHkgcmVsYXRlZCB0byB0aGlzIEFJRCB2YWx1ZSBvciBkaXNwbGF5IGEgcG9wdXAgd2l0aCB0aGUgQUlEICovCi0JCX0gCi0JfQotPC9wcmU+Ci0KLQotCi08aDE+TXVsdGlwbGUgQXBwbGljYXRpb25zIHJ1bGVzPC9oMT4KLQotPHA+Ci1TZXZlcmFsIExMQ1Agc29ja2V0cyBjYW4gYmUgY3JlYXRlZCBieSBhIHNpbmdsZSBhcHBsaWNhdGlvbiBvciBieSBtdWx0aXBsZQotYXBwbGljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjY3JlYXRlTGxjcFNvY2tldH0sIAote0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjY3JlYXRlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0fSBvciAKLXtAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI2NyZWF0ZUxsY3BTZXJ2aWNlU29ja2V0fSwgcHJvdmlkZWQgdGhlIGxvY2FsIFNBUAotbnVtYmVycyBhcmUgZGlmZmVyZW50cy4KLTwvcD4KLQotPHA+Ci1Pbmx5IG9uZSBhcHBsaWNhdGlvbiBjYW4gb3BlbiBhIHJhdyBjb25uZWN0aW9uIGJ5IGNhbGxpbmcgCi17QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjTWFuYWdlciNvcGVuVGFnQ29ubmVjdGlvbn0gb3IKLXtAbGluayBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5OZmNNYW5hZ2VyI29wZW5QMnBDb25uZWN0aW9ufS4KLVdoaWxlIHRoaXMgYXBwbGljYXRpb24gaGFzIG5vdCBjbG9zZWQgb3IgY2FuY2VsbGVkIGl0cyBjb25uZWN0aW9uLCBhbnkgb3RoZXIKLWFwcGxpY2F0aW9uIHRoYXQgYXR0ZW1wdHMgdG8gb3BlbiBhbm90aGVyIHJhdyBjb25uZWN0aW9uIHdpbGwgcmFpc2UgYW4KLWV4Y2VwdGlvbi4KLUR1cmluZyBhbiBvcGVuIGNvbm5uZWN0aW9uLCB0aGUgY2FyZCBlbXVsYXRpb24gbW9kZSBpcyBhbHdheXMgZW5hYmxlZCBhbmQgCi1hcHBsaWNhdGlvbnMgYXJlIGFibGUgdG8gcmVjZWl2ZSBjYXJkIGVtdWxhdGlvbiBpbnRlbnRzLgotPC9wPgotCi08cD4KLVdoZW4gYW4gYXBwbGljYXRpb24gb3BlbnMgYSB0YWcgY29ubmVjdGlvbiBieSBjYWxsaW5nIAote0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjb3BlblRhZ0Nvbm5lY3Rpb259LCB0aGlzIG9wZXJhdGlvbiBpcyBleGNsdXNpdmUsIG5vIE5ERUYgbWVzc2FnZSBpbnRlbnQgYXJlCi1icm9hZGNhc3Qgd2hpbGUgdGhlIGNvbm5lY3Rpb24gaXMgbm90IGNsb3NlZCBvciBjYW5jZWxlZC4KLTwvcD4KLQotPHA+Ci1XaGVuIGFuIGFwcGxpY2F0aW9uIG9wZW5zIGEgcGVlci10by1wZWVyIGNvbm5lY3Rpb24gYnkgY2FsbGluZwote0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY01hbmFnZXIjb3BlblAycENvbm5lY3Rpb259LCB0aGlzIG9wZXJhdGlvbiBpcyBleGNsdXNpdmUsIG5vIExMQ1AgaW50ZW50IGFyZSBicm9hZGNhc3QgYW5kIExMQ1Agc29ja2V0cyBhcmUKLWRpc2FibGVkIHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIG5vdCBjbG9zZWQgb3IgY2FuY2VsZWQuIAotPC9wPgotCi0KLTxoMT5ORkMgVGFnIHR5cGVzPC9oMT4KLQotPHA+Ci1UaGUge0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY1RhZ30gdHlwZSByZXR1cm5lZCBieQote0BsaW5rIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLk5mY1RhZyNnZXRUeXBlfSBpbmRpY2F0ZXMgdGhlIHNldCBvZgotY29tbWFuZHMgc3VwcG9ydGVkIGJ5IHRoZSB0YWcuIFRoZXNlIGNvbW1hbmRzIGNhbiBiZSB1c2VkIGluCi17QGxpbmsgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuTmZjVGFnI3RyYW5zY2VpdmV9LgotPC9wPgotCi08VEFCTEUgQk9SREVSPSIxIj4KLSAgPFRSPjxUSD4gVGFnIFR5cGUgPC9USD48VEg+IFJldHVybmVkIHN0cmluZyA8L1RIPjwvVFI+Ci0gIDxUUj48VEQ+IEpld2VsL1RvcGF6IDwvVEQ+PFREPiBKZXdlbCA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IE1pZmFyZSBVbHRyYUxpZ2h0IDwvVEQ+PFREPiBNaWZhcmVVTCA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IE1pZmFyZSBTdGFuZGFyZCAxSyA8L1REPjxURD4gTWlmYXJlMUsgPC9URD48L1RSPgotICA8VFI+PFREPiBNaWZhcmUgU3RhbmRhcmQgNEsgPC9URD48VEQ+IE1pZmFyZTRLIDwvVEQ+PC9UUj4KLSAgPFRSPjxURD4gTWlmYXJlIERFU0ZJUkUgPC9URD48VEQ+IE1pZmFyZURFU0ZJUkUgPC9URD48L1RSPgotICA8VFI+PFREPiBGZWxpY2EgPC9URD48VEQ+IEZlbGljYSA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IElTTzE0NDQzLTQgQSBvciBCIDwvVEQ+PFREPiBJc28xNDQ0MyA8L1REPjwvVFI+Ci0gIDxUUj48VEQ+IElTTzE1NjkzIDwvVEQ+PFREPiBJc28xNTY5MyA8L1REPjwvVFI+Ci08L1RBQkxFPiAKLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvQW5kcm9pZC5tayBiL2NvcmUvam5pL0FuZHJvaWQubWsKaW5kZXggZDUxYzBiNy4uYzNmMzkzZCAxMDA2NDQKLS0tIGEvY29yZS9qbmkvQW5kcm9pZC5taworKysgYi9jb3JlL2puaS9BbmRyb2lkLm1rCkBAIC02Nyw2ICs2Nyw4IEBACiAJYW5kcm9pZF9uZXRfVHJhZmZpY1N0YXRzLmNwcCBcCiAJYW5kcm9pZF9uZXRfd2lmaV9XaWZpLmNwcCBcCiAJYW5kcm9pZF9uaW9fdXRpbHMuY3BwIFwKKwlhbmRyb2lkX25mY19OZGVmTWVzc2FnZS5jcHAgXAorCWFuZHJvaWRfbmZjX05kZWZSZWNvcmQuY3BwIFwKIAlhbmRyb2lkX3BpbV9FdmVudFJlY3VycmVuY2UuY3BwIFwKIAlhbmRyb2lkX3RleHRfZm9ybWF0X1RpbWUuY3BwIFwKIAlhbmRyb2lkX3NlY3VyaXR5X01kNU1lc3NhZ2VEaWdlc3QuY3BwIFwKQEAgLTE5MCwxNSArMTkyLDggQEAKIAlsaWJpY3VpMThuIFwKIAlsaWJtZWRpYSBcCiAJbGlid3BhX2NsaWVudCBcCi0JbGlianBlZwotCi1pZmVxICgkKEJPQVJEX0hBVkVfTkZDKSx0cnVlKQotTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCi0JbGlibmZjX2puaSBcCi0JbGlibmZjCi0KLUxPQ0FMX0NGTEFHUyArPSAtREhBVkVfTkZDCi1lbmRpZgorCWxpYmpwZWcgXAorCWxpYm5mY19uZGVmCiAKIGlmZXEgKCQoQk9BUkRfSEFWRV9CTFVFVE9PVEgpLHRydWUpCiBMT0NBTF9DX0lOQ0xVREVTICs9IFwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcCBiL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcAppbmRleCA1ZjczNDQzLi42NDhkOTNmIDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkUnVudGltZS5jcHAKKysrIGIvY29yZS9qbmkvQW5kcm9pZFJ1bnRpbWUuY3BwCkBAIC0xMjUsNiArMTI1LDggQEAKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9kYXRhYmFzZV9TUUxpdGVTdGF0ZW1lbnQoSk5JRW52KiBlbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX2RlYnVnX0pOSVRlc3QoSk5JRW52KiBlbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX25pb191dGlscyhKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfbmZjX05kZWZNZXNzYWdlKEpOSUVudiAqZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9uZmNfTmRlZlJlY29yZChKTklFbnYgKmVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfcGltX0V2ZW50UmVjdXJyZW5jZShKTklFbnYqIGVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfdGV4dF9mb3JtYXRfVGltZShKTklFbnYqIGVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3NfRGVidWcoSk5JRW52KiBlbnYpOwpAQCAtMTY5LDE4ICsxNzEsNiBAQAogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX2NvbnRlbnRfcmVzX09iYlNjYW5uZXIoSk5JRW52KiBlbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX2NvbnRlbnRfcmVzX0NvbmZpZ3VyYXRpb24oSk5JRW52KiBlbnYpOwogCi0jaWZkZWYgSEFWRV9ORkMKLWV4dGVybiBpbnQgcmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTmZjTWFuYWdlcihKTklFbnYgKmVudik7Ci1leHRlcm4gaW50IHJlZ2lzdGVyX2NvbV90cnVzdGVkbG9naWNfdHJ1c3RlZG5mY19hbmRyb2lkX2ludGVybmFsX05hdGl2ZU5mY1RhZyhKTklFbnYgKmVudik7Ci1leHRlcm4gaW50IHJlZ2lzdGVyX2NvbV90cnVzdGVkbG9naWNfdHJ1c3RlZG5mY19hbmRyb2lkX2ludGVybmFsX05hdGl2ZU5kZWZUYWcoSk5JRW52ICplbnYpOwotZXh0ZXJuIGludCByZWdpc3Rlcl9jb21fdHJ1c3RlZGxvZ2ljX3RydXN0ZWRuZmNfYW5kcm9pZF9OZGVmTWVzc2FnZShKTklFbnYgKmVudik7Ci1leHRlcm4gaW50IHJlZ2lzdGVyX2NvbV90cnVzdGVkbG9naWNfdHJ1c3RlZG5mY19hbmRyb2lkX05kZWZSZWNvcmQoSk5JRW52ICplbnYpOwotZXh0ZXJuIGludCByZWdpc3Rlcl9jb21fdHJ1c3RlZGxvZ2ljX3RydXN0ZWRuZmNfYW5kcm9pZF9pbnRlcm5hbF9OYXRpdmVQMnBEZXZpY2UoSk5JRW52ICplbnYpOwotZXh0ZXJuIGludCByZWdpc3Rlcl9jb21fdHJ1c3RlZGxvZ2ljX3RydXN0ZWRuZmNfYW5kcm9pZF9pbnRlcm5hbF9OYXRpdmVMbGNwU29ja2V0KEpOSUVudiAqZW52KTsKLWV4dGVybiBpbnQgcmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0KEpOSUVudiAqZW52KTsKLWV4dGVybiBpbnQgcmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQoSk5JRW52ICplbnYpOwotI2VuZGlmCi0KIHN0YXRpYyBBbmRyb2lkUnVudGltZSogZ0N1clJ1bnRpbWUgPSBOVUxMOwogCiBzdGF0aWMgdm9pZCBkb1Rocm93KEpOSUVudiogZW52LCBjb25zdCBjaGFyKiBleGMsIGNvbnN0IGNoYXIqIG1zZyA9IE5VTEwpCkBAIC0xMjYzLDYgKzEyNTMsOCBAQAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9uZXRfTmV0d29ya1V0aWxzKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfbmV0X1RyYWZmaWNTdGF0cyksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX25ldF93aWZpX1dpZmlNYW5hZ2VyKSwKKyAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfbmZjX05kZWZNZXNzYWdlKSwKKyAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfbmZjX05kZWZSZWNvcmQpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vc19NZW1vcnlGaWxlKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2NvbV9hbmRyb2lkX2ludGVybmFsX29zX1p5Z290ZUluaXQpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmEpLApAQCAtMTI5NywxOCArMTI4OSw2IEBACiAKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfY29udGVudF9yZXNfT2JiU2Nhbm5lciksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX2NvbnRlbnRfcmVzX0NvbmZpZ3VyYXRpb24pLAotCi0jaWZkZWYgSEFWRV9ORkMKLSAgICBSRUdfSk5JKHJlZ2lzdGVyX2NvbV90cnVzdGVkbG9naWNfdHJ1c3RlZG5mY19hbmRyb2lkX2ludGVybmFsX05hdGl2ZU5mY01hbmFnZXIpLAotICAgIFJFR19KTkkocmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTmZjVGFnKSwKLSAgICBSRUdfSk5JKHJlZ2lzdGVyX2NvbV90cnVzdGVkbG9naWNfdHJ1c3RlZG5mY19hbmRyb2lkX2ludGVybmFsX05hdGl2ZU5kZWZUYWcpLAotICAgIFJFR19KTkkocmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfTmRlZk1lc3NhZ2UpLAotICAgIFJFR19KTkkocmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfTmRlZlJlY29yZCksCi0gICAgUkVHX0pOSShyZWdpc3Rlcl9jb21fdHJ1c3RlZGxvZ2ljX3RydXN0ZWRuZmNfYW5kcm9pZF9pbnRlcm5hbF9OYXRpdmVQMnBEZXZpY2UpLAotICAgIFJFR19KTkkocmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTGxjcFNvY2tldCksCi0gICAgUkVHX0pOSShyZWdpc3Rlcl9jb21fdHJ1c3RlZGxvZ2ljX3RydXN0ZWRuZmNfYW5kcm9pZF9pbnRlcm5hbF9OYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQpLAotICAgIFJFR19KTkkocmVnaXN0ZXJfY29tX3RydXN0ZWRsb2dpY190cnVzdGVkbmZjX2FuZHJvaWRfaW50ZXJuYWxfTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQpLAotI2VuZGlmCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9tZWRpYV9BdWRpb1N5c3RlbS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX21lZGlhX0F1ZGlvU3lzdGVtLmNwcAppbmRleCAzOTk1MDI2Li40MGI5MzM0IDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX21lZGlhX0F1ZGlvU3lzdGVtLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX21lZGlhX0F1ZGlvU3lzdGVtLmNwcApAQCAtOTksNiArOTksMTAgQEAKIHZvaWQgYW5kcm9pZF9tZWRpYV9BdWRpb1N5c3RlbV9lcnJvcl9jYWxsYmFjayhzdGF0dXNfdCBlcnIpCiB7CiAgICAgSk5JRW52ICplbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisgICAgaWYgKGVudiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBqY2xhc3MgY2xhenogPSBlbnYtPkZpbmRDbGFzcygiYW5kcm9pZC9tZWRpYS9BdWRpb1N5c3RlbSIpOwogCiAgICAgaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9uZmMuaCBiL2NvcmUvam5pL2FuZHJvaWRfbmZjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2NjBmMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfbmZjLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBDb250YWlucyB0aGUgYmFyZSBtaW5pbXVtIGhlYWRlciBzbyB0aGF0IGZyYW1ld29yayBORkMgam5pIGNhbiBsaW5rCisgKiBhZ2FpbnN0IE5GQyBuYXRpdmUgbGlicmFyeQorICovCisKKyNpZm5kZWYgX19BTkRST0lEX05GQ19IX18KKyNkZWZpbmUgX19BTkRST0lEX05GQ19IX18KKworZXh0ZXJuICJDIiB7CisKK3R5cGVkZWYgc3RydWN0IHBoRnJpTmZjX05kZWZSZWNvcmQgeworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIEZsYWdzOworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIFRuZjsKKyAgICB1aW50OF90ICAgICAgICAgICAgICAgICBUeXBlTGVuZ3RoOworICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgKlR5cGU7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAgSWRMZW5ndGg7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICAqSWQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgUGF5bG9hZExlbmd0aDsKKyAgICB1aW50OF90ICAgICAgICAgICAgICAgICpQYXlsb2FkRGF0YTsKK30gcGhGcmlOZmNfTmRlZlJlY29yZF90OworCit1aW50MTZfdCBwaEZyaU5mY19OZGVmUmVjb3JkX0dldFJlY29yZHModWludDhfdCogICAgICBwQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgQnVmZmVyTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqICAgICAgcFJhd1JlY29yZHNbIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAgICAgICBJc0NodW5rZWRbIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QqICAgICBwTnVtYmVyT2ZSYXdSZWNvcmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKK3VpbnQxNl90IHBoRnJpTmZjX05kZWZSZWNvcmRfUGFyc2UocGhGcmlOZmNfTmRlZlJlY29yZF90KiBwUmVjb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90KiAgICAgICAgICAgICAgIHBSYXdSZWNvcmQpOworCit1aW50MTZfdCBwaEZyaU5mY19OZGVmUmVjb3JkX0dlbmVyYXRlKHBoRnJpTmZjX05kZWZSZWNvcmRfdCogIHBSZWNvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqICAgICAgICAgICAgICAgIHBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIE1heEJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KiAgICAgICAgICAgICAgIHBCeXRlc1dyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX25mY19OZGVmTWVzc2FnZS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX25mY19OZGVmTWVzc2FnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkyOTVmNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfbmZjX05kZWZNZXNzYWdlLmNwcApAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTmRlZk1lc3NhZ2UiCisKKyNpbmNsdWRlICJqbmkuaCIKKyNpbmNsdWRlICJKTklIZWxwLmgiCisKKyNpbmNsdWRlICJhbmRyb2lkX25mYy5oIgorCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIGppbnQgYW5kcm9pZF9uZmNfTmRlZk1lc3NhZ2VfcGFyc2VOZGVmTWVzc2FnZShKTklFbnYgKmUsIGpvYmplY3QgbywKKyAgICAgICAgamJ5dGVBcnJheSBhcnJheSkKK3sKKyAgICB1aW50MTZfdCBzdGF0dXM7CisgICAgdWludDMyX3QgaTsKKyAgICBqYnl0ZSAqcmF3X21zZzsKKyAgICBqc2l6ZSByYXdfbXNnX3NpemU7CisgICAgdWludDMyX3QgbnVtX29mX3JlY29yZHMgPSAwOworICAgIHVpbnQ4X3QgKipyZWNvcmRzID0gTlVMTDsKKyAgICB1aW50OF90ICppc19jaHVua2VkID0gTlVMTDsKKyAgICBqaW50IHJldCA9IC0xOworICAgIHBoRnJpTmZjX05kZWZSZWNvcmRfdCByZWNvcmQ7CisKKyAgICBqY2xhc3MgcmVjb3JkX2NsczsKKyAgICBqb2JqZWN0QXJyYXkgcmVjb3Jkc19hcnJheTsKKyAgICBqbWV0aG9kSUQgY3RvcjsKKworICAgIGpjbGFzcyBtc2dfY2xzOworICAgIGpmaWVsZElEIG1yZWNvcmRzOworCisgICAgcmF3X21zZ19zaXplID0gZS0+R2V0QXJyYXlMZW5ndGgoYXJyYXkpOworICAgIHJhd19tc2cgPSBlLT5HZXRCeXRlQXJyYXlFbGVtZW50cyhhcnJheSwgTlVMTCk7CisgICAgaWYgKHJhd19tc2cgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogR2V0IHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgbWVzc2FnZSBzbyB3ZSBjYW4gYWxsb2NhdGUgYnVmZmVycyAqLworICAgIExPR0QoInBoRnJpTmZjX05kZWZSZWNvcmRfR2V0UmVjb3JkcyhOVUxMKSIpOworCisgICAgc3RhdHVzID0gcGhGcmlOZmNfTmRlZlJlY29yZF9HZXRSZWNvcmRzKCh1aW50OF90ICopcmF3X21zZywKKyAgICAgICAgICAgICh1aW50MzJfdClyYXdfbXNnX3NpemUsIE5VTEwsIE5VTEwsICZudW1fb2ZfcmVjb3Jkcyk7CisKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIExPR0UoInBoRnJpTmZjX05kZWZSZWNvcmRfR2V0UmVjb3JkcyhOVUxMKSByZXR1cm5lZCAweCUwNHgiLCBzdGF0dXMpOworICAgICAgICBnb3RvIGVuZDsKKyAgICB9CisgICAgTE9HRCgicGhGcmlOZmNfTmRlZlJlY29yZF9HZXRSZWNvcmRzKE5VTEwpIHJldHVybmVkIDB4JTA0eCIsIHN0YXR1cyk7CisKKyAgICBMT0dEKCJmb3VuZCAlZCByZWNvcmRzIGluIG1lc3NhZ2UiLCBudW1fb2ZfcmVjb3Jkcyk7CisKKyAgICBpc19jaHVua2VkID0gKHVpbnQ4X3QqKW1hbGxvYyhudW1fb2ZfcmVjb3Jkcyk7CisgICAgaWYgKGlzX2NodW5rZWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlbmQ7CisgICAgcmVjb3JkcyA9ICh1aW50OF90KiopbWFsbG9jKG51bV9vZl9yZWNvcmRzICogc2l6ZW9mKHVpbnQ4X3QgKikpOworICAgIGlmIChyZWNvcmRzID09IE5VTEwpCisgICAgICAgIGdvdG8gZW5kOworCisgICAgLyogTm93LCBhY3R1YWxseSByZXRyaWV2ZSByZWNvcmRzIHBvc2l0aW9uIGluIG1lc3NhZ2UgKi8KKyAgICBMT0dEKCJwaEZyaU5mY19OZGVmUmVjb3JkX0dldFJlY29yZHMoKSIpOworCisgICAgc3RhdHVzID0gcGhGcmlOZmNfTmRlZlJlY29yZF9HZXRSZWNvcmRzKCh1aW50OF90ICopcmF3X21zZywKKyAgICAgICAgICAgICh1aW50MzJfdClyYXdfbXNnX3NpemUsIHJlY29yZHMsIGlzX2NodW5rZWQsICZudW1fb2ZfcmVjb3Jkcyk7CisKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIExPR0UoInBoRnJpTmZjX05kZWZSZWNvcmRfR2V0UmVjb3JkcygpIHJldHVybmVkIDB4JTA0eCIsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKyAgICBMT0dEKCJwaEZyaU5mY19OZGVmUmVjb3JkX0dldFJlY29yZHMoKSByZXR1cm5lZCAweCUwNHgiLCBzdGF0dXMpOworCisgICAgLyogQnVpbGQgTkRFRiByZWNvcmRzIGFycmF5ICovCisgICAgcmVjb3JkX2NscyA9IGUtPkZpbmRDbGFzcygiYW5kcm9pZC9uZmMvTmRlZlJlY29yZCIpOworICAgIHJlY29yZHNfYXJyYXkgPSBlLT5OZXdPYmplY3RBcnJheSgoanNpemUpbnVtX29mX3JlY29yZHMsIHJlY29yZF9jbHMsCisgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAocmVjb3Jkc19hcnJheSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGN0b3IgPSBlLT5HZXRNZXRob2RJRChyZWNvcmRfY2xzLCAiPGluaXQ+IiwgIihTW0JbQltCKVYiKTsKKworICAgIExPR0QoIk5GQ19OdW1iZXIgb2YgcmVjb3JkcyA9ICVkXG4iLCBudW1fb2ZfcmVjb3Jkcyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX29mX3JlY29yZHM7IGkrKykgeworICAgICAgICBqYnl0ZUFycmF5IHR5cGUsIGlkLCBwYXlsb2FkOworICAgICAgICBqb2JqZWN0IG5ld19yZWNvcmQ7CisKKyAgICAgICAgTE9HRCgicGhGcmlOZmNfTmRlZlJlY29yZF9QYXJzZSgpIik7CisKKyAgICAgICAgc3RhdHVzID0gcGhGcmlOZmNfTmRlZlJlY29yZF9QYXJzZSgmcmVjb3JkLCByZWNvcmRzW2ldKTsKKworICAgICAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgICAgICBMT0dFKCJwaEZyaU5mY19OZGVmUmVjb3JkX1BhcnNlKCkgcmV0dXJuZWQgMHglMDR4Iiwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisgICAgICAgIExPR0QoInBoRnJpTmZjX05kZWZSZWNvcmRfUGFyc2UoKSByZXR1cm5lZCAweCUwNHgiLCBzdGF0dXMpOworCisgICAgICAgIHR5cGUgPSBlLT5OZXdCeXRlQXJyYXkocmVjb3JkLlR5cGVMZW5ndGgpOworICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dEKCJORkNfU2V0IFJlY29yZCBUeXBlIEVycm9yXG4iKTsKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisKKyAgICAgICAgaWQgPSBlLT5OZXdCeXRlQXJyYXkocmVjb3JkLklkTGVuZ3RoKTsKKyAgICAgICAgaWYoaWQgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRCgiTkZDX1NldCBSZWNvcmQgSUQgRXJyb3JcbiIpOworICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIH0KKworICAgICAgICBwYXlsb2FkID0gZS0+TmV3Qnl0ZUFycmF5KHJlY29yZC5QYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgaWYocGF5bG9hZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dEKCJORkNfU2V0IFJlY29yZCBQYXlsb2FkIEVycm9yXG4iKTsKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisKKyAgICAgICAgZS0+U2V0Qnl0ZUFycmF5UmVnaW9uKHR5cGUsIDAsIHJlY29yZC5UeXBlTGVuZ3RoLAorICAgICAgICAgICAgICAgIChqYnl0ZSAqKXJlY29yZC5UeXBlKTsKKyAgICAgICAgZS0+U2V0Qnl0ZUFycmF5UmVnaW9uKGlkLCAwLCByZWNvcmQuSWRMZW5ndGgsCisgICAgICAgICAgICAgICAgKGpieXRlICopcmVjb3JkLklkKTsKKyAgICAgICAgZS0+U2V0Qnl0ZUFycmF5UmVnaW9uKHBheWxvYWQsIDAsIHJlY29yZC5QYXlsb2FkTGVuZ3RoLAorICAgICAgICAgICAgICAgIChqYnl0ZSAqKXJlY29yZC5QYXlsb2FkRGF0YSk7CisKKyAgICAgICAgbmV3X3JlY29yZCA9IGUtPk5ld09iamVjdChyZWNvcmRfY2xzLCBjdG9yLAorICAgICAgICAgICAgICAgIChqc2hvcnQpcmVjb3JkLlRuZiwgdHlwZSwgaWQsIHBheWxvYWQpOworCisgICAgICAgIGUtPlNldE9iamVjdEFycmF5RWxlbWVudChyZWNvcmRzX2FycmF5LCBpLCBuZXdfcmVjb3JkKTsKKworICAgICAgICAvKiBUcnkgbm90IHRvIGNsdXR0ZXIgdGhlIEphdmEgc3RhY2sgdG9vIG11Y2ggKi8KKyAgICAgICAgZS0+RGVsZXRlTG9jYWxSZWYobmV3X3JlY29yZCk7CisgICAgICAgIGUtPkRlbGV0ZUxvY2FsUmVmKHR5cGUpOworICAgICAgICBlLT5EZWxldGVMb2NhbFJlZihpZCk7CisgICAgICAgIGUtPkRlbGV0ZUxvY2FsUmVmKHBheWxvYWQpOworICAgIH0KKworICAgIC8qIFN0b3JlIGJ1aWx0IGFycmF5IGluIG91ciBOREVGTWVzc2FnZSBpbnN0YW5jZSAqLworICAgIG1zZ19jbHMgPSBlLT5HZXRPYmplY3RDbGFzcyhvKTsKKyAgICBtcmVjb3JkcyA9IGUtPkdldEZpZWxkSUQobXNnX2NscywgIm1SZWNvcmRzIiwgIltMYW5kcm9pZC9uZmMvTmRlZlJlY29yZDsiKTsKKworICAgIGUtPlNldE9iamVjdEZpZWxkKG8sIG1yZWNvcmRzLCAoam9iamVjdClyZWNvcmRzX2FycmF5KTsKKworICAgIHJldCA9IDA7CisKK2VuZDoKKyAgICBpZihpc19jaHVua2VkKQorICAgICAgICBmcmVlKGlzX2NodW5rZWQpOworICAgIGlmKHJlY29yZHMpCisgICAgICAgIGZyZWUocmVjb3Jkcyk7CisgICAgZS0+UmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKGFycmF5LCByYXdfbXNnLCBKTklfQUJPUlQpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnTWV0aG9kc1tdID0geworICAgICAgICB7InBhcnNlTmRlZk1lc3NhZ2UiLCAiKFtCKUkiLCAodm9pZCAqKWFuZHJvaWRfbmZjX05kZWZNZXNzYWdlX3BhcnNlTmRlZk1lc3NhZ2V9LAorfTsKKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfbmZjX05kZWZNZXNzYWdlKEpOSUVudiAqZSkKK3sKKyAgICByZXR1cm4gam5pUmVnaXN0ZXJOYXRpdmVNZXRob2RzKGUsICJhbmRyb2lkL25mYy9OZGVmTWVzc2FnZSIsIGdNZXRob2RzLCBORUxFTShnTWV0aG9kcykpOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX25mY19OZGVmUmVjb3JkLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfbmZjX05kZWZSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZTE4MzcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2puaS9hbmRyb2lkX25mY19OZGVmUmVjb3JkLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJOZGVmUmVjb3JkIgorCisjaW5jbHVkZSAiam5pLmgiCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSAiYW5kcm9pZF9uZmMuaCIKKworI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBqYnl0ZUFycmF5IGFuZHJvaWRfbmZjX05kZWZSZWNvcmRfZ2VuZXJhdGUoCisgICAgICAgIEpOSUVudiAqZSwgam9iamVjdCBvLCBqc2hvcnQgZmxhZ3MsIGpzaG9ydCB0bmYsIGpieXRlQXJyYXkgdHlwZSwKKyAgICAgICAgamJ5dGVBcnJheSBpZCwgamJ5dGVBcnJheSBwYXlsb2FkKQoreworICAgIHVpbnQzMl90IHN0YXR1czsKKyAgICBwaEZyaU5mY19OZGVmUmVjb3JkX3QgcmVjb3JkOworICAgIHVpbnQzMl90IGJ1Zl9zaXplOworICAgIHVpbnQzMl90IHJlY29yZF9zaXplOworICAgIHVpbnQ4X3QgKmJ1ZiA9IE5VTEw7CisgICAgamJ5dGVBcnJheSByZXN1bHQgPSBOVUxMOworCisgICAgLyogUHJlcGFyZSBOREVGIHJlY29yZCBzdHJ1Y3R1cmUgKi8KKyAgICByZWNvcmQuRmxhZ3MgPSAodWludDhfdClmbGFnczsKKyAgICByZWNvcmQuVG5mID0gKHVpbnQ4X3QpdG5mOworICAgIHJlY29yZC5UeXBlTGVuZ3RoID0gKHVpbnQzMl90KWUtPkdldEFycmF5TGVuZ3RoKHR5cGUpOworICAgIHJlY29yZC5UeXBlID0gKHVpbnQ4X3QgKillLT5HZXRCeXRlQXJyYXlFbGVtZW50cyh0eXBlLCBOVUxMKTsKKyAgICByZWNvcmQuSWRMZW5ndGggPSAodWludDMyX3QpZS0+R2V0QXJyYXlMZW5ndGgoaWQpOworICAgIHJlY29yZC5JZCA9ICh1aW50OF90ICopZS0+R2V0Qnl0ZUFycmF5RWxlbWVudHMoaWQsIE5VTEwpOworICAgIHJlY29yZC5QYXlsb2FkTGVuZ3RoID0gKHVpbnQzMl90KWUtPkdldEFycmF5TGVuZ3RoKHBheWxvYWQpOworICAgIHJlY29yZC5QYXlsb2FkRGF0YSA9ICh1aW50OF90ICopZS0+R2V0Qnl0ZUFycmF5RWxlbWVudHMocGF5bG9hZCwgTlVMTCk7CisKKyAgICBidWZfc2l6ZSA9IHJlY29yZC5QYXlsb2FkTGVuZ3RoICsgcmVjb3JkLklkTGVuZ3RoICsgcmVjb3JkLlR5cGVMZW5ndGggKyA4OworCisgICAgYnVmID0gKHVpbnQ4X3QqKW1hbGxvYyhidWZfc2l6ZSk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIExPR0QoInBoRnJpTmZjX05kZWZSZWNvcmRfR2VuZXJhdGUoKSIpOworCisgICAgc3RhdHVzID0gcGhGcmlOZmNfTmRlZlJlY29yZF9HZW5lcmF0ZSgmcmVjb3JkLCBidWYsIGJ1Zl9zaXplLAorICAgICAgICAgICAgJnJlY29yZF9zaXplKTsKKworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HRSgicGhGcmlOZmNfTmRlZlJlY29yZF9HZW5lcmF0ZSgpIHJldHVybmVkIDB4JTA0eCIsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKyAgICBMT0dEKCJwaEZyaU5mY19OZGVmUmVjb3JkX0dlbmVyYXRlKCkgcmV0dXJuZWQgMHglMDR4Iiwgc3RhdHVzKTsKKworICAgIHJlc3VsdCA9IGUtPk5ld0J5dGVBcnJheShyZWNvcmRfc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGUtPlNldEJ5dGVBcnJheVJlZ2lvbihyZXN1bHQsIDAsIHJlY29yZF9zaXplLCAoamJ5dGUgKilidWYpOworCitlbmQ6CisgICAgZS0+UmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKHR5cGUsIChqYnl0ZSAqKXJlY29yZC5UeXBlLCBKTklfQUJPUlQpOworICAgIGUtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyhpZCwgKGpieXRlICopcmVjb3JkLklkLCBKTklfQUJPUlQpOworICAgIGUtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyhwYXlsb2FkLCAoamJ5dGUgKilyZWNvcmQuUGF5bG9hZERhdGEsIEpOSV9BQk9SVCk7CisKKyAgICBpZihidWYpCisgICAgICAgIGZyZWUoYnVmKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKTklOYXRpdmVNZXRob2QgZ01ldGhvZHNbXSA9IHsKKyAgICB7ImdlbmVyYXRlIiwgIihTU1tCW0JbQilbQiIsICh2b2lkICopYW5kcm9pZF9uZmNfTmRlZlJlY29yZF9nZW5lcmF0ZX0sCit9OworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF9uZmNfTmRlZlJlY29yZChKTklFbnYgKmUpCit7CisgICAgcmV0dXJuIGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlLCAiYW5kcm9pZC9uZmMvTmRlZlJlY29yZCIsIGdNZXRob2RzLCBORUxFTShnTWV0aG9kcykpOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvY29yZS9yZXMvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCBmZjA3OWU0Li5hMjJjODI3IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9BbmRyb2lkTWFuaWZlc3QueG1sCisrKyBiL2NvcmUvcmVzL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTM0MSwyOSArMzQxLDEyIEBACiAgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfYmx1ZXRvb3RoIgogICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfYmx1ZXRvb3RoIiAvPgogCi0gICAgPCEtLSBBbGxvd3MgYXBwbGljYXRpb25zIHRvIGFjY2VzcyByZW1vdGUgTkZDIGRldmljZXMKLSAgICAgICAgIEBoaWRlIC0tPgotICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLnBlcm1pc3Npb24uTkZDX1JBVyIKKyAgICA8IS0tIEFsbG93cyBhcHBsaWNhdGlvbnMgdG8gZGlyZWN0bHkgY29tbXVuaWNhdGUgb3ZlciBORkMgLS0+CisgICAgPHBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uTkZDIgogICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLk5FVFdPUksiCiAgICAgICAgIGFuZHJvaWQ6cHJvdGVjdGlvbkxldmVsPSJkYW5nZXJvdXMiCi0gICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfbmZjUmF3IgotICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfbmZjUmF3IiAvPgotCi0gICAgPCEtLSBBbGxvd3MgYXBwbGljYXRpb25zIHRvIGJlIG5vdGlmaWVkIG9mIHJlbW90ZSBORkMgZGV2aWNlcwotICAgICAgICAgQGhpZGUgLS0+Ci0gICAgPHBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMucGVybWlzc2lvbi5ORkNfTk9USUZZIgotICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLk5FVFdPUksiCi0gICAgICAgIGFuZHJvaWQ6cHJvdGVjdGlvbkxldmVsPSJkYW5nZXJvdXMiCi0gICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfbmZjTm90aWZ5IgotICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfbmZjTm90aWZ5IiAvPgotCi0gICAgPCEtLSBBbGxvd3MgYXBwbGljYXRpb25zIHRvIGJlIG5vdGlmaWVkIG9mIHJlbW90ZSBORkMgTExDUCBkZXZpY2VzCi0gICAgICAgICBAaGlkZSAtLT4KLSAgICA8cGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5wZXJtaXNzaW9uLk5GQ19MTENQIgotICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLk5FVFdPUksiCi0gICAgICAgIGFuZHJvaWQ6cHJvdGVjdGlvbkxldmVsPSJkYW5nZXJvdXMiCi0gICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfbmZjTGxjcCIKLSAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9wZXJtbGFiX25mY0xsY3AiIC8+CisgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfbmZjIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfbmZjIiAvPgogCiAgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gdXNlIFNJUCBzZXJ2aWNlIC0tPgogICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlVTRV9TSVAiCkBAIC04NzUsMTQgKzg1OCw2IEBACiAgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfYmx1ZXRvb3RoQWRtaW4iCiAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvcGVybWxhYl9ibHVldG9vdGhBZG1pbiIgLz4KIAotICAgIDwhLS0gQWxsb3dzIGFwcGxpY2F0aW9ucyB0byBjaGFuZ2UgTkZDIGNvbm5lY3Rpdml0eSBzZXR0aW5ncyAKLSAgICAgICAgIEBoaWRlIC0tPgotICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLnBlcm1pc3Npb24uTkZDX0FETUlOIgotICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLlNZU1RFTV9UT09MUyIKLSAgICAgICAgYW5kcm9pZDpwcm90ZWN0aW9uTGV2ZWw9ImRhbmdlcm91cyIKLSAgICAgICAgYW5kcm9pZDpkZXNjcmlwdGlvbj0iQHN0cmluZy9wZXJtZGVzY19uZmNBZG1pbiIKLSAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9wZXJtbGFiX25mY0FkbWluIiAvPgotCiAgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gY2xlYXIgdGhlIGNhY2hlcyBvZiBhbGwgaW5zdGFsbGVkCiAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdGhlIGRldmljZS4gIC0tPgogICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkNMRUFSX0FQUF9DQUNIRSIKQEAgLTEzNzEsNyArMTM0Niw4IEBACiAgICAgICAgIDwvcmVjZWl2ZXI+CiAKICAgICAgICAgPHJlY2VpdmVyIGFuZHJvaWQ6bmFtZT0iY29tLmFuZHJvaWQuc2VydmVyLk1hc3RlckNsZWFyUmVjZWl2ZXIiCi0gICAgICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb249ImFuZHJvaWQucGVybWlzc2lvbi5NQVNURVJfQ0xFQVIiID4KKyAgICAgICAgICAgIGFuZHJvaWQ6cGVybWlzc2lvbj0iYW5kcm9pZC5wZXJtaXNzaW9uLk1BU1RFUl9DTEVBUiIKKyAgICAgICAgICAgIGFuZHJvaWQ6cHJpb3JpdHk9IjEwMCIgPgogICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CiAgICAgICAgICAgICAgICAgPCEtLSBGb3IgQ2hlY2tpbiwgU2V0dGluZ3MsIGV0Yy46IGFjdGlvbj1NQVNURVJfQ0xFQVIgLS0+CiAgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQVNURVJfQ0xFQVIiIC8+CkBAIC0xMzgxLDggKzEzNTcsMTEgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5NQVNURVJfQ0xFQVIiIC8+CiAgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CiAgICAgICAgIDwvcmVjZWl2ZXI+CisKKyAgICAgICAgPHNlcnZpY2UgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5zdG9yYWdlLkV4dGVybmFsU3RvcmFnZUZvcm1hdHRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGVybWlzc2lvbj0iYW5kcm9pZC5wZXJtaXNzaW9uLk1BU1RFUl9DTEVBUiIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZXhwb3J0ZWQ9InRydWUiIC8+CisKICAgICA8L2FwcGxpY2F0aW9uPgogCiA8L21hbmlmZXN0PgotCi0KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX21lZGlhX3BhdXNlLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX21lZGlhX3BhdXNlLnBuZwppbmRleCBhMjIzZjlhLi5hYTI1ZWU0IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9pY19tZWRpYV9wYXVzZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVkaWFfcGF1c2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX21lZGlhX3BsYXkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVkaWFfcGxheS5wbmcKaW5kZXggNzQ2ZDNkMi4uZTQxMTBiZCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVkaWFfcGxheS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVkaWFfcGxheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfYWRiLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2FkYi5wbmcKaW5kZXggZmRmNmM2Yy4uZjk5Yjc4MCAxMDA3NTUKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfYWRiLnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19hZGIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX21lZGlhX3BhdXNlLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX21lZGlhX3BhdXNlLnBuZwppbmRleCBjM2RmY2JkLi45ZThiNjc1IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9pY19tZWRpYV9wYXVzZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVkaWFfcGF1c2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX21lZGlhX3BsYXkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVkaWFfcGxheS5wbmcKaW5kZXggNjg4ZTAxZC4uOTY1OTNhNCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVkaWFfcGxheS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVkaWFfcGxheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvbWVudV9iYWNrZ3JvdW5kLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvbWVudV9iYWNrZ3JvdW5kLjkucG5nCmluZGV4IGVlOTk1ODMuLjQxYTNkMzQgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL21lbnVfYmFja2dyb3VuZC45LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9tZW51X2JhY2tncm91bmQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvbWVudV9iYWNrZ3JvdW5kX2ZpbGxfcGFyZW50X3dpZHRoLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvbWVudV9iYWNrZ3JvdW5kX2ZpbGxfcGFyZW50X3dpZHRoLjkucG5nCmluZGV4IGQzNjg5ODMuLjFkZGYwOTEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL21lbnVfYmFja2dyb3VuZF9maWxsX3BhcmVudF93aWR0aC45LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9tZW51X2JhY2tncm91bmRfZmlsbF9wYXJlbnRfd2lkdGguOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfYWRiLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2FkYi5wbmcKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAxMmFiZWRhLi5mMGZhZDc2Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2FkYi5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfYWRiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbAppbmRleCBhNThlOTJiLi5kYzk3MWJiIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iTsOhc3Ryb2plIHBybyB2w712b2rDocWZZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiJGdW5rY2UgcG91emUgcHJvIHbDvXZvasOhxZllIGFwbGlrYWPDrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IsOabG/FvmnFoXTEmyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iUMWZw61zdHVwIGtlIHNkw61sZW7DqW11IMO6bG/FvmnFoXRpIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiJQxZnDrXN0dXAga2Ugc2TDrWxlbsOpbXUgw7psb8W+acWhdGkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4iUMWZw61zdHVwIGtlIGthcnTEmyBTRC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJ6YWvDoXrDoW7DrSDEjWkgem3Em255IHN0YXZvdsOpaG8gxZnDoWRrdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHpha8OhemF0IHN0YXZvdsO9IMWZw6FkZWsgbmVibyBwxZlpZGF0IMSNaSBvZGVicmF0IHN5c3TDqW1vdsOpIGlrb255LiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IlVtb8W+xYh1amUgYXBsaWthY2kgcMWZaXBvaml0IMSNaSBvZHBvaml0IHNvdWJvcm92w6kgc3lzdMOpbXkgdmUgdnltxJtuaXRlbG7DvWNoIMO6bG/FvmnFoXTDrWNoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImZvcm3DoXRvdmF0IGV4dGVybsOtIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlVtb8W+xYh1amUgYXBsaWthY2kgZm9ybcOhdG92YXQgdnltxJtuaXRlbG7DoSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiJ6w61za2F0IGluZm9ybWFjZSBvIHphYmV6cGXEjWVuw6ltIMO6bG/FvmnFoXRpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iVW1vxb7FiHVqZSBhcGxpa2FjaSB6w61za2F0IGluZm9ybWFjZSBvIHphYmV6cGXEjWVuw6ltIMO6bG/FvmnFoXRpLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MzEyMDc4MDMyMzI2OTI4ODk5Ij4idnl0dm/FmWl0IHphYmV6cGXEjWVuw6kgw7psb8W+acWhdMSbIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MDQxODAyMzIyNzU5MDE0MDM1Ij4iVW1vxb7FiHVqZSBhcGxpa2FjaSB2eXR2b8WZaXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iem5pxI1pdCB6YWJlenBlxI1lbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHpuacSNaXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4icMWZaXBvaml0IG5lYm8gb2Rwb2ppdCB6YWJlenBlxI1lbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHDFmWlwb2ppdCBuZWJvIG9kcG9qaXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJwxZllam1lbm92YXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHDFmWVqbWVub3ZhdCB6YWJlenBlxI1lbsOpaG8gw7psb8W+acWhdMSbLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4iesOtc2thdCBpbmZvcm1hY2UgbyB6YWJlenBlxI1lbsOpbSDDumxvxb5pxaF0aSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc2OTE2MTYyOTIxNzA1OTAyNDQgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iODgyMDMyNjU1MTY4NzI4NTQzOSI+IlVtb8W+xYh1amUgYXBsaWthY2kgesOtc2thdCBpbmZvcm1hY2UgbyB6YWJlenBlxI1lbsOpbSDDumxvxb5pxaF0aS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MzEyMDc4MDMyMzI2OTI4ODk5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNjQxNDc1NzIzNDc4OTMzNjMyNyI+InZ5dHZvxZlpdCB6YWJlenBlxI1lbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlVtb8W+xYh1amUgYXBsaWthY2kgdnl0dm/FmWl0IHphYmV6cGXEjWVuw6kgw7psb8W+acWhdMSbLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4iem5pxI1pdCB6YWJlenBlxI1lbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHpuacSNaXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4icMWZaXBvaml0IG5lYm8gb2Rwb2ppdCB6YWJlenBlxI1lbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0MzgwNzgxMjE3MTg3Mzg2MjUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU5MzQzNzU1OTAxODkzNjgyMDAiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHDFmWlwb2ppdCBuZWJvIG9kcG9qaXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTY4NTM0NDM5MDQzOTkzNDQ5NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9Ijc0OTY2MzM5NTQwODA0NzI0MTciPiJwxZllam1lbm92YXQgemFiZXpwZcSNZW7DqSDDumxvxb5pxaF0xJsiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiJVbW/FvsWIdWplIGFwbGlrYWNpIHDFmWVqbWVub3ZhdCB6YWJlenBlxI1lbsOpaG8gw7psb8W+acWhdMSbLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJvdmzDoWTDoW7DrSB2aWJyYWPDrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3ZpYnJhdGUiIG1zZ2lkPSIyODg2Njc3MTc3MjU3Nzg5MTg3Ij4iVW1vxb7FiHVqZSBhcGxpa2FjaSBvdmzDoWRhdCB2aWJyYWNlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiJvdmzDoWTDoW7DrSBrb250cm9sa3kiPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IlVtb8W+bsOtIGFwbGlrYWNpIMSNw61zdCBzb3Vrcm9tw6Egc2xvdmEsIGptw6luYSBhIGZyw6F6ZSwga3RlcsOhIHXFvml2YXRlbCBtb2hsIHVsb8W+aXQgZG8gc3bDqWhvIHNsb3Zuw61rdS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjY3MDMxMDk1MTE4MzYzNDMzNDEiPiJ6w6FwaXMgZG8gc2xvdm7DrWt1IGRlZmlub3ZhbsOpaG8gdcW+aXZhdGVsZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY193cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSIyMjQxMjU2MjA2NTI0MDgyODgwIj4iVW1vxb5uw60gYXBsaWthY2kgemFwaXNvdmF0IG5vdsOhIHNsb3ZhIGRvIHXFvml2YXRlbHNrw6lobyBzbG92bsOta3UuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiLDunByYXZ5L21hesOhbsOtIG9ic2FodSBzZMOtbC4gw7psb8W+acWhdMSbIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4iw7pwcmF2eS9tYXrDoW7DrSBvYnNhaHUgc2TDrWwuIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4iem3Em25hL3NtYXrDoW7DrSBvYnNhaHUga2FydHkgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4iVW1vxb5uw60gesOhcGlzIGRvIHNkw61sLiDDumxvxb4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlVtb8W+bsOtIHrDoXBpcyBkbyBzZMOtbC4gw7psb8W+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjY0Mzk2MzIwNDk3NjQ3MTg3OCI+IlVtb8W+bsOtIGFwbGlrYWNpIHrDoXBpcyBuYSBrYXJ0dSBTRC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSI1NjU2NDg3MjY0ODE5NjY5ODI0Ij4icMWZaXN0dXBvdmF0IGRvIHNvdWJvcm92w6lobyBzeXN0w6ltdSBtZXppcGFtxJt0aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSIxNjI0NzM0NTI4NDM1NjU5OTA2Ij4iVW1vxb7FiHVqZSBhcGxpa2FjaSDEjcOtc3QgYSB6YXBpc292YXQgZG8gc291Ym9yb3bDqWhvIHN5c3TDqW11IG1lemlwYW3Em3RpLiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiJab2JyYXppdCB2xaFlIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IsOabG/FvmnFoXTEmyBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0IgcMWZaXBvamVubyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IlDFmWlwb2ppbGkganN0ZSB0ZWxlZm9uIGsgcG/EjcOtdGHEjWkgcG9tb2PDrSByb3pocmFuw60gVVNCLiBDaGNldGUtbGkga29ww61yb3ZhdCBzb3Vib3J5IHogcG/EjcOtdGHEjWUgZG8gc2TDrWxlbsOpaG8gw7psb8W+acWhdMSbIHphxZnDrXplbsOtIEFuZHJvaWQgxI1pIG9icsOhY2VuxJssIHZ5YmVydGUgbsOhc2xlZHVqw61jw60gdGxhxI3DrXRrby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+IlDFmWlwb2ppbGkganN0ZSB0ZWxlZm9uIGsgcG/EjcOtdGHEjWkgcG9tb2PDrSByb3pocmFuw60gVVNCLiBDaGNldGUtbGkga29ww61yb3ZhdCBzb3Vib3J5IHogcG/EjcOtdGHEjWUgZG8gc2TDrWxlbsOpaG8gw7psb8W+acWhdMSbIHphxZnDrXplbsOtIEFuZHJvaWQgxI1pIG9icsOhY2VuxJssIHZ5YmVydGUgbsOhc2xlZHVqw61jw60gdGxhxI3DrXRrby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IlDFmWlwb2ppbGkganN0ZSBzdsWvaiB0ZWxlZm9uIGsgcG/EjcOtdGHEjWkgcG9tb2PDrSBVU0IuIENoY2V0ZS1saSBrb3DDrXJvdmF0IHNvdWJvcnkgeiBwb8SNw610YcSNZSBuYSBrYXJ0dSBTRCB2IHphxZnDrXplbsOtIEFuZHJvaWQgxI1pIG9icsOhY2VuxJssIHZ5YmVydGUgbsOhc2xlZHVqw61jw60gdGxhxI3DrXRrby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iWmFwbm91dCDDumxvxb5pxaF0xJsgVVNCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0ODE4MzQ3NzU2NDAyNzQwMjYxIj4iUMWZaSBwb3XFvsOtdsOhbsOtIHNkw61sZW7DqWhvIMO6bG/FvmnFoXTEmyBqYWtvIMO6bG/FvmnFoXTEmyBVU0IgZG/FoWxvIGsgcHJvYmzDqW11LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iUMWZaSBwb3XFvsOtdsOhbsOtIHZhxaHDrSBrYXJ0eSBTRCBqYWtvIMO6bG/FvmnFoXTEmyBVU0IgZG/FoWxvIGsgcHJvYmzDqW11LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IlDFmWkgcG91xb7DrXbDoW7DrSBzZMOtbGVuw6lobyDDumxvxb5pxaF0xJsgamFrbyDDumxvxb5pxaF0xJsgVVNCIGRvxaFsbyBrIHByb2Jsw6ltdS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMTIwODEwMzk3NzEzNzczMjc1Ij4iUMWZaSBwb3XFvsOtdsOhbsOtIHNkw61sZW7DqWhvIMO6bG/FvmnFoXTEmyBqYWtvIMO6bG/FvmnFoXTEmyBVU0IgZG/FoWxvIGsgcHJvYmzDqW11LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0IgcMWZaXBvamVubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iNzM4MDA4MjQwNDI4ODIxOTM0MSI+IlZ5YmVydGUsIGNoY2V0ZS1saSBrb3DDrXJvdmF0IHNvdWJvcnkgZG8gbmVibyB6IHBvxI3DrXRhxI1lLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IlZ5cG5vdXQgw7psb8W+acWhdMSbIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iVnliZXJ0ZSwgY2hjZXRlLWxpIHZ5cG5vdXQgw7psb8W+acWhdMSbIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iw5psb8W+acWhdMSbIFVTQiBqZSBwb3XFvsOtdsOhbm8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+IlDFmWVkIHZ5cG51dMOtbSDDumxvxb5pxaF0xJsgVVNCIHprb250cm9sdWp0ZSwgemRhIGpzdGUgb2Rwb2ppbGkgKHZ5xYhhbGkpIHNkw61sZW7DqSDDumxvxb5pxaF0xJsgemHFmcOtemVuw60gQW5kcm9pZCB6IHBvxI3DrXRhxI1lLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDg3NDUzNDUyNjA3ODAyNjcxODUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMzY4ODQyMjY5NDYzNzQ1MDY3Ij4iUMWZZWQgdnlwbnV0w61tIMO6bG/FvmnFoXTEmyBVU0IgemtvbnRyb2x1anRlLCB6ZGEganN0ZSBvZHBvamlsaSAodnnFiGFsaSkgc2TDrWxlbsOpIMO6bG/FvmnFoXTEmyB6YcWZw616ZW7DrSBBbmRyb2lkIHogcG/EjcOtdGHEjWUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IlDFmWVkIHZ5cG51dMOtbSDDumxvxb5pxaF0xJsgVVNCIHprb250cm9sdWp0ZSwgemRhIGpzdGUgb2Rwb2ppbGkgKHZ5am11bGkpIGthcnR1IFNEIHphxZnDrXplbsOtIEFuZHJvaWQgeiBwb8SNw610YcSNZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiJWeXBub3V0IMO6bG/FvmnFoXTEmyBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJQxZlpIHZ5cMOtbsOhbsOtIMO6bG/FvmnFoXTEmyBVU0IgZG/FoWxvIGsgcHJvYmzDqW3Fr20uIFprb250cm9sdWp0ZSwgemRhIGJ5bCBob3N0aXRlbCBVU0Igb2Rwb2plbiwgYSB6a3VzdGUgdG8gem5vdnUuIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiJQb2t1ZCB6YXBuZXRlIMO6bG/FvmnFoXTEmyBVU0IsIGRvamRlIGsgemFzdGF2ZW7DrSBuxJtrdGVyw71jaCBwb3XFvsOtdmFuw71jaCBhcGxpa2Fjw60uIFR5dG8gYXBsaWthY2UgcHJhdmTEm3BvZG9ibsSbIG5lYnVkb3UgayBkaXNwb3ppY2kgYcW+IGRvIHZ5cG51dMOtIMO6bG/FvmnFoXTEmyBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+IkNoeWJhIG9wZXJhY2UgbmEgcm96aHJhbsOtIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJPSyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4iRm9ybcOhdG92YXQgc2TDrWwuIMO6bC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IkZvcm3DoXRvdmF0IHNkw61sLiDDumwuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IkZvcm3DoXRvdmF0IGthcnR1IFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IkNoY2V0ZSBzZMOtbGVuw6kgw7psb8W+acWhdMSbIGZvcm3DoXRvdmF0LCBhIHNtYXphdCB0YWsgdsWhZWNobnkgc291Ym9yeSwga3RlcsOpIGpzb3UgdiBuxJttIHVsb8W+ZW7DqT8gVHV0byBha2NpIG5lbHplIHZyw6F0aXQgenDEm3QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkNoY2V0ZSBzZMOtbGVuw6kgw7psb8W+acWhdMSbIGZvcm3DoXRvdmF0LCBhIHNtYXphdCB0YWsgdsWhZWNobnkgc291Ym9yeSwga3RlcsOpIGpzb3UgdiBuxJttIHVsb8W+ZW7DqT8gVHV0byBha2NpIG5lbHplIHZyw6F0aXQgenDEm3QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iT3ByYXZkdSBjaGNldGUga2FydHUgU0QgbmFmb3Jtw6F0b3ZhdD8gVsWhZWNobmEgZGF0YSBuYSBrYXJ0xJsgYnVkb3UgenRyYWNlbmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4iRm9ybcOhdG92YXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiJMYWTEm27DrSBwxZllcyByb3pocmFuw60gVVNCIHDFmWlwb2plbm8iPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEHDgUJDxIxExI5Fw4nEmkZHSENIScONSktMTU7Fh0/Dk1BRUsWYU8WgVMWkVcOaVldYWcOdWsW9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUHDgUJDxIxExI5Fw4nEmkZHSENIScONSktMTU7Fh0/Dk1BRUsWYU8WgVMWkVcOaVldYWcOdWsW9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJrYW5kaWTDoXRpIjwvdT48L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDIzOTUxNjY3NTAyODQzODk5NyI+IlDFmcOtcHJhdmEgc2TDrWxlbsOpaG8gw7psb8W+acWhdMSbIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iUMWZw61wcmF2YSBzZMOtbGVuw6lobyDDumxvxb5pxaF0xJsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlDFmcOtcHJhdmEga2FydHkgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iS29udHJvbGEgY2h5Yi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IlByw6F6ZG7DqSBzZMOtbGVuw6kgw7psb8W+acWhdMSbIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiJQcsOhemRuw6kgc2TDrWxlbsOpIMO6bG/FvmnFoXTEmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IlByw6F6ZG7DoSBrYXJ0YSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiJTZMOtbGVuw6kgw7psb8W+acWhdMSbIGplIHByw6F6ZG7DqSBuZWJvIG9ic2FodWplIG5lcG9kcG9yb3ZhbsO9IHN5c3TDqW0gc291Ym9yxa8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IlNkw61sZW7DqSDDumxvxb5pxaF0xJsgamUgcHLDoXpkbsOpIG5lYm8gb2JzYWh1amUgbmVwb2Rwb3JvdmFuw70gc3lzdMOpbSBzb3Vib3LFry4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJLYXJ0YSBTRCBqZSBwcsOhemRuw6EgbmVibyBvYnNhaHVqZSBuZXBvZHBvcm92YW7DvSBzeXN0w6ltIHNvdWJvcsWvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+IlBvxaFrb3plbsOpIHNkw61sZW7DqSDDumxvxb5pxaF0xJsiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJQb8Wha296ZW7DqSBzZMOtbGVuw6kgw7psb8W+acWhdMSbIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY0MTA3MjM5MDYwMTkxMDAxODkiPiJQb8Wha296ZW7DoSBrYXJ0YSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iU2TDrWxlbsOpIMO6bG/FvmnFoXTEmyBqZSBwb8Wha296ZW7DqS4gQnVkZSBwcmF2ZMSbcG9kb2JuxJsgbnV0bsOpIGplIHDFmWVmb3Jtw6F0b3ZhdC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4iU2TDrWxlbsOpIMO6bG/FvmnFoXTEmyBqZSBwb8Wha296ZW7DqS4gQnVkZSBwcmF2ZMSbcG9kb2JuxJsgbnV0bsOpIGplIHDFmWVmb3Jtw6F0b3ZhdC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iS2FydGEgU0QgamUgcG/FoWtvemVuw6EuIEJ1ZGUgcHJhdmTEm3BvZG9ibsSbIG51dG7DqSBqaSBwxZllZm9ybcOhdG92YXQuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiJTZMOtbC4gw7psb8W+LiBuZcSNZWthbsSbIG9kZWJyw6FubyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iU2TDrWwuIMO6bG/Fvi4gbmXEjWVrYW7EmyBvZGVicsOhbm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iS2FydGEgU0QgYnlsYSBuZW/EjWVrw6F2YW7EmyBvZGVicsOhbmEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4iUMWZZWQgb2RlYnLDoW7DrW0gc2TDrWxlbsOpaG8gw7psb8W+acWhdMSbIGhvIG5lanBydmUgb2Rwb2p0ZSwgYWJ5c3RlIHphYnLDoW5pbGkgenRyw6F0xJsgZGF0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDIwMDUzOTY0NjQ0OTQ2NDg5MzcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQzMjk4NDg4MTk4NjU1OTQyNDEiPiJQxZllZCBvZGVicsOhbsOtbSBzZMOtbGVuw6lobyDDumxvxb5pxaF0xJsgaG8gbmVqcHJ2ZSBvZHBvanRlLCBhYnlzdGUgemFicsOhbmlsaSB6dHLDoXTEmyBkYXQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3MjYwMTgzMjkzNzQ3NDQ4MjQxIj4iQ2hjZXRlLWxpIHphYnLDoW5pdCB6dHLDoXTEmyBkYXQsIGthcnR1IFNEIHDFmWVkIG9kZWJyw6Fuw61tIG9kcG9qdGUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJTZMOtbGVuw6kgw7psb8W+acWhdMSbIGx6ZSBvZGVicmF0Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiJTZMOtbGVuw6kgw7psb8W+acWhdMSbIGx6ZSBvZGVicmF0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iS2FydHUgU0QgamUgbW/Fvm7DqSBiZXpwZcSNbsSbIG9kZWJyYXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiJTZMOtbGVuw6kgw7psb8W+acWhdMSbIGx6ZSBiZXpwZcSNbsSbIG9kZWJyYXQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iU2TDrWxlbsOpIMO6bG/FvmnFoXTEmyBsemUgYmV6cGXEjW7EmyBvZGVicmF0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiJLYXJ0dSBTRCBsemUgYmV6cGXEjW7EmyBvZGVicmF0LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iU2TDrWxlbsOpIMO6bG/FvmnFoXTEmyBieWxvIG9kZWJyw6FubyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iU2TDrWxlbsOpIMO6bG/FvmnFoXTEmyBieWxvIG9kZWJyw6FubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJLYXJ0YSBTRCBieWxhIG9kc3RyYW7Em25hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IlNkw61sZW7DqSDDumxvxb5pxaF0xJsgamUgb2RlYnLDoW5vLiBWbG/FvnRlIG5vdsOpIG3DqWRpdW0uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjczMDg5MDQ0MTMzMTM0NDc3NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjkyMTEyNjE2MjU4MDU3NDE0MyI+IlNkw61sZW7DqSDDumxvxb5pxaF0xJsgamUgb2RlYnLDoW5vLiBWbG/FvnRlIG5vdsOpIG3DqWRpdW0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iS2FydGEgU0QgYnlsYSBvZGVicsOhbmEuIFZsb8W+dGUgbm92b3Uga2FydHUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJOZWJ5bHkgbmFsZXplbnkgxb7DoWRuw6kgb2Rwb3bDrWRhasOtY8OtIGFrdGl2aXR5LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJha3R1YWxpem92YXQgc3RhdGlzdGlrdSBwb3XFvml0w60gc291xI3DoXN0w60iPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbAppbmRleCAwNWE0NWZjLi5kZTAxYWMwIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iVWR2aWtsaW5nc3bDpnJrdMO4amVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bmt0aW9uZXIga3VuIHRpbCBwcm9ncmFtdWR2aWtsZXJlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IkxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+IkbDpSBhZGdhbmcgdGlsIGRlbHQgaHVrb21tZWxzZS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDU1ODA0MzUzMjIwNTgxMzEyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzQ0MjMxODUwMjQ0Njg3NDk5OSI+IkbDpSBhZGdhbmcgdGlsIGRlbHQgaHVrb21tZWxzZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4iRsOlIGFkZ2FuZyB0aWwgU0Qta29ydGV0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+ImRlYWt0aXZlciBlbGxlciByZWRpZ2VyIHN0YXR1c2xpbmplIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc3RhdHVzQmFyIiBtc2dpZD0iMTM2NTQ3MzU5NTMzMTk4OTczMiI+IlRpbGxhZGVyLCBhdCBldCBwcm9ncmFtIGRlYWt0aXZlcmVyIHN0YXR1c2xpbmplbiBlbGxlciB0aWxmw7hqZXIgZWxsZXIgZmplcm5lciBzeXN0ZW1pa29uZXIuIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4iVGlsbGFkZXIsIGF0IHByb2dyYW1tZXQgbW9udGVyZXIgZWxsZXIgZGVtb250ZXJlciBmaWxzeXN0ZW1lciB0aWwgZmx5dGJhciBsYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImZvcm1hdGVyIGVrc3Rlcm4gbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlRpbGxhZGVyLCBhdCBldCBwcm9ncmFtIGZvcm1hdGVyZXIgZmx5dGJhcnQgbGFnZXIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiJoZW50ZSBvcGx5c25pbmdlciBvbSBzaWtrZXJ0IGxhZ2VyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iVGlsbGFkZXIgcHJvZ3JhbW1ldCBhdCBmw6Ugb3BseXNuaW5nZXIgb20gc2lra2VydCBsYWdlci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+Im9wcmV0IHNpa2tlcnQgbGFnZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjcwNDE4MDIzMjI3NTkwMTQwMzUiPiJUaWxsYWRlciBwcm9ncmFtbWV0IGF0IG9wcmV0dGUgc2lra2VydCBsYWdlci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9Ijc3ODczMjI4Nzg5NTUyNjEwMDYiPiLDuGRlbMOmZ2dlIHNpa2tlcnQgbGFnZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4iVGlsbGFkZXIgcHJvZ3JhbW1ldCBhdCDDuGRlbMOmZ2dlIHNpa2tlcnQgbGFnZXIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4ibW9udGVyZS9kZW1vbnRlcmUgc2lra2VydCBsYWdlciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJUaWxsYWRlciBwcm9ncmFtbWV0IGF0IG1vbnRlcmUvZGVtb250ZXJlIHNpa2tlcnQgbGFnZXIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJvbWTDuGJlIHNpa2tlcnQgbGFnZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJUaWxsYWRlciBwcm9ncmFtbWV0IGF0IG9tZMO4YmUgc2lra2VydCBsYWdlci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+ImhlbnRlIG9wbHlzbmluZ2VyIG9tIHNpa2tlcnQgbGFnZXIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiJUaWxsYWRlciBwcm9ncmFtbWV0IGF0IGbDpSBvcGx5c25pbmdlciBvbSBzaWtrZXJ0IGxhZ2VyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4ib3ByZXQgc2lra2VydCBsYWdlciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlRpbGxhZGVyIHByb2dyYW1tZXQgYXQgb3ByZXR0ZSBzaWtrZXJ0IGxhZ2VyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4iw7hkZWzDpmdnZSBzaWtrZXJ0IGxhZ2VyIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTc0MDc1NDExNDk2Nzg5MzE2OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iMjc0NjcwNjg4OTIwODA2NjI1NiI+IlRpbGxhZGVyIHByb2dyYW1tZXQgYXQgw7hkZWzDpmdnZSBzaWtrZXJ0IGxhZ2VyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+Im1vbnRlcmUvZGVtb250ZXJlIHNpa2tlcnQgbGFnZXIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4iVGlsbGFkZXIgcHJvZ3JhbW1ldCBhdCBtb250ZXJlL2RlbW9udGVyZSBzaWtrZXJ0IGxhZ2VyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU2ODUzNDQzOTA0Mzk5MzQ0OTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI3NDk2NjMzOTU0MDgwNDcyNDE3Ij4ib21kw7hiZSBzaWtrZXJ0IGxhZ2VyIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iVGlsbGFkZXIgcHJvZ3JhbW1ldCBhdCBvbWTDuGJlIHNpa2tlcnQgbGFnZXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl92aWJyYXRlIiBtc2dpZD0iNzc2ODM1NjAxOTk4MDg0OTYwMyI+ImtvbnRyb2xsZXIgdmlicmF0b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IkxhZGVyIHByb2dyYW1tZXQga29udHJvbGxlcmUgdmlicmF0b3Jlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4ia29udHJvbGxlciBsb21tZWx5Z3RlIjwvc3RyaW5nPgpAQCAtNDI3LDkgKzQyNyw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19yZWFkRGljdGlvbmFyeSIgbXNnaWQ9IjEwODI5NzI2MDM1NzYzNjA2OTAiPiJUaWxsYWRlciwgYXQgZXQgcHJvZ3JhbSBsw6ZzZXIgYWxsZSBwcml2YXRlIG9yZCwgbmF2bmUgb2cgc8OmdG5pbmdlciwgc29tIGJydWdlcmVuIGV2ZW50dWVsdCBoYXIgZ2VtdCBpIGJydWdlcm9yZGJvZ2VuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+InNrcml2IHRpbCBkZW4gYnJ1Z2VyZGVmaW5lcmVkZSBvcmRib2ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY193cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSIyMjQxMjU2MjA2NTI0MDgyODgwIj4iVGlsbGFkZXIsIGF0IGV0IHByb2dyYW0gc2tyaXZlciBueWUgb3JkIGkgYnJ1Z2Vyb3JkYm9nZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJyZXQvc2xldCBpbmRob2xkZXQgaSBkZWx0IGh1a29tbWVsc2UiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiJyZXQvc2xldCBpbmRob2xkZXQgaSBkZWx0IGh1a29tbWVsc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+InJldC9zbGV0IGluZGhvbGRldCBww6UgU0Qta29ydGV0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IlRpbC4gcHJvZy4gYXQgc2suIHQuIGRlbHQgaHVrLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiJUaWwuIHByb2cuIGF0IHNrLiB0LiBkZWx0IGh1ay4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiJUaWxsYWRlciwgYXQgZXQgcHJvZ3JhbSBza3JpdmVyIHRpbCBTRC1rb3J0ZXQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iNTY1NjQ4NzI2NDgxOTY2OTgyNCI+ImbDpSBhZGdhbmcgdGlsIGNhY2hlLWZpbHN5c3RlbWV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjE2MjQ3MzQ1Mjg0MzU2NTk5MDYiPiJUaWxsYWRlciwgYXQgZXQgcHJvZ3JhbSBsw6ZzZXIgb2cgc2tyaXZlciB0aWwgY2FjaGUtZmlsc3lzdGVtZXQuIjwvc3RyaW5nPgpAQCAtODAyLDE3ICs4MDIsMTcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1zX3Nob3dfYWxsIiBtc2dpZD0iMjY3MTc5MTE2MzkzMzA5MTE4MCI+PGI+IlZpcyBhbGxlIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IlVTQi1tYXNzZWxhZ3JpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0IgZXIgdGlsc2x1dHRldCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IkR1IGhhciBmb3JidW5kZXQgZGluIHRlbGVmb24gdGlsIGRpbiBjb21wdXRlciB2aWEgVVNCLiBWw6ZsZyBrbmFwcGVuIG5lZGVuZm9yLCBodmlzIGR1IMO4bnNrZXIgYXQga29waWVyZSBmaWxlciBtZWxsZW0gZGluIGNvbXB1dGVyIG9nIGRpbiBBbmRyb2lkcyBkZWx0ZSBodWtvbW1lbHNlLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4iRHUgaGFyIGZvcmJ1bmRldCBkaW4gdGVsZWZvbiB0aWwgZGluIGNvbXB1dGVyIHZpYSBVU0IuIFbDpmxnIGtuYXBwZW4gbmVkZW5mb3IsIGh2aXMgZHUgw7huc2tlciBhdCBrb3BpZXJlIGZpbGVyIG1lbGxlbSBkaW4gY29tcHV0ZXIgb2cgZGluIEFuZHJvaWRzIGRlbHRlIGh1a29tbWVsc2UuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiJEdSBoYXIgZm9yYnVuZGV0IGRpbiB0ZWxlZm9uIHRpbCBkaW4gY29tcHV0ZXIgdmlhIFVTQi4gVsOmbGcga25hcHBlbiBuZWRlbmZvciwgaHZpcyBkdSDDuG5za2VyIGF0IGtvcGllcmUgZmlsZXIgbWVsbGVtIGRpbiBjb21wdXRlciBvZyBkaW4gQW5kcm9pZHMgU0Qta29ydC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iU2zDpSBVU0ItbGFncmluZ2VuIHRpbCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IkRlciBvcHN0b2QgZXQgcHJvYmxlbSBtZWQgYXQgYnJ1Z2UgZGVuIGRlbHRlIGh1a29tbWVsc2UgdGlsIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iRGVyIG9wc3RvZCBldCBwcm9ibGVtIG1lZCBhdCBicnVnZSBkaXQgU0Qta29ydCB0aWwgVVNCLWxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzMjc2NDEzNzY0NDMwNDY4NDU0Ij4iRGVyIG9wc3RvZCBldCBwcm9ibGVtIG1lZCBhdCBicnVnZSBkZW4gZGVsdGUgaHVrb21tZWxzZSB0aWwgVVNCLWxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IkRlciBvcHN0b2QgZXQgcHJvYmxlbSBtZWQgYXQgYnJ1Z2UgZGVuIGRlbHRlIGh1a29tbWVsc2UgdGlsIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0IgZXIgdGlsc2x1dHRldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iNzM4MDA4MjQwNDI4ODIxOTM0MSI+IlbDpmxnIGZvciBhdCBrb3BpZXJlIGZpbGVyIHRpbC9mcmEgZGluIGNvbXB1dGVyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IlNsw6UgVVNCLWxhZ3JpbmdlbiBmcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IlbDpmxnIGZvciBhdCBzbMOlIFVTQi1sYWdyaW5nIGZyYS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iVVNCLWxhZ2VyIGkgYnJ1ZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iU8O4cmcgZm9yLCBhdCBkdSBoYXIgZGVtb250ZXJldCAoXCJ1ZHNrdWJiZXRcIikgZGluIEFuZHJvaWRzIGRlbHRlIGh1a29tbWVsc2UgZnJhIGNvbXB1dGVyZW4sIGbDuHIgZHUgc2zDpXIgVVNCLWxhZ3JpbmcgZnJhLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDg3NDUzNDUyNjA3ODAyNjcxODUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMzY4ODQyMjY5NDYzNzQ1MDY3Ij4iU8O4cmcgZm9yLCBhdCBkdSBoYXIgZGVtb250ZXJldCAoXCJ1ZHNrdWJiZXRcIikgZGluIEFuZHJvaWRzIGRlbHRlIGh1a29tbWVsc2UgZnJhIGNvbXB1dGVyZW4sIGbDuHIgZHUgc2zDpXIgVVNCLWxhZ3JpbmcgZnJhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiJTw7hyZyBmb3IsIGF0IGR1IGhhciBkZW1vbnRlcmV0IChcInVkc2t1YmJldFwiKSBkaW4gQW5kcm9pZHMgU0Qta29ydCBmcmEgY29tcHV0ZXJlbiwgZsO4ciBkdSBzbMOlciBVU0ItbGFncmluZyBmcmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iU2zDpSBVU0ItbGFncmluZyBmcmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJEZXIgb3BzdG9kIGV0IHByb2JsZW0gbWVkIGF0IHNsw6UgVVNCLWxhZ3JpbmdlbiBmcmEuIFPDuHJnIGZvciwgYXQgZHUgaGFyIGRlbW9udGVyZXQgVVNCLXbDpnJ0ZW4sIG9nIHByw7h2IHPDpSBpZ2VuLiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4iSHZpcyBkdSBzbMOlciBVU0ItbGFncmluZyB0aWwsIHZpbCBub2dsZSBhZiBkZSBwcm9ncmFtbWVyLCBzb20gZHUgYnJ1Z2VyLCBzdG9wcGUsIG9nIGRlIGthbiB2w6ZyZSB1dGlsZ8OmbmdlbGlnZSwgaW5kdGlsIGR1IHNsw6VyIFVTQi1sYWdyaW5nIHRpbCBpZ2VuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJVU0ItaGFuZGxpbmdlbiBtaXNseWtrZWRlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJPSyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4iRm9ybWF0ZXIgZGVsdCBodWtvbS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IkZvcm1hdGVyIGRlbHQgaHVrb20uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IkZvcm1hdGVyIFNELWtvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iVmlsIGR1IGZvcm1hdGVyZSBkZW4gZGVsdGUgaHVrb21tZWxzZSBvZyBzbGV0dGUgYWxsZSBmaWxlciwgc29tIGVyIGdlbXQgZGVyPyBIYW5kbGluZ2VuIGthbiBpa2tlIGZvcnR5ZGVzISI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiJWaWwgZHUgZm9ybWF0ZXJlIGRlbiBkZWx0ZSBodWtvbW1lbHNlIG9nIHNsZXR0ZSBhbGxlIGZpbGVyLCBzb20gZXIgZ2VtdCBkZXI/IEhhbmRsaW5nZW4ga2FuIGlra2UgZm9ydHlkZXMhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iRXIgZHUgc2lra2VyIHDDpSwgZHUgw7huc2tlciBhdCBmb3JtYXRlcmUgU0Qta29ydGV0PyBBbGxlIGRhdGEgcMOlIGtvcnRldCBtaXN0ZXMuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4iRm9ybWF0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiJVU0ItZmVqbHJldG5pbmcgZXIgdGlsc2x1dHRldCI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ImthbmRpZGF0ZXIiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4iRm9yYmVyZWRlciBkZWx0IGh1a29tbWVsc2UiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJGb3JiZXJlZGVyIGRlbHQgaHVrb21tZWxzZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1NDU3NjAzNDE4OTcwOTk0MDUwIj4iRm9yYmVyZWRlciBTRC1rb3J0ZXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iS29udHJvbGxlcmVyIGZvciBmZWpsLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4iVG9tIGRlbHQgaHVrb21tZWxzZSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM5MzczNDU1Nzc5ODM3MzA4NzMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3Nzg4MDQwNzQ1Njg2MjI5MzA3Ij4iVG9tIGRlbHQgaHVrb21tZWxzZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IlRvbXQgU0Qta29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiJEZWx0IGh1a29tbWVsc2UgZXIgdG9tIGVsbGVyIGhhciBldCBpa2tlLXVuZGVyc3TDuHR0ZXQgZmlsc3lzdGVtLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJEZWx0IGh1a29tbWVsc2UgZXIgdG9tIGVsbGVyIGhhciBldCBpa2tlLXVuZGVyc3TDuHR0ZXQgZmlsc3lzdGVtLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzgxNzcwNDA4ODAyNzgyOTM4MCI+IlNELWtvcnRldCBlciB0b210IGVsbGVyIGhhciBldCBpa2tlIHVuZGVyc3TDuHR0ZXQgZmlsc3lzdGVtLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+IkJlc2thZGlnZXQgZGVsdCBodWtvbW1lbHNlIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4iQmVza2FkaWdldCBkZWx0IGh1a29tbWVsc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IkJlc2thZGlnZXQgU0Qta29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iRGVsdCBodWtvbW1lbHNlIGVyIGJlc2thZGlnZXQuIER1IGJsaXZlciBtdWxpZ3ZpcyBuw7hkdCB0aWwgYXQgZm9ybWF0ZXJlIGRlbiBpZ2VuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJEZWx0IGh1a29tbWVsc2UgZXIgYmVza2FkaWdldC4gRHUgYmxpdmVyIG11bGlndmlzIG7DuGR0IHRpbCBhdCBmb3JtYXRlcmUgZGVuIGlnZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNELWtvcnRldCBlciBiZXNrYWRpZ2V0LiBEdSBibGl2ZXIgbXVsaWd2aXMgbsO4ZHQgdGlsIGF0IGZvcm1hdGVyZSBkZXQgaWdlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IkRlbHQgaHVrLiBibGV2IGZqZXJuZXQgdXZlbnRldCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iRGVsdCBodWsuIGJsZXYgZmplcm5ldCB1dmVudGV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlNELWtvcnRldCBibGV2IGZqZXJuZXQgdXZlbnRldCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiJEZW1vbnRlciBkZWx0IGh1a29tbWVsc2UgaW5kZW4gZmplcm5lbHNlIGZvciBhdCB1bmRnw6UgdGFiIGFmIGRhdGEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+IkRlbW9udGVyIGRlbHQgaHVrb21tZWxzZSBpbmRlbiBmamVybmVsc2UgZm9yIGF0IHVuZGfDpSB0YWIgYWYgZGF0YS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiJEZW1vbnRlciBTRC1rb3J0ZXQgaW5kZW4gZmplcm5lbHNlIGZvciBhdCB1bmRnw6UgdGFiIGFmIGRhdGEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJTaWtrZXJ0IGF0IGZqZXJuZSBkZWx0IGh1a29tLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iU2lra2VydCBhdCBmamVybmUgZGVsdCBodWtvbS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJTRC1rb3J0ZXQga2FuIGZqZXJuZXMgc2lra2VydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzUwMzc2OTEwNjI4NTE4ODcwMyI+IkR1IGthbiBudSBmamVybmUgZGVuIGRlbHRlIGh1a29tbWVsc2UuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iRHUga2FuIG51IGZqZXJuZSBkZW4gZGVsdGUgaHVrb21tZWxzZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4iRHUga2FuIG51IGZqZXJuZSBTRC1rb3J0ZXQuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE4NzQ4ODk3NjQzNjcwODU1NjIiPiJGamVybmV0IGRlbHQgaHVrb21tZWxzZSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iRmplcm5ldCBkZWx0IGh1a29tbWVsc2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4OTAyNTE4MDMwNDA0MzgxMzE4Ij4iU0Qta29ydGV0IGVyIGZqZXJuZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNzMwODkwNDQxMzMxMzQ0Nzc2Ij4iRGVsdCBodWtvbW1lbHNlIGZqZXJuZXQuIEluZHPDpnQgbnl0IG1lZGllLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJEZWx0IGh1a29tbWVsc2UgZmplcm5ldC4gSW5kc8OmdCBueXQgbWVkaWUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iU0Qta29ydGV0IGVyIGZqZXJuZXQuIEluZHPDpnQgZXQgbnl0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4iRGVyIGJsZXYgaWtrZSBmdW5kZXQgbm9nZW4gbWF0Y2hlbmRlIGFrdGl2aXRldGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+Im9wZGF0ZXIgYnJ1Z2Vyc3RhdGlzdGlra2VyIGZvciBrb21wb25lbnRlciI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCmluZGV4IGViMzE3OGMuLjk3NjdmODggMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiJFbnR3aWNrbGVyLVRvb2xzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bmt0aW9uZW4gbnVyIGbDvHIgQW53ZW5kdW5nc2VudHdpY2tsZXIgdm9yZ2VzZWhlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiJTcGVpY2hlciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iWnVncmlmZiBhdWYgZ2VtLiBTcGVpY2hlciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4iWnVncmlmZiBhdWYgZ2VtLiBTcGVpY2hlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJHcmVpZnQgYXVmIGRpZSBTRC1LYXJ0ZSB6dS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJTdGF0dXNsZWlzdGUgZGVha3RpdmllcmVuIG9kZXIgw6RuZGVybiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBkaWUgU3RhdHVzYW56ZWlnZSB6dSBkZWFrdGl2aWVyZW4gb2RlciBTeXN0ZW1zeW1ib2xlIGhpbnp1enVmw7xnZW4gb2RlciB6dSBlbnRmZXJuZW4uIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4iRXJtw7ZnbGljaHQgZGVyIEFud2VuZHVuZywgRGF0ZWlzeXN0ZW1lIGbDvHIgYXVzdGF1c2NoYmFyZSBEYXRlbnRyw6RnZXIgYmVyZWl0enVzdGVsbGVuIG9kZXIgZGllIEJlcmVpdHN0ZWxsdW5nIGF1Znp1aGViZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4iRXh0ZXJuZW4gU3BlaWNoZXIgZm9ybWF0aWVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NzQwNjAwNDQ5MDYwNDczODYiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBhdXN0YXVzY2hiYXJlIERhdGVudHLDpGdlciB6dSBmb3JtYXRpZXJlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMTA3MDM2NDA3OTI0OTgzNDY2NiI+IkluZm9ybWF0aW9uZW4genVtIHNpY2hlcmVuIFNwZWljaGVyIGFicnVmZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijc2OTE2MTYyOTIxNzA1OTAyNDQiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBJbmZvcm1hdGlvbmVuIHp1bSBzaWNoZXJlbiBTcGVpY2hlciBhYnp1cnVmZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJTaWNoZXJlbiBTcGVpY2hlciBlcnN0ZWxsZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjcwNDE4MDIzMjI3NTkwMTQwMzUiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBlaW5lbiBzaWNoZXJlbiBTcGVpY2hlciB6dSBlcnN0ZWxsZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iU2ljaGVyZW4gU3BlaWNoZXIgZW50ZmVybmVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iNTc0MDc1NDExNDk2Nzg5MzE2OSI+IkVybcO2Z2xpY2h0IGRlciBBbndlbmR1bmcsIGRlbiBzaWNoZXJlbiBTcGVpY2hlciB6dSBlbnRmZXJuZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4iU2ljaGVyZW4gU3BlaWNoZXIgYmVyZWl0c3RlbGxlbi90cmVubmVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IkVybcO2Z2xpY2h0IGRlciBBbndlbmR1bmcsIHNpY2hlcmVuIFNwZWljaGVyIGJlcmVpdHp1c3RlbGxlbiBiencuIHp1IHRyZW5uZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJTaWNoZXJlbiBTcGVpY2hlciB1bWJlbmVubmVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iRXJtw7ZnbGljaHQgZGVyIEFud2VuZHVuZywgZGVuIHNpY2hlcmVuIFNwZWljaGVyIHVtenViZW5lbm5lbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+IkluZm9ybWF0aW9uZW4genVtIHNpY2hlcmVuIFNwZWljaGVyIGFicnVmZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBJbmZvcm1hdGlvbmVuIHp1bSBzaWNoZXJlbiBTcGVpY2hlciBhYnp1cnVmZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiJTaWNoZXJlbiBTcGVpY2hlciBlcnN0ZWxsZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBlaW5lbiBzaWNoZXJlbiBTcGVpY2hlciB6dSBlcnN0ZWxsZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJTaWNoZXJlbiBTcGVpY2hlciBlbnRmZXJuZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NzQwNzU0MTE0OTY3ODkzMTY5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSIyNzQ2NzA2ODg5MjA4MDY2MjU2Ij4iRXJtw7ZnbGljaHQgZGVyIEFud2VuZHVuZywgZGVuIHNpY2hlcmVuIFNwZWljaGVyIHp1IGVudGZlcm5lbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiJTaWNoZXJlbiBTcGVpY2hlciBiZXJlaXRzdGVsbGVuL3RyZW5uZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4iRXJtw7ZnbGljaHQgZGVyIEFud2VuZHVuZywgc2ljaGVyZW4gU3BlaWNoZXIgYmVyZWl0enVzdGVsbGVuIGJ6dy4genUgdHJlbm5lbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+IlNpY2hlcmVuIFNwZWljaGVyIHVtYmVuZW5uZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiJFcm3DtmdsaWNodCBkZXIgQW53ZW5kdW5nLCBkZW4gc2ljaGVyZW4gU3BlaWNoZXIgdW16dWJlbmVubmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJWaWJyYXRpb25zYWxhcm0gc3RldWVybiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3ZpYnJhdGUiIG1zZ2lkPSIyODg2Njc3MTc3MjU3Nzg5MTg3Ij4iRXJtw7ZnbGljaHQgZGVyIEFud2VuZHVuZywgZGVuIFZpYnJhdGlvbnNhbGFybSB6dSBzdGV1ZXJuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiJMaWNodGFuemVpZ2Ugc3RldWVybiI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4iRXJtw7ZnbGljaHQgZWluZXIgQW53ZW5kdW5nLCBhbGxlIHByaXZhdGVuIFfDtnJ0ZXIsIE5hbWVuIHVuZCBBdXNkcsO8Y2tlIHp1IGxlc2VuLCBkaWUgZWluIE51dHplciBpbiBzZWluZW0gV8O2cnRlcmJ1Y2ggZ2VzcGVpY2hlcnQgaGF0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+ImluIG51dHplcmRlZmluaWVydGVzIFfDtnJ0ZXJidWNoIHNjaHJlaWJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiJFcm3DtmdsaWNodCBlaW5lciBBbndlbmR1bmcsIElocmVtIFfDtnJ0ZXJidWNoIG5ldWUgRWludHLDpGdlIGhpbnp1enVmw7xnZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJTcGVpY2hlcmluaGFsdCDDpG5kZXJuL2zDtnNjaGVuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4iU3BlaWNoZXJpbmhhbHQgw6RuZGVybi9sw7ZzY2hlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4iU0QtS2FydGVuLUluaGFsdCDDpG5kZXJuL2zDtnNjaGVuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IlNjaHJlaWJlbiBpbiBnZW0uIFNwZWljaGVyIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlNjaHJlaWJlbiBpbiBnZW0uIFNwZWljaGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iRXJtw7ZnbGljaHQgZWluZXIgQW53ZW5kdW5nLCBhdWYgZGllIFNELUthcnRlIHp1IHNjaHJlaWJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiJadWdyaWZmIGF1ZiBkYXMgQ2FjaGUtRGF0ZWlzeXN0ZW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+Ikdld8OkaHJ0IGVpbmVyIEFud2VuZHVuZyBMZXNlLSB1bmQgU2NocmVpYnp1Z3JpZmYgYXVmIGRhcyBDYWNoZS1EYXRlaXN5c3RlbS4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iQWxsZSBhbnplaWdlbiI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiJVU0ItTWFzc2Vuc3BlaWNoZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0ItVmVyYmluZHVuZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IlNpZSBoYWJlbiBJaHIgVGVsZWZvbiDDvGJlciBVU0IgbWl0IElocmVtIENvbXB1dGVyIHZlcmJ1bmRlbi4gV8OkaGxlbiBTaWUgZGllIFNjaGFsdGZsw6RjaGUgdW50ZW4gYXVzLCB3ZW5uIFNpZSBEYXRlaWVuIHZvbiBJaHJlbSBDb21wdXRlciBpbiBkZW4gZ2VtZWluc2FtZW4gU3BlaWNoZXIgSWhyZXMgQW5kcm9pZC1HZXLDpHRzIHVuZCB1bWdla2VocnQga29waWVyZW4gbcO2Y2h0ZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiJTaWUgaGFiZW4gSWhyIFRlbGVmb24gw7xiZXIgVVNCIG1pdCBJaHJlbSBDb21wdXRlciB2ZXJidW5kZW4uIFfDpGhsZW4gU2llIGRpZSBTY2hhbHRmbMOkY2hlIHVudGVuIGF1cywgd2VubiBTaWUgRGF0ZWllbiB2b24gSWhyZW0gQ29tcHV0ZXIgaW4gZGVuIGdlbWVpbnNhbWVuIFNwZWljaGVyIElocmVzIEFuZHJvaWQtR2Vyw6R0cyB1bmQgdW1nZWtlaHJ0IGtvcGllcmVuIG3DtmNodGVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI0Nzk2NzU5NjQ2MTY3MjQ3MTc4Ij4iU2llIGhhYmVuIElociBUZWxlZm9uIMO8YmVyIFVTQiBtaXQgSWhyZW0gQ29tcHV0ZXIgdmVyYnVuZGVuLiBXw6RobGVuIFNpZSBkaWUgU2NoYWx0ZmzDpGNoZSB1bnRlbiBhdXMsIHdlbm4gU2llIERhdGVpZW4gYXVmIElocmVuIENvbXB1dGVyIG9kZXIgZGllIFNELUthcnRlIElocmVzIEFuZHJvaWQtR2Vyw6R0cyBrb3BpZXJlbiBtw7ZjaHRlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iVVNCLVNwZWljaGVyIGFrdGl2aWVyZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJCZWkgZGVyIFZlcndlbmR1bmcgSWhyZXMgZ2VtZWluc2FtZW4gU3BlaWNoZXJzIGFscyBVU0ItU3BlaWNoZXIgaXN0IGVpbiBQcm9ibGVtIGF1ZmdldHJldGVuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iQmVpIGRlciBWZXJ3ZW5kdW5nIElocmVyIFNELUthcnRlIGFscyBVU0ItU3BlaWNoZXIgaXN0IGVpbiBQcm9ibGVtIGF1ZmdldHJldGVuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkJlaSBkZXIgVmVyd2VuZHVuZyBJaHJlcyBnZW1laW5zYW1lbiBTcGVpY2hlcnMgYWxzIFVTQi1TcGVpY2hlciBpc3QgZWluIFByb2JsZW0gYXVmZ2V0cmV0ZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IkJlaSBkZXIgVmVyd2VuZHVuZyBJaHJlcyBnZW1laW5zYW1lbiBTcGVpY2hlcnMgYWxzIFVTQi1TcGVpY2hlciBpc3QgZWluIFByb2JsZW0gYXVmZ2V0cmV0ZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IlVTQi1WZXJiaW5kdW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4iWnVtIEtvcGllcmVuIHZvbiBEYXRlaWVuIHp1bS92b20gQ29tcHV0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiJVU0ItU3BlaWNoZXIgZGVha3RpdmllcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjI1OTE4MTM0OTAyNjk4NDE1MzkiPiJBdXN3w6RobGVuLCB1bSBVU0ItU3BlaWNoZXIgenUgZGVha3RpdmllcmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfdGl0bGUiIG1zZ2lkPSI2NjAxMjk4NTE3MDg3NzU4NTMiPiJVU0ItU3BlaWNoZXIgaW4gVmVyd2VuZHVuZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iU3RlbGxlbiBTaWUgdm9yIGRlbSBEZWFrdGl2aWVyZW4gZGVzIFVTQi1TcGVpY2hlcnMgc2ljaGVyLCBkYXNzIFNpZSBkZW4gZ2VtZWluc2FtZW4gQW5kcm9pZC1TcGVpY2hlciB2b24gSWhyZW0gQ29tcHV0ZXIgZ2V0cmVubnQgKFwiYXVzZ2V3b3JmZW5cIikgaGFiZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiJTdGVsbGVuIFNpZSB2b3IgZGVtIERlYWt0aXZpZXJlbiBkZXMgVVNCLVNwZWljaGVycyBzaWNoZXIsIGRhc3MgU2llIGRlbiBnZW1laW5zYW1lbiBBbmRyb2lkLVNwZWljaGVyIHZvbiBJaHJlbSBDb21wdXRlciBnZXRyZW5udCAoXCJhdXNnZXdvcmZlblwiKSBoYWJlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iU3RlbGxlbiBTaWUgdm9yIGRlbSBEZWFrdGl2aWVyZW4gZGVzIFVTQi1TcGVpY2hlcnMgc2ljaGVyLCBkYXNzIFNpZSBJaHJlIEFuZHJvaWQtU0QtS2FydGUgdm9uIElocmVtIENvbXB1dGVyIGdldHJlbm50IChcImF1c2dld29yZmVuXCIpIGhhYmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+IlVTQi1TcGVpY2hlciBkZWFrdGl2aWVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJCZWltIERlYWt0aXZpZXJlbiBkZXMgVVNCLVNwZWljaGVycyBpc3QgZWluIFByb2JsZW0gYXVmZ2V0cmV0ZW4uIMOcYmVycHLDvGZlbiBTaWUsIG9iIFNpZSBkZW4gVVNCLUhvc3QgZ2V0cmVubnQgaGFiZW4sIHVuZCB2ZXJzdWNoZW4gU2llIGVzIGVybmV1dC4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+Ildlbm4gU2llIGRlbiBVU0ItU3BlaWNoZXIgYWt0aXZpZXJlbiwgd2VyZGVuIGVpbmlnZSB2b24gSWhuZW4gdmVyd2VuZGV0ZSBBbndlbmR1bmdlbiBhbmdlaGFsdGVuIHVuZCBzaW5kIG3DtmdsaWNoZXJ3ZWlzZSBuaWNodCB2ZXJmw7xnYmFyLCBiaXMgU2llIGRlbiBVU0ItU3BlaWNoZXIgd2llZGVyIGRlYWt0aXZpZXJlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4iVVNCLVZvcmdhbmcgZmVobGdlc2NobGFnZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4iT0siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU3NzkwODAwNjk0OTc0MjIxNyI+IlNwZWljaGVyIGZvcm1hdGllcmVuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjU3NzkwODAwNjk0OTc0MjIxNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc5ODA5OTU1OTI1OTUwOTc4NDEiPiJTcGVpY2hlciBmb3JtYXRpZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiJTRC1LYXJ0ZSBmb3JtYXRpZXJlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiJHZW1laW5zYW1lbiBTcGVpY2hlciBmb3JtYXRpZXJlbiB1bmQgYWxsZSBkYXJhdWYgZ2VzcGVpY2hlcnRlbiBEYXRlaWVuIGzDtnNjaGVuPyBEaWVzZSBBa3Rpb24ga2FubiBuaWNodCByw7xja2fDpG5naWcgZ2VtYWNodCB3ZXJkZW4hIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkdlbWVpbnNhbWVuIFNwZWljaGVyIGZvcm1hdGllcmVuIHVuZCBhbGxlIGRhcmF1ZiBnZXNwZWljaGVydGVuIERhdGVpZW4gbMO2c2NoZW4/IERpZXNlIEFrdGlvbiBrYW5uIG5pY2h0IHLDvGNrZ8OkbmdpZyBnZW1hY2h0IHdlcmRlbiEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiJNw7ZjaHRlbiBTaWUgZGllIFNELUthcnRlIHdpcmtsaWNoIGZvcm1hdGllcmVuPyBBbGxlIERhdGVuIGF1ZiBJaHJlciBLYXJ0ZSBnZWhlbiBkYW5uIHZlcmxvcmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IlVTQi1EZWJ1Z2dpbmcgdmVyYnVuZGVuIjwvc3RyaW5nPgpAQCAtODMxLDI4ICs4MzEsMjggQEAKICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX2FscGhhYmV0IiBtc2dpZD0iNTQzMzI3NTQ4NTQ5OTAzOTE5OSI+IiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX251bWVyaWNfYWxwaGFiZXQiIG1zZ2lkPSI0MDMwMTcwNTI0NTk1MTIzNjEwIj4iIDAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNhbmRpZGF0ZXNfc3R5bGUiIG1zZ2lkPSI0MzMzOTEzMDg5NjM3MDYyMjU3Ij48dT4iS2FuZGlkYXRlbiI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiJHZW0uIFNwZWljaGVyIHZvcmJlcmVpdGVuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iR2VtLiBTcGVpY2hlciB2b3JiZXJlaXRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1NDU3NjAzNDE4OTcwOTk0MDUwIj4iU0QtS2FydGUgd2lyZCB2b3JiZXJlaXRldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjgyODczMTk4ODI5MjY3MzcwNTMiPiJTdWNoZSBuYWNoIEZlaGxlcm4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGxlZXIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGxlZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiJTRC1LYXJ0ZSBsZWVyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGlzdCBsZWVyIG9kZXIgdmVyZsO8Z3Qgw7xiZXIgZWluIG5pY2h0IHVudGVyc3TDvHR6dGVzIERhdGVpc3lzdGVtIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGlzdCBsZWVyIG9kZXIgdmVyZsO8Z3Qgw7xiZXIgZWluIG5pY2h0IHVudGVyc3TDvHR6dGVzIERhdGVpc3lzdGVtIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iU0QtS2FydGUgaXN0IGxlZXIgb2RlciB2ZXJmw7xndCDDvGJlciBlaW4gbmljaHQgdW50ZXJzdMO8dHp0ZXMgRGF0ZWlzeXN0ZW0uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iR2VtLiBTcGVpY2hlciBiZXNjaMOkZGlndCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE3MjQ2MTk5MDIwNzY1Mjg4ODkgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjA5MDA0Njc2OTUzMjcxMzU2MyI+IkdlbS4gU3BlaWNoZXIgYmVzY2jDpGRpZ3QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IkJlc2Now6RkaWd0ZSBTRC1LYXJ0ZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iR2VtZWluc2FtZXIgU3BlaWNoZXIgaXN0IGJlc2Now6RkaWd0LiBTaWUgbcO8c3NlbiBpaG4gbmV1IGZvcm1hdGllcmVuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJHZW1laW5zYW1lciBTcGVpY2hlciBpc3QgYmVzY2jDpGRpZ3QuIFNpZSBtw7xzc2VuIGlobiBuZXUgZm9ybWF0aWVyZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IkRpZSBTRC1LYXJ0ZSBpc3QgYmVzY2jDpGRpZ3QuIFNpZSBtw7xzc2VuIElocmUgS2FydGUgZXZlbnR1ZWxsIG5ldSBmb3JtYXRpZXJlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IkdlbS4gU3BlaWNoZXIgZW50ZmVybnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNTgyMTc1MDE2MDYwNDMyMDM0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTY2MTY4MzAzMTMzMDk1MTA3MyI+IkdlbS4gU3BlaWNoZXIgZW50ZmVybnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iU0QtS2FydGUgdW5lcndhcnRldCBlbnRmZXJudCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiJUcmVubmVuIFNpZSBkZW4gZ2VtZWluc2FtZW4gU3BlaWNoZXIgdm9yIGRlbSBFbnRmZXJuZW4sIHVtIERhdGVudmVybHVzdCB6dSB2ZXJtZWlkZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+IlRyZW5uZW4gU2llIGRlbiBnZW1laW5zYW1lbiBTcGVpY2hlciB2b3IgZGVtIEVudGZlcm5lbiwgdW0gRGF0ZW52ZXJsdXN0IHp1IHZlcm1laWRlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiJTRC1LYXJ0ZSB2b3IgZGVtIEVudG5laG1lbiB0cmVubmVuLCB1bSBEYXRlbnZlcmx1c3QgenUgdmVybWVpZGVuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM2NTI1ODgxMDE4Njc5NTE1Ij4iU3BlaWNoZXIga2FubiBlbnRmZXJudCB3ZXJkZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiJTcGVpY2hlciBrYW5uIGVudGZlcm50IHdlcmRlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJTRC1LYXJ0ZSBrYW5uIGVudGZlcm50IHdlcmRlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiJHZW1laW5zYW1lciBTcGVpY2hlciBrYW5uIGVudGZlcm50IHdlcmRlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiJHZW1laW5zYW1lciBTcGVpY2hlciBrYW5uIGVudGZlcm50IHdlcmRlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4iRGllIFNELUthcnRlIGthbm4gZW50ZmVybnQgd2VyZGVuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iR2VtZWluc2FtZXIgU3BlaWNoZXIgZW50ZmVybnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxODc0ODg5NzY0MzY3MDg1NTYyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDQ4NjM3NzIzMDE0MDIyNzY1MSI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGVudGZlcm50Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IlNELUthcnRlIGVudGZlcm50Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IkdlbWVpbnNhbWVyIFNwZWljaGVyIGVudGZlcm50LiBOZXVlbiBEYXRlbnRyw6RnZXIgZWlubGVnZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNzMwODkwNDQxMzMxMzQ0Nzc2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2OTIxMTI2MTYyNTgwNTc0MTQzIj4iR2VtZWluc2FtZXIgU3BlaWNoZXIgZW50ZmVybnQuIE5ldWVuIERhdGVudHLDpGdlciBlaW5sZWdlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IlNELUthcnRlIGVudGZlcm50LiBMZWdlbiBTaWUgZWluZSBuZXVlIGVpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+IktlaW5lIHBhc3NlbmRlbiBBa3Rpdml0w6R0ZW4gZ2VmdW5kZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3BrZ1VzYWdlU3RhdHMiIG1zZ2lkPSI4Nzg3MzUyMDc0MzI2NzQ4ODkyIj4iTnV0enVuZ3NzdGF0aXN0aWsgZGVyIEtvbXBvbmVudGUgYWt0dWFsaXNpZXJlbiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCmluZGV4IGJkNjBhZDQuLjcyYjhhYTkgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiLOlc+BzrPOsc67zrXOr86xIM6xzr3OrM+Az4TPhc6+zrfPgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiLOlM+Fzr3Osc+Ez4zPhM63z4TOtc+CIM+Azr/PhSDOtc6vzr3Osc65IM6xz4DOsc+BzrHOr8+EzrfPhM61z4IgzrzPjM69zr8gz4POtSDPgM+Bzr/Os8+BzrHOvM68zrHPhM65z4PPhM6tz4IgzrXPhs6xz4HOvM6/zrPPjs69LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+Is6Rz4DOv864zrfOus61z4XPhM65zrrPjM+CIM+Hz47Pgc6/z4IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+Is6gz4HPjM+DzrIuIM+DzrUgzrrOv865zr3PjM+Hz4EuIM6xz4DOv864LiDPh8+Oz4HOvy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDU1ODA0MzUzMjIwNTgxMzEyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzQ0MjMxODUwMjQ0Njg3NDk5OSI+Is6gz4HPjM+DzrIuIM+DzrUgzrrOv865zr3PjM+Hz4EuIM6xz4DOv864LiDPh8+Oz4HOvy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4izqDPgc+Mz4POss6xz4POtyDPg8+EzrfOvSDOus6sz4HPhM6xIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+Is6xz4DOtc69zrXPgc6zzr/PgM6/zq/Ot8+Dzrcgzq4gz4TPgc6/z4DOv8+Azr/Or863z4POtyDOs8+BzrHOvM68zq7PgiDOus6xz4TOrM+Dz4TOsc+DzrfPgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDOvc6xIM6xz4DOtc69zrXPgc6zzr/PgM6/zrnOtc6vIM+EzrcgzrPPgc6xzrzOvM6uIM66zrHPhM6sz4PPhM6xz4POt8+CIM6uIM69zrEgz4DPgc6/z4POuM6tz4TOtc65IM66zrHOuSDOvc6xIM6xz4bOsc65z4HOtc6vIM61zrnOus6/zr3Or860zrnOsSDPg8+Fz4PPhM6uzrzOsc+Ezr/Pgi4iPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63zr0gz4DPgc6/z4POrM+Bz4TOt8+DzrcgzrrOsc65IM6xz4DOv8+Az4HOv8+DzqzPgc+EzrfPg863IM+Dz4XPg8+EzrfOvM6sz4TPic69IM6xz4HPh861zq/Pic69IM6zzrnOsSDOsc+GzrHOuc+Bzr/Pjc68zrXOvc6/IM6xz4DOv864zrfOus61z4XPhM65zrrPjCDPh8+Oz4HOvy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiLOtM65zrHOvM+Mz4HPhs+Jz4POtyDOtc6+z4nPhM61z4HOuc66zr/PjSDOsc+Azr/OuM63zrrOtc+Fz4TOuc66zr/PjSDPh8+Oz4HOv8+FIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4izpXPgM65z4TPgc6tz4DOtc65IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gz4TOtyDOtM65zrHOvM+Mz4HPhs+Jz4POtyDOsc+GzrHOuc+Bzr/Pjc68zrXOvc6/z4UgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMTA3MDM2NDA3OTI0OTgzNDY2NiI+Is67zq7PiM63IM+AzrvOt8+Bzr/Phs6/z4HOuc+Ozr0gz4PPhM6/zr0gzrHPg8+GzrHOu86uIM+Hz47Pgc6/IM6xz4DOv864zq7Ous61z4XPg863z4IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijc2OTE2MTYyOTIxNzA1OTAyNDQiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63IM67zq7PiM63IM+AzrvOt8+Bzr/Phs6/z4HOuc+Ozr0gz4PPhM6/zr0gzrHPg8+GzrHOu86uIM+Hz47Pgc6/IM6xz4DOv864zq7Ous61z4XPg863z4IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiLOtM63zrzOuc6/z4XPgc6zzq/OsSDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+Is6Vz4DOuc+Ez4HOrc+AzrXOuSDPg8+EzrfOvSDOtc+GzrHPgc68zr/Os86uIM+EzrcgzrTOt868zrnOv8+Fz4HOs86vzrEgzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4izrrOsc+EzrHPg8+Ez4HOv8+Gzq4gzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4izpXPgM65z4TPgc6tz4DOtc65IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gz4TOt869IM66zrHPhM6xz4PPhM+Bzr/Phs6uIM+Ezr/PhSDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLPg8+Nzr3OtM61z4POtyAvIM6xz4DOv8+Dz43Ovc60zrXPg863IM6xz4PPhs6xzrvOv8+Nz4Igz4fPjs+Bzr/PhSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+Is6Vz4DOuc+Ez4HOrc+AzrXOuSDPg8+EzrfOvSDOtc+GzrHPgc68zr/Os86uIM+Ezrcgz4PPjc69zrTOtc+DzrcgLyDOsc+Azr/Pg8+Nzr3OtM61z4POtyDPhM6/z4UgzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiLOvM61z4TOv869zr/OvM6xz4POr86xIM6xz4PPhs6xzrvOv8+Nz4Igz4fPjs+Bzr/PhSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4izpXPgM65z4TPgc6tz4DOtc65IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gz4TOtyDOvM61z4TOv869zr/OvM6xz4POr86xIM+Ezr/PhSDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+Is67zq7PiM63IM+AzrvOt8+Bzr/Phs6/z4HOuc+Ozr0gz4PPhM6/zr0gzrHPg8+GzrHOu86uIM+Hz47Pgc6/IM6xz4DOv864zq7Ous61z4XPg863z4IiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63IM67zq7PiM63IM+AzrvOt8+Bzr/Phs6/z4HOuc+Ozr0gz4PPhM6/zr0gzrHPg8+GzrHOu86uIM+Hz47Pgc6/IM6xz4DOv864zq7Ous61z4XPg863z4IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiLOtM63zrzOuc6/z4XPgc6zzq/OsSDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+Is6Vz4DOuc+Ez4HOrc+AzrXOuSDPg8+EzrfOvSDOtc+GzrHPgc68zr/Os86uIM+EzrcgzrTOt868zrnOv8+Fz4HOs86vzrEgzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiLOus6xz4TOsc+Dz4TPgc6/z4bOriDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63zr0gzrrOsc+EzrHPg8+Ez4HOv8+Gzq4gz4TOv8+FIM6xz4PPhs6xzrvOv8+Nz4Igz4fPjs+Bzr/PhSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+Is+Dz43Ovc60zrXPg863IC8gzrHPgM6/z4PPjc69zrTOtc+DzrcgzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4izpXPgM65z4TPgc6tz4DOtc65IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gz4TOtyDPg8+Nzr3OtM61z4POtyAvIM6xz4DOv8+Dz43Ovc60zrXPg863IM+Ezr/PhSDOsc+Dz4bOsc67zr/Pjc+CIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+Is68zrXPhM6/zr3Ov868zrHPg86vzrEgzrHPg8+GzrHOu86/z43PgiDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4IiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63IM68zrXPhM6/zr3Ov868zrHPg86vzrEgz4TOv8+FIM6xz4PPhs6xzrvOv8+Nz4Igz4fPjs+Bzr/PhSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiLOrc67zrXOs8+Hzr/PgiDOtM+Mzr3Ot8+DzrfPgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3ZpYnJhdGUiIG1zZ2lkPSIyODg2Njc3MTc3MjU3Nzg5MTg3Ij4izpXPgM65z4TPgc6tz4DOtc65IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gz4TOv869IM6tzrvOtc6zz4fOvyDPhM6/z4UgzrTOv869zrfPhM6uLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiLOrc67zrXOs8+Hzr/PgiDPhs6xzrrOv8+NIjwvc3RyaW5nPgpAQCAtNDI3LDkgKzQyNyw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19yZWFkRGljdGlvbmFyeSIgbXNnaWQ9IjEwODI5NzI2MDM1NzYzNjA2OTAiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4POtSDOvM65zrEgzrXPhs6xz4HOvM6/zrPOriDOvc6xIM6xzr3Osc6zzr3Pjs+DzrXOuSDOuc60zrnPic+EzrnOus6tz4IgzrvOrc6+zrXOuc+CIM66zrHOuSDPhs+BzqzPg861zrnPgiDOus6xzrkgzrnOtM65z4nPhM65zrrOrCDOv869z4zOvM6xz4TOsSwgz4TOsSDOv8+Azr/Or86xIM6/IM+Hz4HOrs+Dz4TOt8+CIM61zr3OtM6tz4fOtc+EzrHOuSDOvc6xIM6tz4fOtc65IM6xz4DOv864zrfOus61z43Pg861zrkgz4PPhM6/IM67zrXOvs65zrrPjCDPh8+Bzq7Pg8+EzrcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl93cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSI2NzAzMTA5NTExODM2MzQzMzQxIj4izrXOs86zz4HOsc+Gzq4gz4POtSDOus6xzrjOv8+BzrnPg868zq3Ovc6/IM6xz4DPjCDPhM6/zr0gz4fPgc6uz4PPhM63IM67zrXOvs65zrrPjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiLOlc+AzrnPhM+Bzq3PgM61zrkgz4POtSDOvM65zrEgzrXPhs6xz4HOvM6/zrPOriDPhM63zr0gzrXOs86zz4HOsc+Gzq4gzr3Orc+Jzr0gzrvOrc6+zrXPic69IM+Dz4TOvyDOu861zr7Ouc66z4wgz4fPgc6uz4PPhM63LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iOTkzNzA3NDM2OTQxMDE2OTEzIj4iz4TPgc6/z4AuL860zrnOsc6zLiDPgM61z4EuIM66zr/Ouc69LiDOsc+ALiDPh8+Oz4EuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4iz4TPgc6/z4AuL860zrnOsc6zLiDPgM61z4EuIM66zr/Ouc69LiDOsc+ALiDPh8+Oz4EuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiLPhM+Bzr/PgM6/z4DOv86vzrfPg863L860zrnOsc6zz4HOsc+Gzq4gz4DOtc+BzrnOtc+Hzr/OvM6tzr3Pic69IM66zqzPgc+EzrHPgiBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiLOlc+AzrnPhM+BLiDOtc6zzrPPgS4gzrXPhi4gz4POtSDOus6/zrnOvS4gzrHPgC4gz4fPjs+BLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiLOlc+AzrnPhM+BLiDOtc6zzrPPgS4gzrXPhi4gz4POtSDOus6/zrnOvS4gzrHPgC4gz4fPjs+BLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjY0Mzk2MzIwNDk3NjQ3MTg3OCI+Is6Vz4DOuc+Ez4HOrc+AzrXOuSDPg8+EzrfOvSDOtc+GzrHPgc68zr/Os86uIM+EzrfOvSDOtc6zzrPPgc6xz4bOriDPg8+EzrfOvSDOus6sz4HPhM6xIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDPg8+Nz4PPhM63zrzOsSDOsc+Bz4fOtc6vz4nOvSDPgM+Bzr/Pg8+Jz4HOuc69zq7PgiDOvM69zq7OvM63z4IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+Is6Vz4DOuc+Ez4HOrc+AzrXOuSDPg861IM68zrnOsSDOtc+GzrHPgc68zr/Os86uIM+EzrfOvSDOsc69zqzOs869z4nPg863IM66zrHOuSDPhM63zr0gzrXOs86zz4HOsc+Gzq4gz4TOv8+FIM+Dz4XPg8+Ezq7OvM6xz4TOv8+CIM6xz4HPh861zq/Pic69IM+Az4HOv8+Dz4nPgc65zr3Ors+CIM68zr3Ors68zrfPgi4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4izpXOvM+GzqzOvc65z4POtyDPjM67z4nOvSI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiLOnM6xzrbOuc66zq4gzrHPgM6/zrjOrs66zrXPhc+DzrcgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4izqTOvyBVU0IgzrXOr869zrHOuSDPg8+Fzr3OtM61zrTOtc68zq3Ovc6/Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4MjMxNDYyNzUwMDEwMDY2ODk2Ij4izqPPhc69zrTOrc+DzrHPhM61IM+Ezr8gz4TOt867zq3Phs+Jzr3PjCDPg86xz4Igz4PPhM6/zr0gz4XPgM6/zrvOv86zzrnPg8+Ezq4gzrzOrc+Dz4kgVVNCLiDOlc+AzrnOu86tzr7PhM61IM+Ezr8gz4DOsc+BzrHOus6sz4TPiSDOus6/z4XOvM+Azq8gzrHOvSDOuM6tzrvOtc+EzrUgzr3OsSDOsc69z4TOuc6zz4HOrM+IzrXPhM61IM6xz4HPh861zq/OsSDOvM61z4TOsc6+z40gz4TOv8+FIM+Fz4DOv867zr/Os865z4PPhM6uIM66zrHOuSDPhM6/z4UgzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+FIM+Hz47Pgc6/z4UgzrHPgM6/zrjOrs66zrXPhc+DzrfPgiDPhM6/z4UgQW5kcm9pZC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+Is6jz4XOvc60zq3Pg86xz4TOtSDPhM6/IM+EzrfOu86tz4bPic69z4wgz4POsc+CIM+Dz4TOv869IM+Fz4DOv867zr/Os865z4PPhM6uIM68zq3Pg8+JIFVTQi4gzpXPgM65zrvOrc6+z4TOtSDPhM6/IM+AzrHPgc6xzrrOrM+Ez4kgzrrOv8+FzrzPgM6vIM6xzr0gzrjOrc67zrXPhM61IM69zrEgzrHOvc+EzrnOs8+BzqzPiM61z4TOtSDOsc+Bz4fOtc6vzrEgzrzOtc+EzrHOvs+NIM+Ezr/PhSDPhc+Azr/Ou86/zrPOuc+Dz4TOriDOus6xzrkgz4TOv8+FIM66zr/Ouc69z4zPh8+BzrfPg8+Ezr/PhSDPh8+Oz4HOv8+FIM6xz4DOv864zq7Ous61z4XPg863z4Igz4TOv8+FIEFuZHJvaWQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiLOo8+Fzr3OtM6tz4POsc+EzrUgz4TOvyDPhM63zrvOrc+Gz4nOvc+MIM+DzrHPgiDPg8+Ezr/OvSDPhc+Azr/Ou86/zrPOuc+Dz4TOriDOvM6tz4PPiSBVU0IuIM6Vz4DOuc67zq3Ovs+EzrUgz4TOvyDPgM6xz4HOsc66zqzPhM+JIM66zr/Phc68z4DOryDOsc69IM64zq3Ou861z4TOtSDOvc6xIM6xzr3PhM65zrPPgc6sz4jOtc+EzrUgzrHPgc+HzrXOr86xIM68zrXPhM6xzr7PjSDPhM6/z4Ugz4XPgM6/zrvOv86zzrnPg8+Ezq4gzrrOsc65IM+EzrfPgiDOus6sz4HPhM6xz4IgU0Qgz4TOv8+FIEFuZHJvaWQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYnV0dG9uX21vdW50IiBtc2dpZD0iMTA1MjI1OTkzMDM2OTUwODIzNSI+Is6Vzr3Otc+BzrPOv8+Azr/Or863z4POtyDOsc+Azr/OuM63zrrOtc+Fz4TOuc66zr/PjSDPh8+Oz4HOv8+FIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+Is6gzrHPgc6/z4XPg865zqzPg8+EzrfOus61IM6tzr3OsSDPgM+Bz4zOss67zrfOvM6xIM+Dz4TOtyDPh8+Bzq7Pg863IM+Ezr/PhSDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4UgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhSDPic+CIM6xz4DOv864zrfOus61z4XPhM65zrrPjCDPh8+Oz4HOvyBVU0IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiLOoM6xz4HOv8+Fz4POuc6sz4PPhM63zrrOtSDOrc69zrEgz4DPgc+MzrLOu863zrzOsSDPg8+Ezrcgz4fPgc6uz4POtyDPhM63z4IgzrrOrM+Bz4TOsc+CIFNEIM+Jz4IgzrHPgM6/zrjOt866zrXPhc+EzrnOus+MIM+Hz47Pgc6/IFVTQi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiLOoM6xz4HOv8+Fz4POuc6sz4PPhM63zrrOtSDOrc69zrEgz4DPgc+MzrLOu863zrzOsSDPg8+Ezrcgz4fPgc6uz4POtyDPhM6/z4UgzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+FIM6xz4DOv864zrfOus61z4XPhM65zrrOv8+NIM+Hz47Pgc6/z4Ugz4nPgiDOsc+Azr/OuM63zrrOtc+Fz4TOuc66z4wgz4fPjs+Bzr8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiLOoM6xz4HOv8+Fz4POuc6sz4PPhM63zrrOtSDOrc69zrEgz4DPgc+MzrLOu863zrzOsSDPg8+Ezrcgz4fPgc6uz4POtyDPhM6/z4UgzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+FIM6xz4DOv864zrfOus61z4XPhM65zrrOv8+NIM+Hz47Pgc6/z4Ugz4nPgiDOsc+Azr/OuM63zrrOtc+Fz4TOuc66z4wgz4fPjs+Bzr8gVVNCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiLOpM6/IFVTQiDOtc6vzr3Osc65IM+Dz4XOvc60zrXOtM61zrzOrc69zr8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiLOlc+AzrnOu86tzr7PhM61IM6zzrnOsSDOsc69z4TOuc6zz4HOsc+Gzq4gz4DPgc6/z4IvzrHPgM+MIM+Ezr/OvSDPhc+Azr/Ou86/zrPOuc+Dz4TOriDPg86xz4IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4izpHPgM61zr3Otc+BzrPOv8+Azr/Or863z4POtyDOsc+Azr/OuM63zrrOtc+Fz4TOuc66zr/PjSDPh8+Oz4HOv8+FIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4izpXPgM65zrvOv86zzq4gzrPOuc6xIM6xz4DOtc69zrXPgc6zzr/PgM6/zq/Ot8+DzrcgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhSBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+Is6nz47Pgc6/z4IgzrHPgM6/zrjOrs66zrXPhc+DzrfPgiBVU0Igz4POtSDPh8+Bzq7Pg863Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg3NDUzNDUyNjA3ODAyNjcxODUiPiLOoM+Bzr/PhM6/z40gzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc6uz4POtc+EzrUgz4TOv869IM+Hz47Pgc6/IM6xz4DOv864zq7Ous61z4XPg863z4IgVVNCLCDOss61zrLOsc65z4nOuM61zq/PhM61IM+Mz4TOuSDOrc+HzrXPhM61IM6xz4DOv8+Az4HOv8+DzrHPgc+Ezq7Pg861zrkgKFwizrHPhs6xzrnPgc6tz4POtc65XCIpIM+Ezr/OvSDOus6/zrnOvc+Mz4fPgc63z4PPhM6/IM6xz4DOv864zrfOus61z4XPhM65zrrPjCDPh8+Oz4HOvyDPhM6/z4UgQW5kcm9pZCDOsc+Az4wgz4TOv869IM+Fz4DOv867zr/Os865z4PPhM6uIM+DzrHPgi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+Is6gz4HOv8+Ezr/PjSDOsc+AzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDPhM6/zr0gz4fPjs+Bzr8gzrHPgM6/zrjOrs66zrXPhc+DzrfPgiBVU0IsIM6yzrXOss6xzrnPic64zrXOr8+EzrUgz4zPhM65IM6tz4fOtc+EzrUgzrHPgM6/z4DPgc6/z4POsc+Bz4TOrs+DzrXOuSAoXCLOsc+GzrHOuc+Bzq3Pg861zrlcIikgz4TOv869IM66zr/Ouc69z4zPh8+BzrfPg8+Ezr8gzrHPgM6/zrjOt866zrXPhc+EzrnOus+MIM+Hz47Pgc6/IM+Ezr/PhSBBbmRyb2lkIM6xz4DPjCDPhM6/zr0gz4XPgM6/zrvOv86zzrnPg8+Ezq4gz4POsc+CLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiLOoM+Bzr/PhM6/z40gzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc6uz4POtc+EzrUgz4TOvyDPh8+Oz4HOvyDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CIFVTQiwgzrLOtc6yzrHOuc+JzrjOtc6vz4TOtSDPjM+Ezrkgzq3Ph861z4TOtSDOsc+Azr/Pg8+Fzr3OtM6tz4POtc65ICjigJzOsc+GzrHOuc+Bzq3Pg861zrnigJ0pIM+EzrfOvSDOus6sz4HPhM6xIFNEIM+Ezr/PhSBBbmRyb2lkIM6xz4DPjCDPhM6/zr0gz4XPgM6/zrvOv86zzrnPg8+Ezq4gz4POsc+CLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+Is6Rz4DOtc69zrXPgc6zzr/PgM6/zq/Ot8+Dzrcgz4fPjs+Bzr/PhSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+Is6gzrHPgc6/z4XPg865zqzPg8+EzrfOus61IM+Az4HPjM6yzrvOt868zrEgzrrOsc+Ezqwgz4TOt869IM6xz4DOtc69zrXPgc6zzr/PgM6/zq/Ot8+Dzrcgz4TOv8+FIM6xz4DOv864zrfOus61z4XPhM65zrrOv8+NIM+Hz47Pgc6/z4UgVVNCLiDOks61zrLOsc65z4nOuM61zq/PhM61IM+Mz4TOuSDOrc+HzrXPhM61IM6xz4bOsc65z4HOrc+DzrXOuSDPhM63zr0gz4XPgM6/zrTOv8+Hzq4gVVNCIM66zrHOuSDPgM+Bzr/Pg8+AzrHOuM6uz4PPhM61IM6+zrHOvc6sLiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4izpXOrM69IM61zr3Otc+BzrPOv8+Azr/Ouc6uz4POtc+EzrUgz4TOv869IM6xz4DOv864zrfOus61z4XPhM65zrrPjCDPh8+Oz4HOvyBVU0IsIM6/z4HOuc+DzrzOrc69zrXPgiDOsc+Az4wgz4TOuc+CIM61z4bOsc+BzrzOv86zzq3PgiDPgM6/z4Ugz4fPgc63z4POuc68zr/PgM6/zrnOtc6vz4TOtSDOuM6xIM+Dz4TOsc68zrHPhM6uz4POv8+Fzr0gzrrOsc65IM61zr3OtM6tz4fOtc+EzrHOuSDOvc6xIM68zrfOvSDOtc6vzr3Osc65IM60zrnOsc64zq3Pg865zrzOtc+CIM68zq3Ph8+Bzrkgzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDPhM6/zr0gzrHPgM6/zrjOt866zrXPhc+EzrnOus+MIM+Hz47Pgc6/IFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4izpHPgM6tz4TPhc+HzrUgzrcgzrvOtc65z4TOv8+Fz4HOs86vzrEgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Is6fzpoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU3NzkwODAwNjk0OTc0MjIxNyI+Is6UzrnOsc6zLiDOus6/zrnOvS4gzrHPgC4gz4fPjs+BLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4izpTOuc6xzrMuIM66zr/Ouc69LiDOsc+ALiDPh8+Oz4EuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+Is6UzrnOsc68z4zPgc+Gz4nPg863IM66zqzPgc+EzrHPgiBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiLOnc6xIM6zzq/Ovc61zrkgzrTOuc6xzrPPgc6xz4bOriDPhM6/z4UgzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+FIM6xz4DOv864zrfOus61z4XPhM65zrrOv8+NIM+Hz47Pgc6/z4UsIM63IM6/z4DOv86vzrEgzrjOsSDOtM65zrHOs8+BzqzPiM61zrkgz4zOu86xIM+EzrEgzrHPgc+HzrXOr86xIM+Azr/PhSDOrc+HzrXPhM61IM6xz4DOv864zrfOus61z43Pg861zrkgzrXOus61zq87IM6XIM61zr3Orc+BzrPOtc65zrEgzrXOr869zrHOuSDOvM63IM6xzr3Osc+Dz4TPgc6tz4jOuc68zrchIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+Is6dzrEgzrPOr869zrXOuSDOtM65zrHOs8+BzrHPhs6uIM+Ezr/PhSDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4UgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhSwgzrcgzr/PgM6/zq/OsSDOuM6xIM60zrnOsc6zz4HOrM+IzrXOuSDPjM67zrEgz4TOsSDOsc+Bz4fOtc6vzrEgz4DOv8+FIM6tz4fOtc+EzrUgzrHPgM6/zrjOt866zrXPjc+DzrXOuSDOtc66zrXOrzsgzpcgzrXOvc6tz4HOs861zrnOsSDOtc6vzr3Osc65IM68zrcgzrHOvc6xz4PPhM+Bzq3PiM65zrzOtyEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiLOlc6vz4PPhM61IM6yzq3Oss6xzrnOv865IM+Mz4TOuSDOuM6tzrvOtc+EzrUgzr3OsSDOtM65zrHOvM6/z4HPhs+Oz4POtc+EzrUgz4TOt869IM66zqzPgc+EzrEgU0Q7IM6MzrvOsSDPhM6xIM60zrXOtM6/zrzOrc69zrEgz4PPhM63zr0gzrrOrM+Bz4TOsSDPg86xz4IgzrjOsSDPh86xzrjOv8+Nzr0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4izpTOuc6xzrzPjM+Bz4bPic+DzrciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiLOo8+Fzr3OtM6tzrjOt866zrUgzr8gzrXOvc+Ezr/PgM65z4POvM+Mz4Igz4PPhs6xzrvOvM6sz4TPic69IFVTQiI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+Is+Fz4DOv8+Izq7Phs65zr/OuSI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiLOoM+Bzr/Otc+Ezr/Ouc68LiDOus6/zrnOvc+Mz4fPgS4gzrHPgM6/zrguIM+Hz47PgS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiLOoM+Bzr/Otc+Ezr/Ouc68LiDOus6/zrnOvc+Mz4fPgS4gzrHPgM6/zrguIM+Hz47PgS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+Is6gz4HOv861z4TOv865zrzOsc+Dzq/OsSDOus6sz4HPhM6xz4IgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4izojOu861zrPPh86/z4IgzrPOuc6xIM+Dz4bOrM67zrzOsc+EzrEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiLOms61zr3PjM+CIM66zr/Ouc69z4zPh8+BLiDOsc+Azr/OuM63zrouIM+Hz47Pgc6/z4IiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+Is6azrXOvc+Mz4IgzrrOv865zr3PjM+Hz4EuIM6xz4DOv864zrfOui4gz4fPjs+Bzr/PgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+Is6azrXOvc6uIM66zqzPgc+EzrEgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4izp8gzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+CIM6xz4DOv864zrfOus61z4XPhM65zrrPjM+CIM+Hz47Pgc6/z4IgzrXOr869zrHOuSDOus61zr3PjM+CIM6uIM6tz4fOtc65IM66zqzPgM6/zrnOvyDPg8+Nz4PPhM63zrzOsSDOsc+Bz4fOtc6vz4nOvSDPhM6/IM6/z4DOv86vzr8gzrTOtc69IM+Fz4DOv8+Dz4TOt8+Bzq/Ots61z4TOsc65LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiLOnyDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4IgzrHPgM6/zrjOt866zrXPhc+EzrnOus+Mz4Igz4fPjs+Bzr/PgiDOtc6vzr3Osc65IM66zrXOvc+Mz4Igzq4gzq3Ph861zrkgzrrOrM+Azr/Ouc6/IM+Dz43Pg8+EzrfOvM6xIM6xz4HPh861zq/Pic69IM+Ezr8gzr/PgM6/zq/OvyDOtM61zr0gz4XPgM6/z4PPhM63z4HOr862zrXPhM6xzrkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4izpcgzrrOrM+Bz4TOsSBTRCDOtc6vzr3Osc65IM66zrXOvc6uIM6uIM6tz4fOtc65IM68zrcgz4XPgM6/z4PPhM63z4HOuc62z4zOvM61zr3OvyDPg8+Nz4PPhM63zrzOsSDOsc+Bz4fOtc6vz4nOvS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiLOms6xz4TOtc+Dz4TPgS4gzrrOv865zr3PjM+Hz4EuIM6xz4DOv864LiDPh8+Oz4HOv8+CIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4izprOsc+EzrXPg8+Ez4EuIM66zr/Ouc69z4zPh8+BLiDOsc+Azr/OuC4gz4fPjs+Bzr/PgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NDEwNzIzOTA2MDE5MTAwMTg5Ij4izprOsc+EzrXPg8+Ez4HOsc68zrzOrc69zrcgzrrOrM+Bz4TOsSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4izp8gzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+CIM6xz4DOv864zrfOus61z4XPhM65zrrPjM+CIM+Hz47Pgc6/z4Igz4DOsc+Bzr/Phc+DzrnOrM62zrXOuSDOss67zqzOss63LiDOlc69zrTOtc+Hzr/OvM6tzr3Pic+CIM64zrEgz4DPgc6tz4DOtc65IM69zrEgz4DPgc6/zrLOtc6vz4TOtSDPg861IM60zrnOsc68z4zPgc+Gz4nPg86uIM+Ezr/PhS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4izp8gzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+CIM6xz4DOv864zrfOus61z4XPhM65zrrPjM+CIM+Hz47Pgc6/z4Igz4DOsc+Bzr/Phc+DzrnOrM62zrXOuSDOss67zqzOss63LiDOlc69zrTOtc+Hzr/OvM6tzr3Pic+CIM64zrEgz4DPgc6tz4DOtc65IM69zrEgz4DPgc6/zrLOtc6vz4TOtSDPg861IM60zrnOsc68z4zPgc+Gz4nPg86uIM+Ezr/PhS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4izpcgzrrOrM+Bz4TOsSBTRCDPgM6xz4HOv8+Fz4POuc6szrbOtc65IM6yzrvOrM6yzrcuIM6Vzr3OtM61z4fOv868zq3Ovc+Jz4IgzrjOsSDPgM+Bzq3PgM61zrkgzr3OsSDPgM+Bzr/Oss61zq/PhM61IM+DzrUgzrTOuc6xzrzPjM+Bz4bPic+Dzq4gz4TOt8+CLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4izpzOtyDOsc69zrHOvM61zr3PjM68zrXOvc63IM66zrHPhM6sz4HOs863z4POtyDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4UgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4izpzOtyDOsc69zrHOvM61zr3PjM68zrXOvc63IM66zrHPhM6sz4HOs863z4POtyDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4UgzrHPgM6/zrjOt866zrXPhc+EzrnOus6/z40gz4fPjs+Bzr/PhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY4NzIxNTI4ODI2MDQ0MDc4MzciPiLOnM63IM6xzr3Osc68zrXOvc+MzrzOtc69zrcgzrHPhs6xzq/Pgc61z4POtyDOus6sz4HPhM6xz4IgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4izpHPgM6/z4DPgc6/z4POsc+Bz4TOrs+Dz4TOtSDPhM6/zr0gzrrOv865zr3PjM+Hz4HOt8+Dz4TOvyDOsc+Azr/OuM63zrrOtc+Fz4TOuc66z4wgz4fPjs+Bzr8gz4DPgc65zr0gz4TOv869IM6xz4bOsc65z4HOrc+DzrXPhM61IM6zzrnOsSDPhM63zr0gzrHPgM6/z4bPhc6zzq4gzrHPgM+OzrvOtc65zrHPgiDOtM61zrTOv868zq3Ovc+Jzr0uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+Is6Rz4DOv8+Az4HOv8+DzrHPgc+Ezq7Pg8+EzrUgz4TOv869IM66zr/Ouc69z4zPh8+BzrfPg8+Ezr8gzrHPgM6/zrjOt866zrXPhc+EzrnOus+MIM+Hz47Pgc6/IM+Az4HOuc69IM+Ezr/OvSDOsc+GzrHOuc+Bzq3Pg861z4TOtSDOs865zrEgz4TOt869IM6xz4DOv8+Gz4XOs86uIM6xz4DPjs67zrXOuc6xz4IgzrTOtc60zr/OvM6tzr3Pic69LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+Is6Rz4DOv8+Az4HOv8+DzrHPgc+Ezq7Pg8+EzrUgz4TOt869IM66zqzPgc+EzrEgU0Qgz4DPgc65zr0gz4TOt869IM6xz4bOsc65z4HOrc+DzrXPhM61IM6zzrnOsSDPhM63zr0gzrHPgM6/z4bPhc6zzq4gzrHPgM+OzrvOtc65zrHPgiDOtM61zrTOv868zq3Ovc+Jzr0uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiLOkc+Dz4YuIM66zrHPhM6sz4HOsy4gzrrOv865zr0uIM6xz4DOv864LiDPh8+Oz4EuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiLOkc+Dz4YuIM66zrHPhM6sz4HOsy4gzrrOv865zr0uIM6xz4DOv864LiDPh8+Oz4EuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4izpcgzrrOrM+Bz4TOsSBTRCDOvM+Azr/Pgc61zq8gzr3OsSDOsc+GzrHOuc+BzrXOuM61zq8gzrzOtSDOsc+Dz4bOrM67zrXOuc6xIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4izpzPgM6/z4HOtc6vz4TOtSDOvc6xIM66zrHPhM6xz4HOs86uz4POtc+EzrUgz4TOv869IM66zr/Ouc69z4zPh8+BzrfPg8+Ezr8gzrHPgM6/zrjOt866zrXPhc+EzrnOus+MIM+Hz47Pgc6/IM61z43Ous6/zrvOsS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiLOnM+Azr/Pgc61zq/PhM61IM69zrEgzrrOsc+EzrHPgc6zzq7Pg861z4TOtSDPhM6/zr0gzrrOv865zr3PjM+Hz4HOt8+Dz4TOvyDOsc+Azr/OuM63zrrOtc+Fz4TOuc66z4wgz4fPjs+Bzr8gzrXPjc66zr/Ou86xLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiLOnM+Azr/Pgc61zq/PhM61IM69zrEgzrHPhs6xzrnPgc6tz4POtc+EzrUgzrzOtSDOsc+Dz4bOrM67zrXOuc6xIM+EzrfPgiDOus6sz4HPhM6xIFNELiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4izprOv865zr0uIM6xz4AuIM+Hz47PgS4gz4DOv8+FIM6tz4fOtc65IM66zrHPhM6xz4EuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiLOms6/zrnOvS4gzrHPgC4gz4fPjs+BLiDPgM6/z4Ugzq3Ph861zrkgzrrOsc+EzrHPgS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4OTAyNTE4MDMwNDA0MzgxMzE4Ij4izpcgzrrOrM+Bz4TOsSBTRCDOsc+GzrHOuc+Bzq3OuM63zrrOtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiLOnyDOus6/zrnOvc+Mz4fPgc63z4PPhM6/z4IgzrHPgM6/zrjOt866zrXPhc+EzrnOus+Mz4Igz4fPjs+Bzr/PgiDOus6xz4TOsc+BzrPOrs64zrfOus61LiDOlc65z4POsc6zzqzOs861z4TOtSDOvc6tzrEgz4DOv867z4XOvM6tz4POsS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNzMwODkwNDQxMzMxMzQ0Nzc2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2OTIxMTI2MTYyNTgwNTc0MTQzIj4izp8gzrrOv865zr3PjM+Hz4HOt8+Dz4TOv8+CIM6xz4DOv864zrfOus61z4XPhM65zrrPjM+CIM+Hz47Pgc6/z4IgzrrOsc+EzrHPgc6zzq7OuM63zrrOtS4gzpXOuc+DzrHOs86szrPOtc+EzrUgzr3Orc6xIM+Azr/Ou8+FzrzOrc+DzrEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4izpHPhs6xzrnPgc6tzrjOt866zrUgzrcgzrrOrM+Bz4TOsSBTRC4gzqTOv8+Azr/OuM61z4TOrs+Dz4TOtSDOvM65zrEgzr3Orc6xIM66zqzPgc+EzrEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiLOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtM+BzrHPg8+EzrfPgc65z4zPhM63z4TOtc+CIM+Azr/PhSDOvc6xIM6xzr3PhM65z4PPhM6/zrnPh86/z43OvSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiLOtc69zrfOvM6tz4HPic+Dzrcgz4PPhM6xz4TOuc+Dz4TOuc66z47OvSDPh8+Bzq7Pg863z4Igz4PPhM6/zrnPh861zq/Ov8+FIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAppbmRleCA3Y2MwNTdiLi5hZjNlZWRiIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiJIZXJyYW1pZW50YXMgZGUgZGVzYXJyb2xsbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiJMYXMgZnVuY2lvbmVzIHPDs2xvIHNvbiBuZWNlc2FyaWFzIHBhcmEgbG9zIGRlc2Fycm9sbGFkb3JlcyBkZSBhcGxpY2FjaW9uZXMuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iRXNwYWNpbyBkZSBhbG1hY2VuYW1pZW50byI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iQWNjZWRlIGFsIGFsbWFjZW5hbWllbnRvIGNvbXAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiJBY2NlZGUgYWwgYWxtYWNlbmFtaWVudG8gY29tcC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4iQWNjZWRlciBhIGxhIHRhcmpldGEgU0QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zdGF0dXNCYXIiIG1zZ2lkPSI3NDE3MTkyNjI5NjAxODkwNzkxIj4iZGVzYWN0aXZhciBvIG1vZGlmaWNhciBsYSBiYXJyYSBkZSBlc3RhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iQWRtaXRlIHF1ZSBsYSBhcGxpY2FjacOzbiBkZXNhY3RpdmUgbGEgYmFycmEgZGUgZXN0YWRvLCBvIGFncmVndWUgeSBlbGltaW5lIMOtY29ub3MgZGVsIHNpc3RlbWEuIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4iQWRtaXRlIHF1ZSBsYSBhcGxpY2FjacOzbiBtb250ZSB5IGRlc21vbnRlIGZpbGVzeXN0ZW1zIHBhcmEgb2J0ZW5lciBhbG1hY2VuYW1pZW50byBleHRyYcOtYmxlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImVzcGFjaW8gZGUgYWxtYWNlbmFtaWVudG8gZXh0ZXJubyBkZWwgZm9ybWF0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IkFkbWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gZm9ybWF0ZWUgZWwgZXNwYWNpbyBkZSBhbG1hY2VuYW1pZW50byBleHRyYcOtYmxlLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4ib2J0ZW5lciBpbmZvcm1hY2nDs24gc29icmUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iUGVybWl0ZSBxdWUgdW5hIGFwbGljYWNpw7NuIG9idGVuZ2EgaW5mb3JtYWNpw7NuIGVuIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3Vyby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+ImNyZWFyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIGNyZWUgdW4gYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+ImRlc3RydWlyIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJQZXJtaXRlIHF1ZSB1bmEgYXBsaWNhY2nDs24gZGVzdHJ1eWEgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+Im1vbnRhciBvIGRlc21vbnRhciBhbG1hY2VuYW1pZW50byBzZWd1cm8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1NDM4MDc4MTIxNzE4NzM4NjI1Ij4iUGVybWl0ZSBxdWUgdW5hIGFwbGljYWNpw7NuIG1vbnRlIG8gZGVzbW9udGUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4iY2FtYmllIGVsIG5vbWJyZSBkZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iUGVybWl0ZSBxdWUgdW5hIGFwbGljYWNpw7NuIGNhbWJpZSBlbCBub21icmUgZGUgdW4gYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4ib2J0ZW5lciBpbmZvcm1hY2nDs24gc29icmUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4iUGVybWl0ZSBxdWUgdW5hIGFwbGljYWNpw7NuIG9idGVuZ2EgaW5mb3JtYWNpw7NuIGVuIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MzEyMDc4MDMyMzI2OTI4ODk5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNjQxNDc1NzIzNDc4OTMzNjMyNyI+ImNyZWFyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIGNyZWUgdW4gYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4iZGVzdHJ1aXIgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTc0MDc1NDExNDk2Nzg5MzE2OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iMjc0NjcwNjg4OTIwODA2NjI1NiI+IlBlcm1pdGUgcXVlIHVuYSBhcGxpY2FjacOzbiBkZXN0cnV5YSBlbCBhbG1hY2VuYW1pZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4ibW9udGFyIG8gZGVzbW9udGFyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0MzgwNzgxMjE3MTg3Mzg2MjUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU5MzQzNzU1OTAxODkzNjgyMDAiPiJQZXJtaXRlIHF1ZSB1bmEgYXBsaWNhY2nDs24gbW9udGUgbyBkZXNtb250ZSBlbCBhbG1hY2VuYW1pZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTY4NTM0NDM5MDQzOTkzNDQ5NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9Ijc0OTY2MzM5NTQwODA0NzI0MTciPiJjYW1iaWUgZWwgbm9tYnJlIGRlbCBhbG1hY2VuYW1pZW50byBzZWd1cm8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiJQZXJtaXRlIHF1ZSB1bmEgYXBsaWNhY2nDs24gY2FtYmllIGVsIG5vbWJyZSBkZSB1biBhbG1hY2VuYW1pZW50byBzZWd1cm8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl92aWJyYXRlIiBtc2dpZD0iNzc2ODM1NjAxOTk4MDg0OTYwMyI+InZpYnJhZG9yIGRlIGNvbnRyb2wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IkFkbWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gY29udHJvbGUgZWwgdmlicmFkb3IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9mbGFzaGxpZ2h0IiBtc2dpZD0iMjE1NTkyMDgxMDEyMTk4NDIxNSI+ImNvbnRyb2xhciBsaW50ZXJuYSI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4iQWRtaXRlIHVuYSBhcGxpY2FjacOzbiBwYXJhIGxlZXIgcGFsYWJyYXMsIG5vbWJyZXMgeSBmcmFzZXMgcHJpdmFkYXMgcXVlIHBvc2libGVtZW50ZSBlbCB1c3VhcmlvIGhheWEgYWxtYWNlbmFkbyBlbiBlbCBkaWNjaW9uYXJpbyBkZWwgdXN1YXJpby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjY3MDMxMDk1MTE4MzYzNDMzNDEiPiJlc2NyaWJpciBhbCBkaWNjaW9uYXJpbyBkZWZpbmlkbyBwb3IgZWwgdXN1YXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiJBZG1pdGUgdW5hIGFwbGljYWNpw7NuIHF1ZSBlc2NyaWJlIHBhbGFicmFzIG51ZXZhcyBlbiBlbCBkaWNjaW9uYXJpbyBkZWwgdXN1YXJpby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+Im1vZGlmaWNhci9lbGltaW4gY29udCBhbG0gY29tcCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDk5MzcwNzQzNjk0MTAxNjkxMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NTQzMDg3NjMxMDc2NDc1MiI+Im1vZGlmaWNhci9lbGltaW4gY29udCBhbG0gY29tcCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4ibW9kaWZpY2FyL3N1cHJpbWlyIGVsIGNvbnRlbmlkbyBkZSBsYSB0YXJqZXRhIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IlBlcm0gYXBsLiBlc2NyaWJpciBlbiBhbG0gY29tcCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiJQZXJtIGFwbC4gZXNjcmliaXIgZW4gYWxtIGNvbXAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiJBZG1pdGUgcXVlIHVuYSBhcGxpY2FjacOzbiBlc2NyaWJhIGVuIGxhIHRhcmpldGEgU0QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iNTY1NjQ4NzI2NDgxOTY2OTgyNCI+IkFjY2VkZXIgYWwgc2lzdGVtYSBkZSBhcmNoaXZvcyBjYWNow6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IlBlcm1pdGUgcXVlIHVuYSBhcGxpY2FjacOzbiBsZWEgeSBlc2NyaWJhIGVsIHNpc3RlbWEgZGUgYXJjaGl2b3MgY2FjaMOpLiI8L3N0cmluZz4KQEAgLTc1MCw3ICs3NTAsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0iYW5yX2FjdGl2aXR5X3Byb2Nlc3MiIG1zZ2lkPSI1NDIwODI2NjI2MDA5NTYxMDE0Ij4iTGEgYWN0aXZpZGFkIDx4bGlmZjpnIGlkPSJBQ1RJVklUWSI+JTEkczwveGxpZmY6Zz4gKGVuIHByb2Nlc28gPHhsaWZmOmcgaWQ9IlBST0NFU1MiPiUyJHM8L3hsaWZmOmc+KSBubyByZXNwb25kZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhbnJfYXBwbGljYXRpb25fcHJvY2VzcyIgbXNnaWQ9IjQxODU4NDI2NjY0NTIyMTAxOTMiPiJMYSBhcGxpY2FjacOzbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT04iPiUxJHM8L3hsaWZmOmc+IChlbiBwcm9jZXNvIDx4bGlmZjpnIGlkPSJQUk9DRVNTIj4lMiRzPC94bGlmZjpnPikgbm8gcmVzcG9uZGUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYW5yX3Byb2Nlc3MiIG1zZ2lkPSIxMjQ2ODY2MDA4MTY5OTc1NzgzIj4iRWwgcHJvY2VzbyA8eGxpZmY6ZyBpZD0iUFJPQ0VTUyI+JTEkczwveGxpZmY6Zz4gbm8gcmVzcG9uZGUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZm9yY2VfY2xvc2UiIG1zZ2lkPSIzNjUzNDE2MzE1NDUwODA2Mzk2Ij4iUHJvdm9jYXIgYWNlcmNhbWllbnRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZm9yY2VfY2xvc2UiIG1zZ2lkPSIzNjUzNDE2MzE1NDUwODA2Mzk2Ij4iRm9yemFyIGNpZXJyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InJlcG9ydCIgbXNnaWQ9IjQwNjAyMTgyNjA5ODQ3OTU3MDYiPiJOb3RpZmljYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ3YWl0IiBtc2dpZD0iNzE0NzExODIxNzIyNjMxNzczMiI+IkVzcGVyYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImxhdW5jaF93YXJuaW5nX3RpdGxlIiBtc2dpZD0iODMyMzc2MTYxNjA1MjEyMTkzNiI+IlNlIHJlZGlyaWdpw7MgbGEgYXBsaWNhY2nDs24iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iTW9zdHJhciB0b2RvcyI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiJBbG1hY2VuYW1pZW50byBtYXNpdm8gVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iY29uZWN0YWRvIGFsIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IkhhcyBjb25lY3RhZG8gdHUgdGVsw6lmb25vIGEgdHUgY29tcHV0YWRvcmEgbWVkaWFudGUgVVNCLiBTZWxlY2Npb25hIGVsIGJvdMOzbiBhIGNvbnRpbnVhY2nDs24gc2kgZGVzZWFzIGNvcGlhciBsb3MgYXJjaGl2b3MgZW50cmUgdHUgY29tcHV0YWRvcmEgeSBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRlIEFuZHJvaWQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiJIYXMgY29uZWN0YWRvIHR1IHRlbMOpZm9ubyBhIHR1IGNvbXB1dGFkb3JhIG1lZGlhbnRlIFVTQi4gU2VsZWNjaW9uYSBlbCBib3TDs24gYSBjb250aW51YWNpw7NuIHNpIGRlc2VhcyBjb3BpYXIgbG9zIGFyY2hpdm9zIGVudHJlIHR1IGNvbXB1dGFkb3JhIHkgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBkZSBBbmRyb2lkLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI0Nzk2NzU5NjQ2MTY3MjQ3MTc4Ij4iSGFzIGNvbmVjdGFkbyB0dSB0ZWzDqWZvbm8gYSB0dSBjb21wdXRhZG9yYSBtZWRpYW50ZSBVU0IuIFNlbGVjY2lvbmEgZWwgYm90w7NuIGEgY29udGludWFjacOzbiBzaSBkZXNlYXMgY29waWFyIGxvcyBhcmNoaXZvcyBlbnRyZSB0dSBjb21wdXRhZG9yYSB5IGxhIHRhcmpldGEgU0QgZGUgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iQWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJIYXkgdW4gcHJvYmxlbWEgcGFyYSB1dGlsaXphciBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGVuIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IkhheSB1biBwcm9ibGVtYSBwYXJhIHV0aWxpemFyIHR1IHRhcmpldGEgU0QgZW4gZWwgYWxtYWNlbmFtaWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkhheSB1biBwcm9ibGVtYSBwYXJhIHV0aWxpemFyIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZW4gZWwgYWxtYWNlbmFtaWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJIYXkgdW4gcHJvYmxlbWEgcGFyYSB1dGlsaXphciBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGVuIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iY29uZWN0YWRvIGFsIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iNzM4MDA4MjQwNDI4ODIxOTM0MSI+IlNlbGVjY2lvbmFyIHBhcmEgY29waWFyIGFyY2hpdm9zIGRlc2RlIG8gaGFjaWEgdHUgY29tcHV0YWRvcmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4iQXBhZ2FyIGVsIGFsbWFjZW5hbWllbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iU2VsZWNjaW9uYXIgcGFyYSBkZXNhY3RpdmFyIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iQWxtYWNlbmFtaWVudG8gVVNCIGVuIHVzbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iQW50ZXMgZGUgZGVzYWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IsIGFzZWfDunJhdGUgZGUgaGFiZXIgZGVzbW9udGFkbyAoXCJleHB1bHNhZG9cIikgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBkZSBBbmRyb2lkIGRlIHR1IGNvbXB1dGFkb3JhLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDg3NDUzNDUyNjA3ODAyNjcxODUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMzY4ODQyMjY5NDYzNzQ1MDY3Ij4iQW50ZXMgZGUgZGVzYWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IsIGFzZWfDunJhdGUgZGUgaGFiZXIgZGVzbW9udGFkbyAoXCJleHB1bHNhZG9cIikgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBkZSBBbmRyb2lkIGRlIHR1IGNvbXB1dGFkb3JhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiJBbnRlcyBkZSBkZXNhY3RpdmFyIGVsIGFsbWFjZW5hbWllbnRvIFVTQiwgYXNlZ8O6cmF0ZSBkZSBoYWJlciBkZXNtb250YWRvIChcImV4cHVsc2Fkb1wiKSBsYSB0YXJqZXRhIFNEIGRlIEFuZHJvaWQgZGUgdHUgY29tcHV0YWRvcmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iRGVzYWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJTZSBoYSBwcm9kdWNpZG8gdW4gcHJvYmxlbWEgYWwgZGVzYWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IuIEFzZWfDunJhdGUgZGUgaGFiZXIgZGVzbW9udGFkbyBlbCBob3N0IFVTQiwgbHVlZ28gdnVlbHZlIGEgaW50ZW50YXJsby4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IlNpIGFjdGl2YXMgZWwgYWxtYWNlbmFtaWVudG8gVVNCLCBhbGd1bmFzIGFwbGljYWNpb25lcyBxdWUgZXN0w6FzIHVzYW5kbyBzZSBkZXRlbmRyw6FuIHkgZXMgcG9zaWJsZSBxdWUgbm8gZXN0w6luIGRpc3BvbmlibGVzIGhhc3RhIHF1ZSBkZXNhY3RpdmVzIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4iRXJyb3IgZW4gZWwgZnVuY2lvbmFtaWVudG8gZGVsIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJBY2VwdGFyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJGb3JtYXRlYXIgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4iRm9ybWF0ZWFyIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0ZWFyIHRhcmpldGEgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iwr9EZXNlYXMgZm9ybWF0ZWFyIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8geSBib3JyYXIgdG9kb3MgbG9zIGFyY2hpdm9zIGFsbWFjZW5hZG9zIGFxdcOtPyDCoUVzdGEgYWNjacOzbiBubyBzZSBwdWVkZSBjYW1iaWFyISI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiLCv0Rlc2VhcyBmb3JtYXRlYXIgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyB5IGJvcnJhciB0b2RvcyBsb3MgYXJjaGl2b3MgYWxtYWNlbmFkb3MgYXF1w60/IMKhRXN0YSBhY2Npw7NuIG5vIHNlIHB1ZWRlIGNhbWJpYXIhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBxdWllcmVzIGZvcm1hdGVhciBsYSB0YXJqZXRhIFNEPyBTZSBwZXJkZXLDoW4gdG9kb3MgbG9zIGRhdG9zIGRlIHR1IHRhcmpldGEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4iRm9ybWF0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IkRlcHVyYWNpw7NuIGRlIFVTQiBjb25lY3RhZGEiPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJjYW5kaWRhdG9zIjwvdT48L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDIzOTUxNjY3NTAyODQzODk5NyI+IlByZXBhcmFuZG8gZWwgYWxtLiBjb21wYXJ0aWRvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iUHJlcGFyYW5kbyBlbCBhbG0uIGNvbXBhcnRpZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlByZXBhcmFjacOzbiBkZSBsYSB0YXJqZXRhIFNEIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IlZlcmlmaWNhbmRvIGVycm9yZXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IkFsbS4gY29tcC4gZW4gYmxhbmNvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiJBbG0uIGNvbXAuIGVuIGJsYW5jbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IlRhcmpldGEgU0QgdmFjw61hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IkFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZW4gYmxhbmNvIG8gc2lzdGVtYSBkZSBhcmNoaXZvcyBubyBjb21wYXRpYmxlLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJBbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGVuIGJsYW5jbyBvIHNpc3RlbWEgZGUgYXJjaGl2b3Mgbm8gY29tcGF0aWJsZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJUYXJqZXRhIFNEIGVuIGJsYW5jbyBvIGVsIHNpc3RlbWEgZGUgYXJjaGl2b3Mgbm8gZXMgY29tcGF0aWJsZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiJBbG0uIGNvbXBhcnRpZG8gZGHDsWFkbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE3MjQ2MTk5MDIwNzY1Mjg4ODkgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjA5MDA0Njc2OTUzMjcxMzU2MyI+IkFsbS4gY29tcGFydGlkbyBkYcOxYWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY0MTA3MjM5MDYwMTkxMDAxODkiPiJUYXJqZXRhIFNEIGRhw7FhZGEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjQ2MDMxMTgzNTEzMDY3MTE5NCI+IkFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZGHDsWFkby4gRXMgcG9zaWJsZSBxdWUgZGViYXMgcmVmb3JtYXRlYXJsby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4iQWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBkYcOxYWRvLiBFcyBwb3NpYmxlIHF1ZSBkZWJhcyByZWZvcm1hdGVhcmxvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5MDI1MzE3NzU5NDgyMzg5ODkiPiJUYXJqZXRhIFNEIGRhw7FhZGEuIEVzIHBvc2libGUgcXVlIGRlYmFzIHJlZm9ybWF0ZWFybGEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiJBbG0uIGNvbXAuIGVsaW1pbmFkbyBpbmVzcC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNTgyMTc1MDE2MDYwNDMyMDM0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTY2MTY4MzAzMTMzMDk1MTA3MyI+IkFsbS4gY29tcC4gZWxpbWluYWRvIGluZXNwLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY4NzIxNTI4ODI2MDQ0MDc4MzciPiJUYXJqZXRhIFNEIGV4dHJhw61kYSBkZSBmb3JtYSBpbXByZXZpc3RhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjAwNTM5NjQ2NDQ5NDY0ODkzNyI+IkRlc21vbnRhciBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGFudGVzIGRlIGV4dHJhZXJsbyBwYXJhIGV2aXRhciBsYSBww6lyZGlkYSBkZSBkYXRvcy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iRGVzbW9udGFyIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gYW50ZXMgZGUgZXh0cmFlcmxvIHBhcmEgZXZpdGFyIGxhIHDDqXJkaWRhIGRlIGRhdG9zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IkRlc21vbnRhciBsYSB0YXJqZXRhIFNEIGFudGVzIGRlIGV4dHJhZXJsYSBwYXJhIGV2aXRhciBsYSBww6lyZGlkYSBkZSBkYXRvcy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNjUyNTg4MTAxODY3OTUxNSI+IkVzIHNlZ3VybyBlbGltaW5hciBhbG0gY29tcC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNjUyNTg4MTAxODY3OTUxNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzk2Nzk3Mzg5MzI3MDM2MDIzMCI+IkVzIHNlZ3VybyBlbGltaW5hciBhbG0gY29tcC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJUYXJqZXRhIFNEIGbDoWNpbCBkZSBleHRyYWVyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4iUHVlZGUgZWxpbWluYXIgZGUgZm9ybWEgc2VndXJhIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iUHVlZGUgZWxpbWluYXIgZGUgZm9ybWEgc2VndXJhIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IlB1ZWRlcyBlbGltaW5hciBsYSB0YXJqZXRhIFNEIHNpbiByaWVzZ29zLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iQWxtLiBjb21wLiBlbGltaW5hZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxODc0ODg5NzY0MzY3MDg1NTYyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDQ4NjM3NzIzMDE0MDIyNzY1MSI+IkFsbS4gY29tcC4gZWxpbWluYWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IlRhcmpldGEgU0QgZXh0cmHDrWRhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IkFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZWxpbWluYWRvLiBJbnNlcnRhciBudWV2b3MgbWVkaW9zLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJBbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGVsaW1pbmFkby4gSW5zZXJ0YXIgbnVldm9zIG1lZGlvcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJUYXJqZXRhIFNEIGVsaW1pbmFkYS4gSW5zZXJ0YSB1bmEgbnVldmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJObyBzZSBlbmNvbnRyYXJvbiBhY3RpdmlkYWRlcyBjb2luY2lkZW50ZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3BrZ1VzYWdlU3RhdHMiIG1zZ2lkPSI4Nzg3MzUyMDc0MzI2NzQ4ODkyIj4iYWN0dWFsaXphciBsYSBlc3RhZMOtc3RpY2EgZGUgdXNvIGRlIGxvcyBjb21wb25lbnRlcyI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCmluZGV4IGQzNTYwYWMuLjcwMDRkM2UgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiJIZXJyYW1pZW50YXMgZGUgZGVzYXJyb2xsbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiJGdW5jaW9uZXMgbmVjZXNhcmlhcyBzb2xvIHBhcmEgZGVzYXJyb2xsYWRvcmVzIGRlIGFwbGljYWNpb25lcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IkFsbWFjZW5hbWllbnRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjU0NTU4MDQzNTMyMjA1ODEzMTIiPiJBY2Nlc28gYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4iQWNjZXNvIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4iQWNjZWRlciBhIGxhIHRhcmpldGEgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJpbmhhYmlsaXRhciBvIG1vZGlmaWNhciBsYSBiYXJyYSBkZSBlc3RhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iUGVybWl0ZSBxdWUgbGFzIGFwbGljYWNpb25lcyBpbmhhYmlsaXRlbiBsYSBiYXJyYSBkZSBlc3RhZG8sIG8gYcOxYWRhbiB5IGVsaW1pbmVuIGljb25vcyBkZWwgc2lzdGVtYS4iPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiJQZXJtaXRlIHF1ZSBsYXMgYXBsaWNhY2lvbmVzIGFjdGl2ZW4geSBkZXNhY3RpdmVuIHNpc3RlbWFzIGRlIGFyY2hpdm9zIHBhcmEgdW4gYWxtYWNlbmFtaWVudG8gZXh0cmHDrWJsZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJmb3JtYXRlYXIgYWxtYWNlbmFtaWVudG8gZXh0ZXJubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlBlcm1pdGUgYSBsYSBhcGxpY2FjacOzbiBmb3JtYXRlYXIgdW4gYWxtYWNlbmFtaWVudG8gZXh0cmHDrWJsZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMTA3MDM2NDA3OTI0OTgzNDY2NiI+Im9idGVuZXIgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIG9idGVuZ2EgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3Vyby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+ImNyZWFyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIGNyZWUgdW4gYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+ImRlc3RydWlyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJQZXJtaXRlIHF1ZSBsYSBhcGxpY2FjacOzbiBkZXN0cnV5YSBlbCBhbG1hY2VuYW1pZW50byBzZWd1cm8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4iYWN0aXZhci9kZXNhY3RpdmFyIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJQZXJtaXRlIHF1ZSBsYSBhcGxpY2FjacOzbiBhY3RpdmUgbyBkZXNhY3RpdmUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4iY2FtYmlhciBub21icmUgZGUgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iUGVybWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gY2FtYmllIGVsIG5vbWJyZSBkZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4ib2J0ZW5lciBpbmZvcm1hY2nDs24gc29icmUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4iUGVybWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gb2J0ZW5nYSBpbmZvcm1hY2nDs24gc29icmUgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4iY3JlYXIgYWxtYWNlbmFtaWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzA0MTgwMjMyMjc1OTAxNDAzNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSIyNjIxMzQ2NzY0OTk1NzMxMjUwIj4iUGVybWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gY3JlZSB1biBhbG1hY2VuYW1pZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJkZXN0cnVpciBhbG1hY2VuYW1pZW50byBzZWd1cm8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NzQwNzU0MTE0OTY3ODkzMTY5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSIyNzQ2NzA2ODg5MjA4MDY2MjU2Ij4iUGVybWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gZGVzdHJ1eWEgZWwgYWxtYWNlbmFtaWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+ImFjdGl2YXIvZGVzYWN0aXZhciBhbG1hY2VuYW1pZW50byBzZWd1cm8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4iUGVybWl0ZSBxdWUgbGEgYXBsaWNhY2nDs24gYWN0aXZlIG8gZGVzYWN0aXZlIGVsIGFsbWFjZW5hbWllbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+ImNhbWJpYXIgbm9tYnJlIGRlIGFsbWFjZW5hbWllbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIGNhbWJpZSBlbCBub21icmUgZGVsIGFsbWFjZW5hbWllbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3ZpYnJhdGUiIG1zZ2lkPSI3NzY4MzU2MDE5OTgwODQ5NjAzIj4iY29udHJvbGFyIHZpYnJhY2nDs24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IlBlcm1pdGUgcXVlIGxhIGFwbGljYWNpw7NuIGNvbnRyb2xlIGxhIGZ1bmNpw7NuIGRlIHZpYnJhY2nDs24uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9mbGFzaGxpZ2h0IiBtc2dpZD0iMjE1NTkyMDgxMDEyMTk4NDIxNSI+ImNvbnRyb2xhciBsaW50ZXJuYSI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4iUGVybWl0ZSBhIHVuYSBhcGxpY2FjacOzbiBsZWVyIGN1YWxxdWllciBmcmFzZSwgcGFsYWJyYSBvIG5vbWJyZSBwcml2YWRvIHF1ZSBlbCB1c3VhcmlvIGhheWEgYWxtYWNlbmFkbyBlbiBzdSBkaWNjaW9uYXJpby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjY3MDMxMDk1MTE4MzYzNDMzNDEiPiJlc2NyaWJpciBlbiBlbCBkaWNjaW9uYXJpbyBkZWZpbmlkbyBwb3IgZWwgdXN1YXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiJQZXJtaXRlIGEgdW5hIGFwbGljYWNpw7NuIGVzY3JpYmlyIHBhbGFicmFzIG51ZXZhcyBlbiBlbCBkaWNjaW9uYXJpbyBkZSB1c3VhcmlvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iOTkzNzA3NDM2OTQxMDE2OTEzIj4ibW9kaWZpY2FyL3N1cHJpbWlyIGNvbnRlbmlkbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDk5MzcwNzQzNjk0MTAxNjkxMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NTQzMDg3NjMxMDc2NDc1MiI+Im1vZGlmaWNhci9zdXByaW1pciBjb250ZW5pZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+Im1vZGlmaWNhci9lbGltaW5hciBjb250ZW5pZG8gZGUgbGEgdGFyamV0YSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiJQZXJtaXQgZXNjIGFwbGljIGVuIGFsbWFjIGNvbXAiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MTMxODcxNTQxMTI3MjExNTI2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTk0MzkzMzM0Nzg1NzM4MjUyIj4iUGVybWl0IGVzYyBhcGxpYyBlbiBhbG1hYyBjb21wIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iUGVybWl0ZSBxdWUgdW5hIGFwbGljYWNpw7NuIGVzY3JpYmEgZW4gbGEgdGFyamV0YSBTRC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSI1NjU2NDg3MjY0ODE5NjY5ODI0Ij4iYWNjZWRlciBhbCBzaXN0ZW1hIGRlIGFyY2hpdm9zIGFsbWFjZW5hZG8gZW4gY2FjaMOpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjE2MjQ3MzQ1Mjg0MzU2NTk5MDYiPiJQZXJtaXRlIHF1ZSB1bmEgYXBsaWNhY2nDs24gbGVhIHkgZXNjcmliYSBlbCBzaXN0ZW1hIGRlIGFyY2hpdm9zIGFsbWFjZW5hZG8gZW4gY2FjaMOpLiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiJNb3N0cmFyIHRvZG9zIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IkFsbWFjZW5hbWllbnRvIFVTQiBtYXNpdm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJDb25lY3RhZG8gcG9yIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IkhhcyBjb25lY3RhZG8gZWwgdGVsw6lmb25vIGFsIGVxdWlwbyBtZWRpYW50ZSBVU0IuIFNlbGVjY2lvbmEgZWwgYm90w7NuIHNpdHVhZG8gZGViYWpvIHNpIGRlc2VhcyBjb3BpYXIgYXJjaGl2b3MgZW50cmUgZWwgZXF1aXBvIHkgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBkZWwgdGVsw6lmb25vIGNvbiBBbmRyb2lkLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4iSGFzIGNvbmVjdGFkbyBlbCB0ZWzDqWZvbm8gYWwgZXF1aXBvIG1lZGlhbnRlIFVTQi4gU2VsZWNjaW9uYSBlbCBib3TDs24gc2l0dWFkbyBkZWJham8gc2kgZGVzZWFzIGNvcGlhciBhcmNoaXZvcyBlbnRyZSBlbCBlcXVpcG8geSBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRlbCB0ZWzDqWZvbm8gY29uIEFuZHJvaWQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiJIYXMgY29uZWN0YWRvIGVsIHRlbMOpZm9ubyBhbCBlcXVpcG8gbWVkaWFudGUgVVNCLiBTZWxlY2Npb25hIGVsIGJvdMOzbiBzaXR1YWRvIGRlYmFqbyBzaSBkZXNlYXMgY29waWFyIGFyY2hpdm9zIGVudHJlIGVsIGVxdWlwbyB5IGxhIHRhcmpldGEgU0QgZGVsIHRlbMOpZm9ubyBjb24gQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iQWN0aXZhciBhbG1hY2VuYW1pZW50byBVU0IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJTZSBoYSBwcm9kdWNpZG8gdW4gcHJvYmxlbWEgYWwgaW50ZW50YXIgdXRpbGl6YXIgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBwYXJhIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IlNlIGhhIHByb2R1Y2lkbyB1biBwcm9ibGVtYSBhbCBpbnRlbnRhciB1dGlsaXphciBsYSB0YXJqZXRhIFNEIHBhcmEgZWwgYWxtYWNlbmFtaWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IlNlIGhhIHByb2R1Y2lkbyB1biBwcm9ibGVtYSBhbCBpbnRlbnRhciB1dGlsaXphciBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIHBhcmEgZWwgYWxtYWNlbmFtaWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJTZSBoYSBwcm9kdWNpZG8gdW4gcHJvYmxlbWEgYWwgaW50ZW50YXIgdXRpbGl6YXIgZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBwYXJhIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iQ29uZWN0YWRvIHBvciBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJQYXJhIGNvcGlhciBhcmNoaXZvcyBhbC9kZXNkZSBlbCBlcXVpcG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiJEZXNhY3RpdmFyIGFsbWFjZW5hbWllbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iU2VsZWNjaW9uYXIgcGFyYSBkZXNhY3RpdmFyIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iRWwgYWxtYWNlbmFtaWVudG8gVVNCIGVzdMOhIGVuIHVzby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+IkFudGVzIGRlIGRlc2FjdGl2YXIgZWwgYWxtYWNlbmFtaWVudG8gVVNCLCBhc2Vnw7pyYXRlIGRlIGhhYmVyIGRlc2FjdGl2YWRvIChcImV4dHJhw61kb1wiKSBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRlbCB0ZWzDqWZvbm8gY29uIEFuZHJvaWQgZGVsIGVxdWlwby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IkFudGVzIGRlIGRlc2FjdGl2YXIgZWwgYWxtYWNlbmFtaWVudG8gVVNCLCBhc2Vnw7pyYXRlIGRlIGhhYmVyIGRlc2FjdGl2YWRvIChcImV4dHJhw61kb1wiKSBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRlbCB0ZWzDqWZvbm8gY29uIEFuZHJvaWQgZGVsIGVxdWlwby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iQW50ZXMgZGUgZGVzYWN0aXZhciBlbCBhbG1hY2VuYW1pZW50byBVU0IsIGFzZWfDunJhdGUgZGUgaGFiZXIgZGVzbW9udGFkbyAoXCJyZXRpcmFkb1wiKSBsYSB0YXJqZXRhIFNEIGRlbCB0ZWzDqWZvbm8gY29uIEFuZHJvaWQgZGVsIGVxdWlwby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiJEZXNhY3RpdmFyIGFsbWFjZW5hbWllbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+IlNlIGhhIHByb2R1Y2lkbyB1biBwcm9ibGVtYSBhbCBkZXNhY3RpdmFyIGVsIGFsbWFjZW5hbWllbnRvIFVTQi4gQXNlZ8O6cmF0ZSBkZSBoYWJlciBkZXNhY3RpdmFkbyBlbCBob3N0IFVTQiB5LCBhIGNvbnRpbnVhY2nDs24sIHZ1ZWx2ZSBhIGludGVudGFybG8uIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiJTaSBhY3RpdmFzIGVsIGFsbWFjZW5hbWllbnRvIFVTQiwgc2UgZGV0ZW5kcsOhbiBhbGd1bmFzIGFwbGljYWNpb25lcyBxdWUgZXN0w6FzIHV0aWxpemFuZG8geSBlc3RhcyBubyBlc3RhcsOhbiBkaXNwb25pYmxlcyBoYXN0YSBxdWUgbG8gZGVzYWN0aXZlcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4iTm8gc2UgaGEgcG9kaWRvIHJlYWxpemFyIGxhIG9wZXJhY2nDs24gVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+IkFjZXB0YXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU3NzkwODAwNjk0OTc0MjIxNyI+IkZvcm1hdGVvIGFsbWFjZW5hbWllbnRvIGNvbXBhcnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IkZvcm1hdGVvIGFsbWFjZW5hbWllbnRvIGNvbXBhcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0ZWFyIHRhcmpldGEgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iwr9RdWllcmVzIGZvcm1hdGVhciBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIHkgYm9ycmFyIHRvZG9zIGxvcyBhcmNoaXZvcz8gRXN0YSBhY2Npw7NuIG5vIHNlIHB1ZWRlIGRlc2hhY2VyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiLCv1F1aWVyZXMgZm9ybWF0ZWFyIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8geSBib3JyYXIgdG9kb3MgbG9zIGFyY2hpdm9zPyBFc3RhIGFjY2nDs24gbm8gc2UgcHVlZGUgZGVzaGFjZXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBxdWllcmVzIGZvcm1hdGVhciBsYSB0YXJqZXRhIFNEPyBTZSBwZXJkZXLDoW4gdG9kb3MgbG9zIGRhdG9zIGRlIGxhIHRhcmpldGEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4iRm9ybWF0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IkRpc3Bvc2l0aXZvIGRlIGRlcHVyYWNpw7NuIFVTQiBjb25lY3RhZG8iPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJjYW5kaWRhdG9zIjwvdT48L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDIzOTUxNjY3NTAyODQzODk5NyI+IlByZXBhcmFuZG8gYWxtYWNlbmFtIGNvbXBhcnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJQcmVwYXJhbmRvIGFsbWFjZW5hbSBjb21wYXJ0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiJQcmVwYXJhbmRvIHRhcmpldGEgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iQ29tcHJvYmFuZG8gZXJyb3Jlcy4uLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4iQWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyB2YWPDrW8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IkFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gdmFjw61vIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzgwNDc3ODM4MjQxMjEyOTk3Ij4iVGFyamV0YSBTRCB2YWPDrWEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4iQWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyB2YWPDrW8gbyBjb24gc2lzdGVtYSBkZSBhcmNoaXZvcyBubyBhZG1pdGlkbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJBbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIHZhY8OtbyBvIGNvbiBzaXN0ZW1hIGRlIGFyY2hpdm9zIG5vIGFkbWl0aWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iTGEgdGFyamV0YSBTRCBlc3TDoSB2YWPDrWEgbyBzdSBzaXN0ZW1hIGRlIGFyY2hpdm9zIGVzIGluY29tcGF0aWJsZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiJBbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRhw7FhZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJBbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGRhw7FhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IlRhcmpldGEgU0QgZGHDsWFkYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iRWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkbyBlc3TDoSBkYcOxYWRvLiBFcyBwb3NpYmxlIHF1ZSBzZWEgbmVjZXNhcmlvIHZvbHZlciBhIGZvcm1hdGVhcmxvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJFbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvIGVzdMOhIGRhw7FhZG8uIEVzIHBvc2libGUgcXVlIHNlYSBuZWNlc2FyaW8gdm9sdmVyIGEgZm9ybWF0ZWFybG8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IkxhIHRhcmpldGEgU0QgZXN0w6EgZGHDsWFkYS4gRXMgcG9zaWJsZSBxdWUgc2VhIG5lY2VzYXJpbyB2b2x2ZXIgYSBmb3JtYXRlYXJsYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IkFsbWFjZW5hbSBjb21wIGV4dHJhw61kbyBpbmVzcCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iQWxtYWNlbmFtIGNvbXAgZXh0cmHDrWRvIGluZXNwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IkxhIHRhcmpldGEgU0Qgc2UgaGEgZXh0cmHDrWRvIGluZXNwZXJhZGFtZW50ZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4iRGVzYWN0aXZhIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gYW50ZXMgZGUgZXh0cmFlcmxvIHBhcmEgZXZpdGFyIHDDqXJkaWRhcyBkZSBkYXRvcy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iRGVzYWN0aXZhIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gYW50ZXMgZGUgZXh0cmFlcmxvIHBhcmEgZXZpdGFyIHDDqXJkaWRhcyBkZSBkYXRvcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiJEZXNhY3RpdmEgbGEgdGFyamV0YSBTRCBhbnRlcyBkZSBleHRyYWVybGEgcGFyYSBldml0YXIgbGEgcMOpcmRpZGEgZGUgZGF0b3MuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJBbG1hYyBleHRyYcOtYmxlIGZvcm1hIHNlZ3VyYSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iQWxtYWMgZXh0cmHDrWJsZSBmb3JtYSBzZWd1cmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJFcyBzZWd1cm8gZXh0cmFlciBsYSB0YXJqZXRhIFNELiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzUwMzc2OTEwNjI4NTE4ODcwMyI+IlB1ZWRlcyBleHRyYWVyIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZGUgZm9ybWEgc2VndXJhLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MDM3NjkxMDYyODUxODg3MDMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjE0MjE5NTM2MTYwNjQ5MzUzMCI+IlB1ZWRlcyBleHRyYWVyIGVsIGFsbWFjZW5hbWllbnRvIGNvbXBhcnRpZG8gZGUgZm9ybWEgc2VndXJhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiJQdWVkZXMgZXh0cmFlciBsYSB0YXJqZXRhIFNEIGRlIGZvcm1hIHNlZ3VyYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTg3NDg4OTc2NDM2NzA4NTU2MiI+IkFsbWFjZW5hbSBjb21wYXJ0aWRvIGV4dHJhw61kbyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iQWxtYWNlbmFtIGNvbXBhcnRpZG8gZXh0cmHDrWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IlRhcmpldGEgU0QgZXh0cmHDrWRhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IlNlIGhhIGV4dHJhw61kbyBlbCBhbG1hY2VuYW1pZW50byBjb21wYXJ0aWRvLiBJbnNlcnRhIHVuIG51ZXZvIG1lZGlvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJTZSBoYSBleHRyYcOtZG8gZWwgYWxtYWNlbmFtaWVudG8gY29tcGFydGlkby4gSW5zZXJ0YSB1biBudWV2byBtZWRpby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJMYSB0YXJqZXRhIFNEIHNlIGhhIGV4dHJhw61kby4gSW5zZXJ0YSB1bmEgbnVldmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmd1bmEgYWN0aXZpZGFkIGNvaW5jaWRlbnRlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJhY3R1YWxpemFyIGVzdGFkw61zdGljYXMgZGUgdXNvIGRlIGNvbXBvbmVudGVzIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKaW5kZXggY2ZhNTJiYS4uN2YxOGI5ZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iMzQ0NjE2NDU4NDcxMDU5NjUxMyI+Ik91dGlscyBkZSBkw6l2ZWxvcHBlbWVudCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiJDZXMgZm9uY3Rpb25uYWxpdMOpcyBzb250IHLDqXNlcnbDqWVzIGF1eCBkw6l2ZWxvcHBldXJzIGRcJ2FwcGxpY2F0aW9ucy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiJTdG9ja2FnZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iQWNjw6lkZXIgYXUgc3RvY2thZ2UgcGFydGFnw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDU1ODA0MzUzMjIwNTgxMzEyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzQ0MjMxODUwMjQ0Njg3NDk5OSI+IkFjY8OpZGVyIGF1IHN0b2NrYWdlIHBhcnRhZ8OpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+IkFjY8OocyDDoCBsYSBjYXJ0ZSBTRCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+IkTDqXNhY3RpdmF0aW9uIG91IG1vZGlmaWNhdGlvbiBkZSBsYSBiYXJyZSBkXCfDqXRhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJQZXJtZXQgw6AgdW5lIGFwcGxpY2F0aW9uIGRlIGTDqXNhY3RpdmVyIGxhIGJhcnJlIGRcJ8OpdGF0IG91IGRcJ2Fqb3V0ZXIvc3VwcHJpbWVyIGRlcyBpY8O0bmVzIHN5c3TDqG1lLiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkZSBtb250ZXIgZXQgZMOpbW9udGVyIGRlcyBzeXN0w6htZXMgZGUgZmljaGllcnMgcG91ciBkZXMgcMOpcmlwaMOpcmlxdWVzIGRlIHN0b2NrYWdlIGFtb3ZpYmxlcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJGb3JtYXRhZ2UgZHUgcMOpcmlwaMOpcmlxdWUgZGUgc3RvY2thZ2UgZXh0ZXJuZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkZSBmb3JtYXRlciBsZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBhbW92aWJsZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMTA3MDM2NDA3OTI0OTgzNDY2NiI+Im9idGVuaXIgZGVzIGluZm9ybWF0aW9ucyBzdXIgbGUgc3RvY2thZ2Ugc8OpY3VyaXPDqSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkXCdvYnRlbmlyIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJjcsOpZXIgdW4gc3RvY2thZ2Ugc8OpY3VyaXPDqSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkZSBjcsOpZXIgdW4gc3RvY2thZ2Ugc8OpY3VyaXPDqS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9Ijc3ODczMjI4Nzg5NTUyNjEwMDYiPiJkw6l0cnVpcmUgbGUgc3RvY2thZ2Ugc8OpY3VyaXPDqSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJQZXJtZXQgw6AgbFwnYXBwbGljYXRpb24gZGUgZMOpdHJ1aXJlIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4ibW9udGVyL2TDqW1vbnRlciBsZSBzdG9ja2FnZSBzw6ljdXJpc8OpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkZSBtb250ZXIvZMOpbW9udGVyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJyZW5vbW1lciBsZSBzdG9ja2FnZSBzw6ljdXJpc8OpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iUGVybWV0IMOgIGxcJ2FwcGxpY2F0aW9uIGRlIHJlbm9tbWVyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJvYnRlbmlyIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiJQZXJtZXQgw6AgbFwnYXBwbGljYXRpb24gZFwnb2J0ZW5pciBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZSBzdG9ja2FnZSBzw6ljdXJpc8OpLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4iY3LDqWVyIHVuIHN0b2NrYWdlIHPDqWN1cmlzw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJQZXJtZXQgw6AgbFwnYXBwbGljYXRpb24gZGUgY3LDqWVyIHVuIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJkw6l0cnVpcmUgbGUgc3RvY2thZ2Ugc8OpY3VyaXPDqSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJQZXJtZXQgw6AgbFwnYXBwbGljYXRpb24gZGUgZMOpdHJ1aXJlIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4ibW9udGVyL2TDqW1vbnRlciBsZSBzdG9ja2FnZSBzw6ljdXJpc8OpIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IlBlcm1ldCDDoCBsXCdhcHBsaWNhdGlvbiBkZSBtb250ZXIvZMOpbW9udGVyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTY4NTM0NDM5MDQzOTkzNDQ5NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9Ijc0OTY2MzM5NTQwODA0NzI0MTciPiJyZW5vbW1lciBsZSBzdG9ja2FnZSBzw6ljdXJpc8OpIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iUGVybWV0IMOgIGxcJ2FwcGxpY2F0aW9uIGRlIHJlbm9tbWVyIGxlIHN0b2NrYWdlIHPDqWN1cmlzw6kuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl92aWJyYXRlIiBtc2dpZD0iNzc2ODM1NjAxOTk4MDg0OTYwMyI+IkNvbnRyw7RsZSBkdSB2aWJyZXVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfdmlicmF0ZSIgbXNnaWQ9IjI4ODY2NzcxNzcyNTc3ODkxODciPiJQZXJtZXQgw6AgbFwnYXBwbGljYXRpb24gZGUgY29udHLDtGxlciBsZSB2aWJyZXVyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiJDb250csO0bGUgZGUgbGEgbGFtcGUgZGUgcG9jaGUiPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IlBlcm1ldCDDoCB1bmUgYXBwbGljYXRpb24gZGUgbGlyZSB0b3VzIGxlcyBtb3RzLCBub21zIGV0IGV4cHJlc3Npb25zIHF1ZSBsXCd1dGlsaXNhdGV1ciBhIHB1IGVucmVnaXN0cmVyIGRhbnMgc29uIGRpY3Rpb25uYWlyZSBwZXJzb25uZWwuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl93cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSI2NzAzMTA5NTExODM2MzQzMzQxIj4iRW5yZWdpc3RyZW1lbnQgZGFucyBsZSBkaWN0aW9ubmFpcmUgZMOpZmluaSBwYXIgbFwndXRpbGlzYXRldXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY193cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSIyMjQxMjU2MjA2NTI0MDgyODgwIj4iUGVybWV0IMOgIHVuZSBhcHBsaWNhdGlvbiBkXCdlbnJlZ2lzdHJlciBkZSBub3V2ZWF1eCBtb3RzIGRhbnMgbGUgZGljdGlvbm5haXJlIHBlcnNvbm5lbCBkZSBsXCd1dGlsaXNhdGV1ci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+Im1vZGlmaWVyL3N1cHByaW1lciBsZSBjb250ZW51IGR1IHN0b2NrYWdlIHBhcnRhZ8OpIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4ibW9kaWZpZXIvc3VwcHJpbWVyIGxlIGNvbnRlbnUgZHUgc3RvY2thZ2UgcGFydGFnw6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+Ik1vZGlmaWVyL3N1cHByaW1lciBsZSBjb250ZW51IGRlIGxhIGNhcnRlIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IkF1dG9yaXNlIHVuZSBhcHBsaWNhdGlvbiDDoCDDqWNyaXJlIHN1ciBsZSBzdG9ja2FnZSBwYXJ0YWfDqS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MTMxODcxNTQxMTI3MjExNTI2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTk0MzkzMzM0Nzg1NzM4MjUyIj4iQXV0b3Jpc2UgdW5lIGFwcGxpY2F0aW9uIMOgIMOpY3JpcmUgc3VyIGxlIHN0b2NrYWdlIHBhcnRhZ8OpLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjY0Mzk2MzIwNDk3NjQ3MTg3OCI+IkF1dG9yaXNlIHVuZSBhcHBsaWNhdGlvbiDDoCDDqWNyaXJlIHN1ciBsYSBjYXJ0ZSBTRC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSI1NjU2NDg3MjY0ODE5NjY5ODI0Ij4iYWNjw6lkZXIgYXUgc3lzdMOobWUgZGUgZmljaGllcnMgZW4gY2FjaGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IlBlcm1ldCDDoCB1bmUgYXBwbGljYXRpb24gZGUgbGlyZSBldCBkXCfDqWNyaXJlIGRhbnMgbGUgc3lzdMOobWUgZGUgZmljaGllcnMgZW4gY2FjaGUuIjwvc3RyaW5nPgpAQCAtODAyLDE3ICs4MDIsMTcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1zX3Nob3dfYWxsIiBtc2dpZD0iMjY3MTc5MTE2MzkzMzA5MTE4MCI+PGI+IlRvdXQgYWZmaWNoZXIiPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iU3RvY2thZ2UgZGUgbWFzc2UgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iQ29ubmVjdMOpIMOgIGxcJ2FpZGUgZFwndW4gY8OiYmxlIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IlZvdXMgYXZleiBjb25uZWN0w6kgdm90cmUgdMOpbMOpcGhvbmUgw6Agdm90cmUgb3JkaW5hdGV1ciDDoCBsXCdhaWRlIGRcJ3VuIGPDomJsZSBVU0IuIFPDqWxlY3Rpb25uZXogbGUgYm91dG9uIGNpLWRlc3NvdXMgcG91ciBjb3BpZXIgZGVzIGZpY2hpZXJzIGRlIHZvdHJlIG9yZGluYXRldXIgdmVycyBsZSBzdG9ja2FnZSBwYXJ0YWfDqSBkZSB2b3RyZSBBbmRyb2lkLCBvdSBpbnZlcnNlbWVudC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+IlZvdXMgYXZleiBjb25uZWN0w6kgdm90cmUgdMOpbMOpcGhvbmUgw6Agdm90cmUgb3JkaW5hdGV1ciDDoCBsXCdhaWRlIGRcJ3VuIGPDomJsZSBVU0IuIFPDqWxlY3Rpb25uZXogbGUgYm91dG9uIGNpLWRlc3NvdXMgcG91ciBjb3BpZXIgZGVzIGZpY2hpZXJzIGRlIHZvdHJlIG9yZGluYXRldXIgdmVycyBsZSBzdG9ja2FnZSBwYXJ0YWfDqSBkZSB2b3RyZSBBbmRyb2lkLCBvdSBpbnZlcnNlbWVudC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IlZvdXMgYXZleiBjb25uZWN0w6kgdm90cmUgdMOpbMOpcGhvbmUgw6Agdm90cmUgb3JkaW5hdGV1ciDDoCBsXCdhaWRlIGRcJ3VuIGPDomJsZSBVU0IuIFPDqWxlY3Rpb25uZXogbGUgYm91dG9uIGNpLWRlc3NvdXMgcG91ciBjb3BpZXIgZGVzIGZpY2hpZXJzIGRlIHZvdHJlIG9yZGluYXRldXIgdmVycyBsYSBjYXJ0ZSBTRCBkZSB2b3RyZSBBbmRyb2lkLCBvdSBpbnZlcnNlbWVudC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iQWN0aXZlciBsZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJVbiBwcm9ibMOobWUgZXN0IHN1cnZlbnUgbG9ycyBkZSBsXCd1dGlsaXNhdGlvbiBkZSB2b3RyZSBzdG9ja2FnZSBwYXJ0YWfDqSBlbiB0YW50IHF1ZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiJVbiBwcm9ibMOobWUgZXN0IHN1cnZlbnUgbG9ycyBkZSBsXCd1dGlsaXNhdGlvbiBkZSB2b3RyZSBjYXJ0ZSBTRCBlbiB0YW50IHF1ZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzMjc2NDEzNzY0NDMwNDY4NDU0Ij4iVW4gcHJvYmzDqG1lIGVzdCBzdXJ2ZW51IGxvcnMgZGUgbFwndXRpbGlzYXRpb24gZGUgdm90cmUgc3RvY2thZ2UgcGFydGFnw6kgZW4gdGFudCBxdWUgcMOpcmlwaMOpcmlxdWUgZGUgc3RvY2thZ2UgVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJVbiBwcm9ibMOobWUgZXN0IHN1cnZlbnUgbG9ycyBkZSBsXCd1dGlsaXNhdGlvbiBkZSB2b3RyZSBzdG9ja2FnZSBwYXJ0YWfDqSBlbiB0YW50IHF1ZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IkNvbm5lY3TDqSBhdmVjIHVuIGPDomJsZSBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJBY3RpdmV6IHBvdXIgY29waWVyIGRlcyBmaWNoaWVycyB2ZXJzL2RlIHZvdHJlIG9yZGluYXRldXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4iw4l0ZWluZHJlIGxlIHDDqXJpcGjDqXJpcXVlIGRlIHN0b2NrYWdlIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iU8OpbGVjdGlvbm5lciBwb3VyIMOpdGVpbmRyZSBsZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iU3RvY2thZ2UgVVNCIGVuIGNvdXJzIGRcJ3V0aWxpc2F0aW9uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg3NDUzNDUyNjA3ODAyNjcxODUiPiJBdmFudCBkZSBtZXR0cmUgaG9ycyB0ZW5zaW9uIGxlIHN0b2NrYWdlIFVTQiwgYXNzdXJlei12b3VzIGRcJ2F2b2lyIGTDqW1vbnTDqSAoXCLDqWplY3TDqVwiKSBsZSBzdG9ja2FnZSBwYXJ0YWfDqSBkZSB2b3RyZSB0w6lsw6lwaG9uZSBBbmRyb2lkIMOgIHBhcnRpciBkZSB2b3RyZSBvcmRpbmF0ZXVyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDg3NDUzNDUyNjA3ODAyNjcxODUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMzY4ODQyMjY5NDYzNzQ1MDY3Ij4iQXZhbnQgZGUgbWV0dHJlIGhvcnMgdGVuc2lvbiBsZSBzdG9ja2FnZSBVU0IsIGFzc3VyZXotdm91cyBkXCdhdm9pciBkw6ltb250w6kgKFwiw6lqZWN0w6lcIikgbGUgc3RvY2thZ2UgcGFydGFnw6kgZGUgdm90cmUgdMOpbMOpcGhvbmUgQW5kcm9pZCDDoCBwYXJ0aXIgZGUgdm90cmUgb3JkaW5hdGV1ci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iQXZhbnQgZGUgbWV0dHJlIGhvcnMgdGVuc2lvbiBsZSBzdG9ja2FnZSBVU0IsIGFzc3VyZXotdm91cyBkXCdhdm9pciBkw6lzYWN0aXbDqSAoXCLDqWplY3TDqVwiKSBsYSBjYXJ0ZSBTRCBkZSB2b3RyZSB0w6lsw6lwaG9uZSBBbmRyb2lkIMOgIHBhcnRpciBkZSB2b3RyZSBvcmRpbmF0ZXVyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+IkTDqXNhY3RpdmVyIGxlIHDDqXJpcGjDqXJpcXVlIGRlIHN0b2NrYWdlIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+IlVuIHByb2Jsw6htZSBlc3Qgc3VydmVudSBsb3JzIGRlIGxhIG1pc2UgaG9ycyB0ZW5zaW9uIGR1IHDDqXJpcGjDqXJpcXVlIGRlIHN0b2NrYWdlIFVTQi4gQXNzdXJlei12b3VzIHF1ZSBsXCdow7R0ZSBVU0IgYSBiaWVuIMOpdMOpIGTDqXNhY3RpdsOpLCBwdWlzIGVzc2F5ZXogw6Agbm91dmVhdS4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IlNpIHZvdXMgYWN0aXZleiBsZSBww6lyaXBow6lyaXF1ZSBkZSBzdG9ja2FnZSBVU0IsIGNlcnRhaW5lcyBhcHBsaWNhdGlvbnMgcXVlIHZvdXMgdXRpbGlzZXogc2UgZmVybWVyb250IGV0IHJpc3F1ZW50IGRlIG5cJ8OqdHJlIGRlIG5vdXZlYXUgZGlzcG9uaWJsZXMgcXVcJ2FwcsOocyBsYSBkw6lzYWN0aXZhdGlvbiBkdSBww6lyaXBow6lyaXF1ZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4iw4ljaGVjIGR1IGZvbmN0aW9ubmVtZW50IFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJPSyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4iRm9ybWF0ZXIgbGUgc3RvY2thZ2UgcGFydGFnw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IkZvcm1hdGVyIGxlIHN0b2NrYWdlIHBhcnRhZ8OpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IkZvcm1hdGVyIGxhIGNhcnRlIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IkZvcm1hdGVyIGxlIHN0b2NrYWdlIHBhcnRhZ8OpIGVuIGVmZmHDp2FudCB0b3V0IGxlIGNvbnRlbnXCoD8gQ2V0dGUgYWN0aW9uIGVzdCBpcnLDqXZlcnNpYmxlwqAhIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkZvcm1hdGVyIGxlIHN0b2NrYWdlIHBhcnRhZ8OpIGVuIGVmZmHDp2FudCB0b3V0IGxlIGNvbnRlbnXCoD8gQ2V0dGUgYWN0aW9uIGVzdCBpcnLDqXZlcnNpYmxlwqAhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iVm91bGV6LXZvdXMgdnJhaW1lbnQgZm9ybWF0ZXIgbGEgY2FydGUgU0TCoD8gVG91dGVzIGxlcyBkb25uw6llcyBkZSBjZXR0ZSBjYXJ0ZSBzZXJvbnQgcGVyZHVlcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfYnV0dG9uX2Zvcm1hdCIgbXNnaWQ9IjQxMzEwNjQ1NjAxMjc0Nzg2OTUiPiJGb3JtYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiJEw6lib2dhZ2UgVVNCIGNvbm5lY3TDqSI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ImNhbmRpZGF0cyI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiJQcsOpcGFyYXRpb24gZHUgc3RvY2thZ2UgcGFydGFnw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJQcsOpcGFyYXRpb24gZHUgc3RvY2thZ2UgcGFydGFnw6kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlByw6lwYXJhdGlvbiBkZSBsYSBjYXJ0ZSBTRCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjgyODczMTk4ODI5MjY3MzcwNTMiPiJSZWNoZXJjaGUgZFwnZXJyZXVycyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4iU3RvY2thZ2UgcGFydGFnw6kgdmlkZSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM5MzczNDU1Nzc5ODM3MzA4NzMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3Nzg4MDQwNzQ1Njg2MjI5MzA3Ij4iU3RvY2thZ2UgcGFydGFnw6kgdmlkZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IkNhcnRlIFNEIHZpZGUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4iTGUgc3RvY2thZ2UgcGFydGFnw6kgZXN0IHZpZGUgb3Ugc29uIHN5c3TDqG1lIGRlIGZpY2hpZXJzIG5cJ2VzdCBwYXMgcHJpcyBlbiBjaGFyZ2UuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IkxlIHN0b2NrYWdlIHBhcnRhZ8OpIGVzdCB2aWRlIG91IHNvbiBzeXN0w6htZSBkZSBmaWNoaWVycyBuXCdlc3QgcGFzIHByaXMgZW4gY2hhcmdlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzgxNzcwNDA4ODAyNzgyOTM4MCI+IkxhIGNhcnRlIFNEIGVzdCB2aWRlIG91IHNvbiBzeXN0w6htZSBkZSBmaWNoaWVycyBuXCdlc3QgcGFzIHByaXMgZW4gY2hhcmdlLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+IlN0b2NrYWdlIHBhcnRhZ8OpIGVuZG9tbWFnw6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJTdG9ja2FnZSBwYXJ0YWfDqSBlbmRvbW1hZ8OpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY0MTA3MjM5MDYwMTkxMDAxODkiPiJDYXJ0ZSBTRCBlbmRvbW1hZ8OpZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iTGUgc3RvY2thZ2UgcGFydGFnw6kgZXN0IGVuZG9tbWFnw6kuIFZvdXMgZGV2cmV6IHBldXQtw6p0cmUgbGUgcmVmb3JtYXRlci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4iTGUgc3RvY2thZ2UgcGFydGFnw6kgZXN0IGVuZG9tbWFnw6kuIFZvdXMgZGV2cmV6IHBldXQtw6p0cmUgbGUgcmVmb3JtYXRlci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iTGEgY2FydGUgU0QgZXN0IGVuZG9tbWFnw6llLiBWb3VzIGRldnJleiBwZXV0LcOqdHJlIGxhIHJlZm9ybWF0ZXIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiJTdG9ja2FnZSBwYXJ0YWfDqSByZXRpcsOpIGlub3BpbsOpbWVudCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iU3RvY2thZ2UgcGFydGFnw6kgcmV0aXLDqSBpbm9waW7DqW1lbnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iQ2FydGUgU0QgcmV0aXLDqWUgaW5vcGluw6ltZW50Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjAwNTM5NjQ2NDQ5NDY0ODkzNyI+IkTDqW1vbnRlciBsZSBzdG9ja2FnZSBwYXJ0YWfDqSBhdmFudCBkZSBsZSByZXRpcmVyIHBvdXIgw6l2aXRlciB0b3V0ZSBwZXJ0ZSBkZSBkb25uw6llcy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iRMOpbW9udGVyIGxlIHN0b2NrYWdlIHBhcnRhZ8OpIGF2YW50IGRlIGxlIHJldGlyZXIgcG91ciDDqXZpdGVyIHRvdXRlIHBlcnRlIGRlIGRvbm7DqWVzLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IkTDqXNhY3RpdmVyIGxhIGNhcnRlIFNEIGF2YW50IGRlIGxhIHJldGlyZXIgcG91ciDDqXZpdGVyIHRvdXRlIHBlcnRlIGRlIGRvbm7DqWVzLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM2NTI1ODgxMDE4Njc5NTE1Ij4iTGUgc3RvY2thZ2UgcGFydGFnw6kgcGV1dCDDqnRyZSByZXRpcsOpIGVuIHRvdXRlIHPDqWN1cml0w6kiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNjUyNTg4MTAxODY3OTUxNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzk2Nzk3Mzg5MzI3MDM2MDIzMCI+IkxlIHN0b2NrYWdlIHBhcnRhZ8OpIHBldXQgw6p0cmUgcmV0aXLDqSBlbiB0b3V0ZSBzw6ljdXJpdMOpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iTGEgY2FydGUgU0QgcGV1dCDDqnRyZSByZXRpcsOpZSBlbiB0b3V0ZSBzw6ljdXJpdMOpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4iVm91cyBwb3V2ZXogcmV0aXJlciBsZSBzdG9ja2FnZSBwYXJ0YWfDqSBlbiB0b3V0ZSBzw6ljdXJpdMOpLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MDM3NjkxMDYyODUxODg3MDMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjE0MjE5NTM2MTYwNjQ5MzUzMCI+IlZvdXMgcG91dmV6IHJldGlyZXIgbGUgc3RvY2thZ2UgcGFydGFnw6kgZW4gdG91dGUgc8OpY3VyaXTDqS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4iVm91cyBwb3V2ZXogcmV0aXJlciBsYSBjYXJ0ZSBTRCBlbiB0b3V0ZSBzw6ljdXJpdMOpLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iU3RvY2thZ2UgcGFydGFnw6kgcmV0aXLDqSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iU3RvY2thZ2UgcGFydGFnw6kgcmV0aXLDqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJDYXJ0ZSBTRCBtYW5xdWFudGUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNzMwODkwNDQxMzMxMzQ0Nzc2Ij4iU3RvY2thZ2UgcGFydGFnw6kgcmV0aXLDqS4gSW5zw6lyZXogdW4gbm91dmVhdSBzdXBwb3J0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJTdG9ja2FnZSBwYXJ0YWfDqSByZXRpcsOpLiBJbnPDqXJleiB1biBub3V2ZWF1IHN1cHBvcnQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iTGEgY2FydGUgU0QgYSDDqXTDqSByZXRpcsOpZS4gSW5zw6lyZXotZW4gdW5lIGF1dHJlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4iQXVjdW5lIGFjdGl2aXTDqSBjb3JyZXNwb25kYW50ZSB0cm91dsOpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJtZXR0cmUgw6Agam91ciBsZXMgZG9ubsOpZXMgc3RhdGlzdGlxdWVzIGR1IGNvbXBvc2FudCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCmluZGV4IDJlMTY0YmI4Li41MzZkZTVhIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iU3RydW1lbnRpIGRpIHN2aWx1cHBvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bnppb25hbGl0w6AgbmVjZXNzYXJpZSBzb2x0YW50byBhZ2xpIHN2aWx1cHBhdG9yaSBkaSBhcHBsaWNhemlvbmkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iQXJjaGl2aWF6aW9uZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iQWNjZXNzbyBhbGxcJ2FyY2hpdmlvIGNvbmRpdmlzby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDU1ODA0MzUzMjIwNTgxMzEyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzQ0MjMxODUwMjQ0Njg3NDk5OSI+IkFjY2Vzc28gYWxsXCdhcmNoaXZpbyBjb25kaXZpc28uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+IkFjY2Vzc28gYWxsYSBzY2hlZGEgU0QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zdGF0dXNCYXIiIG1zZ2lkPSI3NDE3MTkyNjI5NjAxODkwNzkxIj4iZGlzYXR0aXZhcmUgbyBtb2RpZmljYXJlIGxhIGJhcnJhIGRpIHN0YXRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc3RhdHVzQmFyIiBtc2dpZD0iMTM2NTQ3MzU5NTMzMTk4OTczMiI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIGRpc2F0dGl2YXJlIGxhIGJhcnJhIGRpIHN0YXRvIG8gZGkgYWdnaXVuZ2VyZSBlIHJpbXVvdmVyZSBpY29uZSBkaSBzaXN0ZW1hLiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IkNvbnNlbnRlIG1vbnRhZ2dpbyBlIHNtb250YWdnaW8gZGEgcGFydGUgZGVsbFwnYXBwbGljYXppb25lIGRlaSBmaWxlc3lzdGVtIGRlZ2xpIGFyY2hpdmkgcmltb3ZpYmlsaS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJmb3JtYXR0YXppb25lIGFyY2hpdmlvIGVzdGVybm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NzQwNjAwNDQ5MDYwNDczODYiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSBmb3JtYXR0YXJlIGxcJ2FyY2hpdmlvIHJpbW92aWJpbGUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiJyZWN1cGVybyBkaSBpbmZvcm1hemlvbmkgc3VsbFwnYXJjaGl2aWF6aW9uZSBwcm90ZXR0YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIG90dGVuZXJlIGluZm9ybWF6aW9uaSBzdWxsXCdhcmNoaXZpYXppb25lIHByb3RldHRhLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MzEyMDc4MDMyMzI2OTI4ODk5Ij4iY3JlYXppb25lIGFyY2hpdmlhemlvbmUgcHJvdGV0dGEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjcwNDE4MDIzMjI3NTkwMTQwMzUiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSBjcmVhcmUgdW5cJ2FyY2hpdmlhemlvbmUgcHJvdGV0dGEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iZWxpbWluYXppb25lIGFyY2hpdmlhemlvbmUgcHJvdGV0dGEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4iQ29uc2VudGUgYWxsXCdhcHBsaWNhemlvbmUgZGkgZWxpbWluYXJlIGxcJ2FyY2hpdmlhemlvbmUgcHJvdGV0dGEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4ibW9udGFnZ2lvL3Ntb250YWdnaW8gYXJjaGl2aWF6aW9uZSBwcm90ZXR0YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSBtb250YXJlL3Ntb250YXJlIGxcJ2FyY2hpdmlhemlvbmUgcHJvdGV0dGEuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJyaW5vbWluYXppb25lIGFyY2hpdmlhemlvbmUgcHJvdGV0dGEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSByaW5vbWluYXJlIGxcJ2FyY2hpdmlhemlvbmUgcHJvdGV0dGEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJyZWN1cGVybyBkaSBpbmZvcm1hemlvbmkgc3VsbFwnYXJjaGl2aWF6aW9uZSBwcm90ZXR0YSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc2OTE2MTYyOTIxNzA1OTAyNDQgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iODgyMDMyNjU1MTY4NzI4NTQzOSI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIG90dGVuZXJlIGluZm9ybWF6aW9uaSBzdWxsXCdhcmNoaXZpYXppb25lIHByb3RldHRhLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4iY3JlYXppb25lIGFyY2hpdmlhemlvbmUgcHJvdGV0dGEiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSBjcmVhcmUgdW5cJ2FyY2hpdmlhemlvbmUgcHJvdGV0dGEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJlbGltaW5hemlvbmUgYXJjaGl2aWF6aW9uZSBwcm90ZXR0YSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJDb25zZW50ZSBhbGxcJ2FwcGxpY2F6aW9uZSBkaSBlbGltaW5hcmUgbFwnYXJjaGl2aWF6aW9uZSBwcm90ZXR0YS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiJtb250YWdnaW8vc21vbnRhZ2dpbyBhcmNoaXZpYXppb25lIHByb3RldHRhIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIG1vbnRhcmUvc21vbnRhcmUgbFwnYXJjaGl2aWF6aW9uZSBwcm90ZXR0YS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+InJpbm9taW5hemlvbmUgYXJjaGl2aWF6aW9uZSBwcm90ZXR0YSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIHJpbm9taW5hcmUgbFwnYXJjaGl2aWF6aW9uZSBwcm90ZXR0YS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3ZpYnJhdGUiIG1zZ2lkPSI3NzY4MzU2MDE5OTgwODQ5NjAzIj4iY29udHJvbGxvIHZpYnJhemlvbmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IkNvbnNlbnRlIGFsbFwnYXBwbGljYXppb25lIGRpIGNvbnRyb2xsYXJlIGxhIHZpYnJhemlvbmUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9mbGFzaGxpZ2h0IiBtc2dpZD0iMjE1NTkyMDgxMDEyMTk4NDIxNSI+ImNvbnRyb2xsbyBmbGFzaCI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4iQ29uc2VudGUgYSB1blwnYXBwbGljYXppb25lIGRpIGxlZ2dlcmUgcGFyb2xlLCBub21pIGUgZnJhc2kgcHJpdmF0ZSBjaGUgbFwndXRlbnRlIHBvdHJlYmJlIGF2ZXIgbWVtb3JpenphdG8gbmVsIGRpemlvbmFyaW8gdXRlbnRlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+InNjcml0dHVyYSBuZWwgZGl6aW9uYXJpbyBkZWZpbml0byBkYWxsXCd1dGVudGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY193cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSIyMjQxMjU2MjA2NTI0MDgyODgwIj4iQ29uc2VudGUgYSB1blwnYXBwbGljYXppb25lIGRpIHNjcml2ZXJlIG51b3ZlIHBhcm9sZSBuZWwgZGl6aW9uYXJpbyB1dGVudGUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJtb2RpZmljYS9lbGltaW5hei4gY29udGVudXRpIGFyY2guIGNvbmQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4ibW9kaWZpY2EvZWxpbWluYXouIGNvbnRlbnV0aSBhcmNoLiBjb25kLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4ibW9kaWZpY2FyZS9lbGltaW5hcmUgaSBjb250ZW51dGkgZGVsbGEgc2NoZWRhIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IkNvbnNlbnRlIGEgdW5cJ2FwcGxpY2F6aW9uZSBkaSBzY3JpdmVyZSBuZWxsXCdhcmNoLiBjb25kLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiJDb25zZW50ZSBhIHVuXCdhcHBsaWNhemlvbmUgZGkgc2NyaXZlcmUgbmVsbFwnYXJjaC4gY29uZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiJDb25zZW50ZSBhIHVuXCdhcHBsaWNhemlvbmUgZGkgc2NyaXZlcmUgc3VsbGEgc2NoZWRhIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiJhY2Nlc3NvIGFsIGZpbGVzeXN0ZW0gbmVsbGEgY2FjaGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IkNvbnNlbnRlIGEgdW5cJ2FwcGxpY2F6aW9uZSBkaSBsZWdnZXJlIGUgc2NyaXZlcmUgaWwgZmlsZXN5c3RlbSBuZWxsYSBjYWNoZS4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iTW9zdHJhIHR1dHRvIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IkFyY2hpdmlhemlvbmUgZGkgbWFzc2EgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iVVNCIGNvbGxlZ2F0YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IklsIHRlbGVmb25vIMOoIHN0YXRvIGNvbGxlZ2F0byBhbCBjb21wdXRlciB0cmFtaXRlIFVTQi4gU2VsZXppb25hIGlsIHB1bHNhbnRlIHNvdHRvc3RhbnRlIHNlIGRlc2lkZXJpIGNvcGlhcmUgZmlsZSB0cmEgaWwgY29tcHV0ZXIgZSBsXCdhcmNoaXZpbyBjb25kaXZpc28gZGkgQW5kcm9pZC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+IklsIHRlbGVmb25vIMOoIHN0YXRvIGNvbGxlZ2F0byBhbCBjb21wdXRlciB0cmFtaXRlIFVTQi4gU2VsZXppb25hIGlsIHB1bHNhbnRlIHNvdHRvc3RhbnRlIHNlIGRlc2lkZXJpIGNvcGlhcmUgZmlsZSB0cmEgaWwgY29tcHV0ZXIgZSBsXCdhcmNoaXZpbyBjb25kaXZpc28gZGkgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IklsIHRlbGVmb25vIMOoIHN0YXRvIGNvbGxlZ2F0byBhbCBjb21wdXRlciB0cmFtaXRlIFVTQi4gU2VsZXppb25hIGlsIHB1bHNhbnRlIHNvdHRvc3RhbnRlIHNlIGRlc2lkZXJpIGNvcGlhcmUgZmlsZSB0cmEgaWwgY29tcHV0ZXIgZSBsYSBzY2hlZGEgU0QgZGkgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iQXR0aXZhIGFyY2hpdmlvIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IlByb2JsZW1hIGRpIHV0aWxpenpvIGRlbGxcJ2FyY2hpdmlvIGNvbmRpdmlzbyBwZXIgbFwnYXJjaGl2aWF6aW9uZSBVU0IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiJQcm9ibGVtYSBkaSB1dGlsaXp6byBkZWxsYSBzY2hlZGEgU0QgcGVyIGxcJ2FyY2hpdmlhemlvbmUgVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IlByb2JsZW1hIGRpIHV0aWxpenpvIGRlbGxcJ2FyY2hpdmlvIGNvbmRpdmlzbyBwZXIgbFwnYXJjaGl2aWF6aW9uZSBVU0IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IlByb2JsZW1hIGRpIHV0aWxpenpvIGRlbGxcJ2FyY2hpdmlvIGNvbmRpdmlzbyBwZXIgbFwnYXJjaGl2aWF6aW9uZSBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IlVTQiBjb2xsZWdhdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJTZWxlemlvbmEgcGVyIGNvcGlhcmUgZmlsZSBzdWwvZGFsIHR1byBjb21wdXRlci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiJEaXNhdHRpdmEgYXJjaGl2aW8gVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjI1OTE4MTM0OTAyNjk4NDE1MzkiPiJTZWxlemlvbmEgcGVyIGRpc2F0dGl2YXJlIGFyY2hpdmlvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iQXJjaGl2aWF6aW9uZSBVU0IgaW4gdXNvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg3NDUzNDUyNjA3ODAyNjcxODUiPiJQcmltYSBkaSBkaXNhdHRpdmFyZSBsXCdhcmNoaXZpYXppb25lIFVTQiwgYXNzaWN1cmF0aSBkaSBhdmVyZSBzbW9udGF0byAoXCJlc3B1bHNvXCIpIGxcJ2FyY2hpdmlvIGNvbmRpdmlzbyBkaSBBbmRyb2lkIGRhbCBjb21wdXRlci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IlByaW1hIGRpIGRpc2F0dGl2YXJlIGxcJ2FyY2hpdmlhemlvbmUgVVNCLCBhc3NpY3VyYXRpIGRpIGF2ZXJlIHNtb250YXRvIChcImVzcHVsc29cIikgbFwnYXJjaGl2aW8gY29uZGl2aXNvIGRpIEFuZHJvaWQgZGFsIGNvbXB1dGVyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiJQcmltYSBkaSBkaXNhdHRpdmFyZSBsXCdhcmNoaXZpYXppb25lIFVTQiwgYXNzaWN1cmF0aSBkaSBhdmVyZSBzbW9udGF0byAoXCJlc3B1bHNvXCIpIGxhIHNjaGVkYSBTRCBkaSBBbmRyb2lkIGRhbCBjb21wdXRlci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiJEaXNhdHRpdmEgYXJjaGl2aWF6aW9uZSBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJTaSDDqCB2ZXJpZmljYXRvIHVuIHByb2JsZW1hIGR1cmFudGUgbGEgZGlzYXR0aXZhemlvbmUgZGVsbFwnYXJjaGl2aWF6aW9uZSBVU0IuIFZlcmlmaWNhIGRpIGF2ZXJlIHNtb250YXRvIGxcJ2hvc3QgVVNCIGUgcmlwcm92YS4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IlNlIGF0dGl2aSBsXCdhcmNoaXZpbyBVU0IsIGFsY3VuZSBhcHBsaWNhemlvbmkgaW4gdXNvIHNpIGJsb2NjaGVyYW5ubyBlIHBvdHJlYmJlcm8gcmlzdWx0YXJlIG5vbiBkaXNwb25pYmlsaSBmaW5jaMOpIG5vbiBkaXNhdHRpdmVyYWkgbFwnYXJjaGl2aW8gVVNCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJPcGVyYXppb25lIFVTQiBub24gcml1c2NpdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4iT0siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU3NzkwODAwNjk0OTc0MjIxNyI+IkZvcm1hdHRhIGFyY2hpdmlvIGNvbmQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjU3NzkwODAwNjk0OTc0MjIxNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc5ODA5OTU1OTI1OTUwOTc4NDEiPiJGb3JtYXR0YSBhcmNoaXZpbyBjb25kLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiJGb3JtYXR0YSBzY2hlZGEgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iRm9ybWF0dGFyZSBsXCdhcmNoaXZpbyBjb25kaXZpc28gY2FuY2VsbGFuZG8gdHV0dGkgaSBmaWxlIG1lbW9yaXp6YXRpIGFsIHN1byBpbnRlcm5vPyBRdWVzdGEgYXppb25lIMOoIGlycmV2ZXJzaWJpbGUuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkZvcm1hdHRhcmUgbFwnYXJjaGl2aW8gY29uZGl2aXNvIGNhbmNlbGxhbmRvIHR1dHRpIGkgZmlsZSBtZW1vcml6emF0aSBhbCBzdW8gaW50ZXJubz8gUXVlc3RhIGF6aW9uZSDDqCBpcnJldmVyc2liaWxlLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYyMTM2OTk2MjQzMzUyMzYxOSI+IkZvcm1hdHRhcmUgbGEgc2NoZWRhIFNEPyBUdXR0aSBpIGRhdGkgc3VsbGEgc2NoZWRhIHZlcnJhbm5vIHBlcnNpLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdHRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRiX2FjdGl2ZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NzI5MDQ0Nzc4OTQ5MTg5OTE4Ij4iRGVidWcgVVNCIGNvbGxlZ2F0byI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ImNhbmRpZGF0aSI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiJQcmVwYXJhemlvbmUgYXJjaGl2aW8gY29uZGl2aXNvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iUHJlcGFyYXppb25lIGFyY2hpdmlvIGNvbmRpdmlzbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1NDU3NjAzNDE4OTcwOTk0MDUwIj4iUHJlcGFyYXppb25lIHNjaGVkYSBTRCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjgyODczMTk4ODI5MjY3MzcwNTMiPiJSaWNlcmNhIGVycm9yaS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IkFyY2hpdmlvIGNvbmRpdmlzbyB2dW90byI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM5MzczNDU1Nzc5ODM3MzA4NzMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3Nzg4MDQwNzQ1Njg2MjI5MzA3Ij4iQXJjaGl2aW8gY29uZGl2aXNvIHZ1b3RvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzgwNDc3ODM4MjQxMjEyOTk3Ij4iU2NoZWRhIFNEIHZ1b3RhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IkFyY2hpdmlvIGNvbmRpdmlzbyB2dW90byBvIGNvbiBmaWxlc3lzdGVtIG5vbiBzdXBwb3J0YXRvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJBcmNoaXZpbyBjb25kaXZpc28gdnVvdG8gbyBjb24gZmlsZXN5c3RlbSBub24gc3VwcG9ydGF0by4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJTY2hlZGEgU0QgdnVvdGEgbyBjb24gZmlsZXN5c3RlbSBub24gc3VwcG9ydGF0by4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiJBcmNoaXZpbyBjb25kaXZpc28gZGFubmVnZ2lhdG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJBcmNoaXZpbyBjb25kaXZpc28gZGFubmVnZ2lhdG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IlNjaGVkYSBTRCBkYW5uZWdnaWF0YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iQXJjaGl2aW8gY29uZGl2aXNvIGRhbm5lZ2dpYXRvLiBQb3RyZWJiZSBlc3NlcmUgbmVjZXNzYXJpbyByaWZvcm1hdHRhcmxvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJBcmNoaXZpbyBjb25kaXZpc28gZGFubmVnZ2lhdG8uIFBvdHJlYmJlIGVzc2VyZSBuZWNlc3NhcmlvIHJpZm9ybWF0dGFybG8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNjaGVkYSBTRCBkYW5uZWdnaWF0YS4gUG90cmViYmUgZXNzZXJlIG5lY2Vzc2FyaW8gcmlmb3JtYXR0YXJsYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IlJpbW96aW9uZSBpbmFzcGV0dGF0YSBhcmNoaXZpbyBjb25kLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iUmltb3ppb25lIGluYXNwZXR0YXRhIGFyY2hpdmlvIGNvbmQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlJpbW96aW9uZSBpbXByZXZpc3RhIGRlbGxhIHNjaGVkYSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiJTbW9udGEgbFwnYXJjaGl2aW8gY29uZGl2aXNvIHByaW1hIGRlbGxhIHJpbW96aW9uZSBwZXIgZXZpdGFyZSBsYSBwZXJkaXRhIGRpIGRhdGkuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+IlNtb250YSBsXCdhcmNoaXZpbyBjb25kaXZpc28gcHJpbWEgZGVsbGEgcmltb3ppb25lIHBlciBldml0YXJlIGxhIHBlcmRpdGEgZGkgZGF0aS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiJTbW9udGEgc2NoZWRhIFNEIHByaW1hIGRlbGxhIHJpbW96aW9uZSBwZXIgZXZpdGFyZSBsYSBwZXJkaXRhIGRpIGRhdGkuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJQdW9pIHJpbXVvdmVyZSBsXCdhcmNoaXZpbyBjb25kLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iUHVvaSByaW11b3ZlcmUgbFwnYXJjaGl2aW8gY29uZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiLDiCBwb3NzaWJpbGUgcmltdW92ZXJlIGxhIHNjaGVkYSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzUwMzc2OTEwNjI4NTE4ODcwMyI+IlB1b2kgcmltdW92ZXJlIGxcJ2FyY2hpdmlvIGNvbmRpdmlzbyBpbiB0dXR0YSBzaWN1cmV6emEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iUHVvaSByaW11b3ZlcmUgbFwnYXJjaGl2aW8gY29uZGl2aXNvIGluIHR1dHRhIHNpY3VyZXp6YS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4iUHVvaSByaW11b3ZlcmUgbGEgc2NoZWRhIFNEIGluIHR1dHRhIHNpY3VyZXp6YS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTg3NDg4OTc2NDM2NzA4NTU2MiI+IkFyY2hpdmlvIGNvbmRpdmlzbyByaW1vc3NvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiJBcmNoaXZpbyBjb25kaXZpc28gcmltb3NzbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJTY2hlZGEgU0Qgcmltb3NzYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiJBcmNoaXZpbyBjb25kaXZpc28gcmltb3Nzby4gSW5zZXJpc2NpIHVuIG51b3ZvIHN1cHBvcnRvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJBcmNoaXZpbyBjb25kaXZpc28gcmltb3Nzby4gSW5zZXJpc2NpIHVuIG51b3ZvIHN1cHBvcnRvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IlNjaGVkYSBTRCByaW1vc3NhLiBJbnNlcmlzY2luZSB1blwnYWx0cmEuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJOZXNzdW5hIGF0dGl2aXTDoCBjb3JyaXNwb25kZW50ZSB0cm92YXRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+ImFnZ2lvcm5hcmUgbGUgc3RhdGlzdGljaGUgZGkgdXRpbGl6em8gZGVpIGNvbXBvbmVudGkiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAppbmRleCBlZTZmY2MxLi41MmUzZmNkIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4i6ZaL55m644OE44O844OrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBruODh+ODmeODreODg+ODkeODvOOBq+OBruOBv+W/heimgeOBquapn+iDveOBp+OBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IuOCueODiOODrOODvOOCuCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4i5YWx5pyJ44K544OI44Os44O844K444G444Gu44Ki44Kv44K744K5Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgbjjga7jgqLjgq/jgrvjgrkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4iU0Tjgqvjg7zjg4njgavjgqLjgq/jgrvjgrnjgZfjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiLjgrnjg4bjg7zjgr/jgrnjg5Djg7zjga7nhKHlirnljJbjgoTlpInmm7QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4i44K544OG44O844K/44K544OQ44O844Gu54Sh5Yq55YyW44KE44K344K544OG44Og44Ki44Kk44Kz44Oz44Gu6L+95Yqg44KE5YmK6Zmk44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4i44Oq44Og44O844OQ44OW44Or44Oh44Oi44Oq44Gu44OV44Kh44Kk44Or44K344K544OG44Og44Gu44Oe44Km44Oz44OI44Go44Oe44Km44Oz44OI6Kej6Zmk44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4i5aSW6YOo44K544OI44Os44O844K444Gu44OV44Kp44O844Oe44OD44OIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4i44Ki44OX44Oq44Kx44O844K344On44Oz44GM44Oq44Og44O844OQ44OW44Or44K544OI44Os44O844K444KS44OV44Kp44O844Oe44OD44OI44GZ44KL44GT44Go44KS6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjkuIrjga7mg4XloLHjga7lj5blvpciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijc2OTE2MTYyOTIxNzA1OTAyNDQiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjkuIrjga7mg4XloLHjga7lj5blvpfjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruS9nOaIkCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruS9nOaIkOOCkuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq+ioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruegtOajhCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7noLTmo4TjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7jg57jgqbjg7Pjg4gv44Oe44Km44Oz44OI6Kej6ZmkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruODnuOCpuODs+ODiC/jg57jgqbjg7Pjg4jop6PpmaTjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOWQjeOBruWkieabtCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMTM4Nzg4MTc3MDcwODg3MjQ3MCI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOWQjeOBruWkieabtOOCkuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq+ioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4i44K744Kt44Ol44Ki44K544OI44Os44O844K45LiK44Gu5oOF5aCx44Gu5Y+W5b6XIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4i44K744Kt44Ol44Ki44K544OI44Os44O844K45LiK44Gu5oOF5aCx44Gu5Y+W5b6X44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7kvZzmiJAiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7kvZzmiJDjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3Nzg3MzIyODc4OTU1MjYxMDA2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjUyNjkyODMyODMwMTYxODAyMiI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruegtOajhCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7noLTmo4TjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiLjgrvjgq3jg6XjgqLjgrnjg4jjg6zjg7zjgrjjga7jg57jgqbjg7Pjg4gv44Oe44Km44Oz44OI6Kej6ZmkIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOOBruODnuOCpuODs+ODiC/jg57jgqbjg7Pjg4jop6PpmaTjgpLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgavoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOWQjeOBruWkieabtCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IuOCu+OCreODpeOCouOCueODiOODrOODvOOCuOWQjeOBruWkieabtOOCkuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq+ioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiLjg5DjgqTjg5bjg6zjg7zjgrfjg6fjg7PliLblvqEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IuODkOOCpOODluODrOODvOOCt+ODp+ODs+OBruWItuW+oeOCkuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq+ioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiLjg6njgqTjg4jjga7jgrPjg7Pjg4jjg63jg7zjg6siPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBjOWNmOiqnuODquOCueODiOOBq+eZu+mMsuOBleOCjOOBpuOBhOOCi+WAi+S6uueahOOBquiqnuWPpeOChOWQjeWJjeOCkuiqreOBv+i+vOOCgOOBk+OBqOOCkuioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+IuWNmOiqnuODquOCueODiOOBuOOBruabuOOBjei+vOOBvyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiLjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgYzljZjoqp7jg6rjgrnjg4jjgavmlrDjgZfjgYToqp7lj6XjgpLmm7jjgY3ovrzjgoDjgZPjgajjgpLoqLHlj6/jgZfjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+IuWFseacieOCueODiOODrOODvOOCuOOBruOCs+ODs+ODhuODs+ODhOOBruWkieabtC/liYrpmaQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjga7jgrPjg7Pjg4bjg7Pjg4Tjga7lpInmm7Qv5YmK6ZmkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiJTROOCq+ODvOODieOBruOCs+ODs+ODhuODs+ODhOOCkuS/ruatoy/liYrpmaTjgZnjgosiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4i5YWx5pyJ44K544OI44Os44O844K444G444Gu5pu444GN6L6844G/44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IuWFseacieOCueODiOODrOODvOOCuOOBuOOBruabuOOBjei+vOOBv+OCkuOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq+ioseWPr+OBl+OBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjY0Mzk2MzIwNDk3NjQ3MTg3OCI+IlNE44Kr44O844OJ44G444Gu5pu444GN6L6844G/44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iNTY1NjQ4NzI2NDgxOTY2OTgyNCI+IuOCreODo+ODg+OCt+ODpeODleOCoeOCpOODq+OCt+OCueODhuODoOOBq+OCouOCr+OCu+OCuSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSIxNjI0NzM0NTI4NDM1NjU5OTA2Ij4i44Kt44Oj44OD44K344Ol44OV44Kh44Kk44Or44K344K544OG44Og44G444Gu6Kqt44G/5pu444GN44KS44Ki44OX44Oq44Kx44O844K344On44Oz44Gr6Kix5Y+v44GX44G+44GZ44CCIjwvc3RyaW5nPgpAQCAtODAyLDE3ICs4MDIsMTcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1zX3Nob3dfYWxsIiBtc2dpZD0iMjY3MTc5MTE2MzkzMzA5MTE4MCI+PGI+IuOBmeOBueOBpuihqOekuiI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiJVU0Ljg57jgrnjgrnjg4jjg6zjg7zjgrgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0LmjqXntpoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiLmkLrluK/nq6/mnKvjgpJVU0Ljgafjg5Hjgr3jgrPjg7PjgavmjqXntprjgZfjgabjgYTjgb7jgZnjgILjg5Hjgr3jgrPjg7PjgahBbmRyb2lk44Gu5YWx5pyJ44K544OI44Os44O844K46ZaT44Gn44OV44Kh44Kk44Or44KS44Kz44OU44O844GZ44KL44Gr44Gv44CB5LiL44Gu44Oc44K/44Oz44KS6YG45oqe44GX44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiLmkLrluK/nq6/mnKvjgpJVU0Ljgafjg5Hjgr3jgrPjg7PjgavmjqXntprjgZfjgabjgYTjgb7jgZnjgILjg5Hjgr3jgrPjg7PjgahBbmRyb2lk44Gu5YWx5pyJ44K544OI44Os44O844K46ZaT44Gn44OV44Kh44Kk44Or44KS44Kz44OU44O844GZ44KL44Gr44Gv44CB5LiL44Gu44Oc44K/44Oz44KS6YG45oqe44GX44G+44GZ44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiLmkLrluK/pm7voqbHjgpJVU0Ljgafjg5Hjgr3jgrPjg7PjgavmjqXntprjgZfjgabjgYTjgb7jgZnjgILjg5Hjgr3jgrPjg7PjgahBbmRyb2lk44GuU0Tjgqvjg7zjg4nplpPjgafjg5XjgqHjgqTjg6vjgpLjgrPjg5Tjg7zjgZnjgovjgavjga/jgIHkuIvjga7jg5zjgr/jg7PjgpLpgbjmip7jgZfjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iVVNC44K544OI44Os44O844K444KST07jgavjgZnjgosiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgpJVU0Ljgrnjg4jjg6zjg7zjgrjjgajjgZfjgabkvb/nlKjjgZnjgovpmpvjgavllY/poYzjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IlVTQuODoeODouODquOBq1NE44Kr44O844OJ44KS5L2/55So44GZ44KL6Zqb44Gr5ZWP6aGM44GM55m655Sf44GX44G+44GX44Gf44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzMjc2NDEzNzY0NDMwNDY4NDU0Ij4i5YWx5pyJ44K544OI44Os44O844K444KSVVNC44K544OI44Os44O844K444Go44GX44Gm5L2/55So44GZ44KL6Zqb44Gr5ZWP6aGM44GM55m655Sf44GX44G+44GX44Gf44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IuWFseacieOCueODiOODrOODvOOCuOOCklVTQuOCueODiOODrOODvOOCuOOBqOOBl+OBpuS9v+eUqOOBmeOCi+mam+OBq+WVj+mhjOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0LmjqXntpoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiLjg5Hjgr3jgrPjg7Pjgajjga7plpPjgafjg5XjgqHjgqTjg6vjgpLjgrPjg5Tjg7zjgZfjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiJVU0Ljgrnjg4jjg6zjg7zjgrjjgpJPRkbjgavjgZnjgosiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IlVTQuOCueODiOODrOODvOOCuOOCkk9GRuOBq+OBmeOCi+WgtOWQiOOBq+mBuOaKnuOBl+OBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfdGl0bGUiIG1zZ2lkPSI2NjAxMjk4NTE3MDg3NzU4NTMiPiJVU0Ljgrnjg4jjg6zjg7zjgrjjgpLkvb/nlKjkuK0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+IlVTQuOCueODiOODrOODvOOCuOOCkk9GRuOBq+OBmeOCi+WJjeOBq+OAgeODkeOCveOCs+ODs+OBp+W/heOBmkFuZHJvaWTjga7lhbHmnInjgrnjg4jjg6zjg7zjgrjjga7jg57jgqbjg7Pjg4jjgpLop6PpmaTjgZfjgabvvIjjgrnjg4jjg6zjg7zjgrjjgpLlj5bjgorlh7rjgZfjgabvvInjgY/jgaDjgZXjgYTjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IlVTQuOCueODiOODrOODvOOCuOOCkk9GRuOBq+OBmeOCi+WJjeOBq+OAgeODkeOCveOCs+ODs+OBp+W/heOBmkFuZHJvaWTjga7lhbHmnInjgrnjg4jjg6zjg7zjgrjjga7jg57jgqbjg7Pjg4jjgpLop6PpmaTjgZfjgabvvIjjgrnjg4jjg6zjg7zjgrjjgpLlj5bjgorlh7rjgZfjgabvvInjgY/jgaDjgZXjgYTjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iVVNC44K544OI44Os44O844K444KST0ZG44Gr44GZ44KL5YmN44Gr44CB44OR44K944Kz44Oz44Gn5b+F44GaQW5kcm9pZOOBrlNE44Kr44O844OJ44Gu44Oe44Km44Oz44OI44KS6Kej6Zmk44GX44Gm77yI44Kr44O844OJ44KS5Y+W44KK5Ye644GX44Gm77yJ44GP44Gg44GV44GE44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iVVNC44K544OI44Os44O844K444KST0ZG44Gr44GZ44KLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMTQzODgxOTE0ODQwNDEyMTA4Ij4iVVNC44K544OI44Os44O844K444KST0ZG44Gr44GZ44KL6Zqb44Gr5ZWP6aGM44GM55m655Sf44GX44G+44GX44Gf44CCVVNC44Ob44K544OI44Gu44Oe44Km44Oz44OI44GM6Kej6Zmk44GV44KM44Gm44GE44KL44GT44Go44KS56K66KqN44GX44Gm44GL44KJ44KC44GG5LiA5bqm44GK6Kmm44GX44GP44Gg44GV44GE44CCIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiJVU0Ljgrnjg4jjg6zjg7zjgrjjgpJPTuOBq+OBmeOCi+OBqOOAgeS9v+eUqOS4reOBruOCouODl+ODquOCseODvOOCt+ODp+ODs+OBruS4gOmDqOOBjOWBnOatouOBl+OAgVVTQuOCueODiOODrOODvOOCuOOCkk9GRuOBq+OBmeOCi+OBvuOBp+S9v+eUqOOBp+OBjeOBquOBj+OBquOCi+WgtOWQiOOBjOOBguOCiuOBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJVU0Lmk43kvZzjgavlpLHmlZfjgZfjgb7jgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4iT0siPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU3NzkwODAwNjk0OTc0MjIxNyI+IuWFseacieOCueODiOODrOODvOOCuOOBruODleOCqeODvOODnuODg+ODiCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4i5YWx5pyJ44K544OI44Os44O844K444Gu44OV44Kp44O844Oe44OD44OIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IlNE44Kr44O844OJ44KS44OV44Kp44O844Oe44OD44OIIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IuWFseacieOCueODiOODrOODvOOCuOOCkuODleOCqeODvOODnuODg+ODiOOBl+OBpuOAgeS/neWtmOOBleOCjOOBpuOBhOOCi+OBmeOBueOBpuOBruODleOCoeOCpOODq+OCkua2iOWOu+OBl+OBvuOBmeOBi++8n+OBk+OBruaTjeS9nOOBr+WFg+OBq+aIu+OBm+OBvuOBm+OCk+OAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgpLjg5Xjgqnjg7zjg57jg4Pjg4jjgZfjgabjgIHkv53lrZjjgZXjgozjgabjgYTjgovjgZnjgbnjgabjga7jg5XjgqHjgqTjg6vjgpLmtojljrvjgZfjgb7jgZnjgYvvvJ/jgZPjga7mk43kvZzjga/lhYPjgavmiLvjgZvjgb7jgZvjgpPjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiJTROOCq+ODvOODieOCkuODleOCqeODvOODnuODg+ODiOOBl+OBpuOCguOCiOOCjeOBl+OBhOOBp+OBmeOBi++8n+OCq+ODvOODieWGheOBruOBmeOBueOBpuOBruODh+ODvOOCv+OBjOWkseOCj+OCjOOBvuOBmeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IuODleOCqeODvOODnuODg+ODiCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IlVTQuODh+ODkOODg+OCsOOBjOaOpee2muOBleOCjOOBvuOBl+OBnyI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+IuWAmeijnCI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjga7mupblgpnkuK0iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjga7mupblgpnkuK0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlNE44Kr44O844OJ44Gu5rqW5YKZ5LitIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IuOCqOODqeODvOOCkueiuuiqjeOBl+OBpuOBhOOBvuOBmeOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4i5YWx5pyJ44K544OI44Os44O844K444GM56m644Gn44GZIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYznqbrjgafjgZkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiLnqbrjga5TROOCq+ODvOODiSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYznqbrjgafjgYLjgovjgYvjgIHjgrXjg53jg7zjg4jjgZXjgozjgabjgYTjgarjgYTjg5XjgqHjgqTjg6vjgrfjgrnjg4bjg6DjgpLkvb/nlKjjgZfjgabjgYTjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNjA2NjYwNzU2MTI0NjI5NzA4IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NjIzMTMwNTIyNTU2MDg3MzExIj4i5YWx5pyJ44K544OI44Os44O844K444GM56m644Gn44GC44KL44GL44CB44K144Od44O844OI44GV44KM44Gm44GE44Gq44GE44OV44Kh44Kk44Or44K344K544OG44Og44KS5L2/55So44GX44Gm44GE44G+44GZ44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iU0Tjgqvjg7zjg4njgYznqbrjgYvjgIHjgrXjg53jg7zjg4jlr77osaHlpJbjga7jg5XjgqHjgqTjg6vjgrfjgrnjg4bjg6DjgpLkvb/nlKjjgZfjgabjgYTjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYznoLTmkI3jgZfjgabjgYTjgb7jgZkiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYznoLTmkI3jgZfjgabjgYTjgb7jgZkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IuegtOaQjeOBl+OBn1NE44Kr44O844OJIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYznoLTmkI3jgZfjgabjgYTjgb7jgZnjgILjgrnjg4jjg6zjg7zjgrjjga7lho3jg5Xjgqnjg7zjg57jg4Pjg4jjgYzlv4XopoHjgarlj6/og73mgKfjgYzjgYLjgorjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4i5YWx5pyJ44K544OI44Os44O844K444GM56C05pCN44GX44Gm44GE44G+44GZ44CC44K544OI44Os44O844K444Gu5YaN44OV44Kp44O844Oe44OD44OI44GM5b+F6KaB44Gq5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNE44Kr44O844OJ44GM56C05pCN44GX44Gm44GE44G+44GZ44CC44Kr44O844OJ44Gu44OV44Kp44O844Oe44OD44OI44GM5b+F6KaB44Gq5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYzkuI3pganliIfjgavlj5bjgorlpJbjgZXjgozjgb7jgZfjgZ8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNTgyMTc1MDE2MDYwNDMyMDM0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTY2MTY4MzAzMTMzMDk1MTA3MyI+IuWFseacieOCueODiOODrOODvOOCuOOBjOS4jemBqeWIh+OBq+WPluOCiuWkluOBleOCjOOBvuOBl+OBnyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY4NzIxNTI4ODI2MDQ0MDc4MzciPiJTROOCq+ODvOODieOBjOS6iOacn+OBm+OBmuWPluOCiuWkluOBleOCjOOBvuOBl+OBnyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiLjg4fjg7zjgr/jga7llqrlpLHjgpLpmLLjgZDjgZ/jgoHlhbHmnInjgrnjg4jjg6zjg7zjgrjjgpLlj5bjgorlpJbjgZnliY3jgavjg57jgqbjg7Pjg4jjgpLop6PpmaTjgZfjgabjgY/jgaDjgZXjgYTjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4i44OH44O844K/44Gu5Zaq5aSx44KS6Ziy44GQ44Gf44KB5YWx5pyJ44K544OI44Os44O844K444KS5Y+W44KK5aSW44GZ5YmN44Gr44Oe44Km44Oz44OI44KS6Kej6Zmk44GX44Gm44GP44Gg44GV44GE44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3MjYwMTgzMjkzNzQ3NDQ4MjQxIj4i44OH44O844K/44Gu5Zaq5aSx44KS6Ziy44GQ44Gf44KBU0Tjgqvjg7zjg4njgpLlj5bjgorlpJbjgZnliY3jgavjg57jgqbjg7Pjg4jjgpLop6PpmaTjgZfjgabjgY/jgaDjgZXjgYTjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNjUyNTg4MTAxODY3OTUxNSI+IuWFseacieOCueODiOODrOODvOOCuOOBruWuieWFqOOBquWPluOCiuWkluOBlyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4i5YWx5pyJ44K544OI44Os44O844K444Gu5a6J5YWo44Gq5Y+W44KK5aSW44GXIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iU0Tjgqvjg7zjg4njgpLlronlhajjgavlj5bjgorlpJbjgZfjgb7jgZfjgZ8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgpLlronlhajjgavlj5bjgorlpJbjgZvjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgpLlronlhajjgavlj5bjgorlpJbjgZvjgb7jgZnjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4iU0Tjgqvjg7zjg4njga/lronlhajjgavlj5bjgorlpJbjgZvjgb7jgZnjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTg3NDg4OTc2NDM2NzA4NTU2MiI+IuWFseacieOCueODiOODrOODvOOCuOOBjOWPluOCiuWkluOBleOCjOOBpuOBhOOBvuOBmSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4i5YWx5pyJ44K544OI44Os44O844K444GM5Y+W44KK5aSW44GV44KM44Gm44GE44G+44GZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IlNE44Kr44O844OJ44GM5Y+W44KK5aSW44GV44KM44Gm44GE44G+44GZIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IuWFseacieOCueODiOODrOODvOOCuOOBjOWPluOCiuWkluOBleOCjOOBpuOBhOOBvuOBmeOAguaWsOOBl+OBhOODoeODh+OCo+OCouOCkuaMv+WFpeOBl+OBpuOBj+OBoOOBleOBhOOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiLlhbHmnInjgrnjg4jjg6zjg7zjgrjjgYzlj5bjgorlpJbjgZXjgozjgabjgYTjgb7jgZnjgILmlrDjgZfjgYTjg6Hjg4fjgqPjgqLjgpLmjL/lhaXjgZfjgabjgY/jgaDjgZXjgYTjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJTROOCq+ODvOODieOBjOWPluOCiuWkluOBleOCjOOBvuOBl+OBn+OAguaWsOOBl+OBhOOCq+ODvOODieOCkuaMv+WFpeOBl+OBpuOBj+OBoOOBleOBhOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4i5LiA6Ie044GZ44KL44Ki44Kv44OG44Kj44OT44OG44Kj44GM6KaL44Gk44GL44KK44G+44Gb44KTIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+IuOCs+ODs+ODneODvOODjeODs+ODiOS9v+eUqOeKtuazgeOBq+mWouOBmeOCi+e1seioiOaDheWgseOBruabtOaWsCI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCmluZGV4IDQ4MDk4YmMuLjRjMjI5NzUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiLqsJzrsJwg64+E6rWsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IuyVoO2UjOumrOy8gOydtOyFmCDqsJzrsJzsnpDsl5Dqsozrp4wg7ZWE7JqU7ZWcIOq4sOuKpeyeheuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiLsoIDsnqUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+IuqzteycoCDsoIDsnqXsmqnrn4nsl5Ag7JWh7IS47Iqk7ZWp64uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4i6rO17JygIOyggOyepeyaqeufieyXkCDslaHshLjsiqTtlanri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+IlNEIOy5tOuTnOyXkCDslaHshLjsiqTtlanri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zdGF0dXNCYXIiIG1zZ2lkPSI3NDE3MTkyNjI5NjAxODkwNzkxIj4i7IOB7YOcIO2RnOyLnOykhCDsgqzsmqkg7KSR7KeAIOuYkOuKlCDsiJjsoJUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4i7JWg7ZSM66as7LyA7J207IWY7J20IOyDge2DnCDtkZzsi5zspITsnYQg7IKs7JqpIOykkeyngO2VmOqxsOuCmCDsi5zsiqTthZwg7JWE7J207L2Y7J2EIOy2lOqwgCDrsI8g7KCc6rGw7ZWgIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDsnbTrj5nsi50g7KCA7J6l7IaM7J2YIO2MjOydvCDsi5zsiqTthZzsnYQg66eI7Jq07Yq47ZWY6rOgIOuniOyatO2KuCDtlbTsoJztlaAg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4i7Jm467aAIOyggOyepeyGjCDtj6zrp7ciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NzQwNjAwNDQ5MDYwNDczODYiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg7J2064+Z7IudIOyggOyepeyGjOulvCDtj6zrp7ftlaAg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiLrs7TslYgg7KCA7J6l7IaM7JeQIOuMgO2VnCDsoJXrs7Qg6rCA7KC47Jik6riwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4i7JWg7ZSM66as7LyA7J207IWY7J20IOuztOyViCDsoIDsnqXshozsnZgg7KCV67O066W8IOqwgOyguOyYrCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+IuuztOyViCDsoIDsnqXshowg66eM65Ok6riwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MDQxODAyMzIyNzU5MDE0MDM1Ij4i7JWg7ZSM66as7LyA7J207IWY7J20IOuztOyViCDsoIDsnqXshozrpbwg66eM65OkIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+IuuztOyViCDsoIDsnqXshowg7KCc6rGwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iNTc0MDc1NDExNDk2Nzg5MzE2OSI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDrs7TslYgg7KCA7J6l7IaM66W8IOygnOqxsO2VoCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLrs7TslYgg7KCA7J6l7IaMIOuniOyatO2KuC/rp4jsmrTtirgg7ZW07KCcIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDrs7TslYgg7KCA7J6l7IaM66W8IOuniOyatO2KuC/rp4jsmrTtirgg7ZW07KCc7ZWgIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4i67O07JWIIOyggOyepeyGjCDsnbTrpoQg67CU6r646riwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4i7JWg7ZSM66as7LyA7J207IWY7J20IOuztOyViCDsoIDsnqXshozsnZgg7J2066aE7J2EIOuwlOq/gCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+IuuztOyViCDsoIDsnqXshozsl5Ag64yA7ZWcIOygleuztCDqsIDsoLjsmKTquLAiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg67O07JWIIOyggOyepeyGjOydmCDsoJXrs7Trpbwg6rCA7KC47JisIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4i67O07JWIIOyggOyepeyGjCDrp4zrk6TquLAiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg67O07JWIIOyggOyepeyGjOulvCDrp4zrk6Qg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiLrs7TslYgg7KCA7J6l7IaMIOygnOqxsCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg67O07JWIIOyggOyepeyGjOulvCDsoJzqsbDtlaAg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4i67O07JWIIOyggOyepeyGjCDrp4jsmrTtirgv66eI7Jq07Yq4IO2VtOygnCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0MzgwNzgxMjE3MTg3Mzg2MjUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU5MzQzNzU1OTAxODkzNjgyMDAiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg67O07JWIIOyggOyepeyGjOulvCDrp4jsmrTtirgv66eI7Jq07Yq4IO2VtOygnO2VoCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+IuuztOyViCDsoIDsnqXshowg7J2066aEIOuwlOq+uOq4sCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDrs7TslYgg7KCA7J6l7IaM7J2YIOydtOumhOydhCDrsJTqv4Ag7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl92aWJyYXRlIiBtc2dpZD0iNzc2ODM1NjAxOTk4MDg0OTYwMyI+IuynhOuPmSDsoJzslrQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDsp4Trj5nsnYQg7KCc7Ja07ZWgIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiLsubTrqZTrnbwg7ZSM656Y7IucIOygnOyWtCI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4i7JWg7ZSM66as7LyA7J207IWY7J20IOyCrOyaqeyekCDsgqzsoITsl5Ag67O06rSA65CY7Ja0IOyeiOuKlCDruYTqs7XqsJwg64uo7Ja0LCDsnbTrpoQg67CPIOq1rOusuOydhCDsnb3rj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+IuyCrOyaqeyekOygleydmCDsgqzsoITsl5Ag7J6R7ISxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDsgqzsmqnsnpAg7IKs7KCE7JeQIOyDiCDri6jslrTrpbwg7J6F66Cl7ZWgIOyImCDsnojrj4TroZ0g7ZWp64uI64ukLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iOTkzNzA3NDM2OTQxMDE2OTEzIj4i6rO17JygIOyggOyepeyaqeufiSDsvZjthZDsuKAg7IiY7KCVL+yCreygnCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDk5MzcwNzQzNjk0MTAxNjkxMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NTQzMDg3NjMxMDc2NDc1MiI+IuqzteycoCDsoIDsnqXsmqnrn4kg7L2Y7YWQ7LigIOyImOyglS/sgq3soJwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+IlNEIOy5tOuTnCDsvZjthZDsuKAg7IiY7KCVL+yCreygnCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQg6rO17JygIOyggOyepeyaqeufieyXkCDsk7gg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDqs7XsnKAg7KCA7J6l7Jqp65+J7JeQIOyTuCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiLslaDtlIzrpqzsvIDsnbTshZjsnbQgU0Qg7Lm065Oc7JeQIOyTuCDsiJgg7J6I64+E66GdIO2VqeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSI1NjU2NDg3MjY0ODE5NjY5ODI0Ij4i7LqQ7IucIO2MjOydvOyLnOyKpO2FnCDslaHshLjsiqQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IuyVoO2UjOumrOy8gOydtOyFmOydtCDsupDsi5wg7YyM7J287Iuc7Iqk7YWc7J2EIOydveqzoCDsk7gg7IiYIOyeiOuPhOuhnSDtlanri4jri6QuIjwvc3RyaW5nPgpAQCAtODAyLDE3ICs4MDIsMTcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1zX3Nob3dfYWxsIiBtc2dpZD0iMjY3MTc5MTE2MzkzMzA5MTE4MCI+PGI+IuuqqOuRkCDtkZzsi5wiPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iVVNCIOuMgOyaqeufiSDsoIDsnqXshowiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0Ig7Jew6rKw65CoIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4MjMxNDYyNzUwMDEwMDY2ODk2Ij4iVVNC66W8IO2Gte2VtCDtnLTrjIDsoITtmZTrpbwg7Lu07ZOo7YSw7JeQIOyXsOqysO2WiOyKteuLiOuLpC4g7Lu07ZOo7YSw7JmAIEFuZHJvaWTsnZgg6rO17JygIOyggOyepeyaqeufiSDqsITsl5Ag7YyM7J287J2EIOuzteyCrO2VmOugpOuptCDslYTrnpjsnZgg67KE7Yq87J2EIOyEoO2Dne2VmOyEuOyalC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+IlVTQuulvCDthrXtlbQg7Zy064yA7KCE7ZmU66W8IOy7tO2TqO2EsOyXkCDsl7DqsrDtlojsirXri4jri6QuIOy7tO2TqO2EsOyZgCBBbmRyb2lk7J2YIOqzteycoCDsoIDsnqXsmqnrn4kg6rCE7JeQIO2MjOydvOydhCDrs7XsgqztlZjroKTrqbQg7JWE656Y7J2YIOuyhO2KvOydhCDshKDtg53tlZjshLjsmpQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiJVU0Lrpbwg7Ya17ZW0IO2ctOuMgOyghO2ZlOulvCDsu7Ttk6jthLDsl5Ag7Jew6rKw7ZaI7Iq164uI64ukLiDsu7Ttk6jthLDsmYAgQW5kcm9pZOydmCBTRCDsubTrk5wg6rCE7JeQIO2MjOydvOydhCDrs7XsgqztlZjroKTrqbQg7JWE656Y7J2YIOuyhO2KvOydhCDshKDtg53tlZjshLjsmpQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYnV0dG9uX21vdW50IiBtc2dpZD0iMTA1MjI1OTkzMDM2OTUwODIzNSI+IlVTQiDsoIDsnqXshowg7IKs7JqpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0ODE4MzQ3NzU2NDAyNzQwMjYxIj4iVVNCIOyggOyepeyGjOuhnCDqs7XsnKAg7KCA7J6l7Jqp65+J7J2EIOyCrOyaqe2VmOuKlCDrj5nslYgg66y47KCc6rCAIOuwnOyDne2WiOyKteuLiOuLpC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IlVTQiDsoIDsnqXshozroZwgU0Qg7Lm065Oc66W8IOyCrOyaqe2VmOuKlCDrj5nslYgg66y47KCc6rCAIOuwnOyDne2WiOyKteuLiOuLpC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiJVU0Ig7KCA7J6l7IaM66GcIOqzteycoCDsoIDsnqXsmqnrn4nsnYQg7IKs7Jqp7ZWY64qUIOuPmeyViCDrrLjsoJzqsIAg67Cc7IOd7ZaI7Iq164uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJVU0Ig7KCA7J6l7IaM66GcIOqzteycoCDsoIDsnqXsmqnrn4nsnYQg7IKs7Jqp7ZWY64qUIOuPmeyViCDrrLjsoJzqsIAg67Cc7IOd7ZaI7Iq164uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0Ig7Jew6rKw65CoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4i7Lu07ZOo7YSw7JeQIO2MjOydvOydhCDrs7XsgqztlZjqsbDrgpgg7Lu07ZOo7YSw7J2YIO2MjOydvOydhCDrs7XsgqztlZjroKTrqbQg7ISg7YOd7ZWp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IlVTQiDsoIDsnqXshowg64GE6riwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjI1OTE4MTM0OTAyNjk4NDE1MzkiPiJVU0Ig7KCA7J6l7IaMIOuBhOq4sOulvCDshKDtg53tlZjshLjsmpQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IlVTQiDsoIDsnqXshowg7IKs7JqpIOykkSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iVVNCIOyggOyepeyGjOulvCDsgqzsmqntlZjsp4Ag7JWK64+E66GdIOyEpOygle2VmOq4sCDsoITsl5Ag7Lu07ZOo7YSw7JeQ7IScIEFuZHJvaWTsnZgg6rO17JygIOyggOyepeyaqeufieydhCDrp4jsmrTtirgg7ZW07KCc7ZaI64qU7KeAKOq6vOuDiOuKlOyngCkg7ZmV7J247ZWY7Iuc6riwIOuwlOuejeuLiOuLpC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IlVTQiDsoIDsnqXshozrpbwg7IKs7Jqp7ZWY7KeAIOyViuuPhOuhnSDshKTsoJXtlZjquLAg7KCE7JeQIOy7tO2TqO2EsOyXkOyEnCBBbmRyb2lk7J2YIOqzteycoCDsoIDsnqXsmqnrn4nsnYQg66eI7Jq07Yq4IO2VtOygnO2WiOuKlOyngCjqurzrg4jripTsp4ApIO2ZleyduO2VmOyLnOq4sCDrsJTrno3ri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IlVTQiDsoIDsnqXshozrpbwg7IKs7Jqp7ZWY7KeAIOyViuuPhOuhnSDshKTsoJXtlZjquLAg7KCE7JeQIOy7tO2TqO2EsOyXkOyEnCBBbmRyb2lk7J2YIFNEIOy5tOuTnOulvCDrp4jsmrTtirgg7ZW07KCc7ZaI64qU7KeAKOq6vOuDiOuKlOyngCkg7ZmV7J247ZWY7Iuc6riwIOuwlOuejeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiJVU0Ig7KCA7J6l7IaMIOyCrOyaqSDslYjtlagiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJVU0Ig7KCA7J6l7IaM66W8IOyCrOyaqe2VmOyngCDslYrrj4TroZ0g7ISk7KCV7ZWY64qUIOuPmeyViCDrrLjsoJzqsIAg67Cc7IOd7ZaI7Iq164uI64ukLiBVU0Ig7Zi47Iqk7Yq47JmAIOyXsOqysOydhCDtlbTsoJztlojripTsp4Ag7ZmV7J247ZWcIOuLpOydjCDri6Tsi5wg7Iuc64+E7ZWY7IS47JqULiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4iVVNCIOyggOyepeyGjOulvCDsgqzsmqkg7ISk7KCV7ZWY66m0IOyCrOyaqSDspJHsnbgg7J2867aAIOyVoO2UjOumrOy8gOydtOyFmOydtCDspJHsp4DrkJjqs6AgVVNCIOyggOyepeyGjOulvCDsgqzsmqkg7KSR7KeA7ZWgIOuVjOq5jOyngCDsgqzsmqntlaAg7IiYIOyXhuqyjCDrkKnri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+IlVTQiDsnpHsl4Ug7Iuk7YyoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Iu2ZleyduCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4i6rO17JygIOyggOyepeyaqeufiSDtj6zrp7ciPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IuqzteycoCDsoIDsnqXsmqnrn4kg7Y+s66e3Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IlNEIOy5tOuTnCDtj6zrp7ciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4i6rO17JygIOyggOyepeyaqeufieydhCDtj6zrp7ftlZjsl6wg7KCA7J6l65CcIO2MjOydvOydhCDrqqjrkZAg7KeA7Jqw7Iuc6rKg7Iq164uI6rmMPyDsi6Ttlonst6jshoztlaAg7IiYIOyXhuuKlCDsnpHsl4XsnoXri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IuqzteycoCDsoIDsnqXsmqnrn4nsnYQg7Y+s66e37ZWY7JesIOyggOyepeuQnCDtjIzsnbzsnYQg66qo65GQIOyngOyasOyLnOqyoOyKteuLiOq5jD8g7Iuk7ZaJ7Leo7IaM7ZWgIOyImCDsl4bripQg7J6R7JeF7J6F64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYyMTM2OTk2MjQzMzUyMzYxOSI+IlNEIOy5tOuTnOulvCDtj6zrp7ftlZjsi5zqsqDsirXri4jquYw/IO2PrOunt+2VmOuptCDsubTrk5zsnZgg66qo65OgIOuNsOydtO2EsOulvCDsnoPqsowg65Cp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+Iu2PrOuntyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IlVTQiDrlJTrsoTquYUg7Jew6rKw65CoIjwvc3RyaW5nPgpAQCAtODMxLDI4ICs4MzEsMjggQEAKICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX2FscGhhYmV0IiBtc2dpZD0iNTQzMzI3NTQ4NTQ5OTAzOTE5OSI+IiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX251bWVyaWNfYWxwaGFiZXQiIG1zZ2lkPSI0MDMwMTcwNTI0NTk1MTIzNjEwIj4iIDAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNhbmRpZGF0ZXNfc3R5bGUiIG1zZ2lkPSI0MzMzOTEzMDg5NjM3MDYyMjU3Ij48dT4i6rCA64ql7ZWcIOybkOyduCI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiLqs7XsnKAg7KCA7J6l7Jqp65+JIOykgOu5hCDspJEiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiLqs7XsnKAg7KCA7J6l7Jqp65+JIOykgOu5hCDspJEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlNEIOy5tOuTnCDspIDruYQg7KSRIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IuyYpOulmCDtmZXsnbgg7KSR7J6F64uI64ukLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4i6rO17JygIOyggOyepeyaqeufiSDruYTslrQg7J6I7J2MIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiLqs7XsnKAg7KCA7J6l7Jqp65+JIOu5hOyWtCDsnojsnYwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiLruYggU0Qg7Lm065OcIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IuqzteycoCDsoIDsnqXsmqnrn4nsnbQg67mE7Ja0IOyeiOqxsOuCmCDsp4Dsm5DrkJjsp4Ag7JWK64qUIO2MjOydvCDsi5zsiqTthZzsnYQg7IKs7Jqp7ZWp64uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiLqs7XsnKAg7KCA7J6l7Jqp65+J7J20IOu5hOyWtCDsnojqsbDrgpgg7KeA7JuQ65CY7KeAIOyViuuKlCDtjIzsnbwg7Iuc7Iqk7YWc7J2EIOyCrOyaqe2VqeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJTRCDsubTrk5zqsIAg67mE7Ja0IOyeiOqxsOuCmCDsp4Dsm5DrkJjsp4Ag7JWK64qUIO2MjOydvCDsi5zsiqTthZzsnYQg7IKs7Jqp7ZWp64uI64ukLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+IuqzteycoCDsoIDsnqXsmqnrn4kg7IaQ7IOB65CoIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4i6rO17JygIOyggOyepeyaqeufiSDshpDsg4HrkKgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IuyGkOyDgeuQnCBTRCDsubTrk5wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjQ2MDMxMTgzNTEzMDY3MTE5NCI+IuqzteycoCDsoIDsnqXsmqnrn4nsnbQg7IaQ7IOB65CY7JeI7Iq164uI64ukLiDri6Tsi5wg7Y+s66e37ZW07JW8IO2VoCDsiJjrj4Qg7J6I7Iq164uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiLqs7XsnKAg7KCA7J6l7Jqp65+J7J20IOyGkOyDgeuQmOyXiOyKteuLiOuLpC4g64uk7IucIO2PrOunt+2VtOyVvCDtlaAg7IiY64+EIOyeiOyKteuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iU0Qg7Lm065Oc6rCAIOyGkOyDgeuQmOyXiOyKteuLiOuLpC4g7Lm065Oc66W8IOuLpOyLnCDtj6zrp7ftlbTslbwg7ZWgIOyImCDsnojsirXri4jri6QuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiLqs7XsnKAg7KCA7J6l7Jqp65+J7J20IOyYiOq4sOy5mCDrqrvtlZjqsowg7KCc6rGw65CoIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiLqs7XsnKAg7KCA7J6l7Jqp65+J7J20IOyYiOq4sOy5mCDrqrvtlZjqsowg7KCc6rGw65CoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlNEIOy5tOuTnOqwgCDsmIjsg4HsuZgg7JWK6rKMIOygnOqxsOuQmOyXiOyKteuLiOuLpC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4i642w7J207YSwIOyGkOyLpOydhCDtlLztlZjroKTrqbQg6rO17JygIOyggOyepeyaqeufieydhCDsoJzqsbDtlZjquLAg7KCE7JeQIOuniOyatO2KuCDtlbTsoJztlanri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+IuuNsOydtO2EsCDshpDsi6TsnYQg7ZS87ZWY66Ck66m0IOqzteycoCDsoIDsnqXsmqnrn4nsnYQg7KCc6rGw7ZWY6riwIOyghOyXkCDrp4jsmrTtirgg7ZW07KCc7ZWp64uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IuuNsOydtO2EsCDshpDsi6TsnYQg7ZS87ZWY66Ck66m0IFNEIOy5tOuTnOulvCDsoJzqsbDtlZjquLAg7KCE7JeQIOuniOyatO2KuCDtlbTsoJztlanri4jri6QuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiLqs7XsnKAg7KCA7J6l7Jqp65+JIOyViOyghO2VmOqyjCDsoJzqsbAiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNjUyNTg4MTAxODY3OTUxNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzk2Nzk3Mzg5MzI3MDM2MDIzMCI+IuqzteycoCDsoIDsnqXsmqnrn4kg7JWI7KCE7ZWY6rKMIOygnOqxsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjcyOTgwMTEzMDc5MDYxNjIwMCI+IlNEIOy5tOuTnCDsoJzqsbAg6rCA64qlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4i6rO17JygIOyggOyepeyaqeufieydhCDslYjsoITtlZjqsowg7KCc6rGw7ZWgIOyImCDsnojsirXri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4i6rO17JygIOyggOyepeyaqeufieydhCDslYjsoITtlZjqsowg7KCc6rGw7ZWgIOyImCDsnojsirXri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IuyViOyghO2VmOqyjCBTRCDsubTrk5zrpbwg7KCc6rGw7ZWgIOyImCDsnojsirXri4jri6QuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE4NzQ4ODk3NjQzNjcwODU1NjIiPiLqs7XsnKAg7KCA7J6l7Jqp65+JIOu2hOumrO2VqCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4i6rO17JygIOyggOyepeyaqeufiSDrtoTrpqztlagiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4OTAyNTE4MDMwNDA0MzgxMzE4Ij4iU0Qg7Lm065OcIOyXhuydjCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiLqs7XsnKAg7KCA7J6l7Jqp65+J7J2EIOygnOqxsO2WiOyKteuLiOuLpC4g7IOIIOuvuOuUlOyWtOulvCDsgr3snoXtlZjshLjsmpQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjczMDg5MDQ0MTMzMTM0NDc3NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjkyMTEyNjE2MjU4MDU3NDE0MyI+IuqzteycoCDsoIDsnqXsmqnrn4nsnYQg7KCc6rGw7ZaI7Iq164uI64ukLiDsg4gg66+465SU7Ja066W8IOyCveyehe2VmOyEuOyalC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJTRCDsubTrk5zqsIAg7JeG7Iq164uI64ukLiAgU0Qg7Lm065Oc66W8IOuEo+ycvOyEuOyalC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+IuydvOy5mO2VmOuKlCDtmZzrj5nsnbQg7JeG7Iq164uI64ukLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiLqtazshLEg7JqU7IaMIOyCrOyaqSDthrXqs4Qg7JeF642w7J207Yq4Ijwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKaW5kZXggNzUyOWNjNC4uYTVjMjRjMCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iMzQ0NjE2NDU4NDcxMDU5NjUxMyI+IlV0dmlrbGluZ3N2ZXJrdMO4eSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiJGdW5rc2pvbmFsaXRldCBrdW4gdXR2aWtsZXJlIHRyZW5nZXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iTGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iVGlsZ2FuZyB0aWwgZGVsdCBsYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4iVGlsZ2FuZyB0aWwgZGVsdCBsYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJUaWxnYW5nIHRpbCBtaW5uZWtvcnRldC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJkZWFrdGl2ZXJlIGVsbGVyIGVuZHJlIHN0YXR1c2ZlbHRldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJMYXIgYXBwbGlrYXNqb25lbiBkZWFrdGl2ZXJlIHN0YXR1c2ZlbHRldCwgc2FtdCBsZWdnZSB0aWwgb2cgZmplcm5lIHN5c3RlbWlrb25lci4iPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiJMYXIgYXBwbGlrYXNqb25lbiBtb250ZXJlIG9nIGF2bW9udGVyZSBmaWxzeXN0ZW1lciBmb3IgdXR0YWdiYXIgbGFncmluZy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJmb3JtYXRlcmUgZWtzdGVybiBsYWdyaW5nc3BsYXNzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4iTGFyIGFwcGxpa2Fzam9uZW4gZm9ybWF0ZXJlIGVrc3Rlcm4gbGFncmluZ3NwbGFzcy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMTA3MDM2NDA3OTI0OTgzNDY2NiI+ImbDpSBpbmZvcm1hc2pvbiBvbSBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6UgaW5uaGVudGUgaW5mb3JtYXNqb24gb20gc2lra2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJvcHByZXR0ZSBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6Ugb3BwcmV0dGUgc2lra2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4ic3RlbmdlIHNpa2tlciBsYWdyaW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iNTc0MDc1NDExNDk2Nzg5MzE2OSI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6Ugc3RlbmdlIHNpa2tlciBsYWdyaW5nLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+ImtvYmxlIHRpbCBlbGxlciBmcmEgc2lra2VyIGxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1NDM4MDc4MTIxNzE4NzM4NjI1Ij4iVGlsbGF0ZXIgcHJvZ3JhbW1ldCDDpSBrb2JsZSBzaWtrZXIgbGFncmluZyB0aWwgZWxsZXIgZnJhLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4iZ2kgbnl0dCBuYXZuIHRpbCBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMTM4Nzg4MTc3MDcwODg3MjQ3MCI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6UgZ2kgbnl0dCBuYXZuIHRpbCBzaWtrZXIgbGFncmluZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+ImbDpSBpbmZvcm1hc2pvbiBvbSBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc2OTE2MTYyOTIxNzA1OTAyNDQgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iODgyMDMyNjU1MTY4NzI4NTQzOSI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6UgaW5uaGVudGUgaW5mb3JtYXNqb24gb20gc2lra2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiJvcHByZXR0ZSBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlRpbGxhdGVyIHByb2dyYW1tZXQgw6Ugb3BwcmV0dGUgc2lra2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJzdGVuZ2Ugc2lra2VyIGxhZ3JpbmciPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NzQwNzU0MTE0OTY3ODkzMTY5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSIyNzQ2NzA2ODg5MjA4MDY2MjU2Ij4iVGlsbGF0ZXIgcHJvZ3JhbW1ldCDDpSBzdGVuZ2Ugc2lra2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4ia29ibGUgdGlsIGVsbGVyIGZyYSBzaWtrZXIgbGFncmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0MzgwNzgxMjE3MTg3Mzg2MjUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU5MzQzNzU1OTAxODkzNjgyMDAiPiJUaWxsYXRlciBwcm9ncmFtbWV0IMOlIGtvYmxlIHNpa2tlciBsYWdyaW5nIHRpbCBlbGxlciBmcmEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTY4NTM0NDM5MDQzOTkzNDQ5NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9Ijc0OTY2MzM5NTQwODA0NzI0MTciPiJnaSBueXR0IG5hdm4gdGlsIHNpa2tlciBsYWdyaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iVGlsbGF0ZXIgcHJvZ3JhbW1ldCDDpSBnaSBueXR0IG5hdm4gdGlsIHNpa2tlciBsYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJrb250cm9sbGVyZSB2aWJyYXRvcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfdmlicmF0ZSIgbXNnaWQ9IjI4ODY2NzcxNzcyNTc3ODkxODciPiJMYXIgYXBwbGlrYXNqb25lbiBrb250cm9sbGVyZSB2aWJyYXRvcmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiJrb250cm9sbGVyZSBsb21tZWx5a3RlbiI8L3N0cmluZz4KQEAgLTQyNyw5ICs0MjcsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfcmVhZERpY3Rpb25hcnkiIG1zZ2lkPSIxMDgyOTcyNjAzNTc2MzYwNjkwIj4iTGFyIGFwcGxpa2Fzam9uZW4gbGVzZSBwcml2YXRlIG9yZCwgbmF2biBvZyB1dHRyeWtrIHNvbSBicnVrZXJlbiBoYXIgbGFncmV0IGkgZGVuIGJydWtlcmRlZmluZXJ0ZSBvcmRsaXN0ZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl93cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSI2NzAzMTA5NTExODM2MzQzMzQxIj4ic2tyaXZlIHRpbCBicnVrZXJkZWZpbmVydCBvcmRsaXN0ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiJMYXIgYXBwbGlrYXNqb25lbiBza3JpdmUgbnllIG9yZCB0aWwgZGVuIGJydWtlcmRlZmluZXJ0ZSBvcmRsaXN0ZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJlbmRyZS9zbGV0dGUgaW5uaC4gaSBkZWx0IGxhZ3IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gOTkzNzA3NDM2OTQxMDE2OTEzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg1NDMwODc2MzEwNzY0NzUyIj4iZW5kcmUvc2xldHRlIGlubmguIGkgZGVsdCBsYWdyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4icmVkaWdlcmUvc2xldHRlIGlubmhvbGQgcMOlIG1pbm5la29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiJQcm9nLiBza3JpdmVyIHRpbCBkZWx0IGxhZ3IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlByb2cuIHNrcml2ZXIgdGlsIGRlbHQgbGFnci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiJMYXIgYXBwbGlrYXNqb25lbiBza3JpdmUgdGlsIG1pbm5la29ydGV0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiJ0aWxnYW5nIHRpbCBidWZyZWRlIGZpbGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjE2MjQ3MzQ1Mjg0MzU2NTk5MDYiPiJUaWxsYXRlciBldCBwcm9ncmFtIMOlIGxlc2Ugb2cgc2tyaXZlIHRpbCBidWZyZWRlIGZpbGVyLiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiJWaXMgYWxsZSI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiJVU0ItbWFzc2VsYWdyaW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iVVNCIGtvYmxldCB0aWwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiJEdSBoYXIga29ibGV0IHRlbGVmb25lbiB0aWwgZGF0YW1hc2tpbmVuIHZpYSBVU0IuIFZlbGcga25hcHBlbiBuZWRlbmZvciBodmlzIGR1IHZpbCBrb3BpZXJlIGZpbGVyIG1lbGxvbSBkYXRhbWFza2luZW4gb2cgZGVsdCBsYWdyaW5nIGZvciBBbmRyb2lkLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4iRHUgaGFyIGtvYmxldCB0ZWxlZm9uZW4gdGlsIGRhdGFtYXNraW5lbiB2aWEgVVNCLiBWZWxnIGtuYXBwZW4gbmVkZW5mb3IgaHZpcyBkdSB2aWwga29waWVyZSBmaWxlciBtZWxsb20gZGF0YW1hc2tpbmVuIG9nIGRlbHQgbGFncmluZyBmb3IgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IkR1IGhhciBrb2JsZXQgdGVsZWZvbmVuIHRpbCBkYXRhbWFza2luZW4gdmlhIFVTQi4gVmVsZyBrbmFwcGVuIG5lZGVuZm9yIGh2aXMgZHUgdmlsIGtvcGllcmUgZmlsZXIgbWVsbG9tIGRhdGFtYXNraW5lbiBvZyBtaW5uZWtvcnRldCBpIHRlbGVmb25lbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iU2zDpSBww6UgVVNCLWxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJEZXQgb3Bwc3RvZCBldCBwcm9ibGVtIHVuZGVyIGRlbHQgbGFncmluZyBmb3IgVVNCLWVuaGV0ZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiJEZXQgb3Bwc3RvIGV0IHByb2JsZW0gbWVkIMOlIGJydWtlIG1pbm5la29ydGV0IGRpdHQgZm9yIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkRldCBvcHBzdG9kIGV0IHByb2JsZW0gdW5kZXIgZGVsdCBsYWdyaW5nIGZvciBVU0ItZW5oZXRlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMTIwODEwMzk3NzEzNzczMjc1Ij4iRGV0IG9wcHN0b2QgZXQgcHJvYmxlbSB1bmRlciBkZWx0IGxhZ3JpbmcgZm9yIFVTQi1lbmhldGVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0IgdGlsa29ibGV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4iVmVsZyBvbSBkdSDDuG5za2VyIMOlIGtvcGllcmUgZmlsZXIgdGlsL2ZyYSBlbiBkYXRhbWFza2luLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IlNsw6UgYXYgVVNCLWxhZ3JpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IlZlbGcgZm9yIMOlIHNsw6UgYXYgVVNCLWxhZ3JpbmcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IlVTQi1sYWdyaW5nIGVyIGkgYnJ1ayI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iRsO4ciBkdSBzbMOlciBhdiBVU0ItbGFncmluZywgbcOlIGR1IGtvbnRyb2xsZXJlIGF0IGR1IGhhciBrb2JsZXQgZnJhIGRlbiBkZWx0ZSBsYWdyaW5nc2VuaGV0ZW4gZm9yIEFuZHJvaWQgZnJhIGRhdGFtYXNraW5lbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IkbDuHIgZHUgc2zDpXIgYXYgVVNCLWxhZ3JpbmcsIG3DpSBkdSBrb250cm9sbGVyZSBhdCBkdSBoYXIga29ibGV0IGZyYSBkZW4gZGVsdGUgbGFncmluZ3NlbmhldGVuIGZvciBBbmRyb2lkIGZyYSBkYXRhbWFza2luZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IkbDuHIgZHUgc2zDpXIgYXYgVVNCLWxhZ3JpbmcsIHNqZWtrIGF0IGR1IGhhciBhdm1vbnRlcnQgdGVsZWZvbmVuIHDDpSBkYXRhbWFza2luZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iU2zDpSBhdiBVU0ItbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+IkRldCBvcHBzdG9kIGV0IHByb2JsZW0gdmVkIGRlYWt0aXZlcmluZyBhdiBVU0ItbGFncmluZy4gS29udHJvbGxlciBhdCBkdSBoYXIgZGVtb250ZXJ0IFVTQi12ZXJ0ZW4sIG9nIHByw7h2IHDDpSBueXR0LiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4iSHZpcyBkdSBha3RpdmVyZXIgVVNCLWxhZ3JpbmcsIHZpcmtlciBpa2tlIGxlbmdlciBlbmtlbHRlIGF2IHByb2dyYW1tZW5lIGR1IGJydWtlciwgb2cgZGUga2FuIHbDpnJlIHV0aWxnamVuZ2VsaWdlIGlubnRpbCBkdSBkZWFrdGl2ZXJlciBVU0ItbGFncmluZ2VuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJVU0Itb3BlcmFzam9uZW4gbWlzbHlrdGVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Ik9LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJGb3JtYXTDqXIgZGVsdCBsYWdyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4iRm9ybWF0w6lyIGRlbHQgbGFnci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0ZXJlIG1pbm5la29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiJWaWwgZHUgZm9ybWF0ZXJlIGRlbHQgbGFncmluZyBvZyBzbGV0dGUgYWxsZSBsYWdyZWRlIGZpbGVyPyBIYW5kbGluZ2VuIGthbiBpa2tlIGFuZ3JlcyEiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNDcwODE1MTQwMDY4NTAyODI0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4Mjk2OTA4MDc5NzIyODk3NzcyIj4iVmlsIGR1IGZvcm1hdGVyZSBkZWx0IGxhZ3Jpbmcgb2cgc2xldHRlIGFsbGUgbGFncmVkZSBmaWxlcj8gSGFuZGxpbmdlbiBrYW4gaWtrZSBhbmdyZXMhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iRXIgZHUgc2lra2VyIHDDpSBhdCBkdSDDuG5za2VyIMOlIGZvcm1hdGVyZSBtaW5uZWtvcnRldD8gQWxsZSBkYXRhIHDDpSBrb3J0ZXQgdmlsIGfDpSB0YXB0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdMOpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IlVTQi1kZWJ1Z2dpbmcgdGlsa29ibGV0Ijwvc3RyaW5nPgpAQCAtODMxLDI4ICs4MzEsMjggQEAKICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX2FscGhhYmV0IiBtc2dpZD0iNTQzMzI3NTQ4NTQ5OTAzOTE5OSI+IiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWsOGw5jDhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX251bWVyaWNfYWxwaGFiZXQiIG1zZ2lkPSI0MDMwMTcwNTI0NTk1MTIzNjEwIj4iIDAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWsOGw5jDhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNhbmRpZGF0ZXNfc3R5bGUiIG1zZ2lkPSI0MzMzOTEzMDg5NjM3MDYyMjU3Ij4iVEFHX0ZPTlQiPHU+ImthbmRpZGF0ZXIiPC91PiJDTE9TRV9GT05UIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4iRm9yYmVyZWRlciBkZWx0IGxhZ3JpbmciPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJGb3JiZXJlZGVyIGRlbHQgbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1NDU3NjAzNDE4OTcwOTk0MDUwIj4iRm9yYmVyZWRlciBtaW5uZWtvcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iU2pla2tlciBmb3IgZmVpbC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IkRlbHQgbGFncmluZyBlciB0b20iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IkRlbHQgbGFncmluZyBlciB0b20iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiJUb210IG1pbm5la29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiJEZWx0IGxhZ3JpbmcgZXIgdG9tIGVsbGVyIGhhciBldCBmaWxzeXN0ZW0gc29tIGlra2UgaMOlbmR0ZXJlcy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNjA2NjYwNzU2MTI0NjI5NzA4IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NjIzMTMwNTIyNTU2MDg3MzExIj4iRGVsdCBsYWdyaW5nIGVyIHRvbSBlbGxlciBoYXIgZXQgZmlsc3lzdGVtIHNvbSBpa2tlIGjDpW5kdGVyZXMuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iTWlubmVrb3J0ZXQgZXIgdG9tdCBlbGxlciBoYXIgZXQgaWtrZS1zdMO4dHRldCBmaWxzeXN0ZW0uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iRGVsdCBsYWdyaW5nIHNrYWRldCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE3MjQ2MTk5MDIwNzY1Mjg4ODkgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjA5MDA0Njc2OTUzMjcxMzU2MyI+IkRlbHQgbGFncmluZyBza2FkZXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IlNrYWRldCBtaW5uZWtvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjQ2MDMxMTgzNTEzMDY3MTE5NCI+IkRlbHQgbGFncmluZyBlciBza2FkZXQuIERldCBrYW4gdsOmcmUgbsO4ZHZlbmRpZyDDpSBmb3JtYXRlcmUgZW5oZXRlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4iRGVsdCBsYWdyaW5nIGVyIHNrYWRldC4gRGV0IGthbiB2w6ZyZSBuw7hkdmVuZGlnIMOlIGZvcm1hdGVyZSBlbmhldGVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5MDI1MzE3NzU5NDgyMzg5ODkiPiJNaW5uZWtvcnRldCBlciBza2FkZXQuIER1IG3DpSBrYW5za2plIGZvcm1hdGVyZSBkZXQuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiJEZWx0IGxhZ3JpbmcgZmplcm5ldCB1dmVudGV0Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiJEZWx0IGxhZ3JpbmcgZmplcm5ldCB1dmVudGV0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+Ik1pbm5la29ydGV0IGJsZSB0YXR0IHV0IHV2ZW50ZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4iS29ibGUgZnJhIGRlbHQgbGFncmluZyBmw7hyIGVuaGV0ZW4gdGFzIHV0IGF2IG1hc2tpbmVuIGZvciDDpSB1bm5nw6UgdGFwIGF2IGRhdGEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+IktvYmxlIGZyYSBkZWx0IGxhZ3JpbmcgZsO4ciBlbmhldGVuIHRhcyB1dCBhdiBtYXNraW5lbiBmb3Igw6UgdW5uZ8OlIHRhcCBhdiBkYXRhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IkF2bW9udGVyIG1pbm5la29ydGV0IGbDuHIgZGV0IHRhcyB1dCwgZm9yIMOlIHVubmfDpSBkYXRhdGFwLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM2NTI1ODgxMDE4Njc5NTE1Ij4iRGVsdCBsYWdyaW5nIGthbiB0cnlndCBmamVybmVzIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiJEZWx0IGxhZ3Jpbmcga2FuIHRyeWd0IGZqZXJuZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJUcnlndCDDpSB0YSB1dCBtaW5uZWtvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiJEZXQgZXIgdHJ5Z3Qgw6UgdGEgdXQgZW5oZXRlbiBmb3IgZGVsdCBsYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MDM3NjkxMDYyODUxODg3MDMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjE0MjE5NTM2MTYwNjQ5MzUzMCI+IkRldCBlciB0cnlndCDDpSB0YSB1dCBlbmhldGVuIGZvciBkZWx0IGxhZ3JpbmcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IkRldCBlciB0cnlndCDDpSB0YSB1dCBtaW5uZWtvcnRldC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTg3NDg4OTc2NDM2NzA4NTU2MiI+IkZqZXJuZXQgZGVsdCBsYWdyaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiJGamVybmV0IGRlbHQgbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJNaW5uZWtvcnRldCBibGUgdGF0dCB1dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiJEZWx0IGxhZ3JpbmcgZmplcm5ldC4gU2V0dCBpbm4gZXQgbnl0dCBtZWRpdW0uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjczMDg5MDQ0MTMzMTM0NDc3NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjkyMTEyNjE2MjU4MDU3NDE0MyI+IkRlbHQgbGFncmluZyBmamVybmV0LiBTZXR0IGlubiBldCBueXR0IG1lZGl1bS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJNaW5uZWtvcnRldCBibGUgZmplcm5ldC4gU2V0dCBpbm4gZXQgbnl0dC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+IkZhbnQgaW5nZW4gdGlsc3ZhcmVuZGUgYWt0aXZpdGV0ZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3BrZ1VzYWdlU3RhdHMiIG1zZ2lkPSI4Nzg3MzUyMDc0MzI2NzQ4ODkyIj4ib3BwZGF0ZXIgc3RhdGlzdGlrayBvdmVyIGtvbXBvbmVudGJydWsiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbAppbmRleCA5M2RkNTYwLi5lMDIzMjQ0IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iT250d2lra2VsaW5nc2h1bHBwcm9ncmFtbWFcJ3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSI5MDU2NDMxMTkzODkzODA5ODE0Ij4iRnVuY3RpZXMgZGllIGFsbGVlbiBkb29yIHRvZXBhc3Npbmdzb250d2lra2VsYWFycyB3b3JkZW4gZ2VicnVpa3QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iT3BzbGFncnVpbXRlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjU0NTU4MDQzNTMyMjA1ODEzMTIiPiJUb2VnYW5nIGtyaWpnZW4gdG90IGRlIGdlZGVlbGRlIG9wc2xhZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDU1ODA0MzUzMjIwNTgxMzEyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzQ0MjMxODUwMjQ0Njg3NDk5OSI+IlRvZWdhbmcga3JpamdlbiB0b3QgZGUgZ2VkZWVsZGUgb3BzbGFnLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJUb2VnYW5nIHRvdCBkZSBTRC1rYWFydC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJzdGF0dXNiYWxrIHVpdHNjaGFrZWxlbiBvZiB3aWp6aWdlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJIaWVybWVlIGthbiBlZW4gdG9lcGFzc2luZyBkZSBzdGF0dXNiYWxrIHVpdHNjaGFrZWxlbiBvZiBzeXN0ZWVtcGljdG9ncmFtbWVuIHRvZXZvZWdlbiBlbiB2ZXJ3aWpkZXJlbi4iPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiJIaWVybWVlIGthbiBkZSB0b2VwYXNzaW5nIGJlc3RhbmRzc3lzdGVtZW4ga29wcGVsZW4gZW4gb250a29wcGVsZW4gdm9vciB2ZXJ3aXNzZWxiYXJlIG9wc2xhZ3J1aW10ZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJleHRlcm5lIG9wc2xhZyBmb3JtYXR0ZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IkhpZXJtZWUga2FuIGRlIHRvZXBhc3NpbmcgZGUgZXh0ZXJuZSBvcHNsYWcgZm9ybWF0dGVyZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiJpbmZvcm1hdGllIG92ZXIgZGUgYmV2ZWlsaWdkZSBvcHNsYWcgdmVya3JpamdlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlN0YWF0IGRlIHRvZXBhc3NpbmcgdG9lIGluZm9ybWF0aWUgb3ZlciBkZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSB2ZXJrcmlqZ2VuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MzEyMDc4MDMyMzI2OTI4ODk5Ij4iYmV2ZWlsaWdkZSBvcHNsYWcgbWFrZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjcwNDE4MDIzMjI3NTkwMTQwMzUiPiJTdGFhdCBkZSB0b2VwYXNzaW5nIHRvZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSBtYWtlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9Ijc3ODczMjI4Nzg5NTUyNjEwMDYiPiJiZXZlaWxpZ2RlIG9wc2xhZyB2ZXJuaWV0aWdlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJTdGFhdCBkZSB0b2VwYXNzaW5nIHRvZSBkZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSB2ZXJuaWV0aWdlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiJiZXZlaWxpZ2RlIG9wc2xhZyBrb3BwZWxlbi9vbnRrb3BwZWxlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJTdGFhdCBkZSB0b2VwYXNzaW5nIHRvZSBkZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSBrb3BwZWxlbi9vbnRrb3BwZWxlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+Im5hYW0gdmFuIGJldmVpbGlnZGUgb3BzbGFnIHdpanppZ2VuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iU3RhYXQgZGUgdG9lcGFzc2luZyB0b2UgZGUgbmFhbSB2YW4gZGUgYmV2ZWlsaWdkZSBvcHNsYWcgdGUgd2lqemlnZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJpbmZvcm1hdGllIG92ZXIgZGUgYmV2ZWlsaWdkZSBvcHNsYWcgdmVya3JpamdlbiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc2OTE2MTYyOTIxNzA1OTAyNDQgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iODgyMDMyNjU1MTY4NzI4NTQzOSI+IlN0YWF0IGRlIHRvZXBhc3NpbmcgdG9lIGluZm9ybWF0aWUgb3ZlciBkZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSB2ZXJrcmlqZ2VuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4iYmV2ZWlsaWdkZSBvcHNsYWcgbWFrZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJTdGFhdCBkZSB0b2VwYXNzaW5nIHRvZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSBtYWtlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3Nzg3MzIyODc4OTU1MjYxMDA2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjUyNjkyODMyODMwMTYxODAyMiI+ImJldmVpbGlnZGUgb3BzbGFnIHZlcm5pZXRpZ2VuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTc0MDc1NDExNDk2Nzg5MzE2OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iMjc0NjcwNjg4OTIwODA2NjI1NiI+IlN0YWF0IGRlIHRvZXBhc3NpbmcgdG9lIGRlIGJldmVpbGlnZGUgb3BzbGFnIHRlIHZlcm5pZXRpZ2VuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+ImJldmVpbGlnZGUgb3BzbGFnIGtvcHBlbGVuL29udGtvcHBlbGVuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IlN0YWF0IGRlIHRvZXBhc3NpbmcgdG9lIGRlIGJldmVpbGlnZGUgb3BzbGFnIHRlIGtvcHBlbGVuL29udGtvcHBlbGVuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU2ODUzNDQzOTA0Mzk5MzQ0OTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI3NDk2NjMzOTU0MDgwNDcyNDE3Ij4ibmFhbSB2YW4gYmV2ZWlsaWdkZSBvcHNsYWcgd2lqemlnZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiJTdGFhdCBkZSB0b2VwYXNzaW5nIHRvZSBkZSBuYWFtIHZhbiBkZSBiZXZlaWxpZ2RlIG9wc2xhZyB0ZSB3aWp6aWdlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3ZpYnJhdGUiIG1zZ2lkPSI3NzY4MzU2MDE5OTgwODQ5NjAzIj4idHJpbHN0YW5kIGJlaGVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IkhpZXJtZWUga2FuIGRlIHRvZXBhc3NpbmcgZGUgdHJpbHN0YW5kIGJlaGVyZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9mbGFzaGxpZ2h0IiBtc2dpZD0iMjE1NTkyMDgxMDEyMTk4NDIxNSI+Inpha2xhbXAgYmVkaWVuZW4iPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IkhpZXJtZWUga2FuIGVlbiB0b2VwYXNzaW5nIHByaXbDqXdvb3JkZW4sIG5hbWVuIGVuIHdvb3JkY29tYmluYXRpZXMgbGV6ZW4gZGllIGRlIGdlYnJ1aWtlciBoZWVmdCBvcGdlc2xhZ2VuIGluIGhldCBnZWJydWlrZXJzd29vcmRlbmJvZWsuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl93cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSI2NzAzMTA5NTExODM2MzQzMzQxIj4ic2NocmlqdmVuIG5hYXIgZG9vciBnZWJydWlrZXIgZ2VkZWZpbmllZXJkIHdvb3JkZW5ib2VrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+IkhpZXJtZWUga2FuIGVlbiB0b2VwYXNzaW5nIG5pZXV3ZSB3b29yZGVuIHNjaHJpanZlbiBuYWFyIGhldCBnZWJydWlrZXJzd29vcmRlbmJvZWsuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJpbmhvdWQgdmFuIGdlZGVlbGRlIG9wc2xhZyBhYW5wYXNzZW4vdmVyd2lqZGVyZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiJpbmhvdWQgdmFuIGdlZGVlbGRlIG9wc2xhZyBhYW5wYXNzZW4vdmVyd2lqZGVyZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+ImluaG91ZCBvcCBkZSBTRC1rYWFydCBhYW5wYXNzZW4vdmVyd2lqZGVyZW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4iSGllcm1lZSBrYW4gZWVuIHRvZXBhc3Npbmcgc2NocmlqdmVuIG5hYXIgZGUgZ2VkZWVsZGUgb3BzbGFnLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiJIaWVybWVlIGthbiBlZW4gdG9lcGFzc2luZyBzY2hyaWp2ZW4gbmFhciBkZSBnZWRlZWxkZSBvcHNsYWcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iSGllcm1lZSBrYW4gZWVuIHRvZXBhc3Npbmcgc2NocmlqdmVuIG5hYXIgZGUgU0Qta2FhcnQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iNTY1NjQ4NzI2NDgxOTY2OTgyNCI+ImhldCBjYWNoZWJlc3RhbmRzc3lzdGVlbSBvcGVuZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IlN0YWF0IGVlbiB0b2VwYXNzaW5nIHRvZSBoZXQgY2FjaGViZXN0YW5kc3N5c3RlZW0gdGUgbGV6ZW4gZW4gdGUgc2NocmlqdmVuLiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiJBbGxlcyB3ZWVyZ2V2ZW4iPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iVVNCLW1hc3Nhb3BzbGFnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iVVNCLXZlcmJpbmRpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiJVIGhlZWZ0IHV3IHRlbGVmb29uIHZpYSBVU0Igb3AgdXcgY29tcHV0ZXIgYWFuZ2VzbG90ZW4uIFNlbGVjdGVlciBkZSBvbmRlcnN0YWFuZGUga25vcCBhbHMgdSBiZXN0YW5kZW4gdHVzc2VuIHV3IGNvbXB1dGVyIGVuIGRlIGdlZGVlbGRlIG9wc2xhZyB2YW4gdXcgQW5kcm9pZCB3aWx0IGtvcGnDq3Jlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+IlUgaGVlZnQgdXcgdGVsZWZvb24gdmlhIFVTQiBvcCB1dyBjb21wdXRlciBhYW5nZXNsb3Rlbi4gU2VsZWN0ZWVyIGRlIG9uZGVyc3RhYW5kZSBrbm9wIGFscyB1IGJlc3RhbmRlbiB0dXNzZW4gdXcgY29tcHV0ZXIgZW4gZGUgZ2VkZWVsZGUgb3BzbGFnIHZhbiB1dyBBbmRyb2lkIHdpbHQga29wacOrcmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI0Nzk2NzU5NjQ2MTY3MjQ3MTc4Ij4iVSBoZWVmdCB1dyB0ZWxlZm9vbiB2aWEgVVNCIG9wIHV3IGNvbXB1dGVyIGFhbmdlc2xvdGVuLiBTZWxlY3RlZXIgZGUgb25kZXJzdGFhbmRlIGtub3AgYWxzIHUgYmVzdGFuZGVuIHR1c3NlbiB1dyBjb21wdXRlciBlbiBkZSBTRC1rYWFydCB2YW4gdXcgQW5kcm9pZCB3aWx0IGtvcGnDq3Jlbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iVVNCLW9wc2xhZyBpbnNjaGFrZWxlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IkVyIGlzIGVlbiBwcm9ibGVlbSBiaWogaGV0IGdlYnJ1aWsgdmFuIHV3IGdlZGVlbGRlIG9wc2xhZyB2b29yIFVTQi1vcHNsYWcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiJFciBpcyBlZW4gcHJvYmxlZW0gYmlqIGhldCBnZWJydWlrIHZhbiB1dyBTRC1rYWFydCB2b29yIFVTQi1vcHNsYWcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzMjc2NDEzNzY0NDMwNDY4NDU0Ij4iRXIgaXMgZWVuIHByb2JsZWVtIGJpaiBoZXQgZ2VicnVpayB2YW4gdXcgZ2VkZWVsZGUgb3BzbGFnIHZvb3IgVVNCLW9wc2xhZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMTIwODEwMzk3NzEzNzczMjc1Ij4iRXIgaXMgZWVuIHByb2JsZWVtIGJpaiBoZXQgZ2VicnVpayB2YW4gdXcgZ2VkZWVsZGUgb3BzbGFnIHZvb3IgVVNCLW9wc2xhZy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iVVNCLXZlcmJpbmRpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJTZWxlY3RlZXIgZGl0IG9tIGJlc3RhbmRlbiBuYWFyL3ZhbiB1dyBjb21wdXRlciB0ZSBrb3Bpw6tyZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4iVVNCLW9wc2xhZyB1aXRzY2hha2VsZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IlNlbGVjdGVlciBkaXQgb20gVVNCLW9wc2xhZyB1aXQgdGUgc2NoYWtlbGVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfdGl0bGUiIG1zZ2lkPSI2NjAxMjk4NTE3MDg3NzU4NTMiPiJVU0Itb3BzbGFnIGluIGdlYnJ1aWsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+IlZvb3JkYXQgdSBVU0Itb3BzbGFnIHVpdHNjaGFrZWx0LCBtb2V0IHUgZGUgZ2VkZWVsZGUgb3BzbGFnIHZhbiB1dyBBbmRyb2lkIGhlYmJlbiBvbnRrb3BwZWxkIChcJ3VpdGdld29ycGVuXCcpIHZhbiB1dyBjb21wdXRlci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IlZvb3JkYXQgdSBVU0Itb3BzbGFnIHVpdHNjaGFrZWx0LCBtb2V0IHUgZGUgZ2VkZWVsZGUgb3BzbGFnIHZhbiB1dyBBbmRyb2lkIGhlYmJlbiBvbnRrb3BwZWxkIChcJ3VpdGdld29ycGVuXCcpIHZhbiB1dyBjb21wdXRlci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iVm9vcmRhdCB1IFVTQi1vcHNsYWcgdWl0c2NoYWtlbHQsIG1vZXQgdSBkZSBTRC1rYWFydCB2YW4gdXcgQW5kcm9pZCBoZWJiZW4gb250a29wcGVsZCAoXCd1aXRnZXdvcnBlblwnKSB2YW4gdXcgY29tcHV0ZXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iVVNCLW9wc2xhZyB1aXRzY2hha2VsZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJFciBpcyBlZW4gcHJvYmxlZW0gb3BnZXRyZWRlbiB0aWpkZW5zIGhldCB1aXRzY2hha2VsZW4gdmFuIGRlIFVTQi1vcHNsYWcuIENvbnRyb2xlZXIgb2YgdSBkZSBVU0ItaG9zdCBoZWVmdCBsb3NnZWtvcHBlbGQgZW4gcHJvYmVlciBoZXQgb3BuaWV1dy4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IkFscyB1IFVTQi1vcHNsYWcgaW5zY2hha2VsdCwgd29yZGVuIGJlcGFhbGRlIHRvZXBhc3NpbmdlbiBkaWUgdSBnZWJydWlrdCwgZ2VzdG9wdCBlbiB3b3JkZW4gZGV6ZSBtb2dlbGlqayBwYXMgd2VlciBiZXNjaGlrYmFhciB3YW5uZWVyIHUgVVNCLW9wc2xhZyB1aXRzY2hha2VsdC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfZXJyb3JfdGl0bGUiIG1zZ2lkPSI4MDQ4OTk5OTczODM3MzM5MTc0Ij4iVVNCLWJld2Vya2luZyBtaXNsdWt0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Ik9LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJHZWRlZWxkZSBvcHNsYWcgZm9ybWF0dGVyZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IkdlZGVlbGRlIG9wc2xhZyBmb3JtYXR0ZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiJTRC1rYWFydCBmb3JtYXR0ZXJlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiJHZWRlZWxkZSBvcHNsYWcgZm9ybWF0dGVyZW4gZW4gYWxsZSBvcGdlc2xhZ2VuIGJlc3RhbmRlbiB3aXNzZW4/IEFjdGllIGthbiBuaWV0IG9uZ2VkYWFuIHdvcmRlbiBnZW1hYWt0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiJHZWRlZWxkZSBvcHNsYWcgZm9ybWF0dGVyZW4gZW4gYWxsZSBvcGdlc2xhZ2VuIGJlc3RhbmRlbiB3aXNzZW4/IEFjdGllIGthbiBuaWV0IG9uZ2VkYWFuIHdvcmRlbiBnZW1hYWt0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYyMTM2OTk2MjQzMzUyMzYxOSI+IldlZXQgdSB6ZWtlciBkYXQgdSBkZSBTRC1rYWFydCB3aWx0IGZvcm1hdHRlcmVuPyBBbGxlIGdlZ2V2ZW5zIG9wIHV3IGthYXJ0IGdhYW4gZGFuIHZlcmxvcmVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdHRlcmVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRiX2FjdGl2ZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NzI5MDQ0Nzc4OTQ5MTg5OTE4Ij4iVVNCLWZvdXRvcHNwb3JpbmcgdmVyYm9uZGVuIjwvc3RyaW5nPgpAQCAtODMxLDI4ICs4MzEsMjggQEAKICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX2FscGhhYmV0IiBtc2dpZD0iNTQzMzI3NTQ4NTQ5OTAzOTE5OSI+IiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImZhc3Rfc2Nyb2xsX251bWVyaWNfYWxwaGFiZXQiIG1zZ2lkPSI0MDMwMTcwNTI0NTk1MTIzNjEwIj4iIDAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNhbmRpZGF0ZXNfc3R5bGUiIG1zZ2lkPSI0MzMzOTEzMDg5NjM3MDYyMjU3Ij48dT4ia2FuZGlkYXRlbiI8L3U+PC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQyMzk1MTY2NzUwMjg0Mzg5OTciPiJHZWRlZWxkZSBvcHNsYWcgdm9vcmJlcmVpZGVuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iR2VkZWVsZGUgb3BzbGFnIHZvb3JiZXJlaWRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1NDU3NjAzNDE4OTcwOTk0MDUwIj4iU0Qta2FhcnQgdm9vcmJlcmVpZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IkNvbnRyb2xlcmVuIG9wIGZvdXRlbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzkzNzM0NTU3Nzk4MzczMDg3MyI+IkxlZ2UgZ2VkZWVsZGUgb3BzbGFnIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiJMZWdlIGdlZGVlbGRlIG9wc2xhZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IkxlZ2UgU0Qta2FhcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4iR2VkZWVsZGUgb3BzbGFnIGxlZWcgb2YgaGVlZnQgZWVuIG5pZXQtb25kZXJzdGV1bmQgYmVzdGFuZHNzeXN0ZWVtLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJHZWRlZWxkZSBvcHNsYWcgbGVlZyBvZiBoZWVmdCBlZW4gbmlldC1vbmRlcnN0ZXVuZCBiZXN0YW5kc3N5c3RlZW0uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iU0Qta2FhcnQgaXMgbGVlZyBvZiBoZWVmdCBlZW4gbmlldC1vbmRlcnN0ZXVuZCBiZXN0YW5kc3N5c3RlZW0uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iR2VkZWVsZGUgb3BzbGFnIGJlc2NoYWRpZ2QiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJHZWRlZWxkZSBvcHNsYWcgYmVzY2hhZGlnZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NDEwNzIzOTA2MDE5MTAwMTg5Ij4iQmVzY2hhZGlnZGUgU0Qta2FhcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjQ2MDMxMTgzNTEzMDY3MTE5NCI+IkdlZGVlbGRlIG9wc2xhZyBiZXNjaGFkaWdkLiBVIG1vZXQgZGUgb3BzbGFnIG1vZ2VsaWprIG9wbmlldXcgZm9ybWF0dGVyZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjQ2MDMxMTgzNTEzMDY3MTE5NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjUyOTAyMTI5OTI5NDQ1MDY2NyI+IkdlZGVlbGRlIG9wc2xhZyBiZXNjaGFkaWdkLiBVIG1vZXQgZGUgb3BzbGFnIG1vZ2VsaWprIG9wbmlldXcgZm9ybWF0dGVyZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNELWthYXJ0IGJlc2NoYWRpZ2QuIFUgbW9ldCBkZSBrYWFydCBtb2dlbGlqayBvcG5pZXV3IGZvcm1hdHRlcmVuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4iR2VkZWVsZGUgb3BzbGFnIG9udmVyd2FjaHRzIHZlcndpamRlcmQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNTgyMTc1MDE2MDYwNDMyMDM0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTY2MTY4MzAzMTMzMDk1MTA3MyI+IkdlZGVlbGRlIG9wc2xhZyBvbnZlcndhY2h0cyB2ZXJ3aWpkZXJkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlNELWthYXJ0IG9udmVyd2FjaHRzIHZlcndpamRlcmQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4iT250a29wcGVsIGRlIGdlZGVlbGRlIG9wc2xhZyB2b29yZGF0IHUgZGV6ZSB2ZXJ3aWpkZXJ0IG9tIGdlZ2V2ZW5zdmVybGllcyB0ZSB2b29ya29tZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+Ik9udGtvcHBlbCBkZSBnZWRlZWxkZSBvcHNsYWcgdm9vcmRhdCB1IGRlemUgdmVyd2lqZGVydCBvbSBnZWdldmVuc3ZlcmxpZXMgdGUgdm9vcmtvbWVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+Ik9udGtvcHBlbCBkZSBTRC1rYWFydCB2b29yZGF0IHUgZGV6ZSB2ZXJ3aWpkZXJ0IG9tIGdlZ2V2ZW5zdmVybGllcyB0ZSB2b29ya29tZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJHZWRlZWxkZSBvcHNsYWcga2FuIHZlaWxpZyB3b3JkZW4gdmVyd2lqZGVyZCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iR2VkZWVsZGUgb3BzbGFnIGthbiB2ZWlsaWcgd29yZGVuIHZlcndpamRlcmQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJEZSBTRC1rYWFydCBrYW4gdmVpbGlnIHdvcmRlbiB2ZXJ3aWpkZXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4iVSBrdW50IGRlIGdlZGVlbGRlIG9wc2xhZyB2ZWlsaWcgdmVyd2lqZGVyZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iVSBrdW50IGRlIGdlZGVlbGRlIG9wc2xhZyB2ZWlsaWcgdmVyd2lqZGVyZW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IlUga3VudCBkZSBTRC1rYWFydCB2ZWlsaWcgdmVyd2lqZGVyZW4uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE4NzQ4ODk3NjQzNjcwODU1NjIiPiJHZWRlZWxkZSBvcHNsYWcgdmVyd2lqZGVyZW4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxODc0ODg5NzY0MzY3MDg1NTYyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDQ4NjM3NzIzMDE0MDIyNzY1MSI+IkdlZGVlbGRlIG9wc2xhZyB2ZXJ3aWpkZXJlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJTRC1rYWFydCBpcyB2ZXJ3aWpkZXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IkdlZGVlbGRlIG9wc2xhZyB2ZXJ3aWpkZXJkLiBQbGFhdHMgbmlldXcgbWVkaXVtLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJHZWRlZWxkZSBvcHNsYWcgdmVyd2lqZGVyZC4gUGxhYXRzIG5pZXV3IG1lZGl1bS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4NzAxMjA2NTI5ODM2NTk2NDEiPiJTRC1rYWFydCB2ZXJ3aWpkZXJkLiBQbGFhdHMgZWVuIG5pZXV3ZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+IkdlZW4gb3ZlcmVlbmtvbWVuZGUgYWN0aXZpdGVpdGVuIGdldm9uZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+ImdlYnJ1aWtzc3RhdGlzdGlla2VuIHZhbiBjb21wb25lbnQgYmlqd2Vya2VuIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKaW5kZXggNWFlOTRmZi4uMDI3ZGYxOCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iMzQ0NjE2NDU4NDcxMDU5NjUxMyI+Ik5hcnrEmWR6aWEgcHJvZ3JhbWlzdHljem5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bmtjamUgcG90cnplYm5lIGplZHluaWUgcHJvZ3JhbWlzdG9tIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iUGFtacSZxIciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+IkRvc3TEmXAgZG8gcGFtacSZY2kgdWRvc3TEmXBuaW9uZWouIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiJEb3N0xJlwIGRvIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJEb3N0xJlwIGRvIGthcnR5IFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+Ind5xYLEhWN6YW5pZSBsdWIgem1pZW5pYW5pZSBwYXNrYSBzdGFudSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiJQb3p3YWxhIGFwbGlrYWNqb20gbmEgd3nFgsSFY3plbmllIHBhc2thIHN0YW51IGx1YiBkb2Rhd2FuaWUgaSB1c3V3YW5pZSBpa29uIHN5c3RlbW93eWNoLiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IlBvendhbGEgYXBsaWthY2pvbSBuYSBwb2TFgsSFY3phbmllIGkgb2TFgsSFY3phbmllIHN5c3RlbcOzdyBwbGlrw7N3IHcgcGFtacSZY2lhY2ggcHJ6ZW5vxZtueWNoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImZvcm1hdG93YW5pZSBwYW1pxJljaSB6ZXduxJl0cnpuZWoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NzQwNjAwNDQ5MDYwNDczODYiPiJaZXp3YWxhIGFwbGlrYWNqaSBuYSBmb3JtYXRvd2FuaWUgd3ltaWVubnljaCBub8Wbbmlrw7N3LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4idXp5c2tpd2FuaWUgaW5mb3JtYWNqaSBvIGJlenBpZWN6bnltIG1hZ2F6eW5pZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlplendhbGEgYXBsaWthY2ppIG5hIHV6eXNraXdhbmllIGluZm9ybWFjamkgbyBiZXpwaWVjem55bSBtYWdhenluaWUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJ0d29yemVuaWUgYmV6cGllY3puZWdvIG1hZ2F6eW51Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MDQxODAyMzIyNzU5MDE0MDM1Ij4iWmV6d2FsYSBhcGxpa2FjamkgbmEgdHdvcnplbmllIGJlenBpZWN6bmVnbyBtYWdhenludS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9Ijc3ODczMjI4Nzg5NTUyNjEwMDYiPiJ1c3V3YW5pZSBiZXpwaWVjem5lZ28gbWFnYXp5bnUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4iWmV6d2FsYSBhcGxpa2FjamkgbmEgdXN1d2FuaWUgYmV6cGllY3puZWdvIG1hZ2F6eW51LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+InBvZMWCxIVjemFuaWUvb2TFgsSFY3phbmllIGJlenBpZWN6bmVnbyBtYWdhenludSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU0MzgwNzgxMjE3MTg3Mzg2MjUiPiJaZXp3YWxhIGFwbGlrYWNqaSBuYSBwb2TFgsSFY3phbmllL29kxYLEhWN6YW5pZSBiZXpwaWVjem5lZ28gbWFnYXp5bnUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJ6bWlhbmEgbmF6d3kgYmV6cGllY3puZWdvIG1hZ2F6eW51Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4iWmV6d2FsYSBhcGxpa2FjamkgbmEgem1pYW7EmSBuYXp3eSBiZXpwaWVjem5lZ28gbWFnYXp5bnUuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJ1enlza2l3YW5pZSBpbmZvcm1hY2ppIG8gYmV6cGllY3pueW0gbWFnYXp5bmllIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4iWmV6d2FsYSBhcGxpa2FjamkgbmEgdXp5c2tpd2FuaWUgaW5mb3JtYWNqaSBvIGJlenBpZWN6bnltIG1hZ2F6eW5pZS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MzEyMDc4MDMyMzI2OTI4ODk5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNjQxNDc1NzIzNDc4OTMzNjMyNyI+InR3b3J6ZW5pZSBiZXpwaWVjem5lZ28gbWFnYXp5bnUiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJaZXp3YWxhIGFwbGlrYWNqaSBuYSB0d29yemVuaWUgYmV6cGllY3puZWdvIG1hZ2F6eW51LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4idXN1d2FuaWUgYmV6cGllY3puZWdvIG1hZ2F6eW51Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTc0MDc1NDExNDk2Nzg5MzE2OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iMjc0NjcwNjg4OTIwODA2NjI1NiI+IlplendhbGEgYXBsaWthY2ppIG5hIHVzdXdhbmllIGJlenBpZWN6bmVnbyBtYWdhenludS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiJwb2TFgsSFY3phbmllL29kxYLEhWN6YW5pZSBiZXpwaWVjem5lZ28gbWFnYXp5bnUiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4iWmV6d2FsYSBhcGxpa2FjamkgbmEgcG9kxYLEhWN6YW5pZS9vZMWCxIVjemFuaWUgYmV6cGllY3puZWdvIG1hZ2F6eW51LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU2ODUzNDQzOTA0Mzk5MzQ0OTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI3NDk2NjMzOTU0MDgwNDcyNDE3Ij4iem1pYW5hIG5hend5IGJlenBpZWN6bmVnbyBtYWdhenludSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IlplendhbGEgYXBsaWthY2ppIG5hIHptaWFuxJkgbmF6d3kgYmV6cGllY3puZWdvIG1hZ2F6eW51LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJrb250cm9sb3dhbmllIHdpYnJhY2ppIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfdmlicmF0ZSIgbXNnaWQ9IjI4ODY2NzcxNzcyNTc3ODkxODciPiJQb3p3YWxhIGFwbGlrYWNqb20gbmEga29udHJvbG93YW5pZSB3aWJyYWNqaS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4ia29udHJvbG93YW5pZSBsYXRhcmtpIjwvc3RyaW5nPgpAQCAtNDI3LDkgKzQyNyw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19yZWFkRGljdGlvbmFyeSIgbXNnaWQ9IjEwODI5NzI2MDM1NzYzNjA2OTAiPiJaZXp3YWxhIGFwbGlrYWNqaSBuYSBvZGN6eXR5d2FuaWUgd3N6ZWxraWNoIHByeXdhdG55Y2ggc8WCw7N3LCBuYXp3IGkgd3lyYcW8ZcWEIHphcGlzYW55Y2ggcHJ6ZXogdcW8eXRrb3duaWthIHcgc3dvaW0gc8WCb3duaWt1LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+InphcGlzeXdhbmllIHcgc8WCb3duaWt1IHpkZWZpbmlvd2FueW0gcHJ6ZXogdcW8eXRrb3duaWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+IlplendhbGEgYXBsaWthY2pvbSBuYSB6YXBpc3l3YW5pZSBub3d5Y2ggc8WCw7N3IHcgc8WCb3duaWt1IHXFvHl0a293bmlrYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+Im1vZHlmaWtvd2FuaWUvdXN1d2FuaWUgemF3YXJ0b8WbY2kgcGFtacSZY2kgdWRvc3TEmXBuaW9uZWoiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiJtb2R5Zmlrb3dhbmllL3VzdXdhbmllIHphd2FydG/Fm2NpIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiJtb2R5Zmlrb3dhbmllL3VzdXdhbmllIHphd2FydG/Fm2NpIGthcnR5IFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IlplendhbGEgYXBsaWthY2ppIG5hIHphcGlzIHcgcGFtacSZY2kgdWRvc3TEmXBuaW9uZWouIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlplendhbGEgYXBsaWthY2ppIG5hIHphcGlzIHcgcGFtacSZY2kgdWRvc3TEmXBuaW9uZWouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iVW1vxbxsaXdpYSBhcGxpa2FjamkgemFwaXMgbmEga2FyY2llIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiJkb3N0xJlwIGRvIHN5c3RlbXUgcGxpa8OzdyBwYW1pxJljaSBwb2RyxJljem5laiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSIxNjI0NzM0NTI4NDM1NjU5OTA2Ij4iWmV6d2FsYSBhcGxpa2FjamkgbmEgb2Rjenl0IGkgemFwaXMgdyBzeXN0ZW1pZSBwbGlrw7N3IHBhbWnEmWNpIHBvZHLEmWN6bmVqLiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiJQb2thxbwgd3N6eXN0a28iPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iUGFtacSZxIcgbWFzb3dhIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTkwMTQ1OTA0MTM5ODc1MTQ5NSI+IlBvxYLEhWN6ZW5pZSBwcnpleiBVU0IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiJUZWxlZm9uIHpvc3RhxYIgcG/FgsSFY3pvbnkgeiBrb21wdXRlcmVtIHphIHBvxZtyZWRuaWN0d2VtIFVTQi4gV3liaWVyeiBwb25pxbxzenkgcHJ6eWNpc2ssIGFieSBza29waW93YcSHIHBsaWtpIG1pxJlkenkga29tcHV0ZXJlbSBhIHBhbWnEmWNpxIUgdWRvc3TEmXBuaW9uxIUgc3lzdGVtdSBBbmRyb2lkLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4iVGVsZWZvbiB6b3N0YcWCIHBvxYLEhWN6b255IHoga29tcHV0ZXJlbSB6YSBwb8WbcmVkbmljdHdlbSBVU0IuIFd5YmllcnogcG9uacW8c3p5IHByenljaXNrLCBhYnkgc2tvcGlvd2HEhyBwbGlraSBtacSZZHp5IGtvbXB1dGVyZW0gYSBwYW1pxJljacSFIHVkb3N0xJlwbmlvbsSFIHN5c3RlbXUgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IlRlbGVmb24gem9zdGHFgiBwb8WCxIVjem9ueSB6IGtvbXB1dGVyZW0gemEgcG/Fm3JlZG5pY3R3ZW0gVVNCLiBXeWJpZXJ6IHBvbmnFvHN6eSBwcnp5Y2lzaywgYWJ5IHNrb3Bpb3dhxIcgcGxpa2kgbWnEmWR6eSBrb21wdXRlcmVtIGEga2FydMSFIFNEIHN5c3RlbXUgQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iV8WCxIVjeiBub8WbbmlrIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+Ild5c3TEhXBpxYIgcHJvYmxlbSB6IHXFvHljaWVtIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIGpha28gbm/Fm25pa2EgVVNCLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iV3lzdMSFcGnFgiBwcm9ibGVtIHogd3lrb3J6eXN0YW5pZW0ga2FydHkgU0QgZGxhIHBhbWnEmWNpIFVTQi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiJXeXN0xIVwacWCIHByb2JsZW0geiB1xbx5Y2llbSBwYW1pxJljaSB1ZG9zdMSZcG5pb25laiBqYWtvIG5vxZtuaWthIFVTQi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMTIwODEwMzk3NzEzNzczMjc1Ij4iV3lzdMSFcGnFgiBwcm9ibGVtIHogdcW8eWNpZW0gcGFtacSZY2kgdWRvc3TEmXBuaW9uZWogamFrbyBub8WbbmlrYSBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IlBvxYLEhWN6ZW5pZSBwcnpleiBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJXeWJpZXJ6LCBhYnkgc2tvcGlvd2HEhyBwbGlraSBkby96IGtvbXB1dGVyYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+Ild5xYLEhWN6IG5vxZtuaWsgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjI1OTE4MTM0OTAyNjk4NDE1MzkiPiJXeWJpZXJ6LCBhYnkgd3nFgsSFY3p5xIcgbm/Fm25payBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+Ik5vxZtuaWsgVVNCIHcgdcW8eWNpdSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iUHJ6ZWQgd3nFgsSFY3plbmllbSBub8WbbmlrYSBVU0IgdXBld25paiBzacSZLCDFvGUgcGFtacSZxIcgdWRvc3TEmXBuaW9uYSBzeXN0ZW11IEFuZHJvaWQgem9zdGHFgmEgb2TFgsSFY3pvbmEgb2Qga29tcHV0ZXJhICjigJ53eWrEmXRh4oCdKS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IlByemVkIHd5xYLEhWN6ZW5pZW0gbm/Fm25pa2EgVVNCIHVwZXduaWogc2nEmSwgxbxlIHBhbWnEmcSHIHVkb3N0xJlwbmlvbmEgc3lzdGVtdSBBbmRyb2lkIHpvc3RhxYJhIG9kxYLEhWN6b25hIG9kIGtvbXB1dGVyYSAo4oCed3lqxJl0YeKAnSkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IlByemVkIHd5xYLEhWN6ZW5pZW0gbm/Fm25pa2EgVVNCIHVwZXduaWogc2nEmSwgxbxlIGthcnRhIFNEIHN5c3RlbXUgQW5kcm9pZCB6b3N0YcWCYSBvZMWCxIVjem9uYSAo4oCed3lqxJl0YeKAnSkgb2Qga29tcHV0ZXJhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+Ild5xYLEhWN6IG5vxZtuaWsgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMTQzODgxOTE0ODQwNDEyMTA4Ij4iV3lzdMSFcGnFgiBwcm9ibGVtIHBvZGN6YXMgd3nFgsSFY3phbmlhIG5vxZtuaWthIFVTQi4gVXBld25paiBzacSZLCDFvGUgaG9zdCBVU0Igem9zdGHFgiBvZMWCxIVjem9ueSwgYSBuYXN0xJlwbmllIHNwcsOzYnVqIHBvbm93bmllLiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4iUG8gd8WCxIVjemVuaXUgbm/Fm25pa2EgVVNCIG5pZWt0w7NyZSB1xbx5d2FuZSBhcGxpa2FjamUgem9zdGFuxIUgemF0cnp5bWFuZSBpIG1vZ8SFIGJ5xIcgbmllZG9zdMSZcG5lIGRvIGNod2lsaSB3ecWCxIVjemVuaWEgbm/Fm25pa2EgVVNCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJPcGVyYWNqYSBVU0IgbmllIHBvd2lvZMWCYSBzacSZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Ik9LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJGb3JtYXR1aiBwYW1pxJnEhyB1ZG9zdMSZcG5pb27EhSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4iRm9ybWF0dWogcGFtacSZxIcgdWRvc3TEmXBuaW9uxIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0dWoga2FydMSZIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IkN6eSBzZm9ybWF0b3dhxIcgcGFtacSZxIcgdWRvc3TEmXBuaW9uxIUgaSB3eW1hemHEhyB3c3p5c3RraWUgemFwaXNhbmUgdGFtIHBsaWtpPyBUZWogY3p5bm5vxZtjaSBuaWUgbW/FvG5hIGNvZm7EhcSHLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiJDenkgc2Zvcm1hdG93YcSHIHBhbWnEmcSHIHVkb3N0xJlwbmlvbsSFIGkgd3ltYXphxIcgd3N6eXN0a2llIHphcGlzYW5lIHRhbSBwbGlraT8gVGVqIGN6eW5ub8WbY2kgbmllIG1vxbxuYSBjb2ZuxIXEhy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiJDenkgbmEgcGV3bm8gc2Zvcm1hdG93YcSHIGthcnTEmSBTRD8gV3N6eXN0a2llIGRhbmUgbmEga2FyY2llIHpvc3RhbsSFIHV0cmFjb25lLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdHVqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRiX2FjdGl2ZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NzI5MDQ0Nzc4OTQ5MTg5OTE4Ij4iUG9kxYLEhWN6b25vIG1vZHXFgiBkZWJ1Z293YW5pYSBVU0IiPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEHEhEJDxIZERcSYRkdISUpLTMWBTU7Fg0/Dk1BRUlPFmlRVVldYWVrFucW7Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJrYW5keWRhY2kiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4iUHJ6eWdvdG93eXdhbmllIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4iUHJ6eWdvdG93eXdhbmllIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiJQcnp5Z290b3d5d2FuaWUga2FydHkgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iU3ByYXdkemFuaWUgdyBwb3N6dWtpd2FuaXUgYsWCxJlkw7N3LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4iUHVzdGEgcGFtacSZxIcgdWRvc3TEmXBuaW9uYSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM5MzczNDU1Nzc5ODM3MzA4NzMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3Nzg4MDQwNzQ1Njg2MjI5MzA3Ij4iUHVzdGEgcGFtacSZxIcgdWRvc3TEmXBuaW9uYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IlB1c3RhIGthcnRhIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IlBhbWnEmcSHIHVkb3N0xJlwbmlvbmEgamVzdCBwdXN0YSBsdWIgemF3aWVyYSBuaWVvYnPFgnVnaXdhbnkgc3lzdGVtIHBsaWvDs3cuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IlBhbWnEmcSHIHVkb3N0xJlwbmlvbmEgamVzdCBwdXN0YSBsdWIgemF3aWVyYSBuaWVvYnPFgnVnaXdhbnkgc3lzdGVtIHBsaWvDs3cuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iS2FydGEgU0QgamVzdCBwdXN0YSBsdWIgemF3aWVyYSBuaWVvYnPFgnVnaXdhbnkgc3lzdGVtIHBsaWvDs3cuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iVXN6a29kem9uYSBwYW1pxJnEhyB1ZG9zdMSZcG5pb25hIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4iVXN6a29kem9uYSBwYW1pxJnEhyB1ZG9zdMSZcG5pb25hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY0MTA3MjM5MDYwMTkxMDAxODkiPiJVc3prb2R6b25hIGthcnRhIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiJQYW1pxJnEhyB1ZG9zdMSZcG5pb25hIGplc3QgdXN6a29kem9uYS4gS29uaWVjem5lIG1vxbxlIGJ5xIcgcG9ub3duZSBzZm9ybWF0b3dhbmllLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJQYW1pxJnEhyB1ZG9zdMSZcG5pb25hIGplc3QgdXN6a29kem9uYS4gS29uaWVjem5lIG1vxbxlIGJ5xIcgcG9ub3duZSBzZm9ybWF0b3dhbmllLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5MDI1MzE3NzU5NDgyMzg5ODkiPiJLYXJ0YSBTRCBqZXN0IHVzemtvZHpvbmEuIEtvbmllY3puZSBtb8W8ZSBiecSHIHBvbm93bmUgc2Zvcm1hdG93YW5pZS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+Ik5vxZtuaWsgcGFtacSZY2kgdWRvc3TEmXBuaW9uZWogem9zdGHFgiB3eWrEmXR5Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiJOb8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIHpvc3RhxYIgd3lqxJl0eSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY4NzIxNTI4ODI2MDQ0MDc4MzciPiJLYXJ0YSBTRCB6b3N0YcWCYSBuaWVvY3pla2l3YW5pZSB3eWrEmXRhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjAwNTM5NjQ2NDQ5NDY0ODkzNyI+Ik9kxYLEhWN6IHBhbWnEmcSHIHVkb3N0xJlwbmlvbsSFIHByemVkIHd5asSZY2llbSBqZWogbm/Fm25pa2EsIGFieSB1bmlrbsSFxIcgdXRyYXR5IGRhbnljaC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iT2TFgsSFY3ogcGFtacSZxIcgdWRvc3TEmXBuaW9uxIUgcHJ6ZWQgd3lqxJljaWVtIGplaiBub8WbbmlrYSwgYWJ5IHVuaWtuxIXEhyB1dHJhdHkgZGFueWNoLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+Ik9kxYLEhWN6IGthcnTEmSBTRCBwcnplZCBqZWogd3lqxJljaWVtLCBhYnkgdW5pa27EhcSHIHV0cmF0eSBkYW55Y2guIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJNb8W8bmEgd3lqxIXEhyBub8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiJNb8W8bmEgd3lqxIXEhyBub8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iTW/FvG5hIGJlenBpZWN6bmllIHVzdW7EhcSHIGthcnTEmSBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzUwMzc2OTEwNjI4NTE4ODcwMyI+Ik1vxbxlc3ogYmV6cGllY3puaWUgd3lqxIXEhyBub8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MDM3NjkxMDYyODUxODg3MDMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjE0MjE5NTM2MTYwNjQ5MzUzMCI+Ik1vxbxlc3ogYmV6cGllY3puaWUgd3lqxIXEhyBub8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiJNb8W8ZXN6IGJlenBpZWN6bmllIHd5asSFxIcga2FydMSZIFNELiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iQnJhayBwYW1pxJljaSB1ZG9zdMSZcG5pb25laiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iQnJhayBwYW1pxJljaSB1ZG9zdMSZcG5pb25laiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJVc3VuacSZdGEga2FydGEgU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNzMwODkwNDQxMzMxMzQ0Nzc2Ij4iTm/Fm25payBwYW1pxJljaSB1ZG9zdMSZcG5pb25laiB6b3N0YcWCIHd5asSZdHkuIFfFgsOzxbwgbm93eSBub8WbbmlrLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJOb8WbbmlrIHBhbWnEmWNpIHVkb3N0xJlwbmlvbmVqIHpvc3RhxYIgd3lqxJl0eS4gV8WCw7PFvCBub3d5IG5vxZtuaWsuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iS2FydGEgU0Qgem9zdGHFgmEgd3lqxJl0YS4gV8WCw7PFvCBub3fEhSBrYXJ0xJkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJOaWUgem5hbGV6aW9ubyBwYXN1asSFY3ljaCBkemlhxYJhxYQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3BrZ1VzYWdlU3RhdHMiIG1zZ2lkPSI4Nzg3MzUyMDc0MzI2NzQ4ODkyIj4iYWt0dWFsaXpvd2FuaWUgc3RhdHlzdHlrIHXFvHljaWEga29tcG9uZW50dSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKaW5kZXggYzQ5NTAxMi4uYmZkOTliYyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iRmVycmFtZW50YXMgZGUgZGVzZW52b2x2aW1lbnRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bmNpb25hbGlkYWRlcyBhcGVuYXMgbmVjZXNzw6FyaWFzIHBhcmEgcHJvZ3JhbWFkb3JlcyBkZSBhcGxpY2HDp8O1ZXMuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iQXJtYXplbmFtZW50byI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iQWNlZGVyIGFvIGFybWF6LiBwYXJ0aWxoYWRvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4iQWNlZGVyIGFvIGFybWF6LiBwYXJ0aWxoYWRvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJBY2VkZXIgYW8gY2FydMOjbyBTRC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiJkZXNhY3RpdmFyIG91IG1vZGlmaWNhciBiYXJyYSBkZSBlc3RhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBkZXNhY3RpdmFyIGEgYmFycmEgZGUgZXN0YWRvIG91IGFkaWNpb25hciBlIHJlbW92ZXIgw61jb25lcyBkbyBzaXN0ZW1hLiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+IlBlcm1pdGUgw6AgYXBsaWNhw6fDo28gbW9udGFyIGUgZGVzbW9udGFyIHNpc3RlbWFzIGRlIGZpY2hlaXJvcyBwYXJhIGFybWF6ZW5hbWVudG8gcmVtb3bDrXZlbC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU1MjMyODUxNDM1NzY3MTg5ODEiPiJmb3JtYXRhciBhcm1hemVuYW1lbnRvIGV4dGVybm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NzQwNjAwNDQ5MDYwNDczODYiPiJQZXJtaXRlIGEgdW1hIGFwbGljYcOnw6NvIGZvcm1hdGFyIG8gYXJtYXplbmFtZW50byByZW1vdsOtdmVsLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4ib2J0ZXIgaW5mb3JtYcOnw7VlcyBzb2JyZSBvIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBvYnRlciBpbmZvcm1hw6fDtWVzIHNvYnJlIG8gYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJjcmlhciBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlBlcm1pdGUgw6AgYXBsaWNhw6fDo28gY3JpYXIgYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iZGVzdHJ1aXIgYXJtYXplbmFtZW50byBzZWd1cm8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBkZXN0cnVpciBvIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+Imluc3RhbGFyL2Rlc2luc3RhbGFyIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IlBlcm1pdGUgw6AgYXBsaWNhw6fDo28gaW5zdGFsYXIvZGVzaW5zdGFsYXIgbyBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+Im11ZGFyIG8gbm9tZSBkbyBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMTM4Nzg4MTc3MDcwODg3MjQ3MCI+IlBlcm1pdGUgw6AgYXBsaWNhw6fDo28gbXVkYXIgbyBub21lIGRvIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4ib2J0ZXIgaW5mb3JtYcOnw7VlcyBzb2JyZSBvIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBvYnRlciBpbmZvcm1hw6fDtWVzIHNvYnJlIG8gYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiJjcmlhciBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlBlcm1pdGUgw6AgYXBsaWNhw6fDo28gY3JpYXIgYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiJkZXN0cnVpciBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJQZXJtaXRlIMOgIGFwbGljYcOnw6NvIGRlc3RydWlyIG8gYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4iaW5zdGFsYXIvZGVzaW5zdGFsYXIgYXJtYXplbmFtZW50byBzZWd1cm8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NDM4MDc4MTIxNzE4NzM4NjI1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1OTM0Mzc1NTkwMTg5MzY4MjAwIj4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBpbnN0YWxhci9kZXNpbnN0YWxhciBvIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU2ODUzNDQzOTA0Mzk5MzQ0OTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI3NDk2NjMzOTU0MDgwNDcyNDE3Ij4ibXVkYXIgbyBub21lIGRvIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBtdWRhciBvIG5vbWUgZG8gYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl92aWJyYXRlIiBtc2dpZD0iNzc2ODM1NjAxOTk4MDg0OTYwMyI+ImNvbnRyb2xhciB2aWJyYWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3ZpYnJhdGUiIG1zZ2lkPSIyODg2Njc3MTc3MjU3Nzg5MTg3Ij4iUGVybWl0ZSDDoCBhcGxpY2HDp8OjbyBjb250cm9sYXIgbyB2aWJyYWRvci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4iY29udHJvbGFyIGxhbnRlcm5hIjwvc3RyaW5nPgpAQCAtNDI3LDkgKzQyNyw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19yZWFkRGljdGlvbmFyeSIgbXNnaWQ9IjEwODI5NzI2MDM1NzYzNjA2OTAiPiJQZXJtaXRlIGEgdW1hIGFwbGljYcOnw6NvIGxlciBxdWFpc3F1ZXIgcGFsYXZyYXMsIG5vbWVzIGUgZXhwcmVzc8O1ZXMgcHJpdmFkYXMgcXVlIG8gdXRpbGl6YWRvciBwb3NzYSB0ZXIgYXJtYXplbmFkbyBubyBkaWNpb27DoXJpbyBkbyB1dGlsaXphZG9yLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+ImVzY3JldmVyIG5vIGRpY2lvbsOhcmlvIGRlZmluaWRvIHBlbG8gdXRpbGl6YWRvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiJQZXJtaXRlIGEgdW1hIGFwbGljYcOnw6NvIGVzY3JldmVyIG5vdmFzIHBhbGF2cmFzIG5vIGRpY2lvbsOhcmlvIGRvIHV0aWxpemFkb3IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJtb2RpZi4vZWxpbS4gY29udGXDumRvIGRvIGFybWF6LiBwYXJ0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDk5MzcwNzQzNjk0MTAxNjkxMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NTQzMDg3NjMxMDc2NDc1MiI+Im1vZGlmLi9lbGltLiBjb250ZcO6ZG8gZG8gYXJtYXouIHBhcnQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiJtb2RpZmljYXIvZWxpbWluYXIgY29udGXDumRvIGRvIGNhcnTDo28gU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4iUGVybWl0ZSBxdWUgdW1hIGFwbGljYcOnw6NvIGVzY3JldmEgbm8gYXJtYXouIHBhcnRpbGhhZG8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlBlcm1pdGUgcXVlIHVtYSBhcGxpY2HDp8OjbyBlc2NyZXZhIG5vIGFybWF6LiBwYXJ0aWxoYWRvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjY0Mzk2MzIwNDk3NjQ3MTg3OCI+IlBlcm1pdGUgcXVlIHVtYSBhcGxpY2HDp8OjbyBlc2NyZXZhIG5vIGNhcnTDo28gU0QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iNTY1NjQ4NzI2NDgxOTY2OTgyNCI+ImFjZWRlciBhbyBzaXN0ZW1hIGRlIGZpY2hlaXJvcyBkYSBjYWNoZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSIxNjI0NzM0NTI4NDM1NjU5OTA2Ij4iUGVybWl0ZSBhIHVtYSBhcGxpY2HDp8OjbyBsZXIgZSBlc2NyZXZlciBubyBzaXN0ZW1hIGRlIGZpY2hlaXJvcyBkYSBjYWNoZS4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iTW9zdHJhciB0dWRvIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IkFybWF6ZW5hbWVudG8gZW0gbWFzc2EgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iTGlnYWRvIGF0cmF2w6lzIGRlIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IkxpZ291IG8gdGVsZWZvbmUgYW8gY29tcHV0YWRvciBhdHJhdsOpcyBkZSBVU0IuIFNlbGVjY2lvbmUgbyBib3TDo28gYWJhaXhvIHNlIHByZXRlbmRlciBjb3BpYXIgZmljaGVpcm9zIGVudHJlIG8gY29tcHV0YWRvciBlIG8gYXJtYXplbmFtZW50byBwYXJ0aWxoYWRvIGRvIEFuZHJvaWQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiJMaWdvdSBvIHRlbGVmb25lIGFvIGNvbXB1dGFkb3IgYXRyYXbDqXMgZGUgVVNCLiBTZWxlY2Npb25lIG8gYm90w6NvIGFiYWl4byBzZSBwcmV0ZW5kZXIgY29waWFyIGZpY2hlaXJvcyBlbnRyZSBvIGNvbXB1dGFkb3IgZSBvIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBkbyBBbmRyb2lkLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI0Nzk2NzU5NjQ2MTY3MjQ3MTc4Ij4iTGlnb3UgbyB0ZWxlZm9uZSBhbyBjb21wdXRhZG9yIGF0cmF2w6lzIGRlIFVTQi4gU2VsZWNjaW9uZSBvIGJvdMOjbyBhYmFpeG8gc2UgcHJldGVuZGVyIGNvcGlhciBmaWNoZWlyb3MgZW50cmUgbyBjb21wdXRhZG9yIGUgbyBjYXJ0w6NvIFNEIGRvIEFuZHJvaWQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYnV0dG9uX21vdW50IiBtc2dpZD0iMTA1MjI1OTkzMDM2OTUwODIzNSI+IkFjdGl2YXIgYXJtYXplbmFtZW50byBVU0IiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJFeGlzdGUgdW0gcHJvYmxlbWEgYW8gdXRpbGl6YXIgbyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gcGFyYSBvIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iRXhpc3RlIHVtIHByb2JsZW1hIGFvIHV0aWxpemFyIG8gY2FydMOjbyBTRCBwYXJhIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkV4aXN0ZSB1bSBwcm9ibGVtYSBhbyB1dGlsaXphciBvIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBwYXJhIG8gYXJtYXplbmFtZW50byBVU0IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IkV4aXN0ZSB1bSBwcm9ibGVtYSBhbyB1dGlsaXphciBvIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBwYXJhIG8gYXJtYXplbmFtZW50byBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IkxpZ2FkbyBhdHJhdsOpcyBkZSBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJTZWxlY2Npb25lIHBhcmEgY29waWFyIGZpY2hlaXJvIHBhcmEvZG8gc2V1IGNvbXB1dGFkb3IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4iRGVzYWN0aXZhciBhcm1hemVuYW1lbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iT3B0ZSBwb3IgZGVzYWN0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfdGl0bGUiIG1zZ2lkPSI2NjAxMjk4NTE3MDg3NzU4NTMiPiJPIGFybWF6ZW5hbWVudG8gVVNCIGVzdMOhIGEgc2VyIHV0aWxpemFkbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iQW50ZXMgZGUgZGVzYWN0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCLCBjZXJ0aWZpcXVlLXNlIGRlIHF1ZSBkZXNtb250b3UgKFwiZWplY3RvdVwiKSBvIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBkbyBBbmRyb2lkIGRvIGNvbXB1dGFkb3IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiJBbnRlcyBkZSBkZXNhY3RpdmFyIG8gYXJtYXplbmFtZW50byBVU0IsIGNlcnRpZmlxdWUtc2UgZGUgcXVlIGRlc21vbnRvdSAoXCJlamVjdG91XCIpIG8gYXJtYXplbmFtZW50byBwYXJ0aWxoYWRvIGRvIEFuZHJvaWQgZG8gY29tcHV0YWRvci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iQW50ZXMgZGUgZGVzYWN0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCLCBjZXJ0aWZpcXVlLXNlIGRlIHF1ZSBkZXNpbnN0YWxvdSAoXCJlamVjdG91XCIpIG8gY2FydMOjbyBTRCBkbyBBbmRyb2lkIGRvIGNvbXB1dGFkb3IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4iRGVzYWN0aXZhciBhcm1hemVuYW1lbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+Ik9jb3JyZXUgdW0gcHJvYmxlbWEgYW8gZGVzYWN0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCLiBDb25maXJtZSBzZSBkZXNpbnN0YWxvdSBvIGFuZml0cmnDo28gVVNCIGUsIGVtIHNlZ3VpZGEsIHRlbnRlIG5vdmFtZW50ZS4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IlNlIGFjdGl2YXIgbyBhcm1hemVuYW1lbnRvIFVTQiwgYWxndW1hcyBhcGxpY2HDp8O1ZXMgcXVlIGVzdGl2ZXIgYSB1dGlsaXphciBzZXLDo28gcGFyYWRhcyBlIHBvZGVyw6NvIGZpY2FyIGluZGlzcG9uw612ZWlzIGF0w6kgZGVzYWN0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJGYWxoYSBuYSBvcGVyYcOnw6NvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJPSyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4iRm9ybWF0YXIgYXJtYXouIHBhcnQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjU3NzkwODAwNjk0OTc0MjIxNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc5ODA5OTU1OTI1OTUwOTc4NDEiPiJGb3JtYXRhciBhcm1hei4gcGFydC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0YXIgY2FydMOjbyBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiJGb3JtYXRhciBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gZSBhcGFnYXIgdG9kb3Mgb3MgZmljaGVpcm9zIGFybWF6ZW5hZG9zPyBOw6NvIMOpIHBvc3PDrXZlbCByZXZlcnRlciBhIGFjw6fDo28hIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkZvcm1hdGFyIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBlIGFwYWdhciB0b2RvcyBvcyBmaWNoZWlyb3MgYXJtYXplbmFkb3M/IE7Do28gw6kgcG9zc8OtdmVsIHJldmVydGVyIGEgYWPDp8OjbyEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiJUZW0gYSBjZXJ0ZXphIGRlIHF1ZSBwcmV0ZW5kZSBmb3JtYXRhciBvIGNhcnTDo28gU0Q/IFBlcmRlci1zZS3Do28gdG9kb3Mgb3MgZGFkb3Mgbm8gY2FydMOjby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfYnV0dG9uX2Zvcm1hdCIgbXNnaWQ9IjQxMzEwNjQ1NjAxMjc0Nzg2OTUiPiJGb3JtYXRhciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IkRlcHVyYcOnw6NvIFVTQiBsaWdhZGEiPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJjYW5kaWRhdG9zIjwvdT48L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDIzOTUxNjY3NTAyODQzODk5NyI+IkEgcHJlcGFyYXIgYXJtYXouIHBhcnRpbGhhZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJBIHByZXBhcmFyIGFybWF6LiBwYXJ0aWxoYWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiJBIHByZXBhcmFyIGNhcnTDo28gU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iQSB2ZXJpZmljYXIgYSBwcmVzZW7Dp2EgZGUgZXJyb3MuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiJBcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gdmF6aW8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IkFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyB2YXppbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IkNhcnTDo28gU0QgdmF6aW8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4iTyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gZXN0w6EgdmF6aW8gb3UgdGVtIHVtIHNpc3RlbWEgZGUgZmljaGVpcm9zIG7Do28gc3Vwb3J0YWRvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJPIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBlc3TDoSB2YXppbyBvdSB0ZW0gdW0gc2lzdGVtYSBkZSBmaWNoZWlyb3MgbsOjbyBzdXBvcnRhZG8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODE3NzA0MDg4MDI3ODI5MzgwIj4iQ2FydMOjbyBTRCB2YXppbyBvdSBzaXN0ZW1hIGRlIGZpY2hlaXJvcyBuw6NvIHN1cG9ydGFkby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiJBcm1hemVuLiBwYXJ0aWxoYWRvIGRhbmlmaWNhZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJBcm1hemVuLiBwYXJ0aWxoYWRvIGRhbmlmaWNhZG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IkNhcnTDo28gU0QgZGFuaWZpY2FkbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4iTyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gZXN0w6EgZGFuaWZpY2Fkby4gUG9kZXLDoSBzZXIgbmVjZXNzw6FyaW8gcmVmb3JtYXTDoS1sby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4iTyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gZXN0w6EgZGFuaWZpY2Fkby4gUG9kZXLDoSBzZXIgbmVjZXNzw6FyaW8gcmVmb3JtYXTDoS1sby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iQ2FydMOjbyBTRCBkYW5pZmljYWRvLiBQb2RlcsOhIHNlciBuZWNlc3PDoXJpbyByZWZvcm1hdMOhLWxvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4iQXJtYXouIHBhcnQuIHJlbW92LiBmb3JtYSBpbmVzcGVyYWRhIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiJBcm1hei4gcGFydC4gcmVtb3YuIGZvcm1hIGluZXNwZXJhZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iQ2FydMOjbyBTRCByZW1vdmlkbyBkZSBmb3JtYSBpbmVzcGVyYWRhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjAwNTM5NjQ2NDQ5NDY0ODkzNyI+IkRlc21vbnRlIG8gYXJtYXplbmFtZW50byBwYXJ0aWxoYWRvIGFudGVzIGRlIHJlbW92w6otbG8gcGFyYSBldml0YXIgYSBwZXJkYSBkZSBkYWRvcy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iRGVzbW9udGUgbyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gYW50ZXMgZGUgcmVtb3bDqi1sbyBwYXJhIGV2aXRhciBhIHBlcmRhIGRlIGRhZG9zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IkRlc21vbnRlIG8gY2FydMOjbyBTRCBhbnRlcyBkZSByZXRpcsOhLWxvIHBhcmEgZXZpdGFyIGEgcGVyZGEgZGUgZGFkb3MuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiJTZWd1cm8gcmVtb3ZlciBhcm0uIHBhcnRpbGhhZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNjUyNTg4MTAxODY3OTUxNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzk2Nzk3Mzg5MzI3MDM2MDIzMCI+IlNlZ3VybyByZW1vdmVyIGFybS4gcGFydGlsaGFkbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjcyOTgwMTEzMDc5MDYxNjIwMCI+IsOJIHNlZ3VybyByZXRpcmFyIG8gY2FydMOjbyBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzUwMzc2OTEwNjI4NTE4ODcwMyI+IlBvZGUgcmVtb3ZlciBvIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBjb20gc2VndXJhbsOnYS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiJQb2RlIHJlbW92ZXIgbyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gY29tIHNlZ3VyYW7Dp2EuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IlBvZGUgcmVtb3ZlciBvIGNhcnTDo28gU0QgY29tIHNlZ3VyYW7Dp2EuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE4NzQ4ODk3NjQzNjcwODU1NjIiPiJBcm1hemVuLiBwYXJ0aWxoYWRvIHJlbW92aWRvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiJBcm1hemVuLiBwYXJ0aWxoYWRvIHJlbW92aWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IkNhcnTDo28gU0QgcmVtb3ZpZG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNzMwODkwNDQxMzMxMzQ0Nzc2Ij4iTyBhcm1hemVuYW1lbnRvIHBhcnRpbGhhZG8gZm9pIHJlbW92aWRvLiBJbnNpcmEgdW0gbm92byBzdXBvcnRlIGRlIGRhZG9zLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJPIGFybWF6ZW5hbWVudG8gcGFydGlsaGFkbyBmb2kgcmVtb3ZpZG8uIEluc2lyYSB1bSBub3ZvIHN1cG9ydGUgZGUgZGFkb3MuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iQ2FydMOjbyBTRCByZW1vdmlkby4gSW5zaXJhIHVtIG5vdm8gY2FydMOjby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+Ik5lbmh1bWEgYWN0aXZpZGFkZSBjb3JyZXNwb25kZW50ZSBlbmNvbnRyYWRhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+ImFjdHVhbGl6YXIgZXN0YXTDrXN0aWNhcyBkZSB1dGlsaXphw6fDo28gZGUgY29tcG9uZW50ZXMiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbAppbmRleCBiNzY4MzU2Li5iZjNjMmE1IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iRmVycmFtZW50YXMgZGUgZGVzZW52b2x2aW1lbnRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IlJlY3Vyc29zIG5lY2Vzc8OhcmlvcyBhcGVuYXMgcGFyYSBkZXNlbnZvbHZlZG9yZXMgZGUgYXBsaWNhdGl2by4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiJBcm1hemVuYW1lbnRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjU0NTU4MDQzNTMyMjA1ODEzMTIiPiJBY2Vzc2EgbyBhcm1hemVuYW1lbnRvIGNvbXAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiJBY2Vzc2EgbyBhcm1hemVuYW1lbnRvIGNvbXAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+IkFjZXNzYXIgbyBjYXJ0w6NvIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+ImRlc2F0aXZhciBvdSBtb2RpZmljYXIgYSBiYXJyYSBkZSBzdGF0dXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iUGVybWl0ZSBxdWUgbyBhcGxpY2F0aXZvIGRlc2F0aXZlIGEgYmFycmEgZGUgc3RhdHVzIG91IGFkaWNpb25lIGUgcmVtb3ZhIMOtY29uZXMgZG8gc2lzdGVtYS4iPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiJQZXJtaXRlIHF1ZSBvIGFwbGljYXRpdm8gbW9udGUgZSBkZXNtb250ZSBhcnF1aXZvcyBkZSBzaXN0ZW1hIHBhcmEgYXJtYXplbmFtZW50byByZW1vdsOtdmVsLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImZvcm1hdGFyIGFybWF6ZW5hbWVudG8gZXh0ZXJubyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBmb3JtYXRlIG8gYXJtYXplbmFtZW50byByZW1vdsOtdmVsLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4ib2J0ZXIgaW5mb3JtYcOnw7VlcyBzb2JyZSBvIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iUGVybWl0ZSBxdWUgbyBhcGxpY2F0aXZvIG9idGVuaGEgaW5mb3JtYcOnw7VlcyBzb2JyZSBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+ImNyaWFyIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MDQxODAyMzIyNzU5MDE0MDM1Ij4iUGVybWl0ZSBxdWUgbyBhcGxpY2F0aXZvIGNyaWUgdW0gYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iZGVzdHLDs2kgbyBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiJQZXJtaXRlIHF1ZSBvIGFwbGljYXRpdm8gZGVzdHJ1YSBvIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+ImNvbmVjdGFyL2Rlc2NvbmVjdGFyIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBjb25lY3RlL2Rlc2NvbmVjdGUgbyBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+InJlbm9tZWFyIG8gYXJtYXplbmFtZW50byBzZWd1cm8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJQZXJtaXRlIHF1ZSBvIGFwbGljYXRpdm8gcmVub21laWUgbyBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMDcwMzY0MDc5MjQ5ODM0NjY2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfYWNjZXNzIiBtc2dpZD0iMzQxMTMzODYzMjAwMjE5Mzg0NiI+Im9idGVyIGluZm9ybWHDp8O1ZXMgc29icmUgbyBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc2OTE2MTYyOTIxNzA1OTAyNDQgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iODgyMDMyNjU1MTY4NzI4NTQzOSI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBvYnRlbmhhIGluZm9ybWHDp8O1ZXMgc29icmUgYXJtYXplbmFtZW50byBzZWd1cm8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiJjcmlhciBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDcwNDE4MDIzMjI3NTkwMTQwMzUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iMjYyMTM0Njc2NDk5NTczMTI1MCI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBjcmllIHVtIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4iZGVzdHLDs2kgbyBhcm1hemVuYW1lbnRvIHNlZ3VybyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJQZXJtaXRlIHF1ZSBvIGFwbGljYXRpdm8gZGVzdHJ1YSBvIGFybWF6ZW5hbWVudG8gc2VndXJvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+ImNvbmVjdGFyL2Rlc2NvbmVjdGFyIGFybWF6ZW5hbWVudG8gc2VndXJvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBjb25lY3RlL2Rlc2NvbmVjdGUgbyBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+InJlbm9tZWFyIG8gYXJtYXplbmFtZW50byBzZWd1cm8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxMzg3ODgxNzcwNzA4ODcyNDcwIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjIxNTI4Mjk5ODUyMzg4NzY3OTAiPiJQZXJtaXRlIHF1ZSBvIGFwbGljYXRpdm8gcmVub21laWUgbyBhcm1hemVuYW1lbnRvIHNlZ3Vyby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3ZpYnJhdGUiIG1zZ2lkPSI3NzY4MzU2MDE5OTgwODQ5NjAzIj4iY29udHJvbGFyIG8gdmlicmFkb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IlBlcm1pdGUgcXVlIG8gYXBsaWNhdGl2byBjb250cm9sZSBvIHZpYnJhZG9yLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiJjb250cm9sYXIgbGFudGVybmEiPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IlBlcm1pdGUgcXVlIHVtIGFwbGljYXRpdm8gbGVpYSBxdWFpc3F1ZXIgcGFsYXZyYXMsIG5vbWVzIGUgZnJhc2VzIHBhcnRpY3VsYXJlcyBhcm1hemVuYWRvcyBwZWxvIHVzdcOhcmlvIG5vIGRpY2lvbsOhcmlvIGRvIHVzdcOhcmlvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+ImdyYXZhciBubyBkaWNpb27DoXJpbyBkZWZpbmlkbyBwZWxvIHVzdcOhcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+IlBlcm1pdGUgcXVlIHVtIGFwbGljYXRpdm8gZ3JhdmUgbm92YXMgcGFsYXZyYXMgbm8gZGljaW9uw6FyaW8gZG8gdXN1w6FyaW8uIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJtb2RpZmljYXIvZXhjbHVpciBjb250LiBhcm1hei4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiJtb2RpZmljYXIvZXhjbHVpciBjb250LiBhcm1hei4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODA3OTQwMzc1OTAwMTc3NzI5MSI+Im1vZGlmaWNhci9leGNsdWlyIGNvbnRlw7pkbyBkbyBjYXJ0w6NvIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+IlBlcm0uIGFwbGljLiBncmF2ZSBhcm0uIGNvbXAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDEzMTg3MTU0MTEyNzIxMTUyNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjU5NDM5MzMzNDc4NTczODI1MiI+IlBlcm0uIGFwbGljLiBncmF2ZSBhcm0uIGNvbXAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iUGVybWl0ZSBxdWUgdW0gYXBsaWNhdGl2byBncmF2ZSBubyBjYXJ0w6NvIFNELiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiJhY2Vzc2FyIG8gc2lzdGVtYSBkZSBhcnF1aXZvcyBkZSBjYWNoZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2NhY2hlX2ZpbGVzeXN0ZW0iIG1zZ2lkPSIxNjI0NzM0NTI4NDM1NjU5OTA2Ij4iUGVybWl0ZSBxdWUgdW0gYXBsaWNhdGl2byBsZWlhIGUgZ3JhdmUgbm8gc2lzdGVtYSBkZSBhcnF1aXZvcyBkZSBjYWNoZS4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iTW9zdHJhciB0b2RhcyI8L2I+PC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSIgbXNnaWQ9IjIzOTkyODk5OTk2MDg5MDA0NDMiPiJBcm1hemVuYW1lbnRvIFVTQiBlbSBtYXNzYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTkwMTQ1OTA0MTM5ODc1MTQ5NSI+IkNvbmVjdGFkbyBwb3IgVVNCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4MjMxNDYyNzUwMDEwMDY2ODk2Ij4iVm9jw6ogY29uZWN0b3UgbyB0ZWxlZm9uZSBhbyBjb21wdXRhZG9yIHZpYSBVU0IuIFNlbGVjaW9uZSBvIGJvdMOjbyBhYmFpeG8gc2UgcXVpc2VyIGNvcGlhciBhcnF1aXZvcyBlbnRyZSBzZXUgY29tcHV0YWRvciBlIG8gYXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvIGRvIEFuZHJvaWQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiJWb2PDqiBjb25lY3RvdSBvIHRlbGVmb25lIGFvIGNvbXB1dGFkb3IgdmlhIFVTQi4gU2VsZWNpb25lIG8gYm90w6NvIGFiYWl4byBzZSBxdWlzZXIgY29waWFyIGFycXVpdm9zIGVudHJlIHNldSBjb21wdXRhZG9yIGUgbyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8gZG8gQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IlZvY8OqIGNvbmVjdG91IG8gdGVsZWZvbmUgYW8gY29tcHV0YWRvciB2aWEgVVNCLiBTZWxlY2lvbmUgbyBib3TDo28gYWJhaXhvIHNlIHF1aXNlciBjb3BpYXIgYXJxdWl2b3MgZW50cmUgbyBjb21wdXRhZG9yIGUgbyBjYXJ0w6NvIFNEIGRvIHNldSBBbmRyb2lkLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjEwNTIyNTk5MzAzNjk1MDgyMzUiPiJBdGl2YXIgbyBhcm1hemVuYW1lbnRvIFVTQiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IkjDoSB1bSBwcm9ibGVtYSBjb20gbyB1c28gZG8gc2V1IGFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyBwYXJhIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIyNTM0Nzg0NzUxNjAzMzQ1MzYzIj4iSMOhIHVtIHByb2JsZW1hIGNvbSBvIHVzbyBkbyBzZXUgY2FydMOjbyBTRCBwYXJhIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkjDoSB1bSBwcm9ibGVtYSBjb20gbyB1c28gZG8gc2V1IGFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyBwYXJhIGFybWF6ZW5hbWVudG8gVVNCLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJIw6EgdW0gcHJvYmxlbWEgY29tIG8gdXNvIGRvIHNldSBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8gcGFyYSBhcm1hemVuYW1lbnRvIFVTQi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iQ29uZWN0YWRvIHBvciBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJTZWxlY2lvbmUgcGFyYSBjb3BpYXIgYXJxdWl2b3MgcGFyYS9kbyBzZXUgY29tcHV0YWRvci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiJEZXNhdGl2YXIgbyBhcm1hemVuYW1lbnRvIFVTQiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iU2VsZWNpb25lIHBhcmEgZGVzYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IkFybWF6ZW5hbWVudG8gVVNCIGVtIHVzbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iQW50ZXMgZGUgZGVzYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IsIHZlcmlmaXF1ZSBzZSBkZXNjb25lY3RvdSAo4oCcZWpldG914oCdKSBvIGFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyBkbyBBbmRyb2lkIGRvIGNvbXB1dGFkb3IuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiJBbnRlcyBkZSBkZXNhdGl2YXIgbyBhcm1hemVuYW1lbnRvIFVTQiwgdmVyaWZpcXVlIHNlIGRlc2NvbmVjdG91ICjigJxlamV0b3XigJ0pIG8gYXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvIGRvIEFuZHJvaWQgZG8gY29tcHV0YWRvci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjEzNzEzMzk2NDI2NjA0MTA0Ij4iQW50ZXMgZGUgZGVzYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IsIHZlcmlmaXF1ZSBzZSBkZXNjb25lY3RvdSAo4oCcZWpldG914oCdKSBvIGNhcnTDo28gU0QgZG8gQW5kcm9pZCBkbyBjb21wdXRhZG9yLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+IkRlc2F0aXZhciBvIGFybWF6ZW5hbWVudG8gVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMTQzODgxOTE0ODQwNDEyMTA4Ij4iSG91dmUgdW0gcHJvYmxlbWEgYW8gZGVzYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IuIFZlcmlmaXF1ZSBzZSBkZXNjb25lY3RvdSBvIGhvc3QgVVNCIGUgdGVudGUgbm92YW1lbnRlLiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4iU2Ugdm9jw6ogYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IsIGFsZ3VucyBhcGxpY2F0aXZvcyBxdWUgZXN0w6NvIGVtIHVzbyBzZXLDo28gaW50ZXJyb21waWRvcyBlIHBvZGVyw6NvIG7Do28gZXN0YXIgZGlzcG9uw612ZWlzIGF0w6kgdm9jw6ogZGVzYXRpdmFyIG8gYXJtYXplbmFtZW50byBVU0IuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+IkZhbGhhIGRlIG9wZXJhw6fDo28gZGUgVVNCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Ik9LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJGb3JtYXRhciBhcm0uIGNvbXAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjU3NzkwODAwNjk0OTc0MjIxNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc5ODA5OTU1OTI1OTUwOTc4NDEiPiJGb3JtYXRhciBhcm0uIGNvbXAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+IkZvcm1hdGFyIGNhcnTDo28gU0QiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iRm9ybWF0YXIgbyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8sIGFwYWdhbmRvIHRvZG9zIG9zIGFycXVpdm9zIGFybWF6ZW5hZG9zPyBBIGHDp8OjbyBuw6NvIHBvZGUgc2VyIHJldmVydGlkYSEiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNDcwODE1MTQwMDY4NTAyODI0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4Mjk2OTA4MDc5NzIyODk3NzcyIj4iRm9ybWF0YXIgbyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8sIGFwYWdhbmRvIHRvZG9zIG9zIGFycXVpdm9zIGFybWF6ZW5hZG9zPyBBIGHDp8OjbyBuw6NvIHBvZGUgc2VyIHJldmVydGlkYSEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiJUZW0gY2VydGV6YSBkZSBxdWUgZGVzZWphIGZvcm1hdGFyIG8gY2FydMOjbyBTRD8gVG9kb3Mgb3MgZGFkb3Mgbm8gc2V1IGNhcnTDo28gc2Vyw6NvIHBlcmRpZG9zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IkZvcm1hdGFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRiX2FjdGl2ZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NzI5MDQ0Nzc4OTQ5MTg5OTE4Ij4iRGVwdXJhw6fDo28gVVNCIGNvbmVjdGFkYSI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ImNhbmRpZGF0b3MiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4iUHJlcGFyYW5kbyBhcm1hemVuLiBjb21wYXJ0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQyMzk1MTY2NzUwMjg0Mzg5OTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ0OTgxNjAwNTM1MTQ2ODU2MCI+IlByZXBhcmFuZG8gYXJtYXplbi4gY29tcGFydC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlByZXBhcmFuZG8gbyBjYXJ0w6NvIFNEIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IlByb2N1cmFuZG8gZXJyb3MuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiJBcm1hemVuYW1lbnRvIGNvbXBhcnQuIHZhemlvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiJBcm1hemVuYW1lbnRvIGNvbXBhcnQuIHZhemlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzgwNDc3ODM4MjQxMjEyOTk3Ij4iQ2FydMOjbyBTRCBlbSBicmFuY28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4iTyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8gZXN0w6EgdmF6aW8gb3UgcG9zc3VpIHNpc3RlbWEgZGUgYXJxdWl2b3MgaW5jb21wYXTDrXZlbC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNjA2NjYwNzU2MTI0NjI5NzA4IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NjIzMTMwNTIyNTU2MDg3MzExIj4iTyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8gZXN0w6EgdmF6aW8gb3UgcG9zc3VpIHNpc3RlbWEgZGUgYXJxdWl2b3MgaW5jb21wYXTDrXZlbC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJDYXJ0w6NvIFNEIHZhemlvIG91IGNvbSBzaXN0ZW1hIGRlIGFycXVpdm9zIGluY29tcGF0w612ZWwuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iQXJtYXouIGNvbXBhcnQuIGRhbmlmaWNhZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJBcm1hei4gY29tcGFydC4gZGFuaWZpY2FkbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NDEwNzIzOTA2MDE5MTAwMTg5Ij4iQ2FydMOjbyBTRCBkYW5pZmljYWRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiJPIGFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyBlc3TDoSBkYW5pZmljYWRvLiBUYWx2ZXogc2VqYSBuZWNlc3PDoXJpbyByZWZvcm1hdMOhLWxvLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJPIGFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyBlc3TDoSBkYW5pZmljYWRvLiBUYWx2ZXogc2VqYSBuZWNlc3PDoXJpbyByZWZvcm1hdMOhLWxvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5MDI1MzE3NzU5NDgyMzg5ODkiPiJPIGNhcnTDo28gU0QgZXN0w6EgZGFuaWZpY2Fkby4gVGFsdmV6IHNlamEgbmVjZXNzw6FyaW8gcmVmb3JtYXTDoS1sby4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IkFybWF6LiBjb21wLiByZW1vdi4gaW5lc3BlcmFkLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iQXJtYXouIGNvbXAuIHJlbW92LiBpbmVzcGVyYWQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IkNhcnTDo28gU0QgcmVtb3ZpZG8gaW5lc3BlcmFkYW1lbnRlLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiJEZXNjb25lY3RlIG8gYXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvIGFudGVzIGRhIHJlbW/Dp8OjbyBwYXJhIGV2aXRhciBhIHBlcmRhIGRlIGRhZG9zLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDIwMDUzOTY0NjQ0OTQ2NDg5MzcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQzMjk4NDg4MTk4NjU1OTQyNDEiPiJEZXNjb25lY3RlIG8gYXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvIGFudGVzIGRhIHJlbW/Dp8OjbyBwYXJhIGV2aXRhciBhIHBlcmRhIGRlIGRhZG9zLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IkRlc21vbnRlIG8gY2FydMOjbyBTRCBhbnRlcyBkYSByZW1vw6fDo28gcGFyYSBldml0YXIgYSBwZXJkYSBkZSBkYWRvcy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNjUyNTg4MTAxODY3OTUxNSI+IsOJIHNlZ3VybyByZW1vdmVyIGFybWF6LiBjb21wLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iw4kgc2VndXJvIHJlbW92ZXIgYXJtYXouIGNvbXAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iTyBjYXJ0w6NvIFNEIGrDoSBwb2RlIHNlciByZW1vdmlkbyBjb20gc2VndXJhbsOnYS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiJWb2PDqiBwb2RlIHJlbW92ZXIgY29tIHNlZ3VyYW7Dp2EgbyBhcm1hemVuYW1lbnRvIGNvbXBhcnRpbGhhZG8uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iVm9jw6ogcG9kZSByZW1vdmVyIGNvbSBzZWd1cmFuw6dhIG8gYXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiJWb2PDqiBwb2RlIHJlbW92ZXIgbyBjYXJ0w6NvIFNEIGNvbSBzZWd1cmFuw6dhLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iQXJtYXplbi4gY29tcGFydC4gcmVtb3ZpZG8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxODc0ODg5NzY0MzY3MDg1NTYyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDQ4NjM3NzIzMDE0MDIyNzY1MSI+IkFybWF6ZW4uIGNvbXBhcnQuIHJlbW92aWRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IkNhcnTDo28gU0QgcmVtb3ZpZG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNzMwODkwNDQxMzMxMzQ0Nzc2Ij4iQXJtYXplbmFtZW50byBjb21wYXJ0aWxoYWRvIHJlbW92aWRvLiBJbnNpcmEgbm92YSBtw61kaWEuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjczMDg5MDQ0MTMzMTM0NDc3NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjkyMTEyNjE2MjU4MDU3NDE0MyI+IkFybWF6ZW5hbWVudG8gY29tcGFydGlsaGFkbyByZW1vdmlkby4gSW5zaXJhIG5vdmEgbcOtZGlhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IkNhcnTDo28gU0QgcmVtb3ZpZG8uIEluc2lyYSB1bSBub3ZvLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4iTmVuaHVtIGF0aXZpZGFkZSBjb3JyZXNwb25kZW50ZSBmb2kgZW5jb250cmFkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJhdHVhbGl6YXIgZXN0YXTDrXN0aWNhcyBkZSB1c28gZG8gY29tcG9uZW50ZSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCmluZGV4IDI3NjUxZjguLmNiNzA4MTggMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbApAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjM0NDYxNjQ1ODQ3MTA1OTY1MTMiPiLQmNC90YHRgtGA0YPQvNC10L3RgtGLINGA0LDQt9GA0LDQsdC+0YLQutC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+ItCk0YPQvdC60YbQuNC4LCDQvdC10L7QsdGF0L7QtNC40LzRi9C1INGC0L7Qu9GM0LrQviDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60LDQvCDQv9GA0LjQu9C+0LbQtdC90LjQuS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiLQn9Cw0LzRj9GC0YwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+ItCU0L7RgdGC0YPQvyDQuiDQvtCx0YnQtdC80YMg0L3QsNC60L7Qv9C40YLQtdC70Y4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiLQlNC+0YHRgtGD0L8g0Log0L7QsdGJ0LXQvNGDINC90LDQutC+0L/QuNGC0LXQu9GOLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiLQlNC+0YHRgtGD0L8g0LogU0Qt0LrQsNGA0YLQtS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiLQvtGC0LrQu9GO0YfQsNGC0Ywg0LjQu9C4INC40LfQvNC10L3Rj9GC0Ywg0YHRgtGA0L7QutGDINGB0L7RgdGC0L7Rj9C90LjRjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiLQn9C+0LfQstC+0LvRj9C10YIg0L/RgNC40LvQvtC20LXQvdC40Y4g0L7RgtC60LvRjtGH0LDRgtGMINGB0YLRgNC+0LrRgyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQu9C4INC00L7QsdCw0LLQu9GP0YLRjC/Rg9C00LDQu9GP0YLRjCDRgdC40YHRgtC10LzQvdGL0LUg0LfQvdCw0YfQutC4LiI8L3N0cmluZz4KQEAgLTMyMSwxNiArMzIxLDE2IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19tb3VudF91bm1vdW50X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNjI1MzI2Mzc5MjUzNTg1OTc2NyI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0LjQu9C+0LbQtdC90LjRjiDQvNC+0L3RgtC40YDQvtCy0LDRgtGMINC4INGD0LTQsNC70Y/RgtGMINGE0LDQudC70L7QstGL0LUg0YHQuNGB0YLQtdC80Ysg0YHRitC10LzQvdGL0YUg0L3QvtGB0LjRgtC10LvQtdC5LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ItGE0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMINCy0L3QtdGI0L3QuNC5INC90LDQutC+0L/QuNGC0LXQu9GMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQuNC70L7QttC10L3QuNGOINGE0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMINGB0YrQtdC80L3Ri9C5INC90LDQutC+0L/QuNGC0LXQu9GMLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4i0L/QvtC70YPRh9Cw0YLRjCDRgdCy0LXQtNC10L3QuNGPINC+INC30LDRidC40YnQtdC90L3QvtC8INGF0YDQsNC90LjQu9C40YnQtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0L7Qs9GA0LDQvNC80LUg0L/QvtC70YPRh9Cw0YLRjCDRgdCy0LXQtNC10L3QuNGPINC+INC30LDRidC40YnQtdC90L3QvtC8INGF0YDQsNC90LjQu9C40YnQtS4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+ItGB0L7Qt9C00LDRgtGMINC30LDRidC40YnQtdC90L3QvtC1INGF0YDQsNC90LjQu9C40YnQtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0L7Qs9GA0LDQvNC80LDQvCDRgdC+0LfQtNCw0LLQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdGL0LUg0YXRgNCw0L3QuNC70LjRidCwLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+ItGD0LTQsNC70Y/RgtGMINC30LDRidC40YnQtdC90L3QvtC1INGF0YDQsNC90LjQu9C40YnQtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiLQn9C+0LfQstC+0LvRj9C10YIg0L/RgNC+0LPRgNCw0LzQvNC1INGD0LTQsNC70Y/RgtGMINC30LDRidC40YnQtdC90L3Ri9C1INGF0YDQsNC90LjQu9C40YnQsC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLQv9C+0LTQutC70Y7Rh9Cw0YLRjCAvINC+0YLQutC70Y7Rh9Cw0YLRjCDQt9Cw0YnQuNGJ0LXQvdC90L7QtSDRhdGA0LDQvdC40LvQuNGJ0LUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1NDM4MDc4MTIxNzE4NzM4NjI1Ij4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQvtCz0YDQsNC80LzQtSDQv9C+0LTQutC70Y7Rh9Cw0YLRjCDQuCDQvtGC0LrQu9GO0YfQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdGL0LUg0YXRgNCw0L3QuNC70LjRidCwLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4i0L/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIxMzg3ODgxNzcwNzA4ODcyNDcwIj4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQvtCz0YDQsNC80LzQsNC8INC/0LXRgNC10LjQvNC10L3QvtCy0YvQstCw0YLRjCDQt9Cw0YnQuNGJ0LXQvdC90YvQtSDRhdGA0LDQvdC40LvQuNGJ0LAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiLQv9C+0LvRg9GH0LDRgtGMINGB0LLQtdC00LXQvdC40Y8g0L4g0LfQsNGJ0LjRidC10L3QvdC+0Lwg0YXRgNCw0L3QuNC70LjRidC1Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQvtCz0YDQsNC80LzQtSDQv9C+0LvRg9GH0LDRgtGMINGB0LLQtdC00LXQvdC40Y8g0L4g0LfQsNGJ0LjRidC10L3QvdC+0Lwg0YXRgNCw0L3QuNC70LjRidC1LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDczMTIwNzgwMzIzMjY5Mjg4OTkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI2NDE0NzU3MjM0Nzg5MzM2MzI3Ij4i0YHQvtC30LTQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzA0MTgwMjMyMjc1OTAxNDAzNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSIyNjIxMzQ2NzY0OTk1NzMxMjUwIj4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQvtCz0YDQsNC80LzQsNC8INGB0L7Qt9C00LDQstCw0YLRjCDQt9Cw0YnQuNGJ0LXQvdC90YvQtSDRhdGA0LDQvdC40LvQuNGJ0LAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzc4NzMyMjg3ODk1NTI2MTAwNiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1MjY5MjgzMjgzMDE2MTgwMjIiPiLRg9C00LDQu9GP0YLRjCDQt9Cw0YnQuNGJ0LXQvdC90L7QtSDRhdGA0LDQvdC40LvQuNGJ0LUiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1NzQwNzU0MTE0OTY3ODkzMTY5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSIyNzQ2NzA2ODg5MjA4MDY2MjU2Ij4i0J/QvtC30LLQvtC70Y/QtdGCINC/0YDQvtCz0YDQsNC80LzQtSDRg9C00LDQu9GP0YLRjCDQt9Cw0YnQuNGJ0LXQvdC90YvQtSDRhdGA0LDQvdC40LvQuNGJ0LAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUxNzQ0OTY5NDY2NzgyODU5MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSIyNDU2Mjg3NjIzNjg5MDI5NzQ0Ij4i0L/QvtC00LrQu9GO0YfQsNGC0YwgLyDQvtGC0LrQu9GO0YfQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0L7Qs9GA0LDQvNC80LUg0L/QvtC00LrQu9GO0YfQsNGC0Ywg0Lgg0L7RgtC60LvRjtGH0LDRgtGMINC30LDRidC40YnQtdC90L3Ri9C1INGF0YDQsNC90LjQu9C40YnQsC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+ItC/0LXRgNC10LjQvNC10L3QvtCy0LDRgtGMINC30LDRidC40YnQtdC90L3QvtC1INGF0YDQsNC90LjQu9C40YnQtSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0L7Qs9GA0LDQvNC80LDQvCDQv9C10YDQtdC40LzQtdC90L7QstGL0LLQsNGC0Ywg0LfQsNGJ0LjRidC10L3QvdGL0LUg0YXRgNCw0L3QuNC70LjRidCwLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiLRg9C/0YDQsNCy0LvRj9GC0Ywg0LLQuNCx0YDQvtCy0YvQt9C+0LLQvtC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfdmlicmF0ZSIgbXNnaWQ9IjI4ODY2NzcxNzcyNTc3ODkxODciPiLQn9C+0LfQstC+0LvRj9C10YIg0L/RgNC40LvQvtC20LXQvdC40Y4g0YPQv9GA0LDQstC70Y/RgtGMINCy0LjQsdGA0L7Qt9Cy0L7QvdC60L7QvC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4i0YPQv9GA0LDQstC70Y/RgtGMINCy0YHQv9GL0YjQutC+0LkiPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0LjQu9C+0LbQtdC90LjRjiDRgdGH0LjRgtGL0LLQsNGC0Ywg0LvRjtCx0YvQtSDRgdC70L7QstCwLCDQuNC80LXQvdCwINC4INGE0YDQsNC30Ysg0LvQuNGH0L3QvtCz0L4g0L/QvtC70YzQt9C+0LLQsNC90LjRjywg0LrQvtGC0L7RgNGL0LUg0LzQvtCz0YPRgiDRhdGA0LDQvdC40YLRjNGB0Y8g0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0Lwg0YHQu9C+0LLQsNGA0LUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl93cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSI2NzAzMTA5NTExODM2MzQzMzQxIj4i0LfQsNC/0LjRgdGL0LLQsNGC0Ywg0LIg0YHQu9C+0LLQsNGA0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+ItCf0L7Qt9Cy0L7Qu9GP0LXRgiDQv9GA0LjQu9C+0LbQtdC90LjRjiDQt9Cw0L/QuNGB0YvQstCw0YLRjCDQvdC+0LLRi9C1INGB0LvQvtCy0LAg0LIg0YHQu9C+0LLQsNGA0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iOTkzNzA3NDM2OTQxMDE2OTEzIj4i0LjQt9C80LXQvdGP0YLRjCDQuCDRg9C00LDQu9GP0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSDQvtCx0YnQtdCz0L4g0L3QsNC60L7Qv9C40YLQtdC70Y8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiLQuNC30LzQtdC90Y/RgtGMINC4INGD0LTQsNC70Y/RgtGMINGB0L7QtNC10YDQttC40LzQvtC1INC+0LHRidC10LPQviDQvdCw0LrQvtC/0LjRgtC10LvRjyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4i0LjQt9C80LXQvdGP0YLRjC/Rg9C00LDQu9GP0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSBTRC3QutCw0YDRgtGLIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDEzMTg3MTU0MTEyNzIxMTUyNiI+ItCg0LDQt9GA0LXRiNCw0LXRgiDQv9GA0LjQu9C+0LbQtdC90LjRjiDQt9Cw0L/QuNGB0Ywg0L3QsCDQvtCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiLQoNCw0LfRgNC10YjQsNC10YIg0L/RgNC40LvQvtC20LXQvdC40Y4g0LfQsNC/0LjRgdGMINC90LAg0L7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiLQoNCw0LfRgNC10YjQsNC10YIg0L/RgNC40LvQvtC20LXQvdC40Y4g0LfQsNC/0LjRgdGMINC90LAgU0Qt0LrQsNGA0YLRgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLQv9C+0LvRg9GH0LDRgtGMINC00L7RgdGC0YPQvyDQuiDQutGN0YjRgyDRhNCw0LnQu9C+0LLQvtC5INGB0LjRgdGC0LXQvNGLIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjE2MjQ3MzQ1Mjg0MzU2NTk5MDYiPiLQoNCw0LfRgNC10YjQsNC10YIg0L/RgNC+0LPRgNCw0LzQvNCw0Lwg0LTQvtGB0YLRg9C/INC00LvRjyDQt9Cw0L/QuNGB0Lgg0Lgg0YfRgtC10L3QuNGPINC6INC60Y3RiNGDINGE0LDQudC70L7QstC+0Lkg0YHQuNGB0YLQtdC80YsuIjwvc3RyaW5nPgpAQCAtODAyLDE3ICs4MDIsMTcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1zX3Nob3dfYWxsIiBtc2dpZD0iMjY3MTc5MTE2MzkzMzA5MTE4MCI+PGI+ItCf0L7QutCw0LfQsNGC0Ywg0LLRgdC1IjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+ItCX0LDQv9C+0LzQuNC90LDRjtGJ0LXQtSDRg9GB0YLRgNC+0LnRgdGC0LLQviBVU0IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV90aXRsZSIgbXNnaWQ9IjU5MDE0NTkwNDEzOTg3NTE0OTUiPiJVU0It0L/QvtC00LrQu9GO0YfQtdC90LjQtSDRg9GB0YLQsNC90L7QstC70LXQvdC+Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4MjMxNDYyNzUwMDEwMDY2ODk2Ij4i0KLQtdC70LXRhNC+0L0g0L/QvtC00LrQu9GO0YfQtdC9INC6INC60L7QvNC/0YzRjtGC0LXRgNGDINGH0LXRgNC10Lcg0L/QvtGA0YIgVVNCLiDQlNC70Y8g0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRhNCw0LnQu9C+0LIg0LzQtdC20LTRgyDQutC+0LzQv9GM0Y7RgtC10YDQvtC8INC4INC+0LHRidC40Lwg0L3QsNC60L7Qv9C40YLQtdC70LXQvCBBbmRyb2lkINC90LDQttC80LjRgtC1INC60L3QvtC/0LrRgyDQvdC40LbQtS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4MjMxNDYyNzUwMDEwMDY2ODk2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjExNTc3OTMyNDU1MTUwMjA2MiI+ItCi0LXQu9C10YTQvtC9INC/0L7QtNC60LvRjtGH0LXQvSDQuiDQutC+0LzQv9GM0Y7RgtC10YDRgyDRh9C10YDQtdC3INC/0L7RgNGCIFVTQi4g0JTQu9GPINC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YTQsNC50LvQvtCyINC80LXQttC00YMg0LrQvtC80L/RjNGO0YLQtdGA0L7QvCDQuCDQvtCx0YnQuNC8INC90LDQutC+0L/QuNGC0LXQu9C10LwgQW5kcm9pZCDQvdCw0LbQvNC40YLQtSDQutC90L7Qv9C60YMg0L3QuNC20LUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjQ3OTY3NTk2NDYxNjcyNDcxNzgiPiLQotC10LvQtdGE0L7QvSDQv9C+0LTQutC70Y7Rh9C10L0g0Log0LrQvtC80L/RjNGO0YLQtdGA0YMg0YfQtdGA0LXQtyDQv9C+0YDRgiBVU0IuINCd0LDQttC80LjRgtC1INC60L3QvtC/0LrRgyDQvdC40LbQtSwg0LXRgdC70Lgg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LrQvtC/0LjRgNC+0LLQsNGC0Ywg0YTQsNC50LvRiyDRgSDQutC+0LzQv9GM0Y7RgtC10YDQsCDQvdCwIFNELdC60LDRgNGC0YMg0YPRgdGC0YDQvtC50YHRgtCy0LAgQW5kcm9pZCAo0LjQu9C4INC90LDQvtCx0L7RgNC+0YIpLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjEwNTIyNTk5MzAzNjk1MDgyMzUiPiLQktC60LvRjtGH0LjRgtGMIFVTQi3QvdCw0LrQvtC/0LjRgtC10LvRjCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+ItCf0YDQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQuCDQvtCx0YnQtdCz0L4g0L3QsNC60L7Qv9C40YLQtdC70Y8g0LrQsNC6IFVTQi3QvdCw0LrQvtC/0LjRgtC10LvRjyDQstC+0LfQvdC40LrQu9CwINC+0YjQuNCx0LrQsC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+ItCf0YDQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQuCBTRC3QutCw0YDRgtGLINC60LDQuiBVU0It0L3QsNC60L7Qv9C40YLQtdC70Y8g0LLQvtC30L3QuNC60LvQsCDQvdC10L/QvtC70LDQtNC60LAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzMjc2NDEzNzY0NDMwNDY4NDU0Ij4i0J/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC4INC+0LHRidC10LPQviDQvdCw0LrQvtC/0LjRgtC10LvRjyDQutCw0LogVVNCLdC90LDQutC+0L/QuNGC0LXQu9GPINCy0L7Qt9C90LjQutC70LAg0L7RiNC40LHQutCwLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiLQn9GA0Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Lgg0L7QsdGJ0LXQs9C+INC90LDQutC+0L/QuNGC0LXQu9GPINC60LDQuiBVU0It0L3QsNC60L7Qv9C40YLQtdC70Y8g0LLQvtC30L3QuNC60LvQsCDQvtGI0LjQsdC60LAuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iODE3NTg5MjU1NDc1NzIxNjUyNSI+IlVTQi3Qv9C+0LTQutC70Y7Rh9C10L3QuNC1INGD0YHRgtCw0L3QvtCy0LvQtdC90L4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiLQktGL0LHQtdGA0LjRgtC1INC60L7Qv9C40YDQvtCy0LDQvdC40LUg0YTQsNC50LvQvtCyINC90LAg0LrQvtC80L/RjNGO0YLQtdGAINC40LvQuCDRgSDQutC+0LzQv9GM0Y7RgtC10YDQsC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjIzMzYwNTgzOTY2NjM1MTYwMTciPiLQktGL0LrQu9GO0YfQuNGC0YwgVVNCLdC90LDQutC+0L/QuNGC0LXQu9GMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjI1OTE4MTM0OTAyNjk4NDE1MzkiPiLQktGL0LHQtdGA0LjRgtC1LCDRh9GC0L7QsdGLINCy0YvQutC70Y7Rh9C40YLRjCBVU0It0L3QsNC60L7Qv9C40YLQtdC70YwuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IlVTQi3QvdCw0LrQvtC/0LjRgtC10LvRjCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+ItCf0LXRgNC10LQg0L7RgtC60LvRjtGH0LXQvdC40LXQvCBVU0It0L3QsNC60L7Qv9C40YLQtdC70Y8g0YPQsdC10LTQuNGC0LXRgdGMLCDRh9GC0L4g0L7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCBBbmRyb2lkINCx0YvQuyDQvtGC0LrQu9GO0YfQtdC9INC+0YIg0LrQvtC80L/RjNGO0YLQtdGA0LAuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiLQn9C10YDQtdC0INC+0YLQutC70Y7Rh9C10L3QuNC10LwgVVNCLdC90LDQutC+0L/QuNGC0LXQu9GPINGD0LHQtdC00LjRgtC10YHRjCwg0YfRgtC+INC+0LHRidC40Lkg0L3QsNC60L7Qv9C40YLQtdC70YwgQW5kcm9pZCDQsdGL0Lsg0L7RgtC60LvRjtGH0LXQvSDQvtGCINC60L7QvNC/0YzRjtGC0LXRgNCwLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiLQn9C10YDQtdC0INC+0YLQutC70Y7Rh9C10L3QuNC10LwgVVNCLdC90LDQutC+0L/QuNGC0LXQu9GPINGD0LHQtdC00LjRgtC10YHRjCwg0YfRgtC+IFNELdC60LDRgNGC0LAg0YPRgdGC0YDQvtC50YHRgtCy0LAgQW5kcm9pZCDQsdGL0LvQsCDQvtGC0LrQu9GO0YfQtdC90LAg0L7RgiDQutC+0LzQv9GM0Y7RgtC10YDQsC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiLQktGL0LrQu9GO0YfQuNGC0YwgVVNCLdC90LDQutC+0L/QuNGC0LXQu9GMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9lcnJvcl9tZXNzYWdlIiBtc2dpZD0iMTQzODgxOTE0ODQwNDEyMTA4Ij4i0J/RgNC4INCy0YvQutC70Y7Rh9C10L3QuNC4IFVTQi3QvdCw0LrQvtC/0LjRgtC10LvRjyDQv9GA0L7QuNC30L7RiNC70LAg0L3QtdC/0L7Qu9Cw0LTQutCwLiDQo9Cx0LXQtNC40YLQtdGB0YwsINGH0YLQviBVU0It0YXQvtGB0YIg0L7RgtC60LvRjtGH0LXQvSwg0Lgg0L/QvtCy0YLQvtGA0LjRgtC1INC/0L7Qv9GL0YLQutGDLiI8L3N0cmluZz4KQEAgLTgyMCw5ICs4MjAsOSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RleHQiIG1zZ2lkPSIzMjAyODM4MjM0NzgwNTA1ODg2Ij4i0J/RgNC4INCy0LrQu9GO0YfQtdC90LjQuCBVU0It0L3QsNC60L7Qv9C40YLQtdC70Y8g0L3QtdC60L7RgtC+0YDRi9C1INC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQv9GA0LjQu9C+0LbQtdC90LjRjyDQvNC+0LPRg9GCINC/0YDQtdC60YDQsNGC0LjRgtGMINGA0LDQsdC+0YLRgyDQuCDQvtGB0YLQsNCy0LDRgtGM0YHRjyDQvdC10LTQvtGB0YLRg9C/0L3Ri9C80Lgg0LTQviDQvtGC0LrQu9GO0YfQtdC90LjRjyBVU0It0L3QsNC60L7Qv9C40YLQtdC70Y8uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+ItCh0LHQvtC5INC+0L/QtdGA0LDRhtC40LggVVNCLdC/0L7QtNC60LvRjtGH0LXQvdC40Y8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4i0J7QmiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4i0KTQvtGA0LzQsNGC0LjRgNC+0LLQsNGC0YwiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+ItCk0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODY2MzI0NzkyOTU1MTA5NTg1NCI+ItCe0YfQuNGB0YLQuNGC0YwgU0Qt0LrQsNGA0YLRgyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NzA4MTUxNDAwNjg1MDI4MjQiPiLQpNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INC+0LHRidC10LPQviDQvdCw0LrQvtC/0LjRgtC10LvRjyDQsdC10LfQstC+0LfQstGA0LDRgtC90L4g0YPQtNCw0LvQuNGCINCy0YHQtSDRhNCw0LnQu9GLINC90LAg0L3QtdC8ISDQn9GA0L7QtNC+0LvQttC40YLRjD8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNDcwODE1MTQwMDY4NTAyODI0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4Mjk2OTA4MDc5NzIyODk3NzcyIj4i0KTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQvtCx0YnQtdCz0L4g0L3QsNC60L7Qv9C40YLQtdC70Y8g0LHQtdC30LLQvtC30LLRgNCw0YLQvdC+INGD0LTQsNC70LjRgiDQstGB0LUg0YTQsNC50LvRiyDQvdCwINC90LXQvCEg0J/RgNC+0LTQvtC70LbQuNGC0Yw/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4i0J7RgtGE0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMINC60LDRgNGC0YMgU0Q/INCS0YHQtSDQtNCw0L3QvdGL0LUsINC90LDRhdC+0LTRj9GJ0LjQtdGB0Y8g0L3QsCDQutCw0YDRgtC1LCDQsdGD0LTRg9GCINGD0L3QuNGH0YLQvtC20LXQvdGLLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+ItCk0L7RgNC80LDRgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+ItCe0YLQu9Cw0LTQutCwINC/0L4gVVNCINGA0LDQt9GA0LXRiNC10L3QsCI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ItCy0LDRgNC40LDQvdGC0YsiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4i0J/QvtC00LPQvtGC0LDQstC70LjQstCw0LXRgtGB0Y8g0L7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQyMzk1MTY2NzUwMjg0Mzg5OTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ0OTgxNjAwNTM1MTQ2ODU2MCI+ItCf0L7QtNCz0L7RgtCw0LLQu9C40LLQsNC10YLRgdGPINC+0LHRidC40Lkg0L3QsNC60L7Qv9C40YLQtdC70YwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+ItCf0L7QtNCz0L7RgtC+0LLQutCwINC60LDRgNGC0YsgU0QiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4i0J/RgNC+0LLQtdGA0LrQsCDQvtGI0LjQsdC+0LouIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiLQndC10YIg0LTQsNC90L3Ri9GFINC90LAg0L7QsdGJ0LXQvCDQvdCw0LrQvtC/0LjRgtC10LvQtSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM5MzczNDU1Nzc5ODM3MzA4NzMgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3Nzg4MDQwNzQ1Njg2MjI5MzA3Ij4i0J3QtdGCINC00LDQvdC90YvRhSDQvdCwINC+0LHRidC10Lwg0L3QsNC60L7Qv9C40YLQtdC70LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiLQn9GD0YHRgtCw0Y8g0LrQsNGA0YLQsCBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiLQndCwINC+0LHRidC10Lwg0L3QsNC60L7Qv9C40YLQtdC70LUg0L3QtdGCINC00LDQvdC90YvRhSDQuNC70Lgg0LXQs9C+INGE0LDQudC70L7QstCw0Y8g0YHQuNGB0YLQtdC80LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YLRgdGPLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiLQndCwINC+0LHRidC10Lwg0L3QsNC60L7Qv9C40YLQtdC70LUg0L3QtdGCINC00LDQvdC90YvRhSDQuNC70Lgg0LXQs9C+INGE0LDQudC70L7QstCw0Y8g0YHQuNGB0YLQtdC80LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YLRgdGPLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzgxNzcwNDA4ODAyNzgyOTM4MCI+IlNELdC60LDRgNGC0LAg0L/Rg9GB0YLQsCDQuNC70Lgg0LjRgdC/0L7Qu9GM0LfRg9C10YIg0L3QtdC/0L7QtNC00LXRgNC20LjQstCw0LXQvNGD0Y4g0YTQsNC50LvQvtCy0YPRjiDRgdC40YHRgtC10LzRgyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+ItCe0LHRidC40Lkg0L3QsNC60L7Qv9C40YLQtdC70Ywg0L/QvtCy0YDQtdC20LTQtdC9Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4i0J7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCDQv9C+0LLRgNC10LbQtNC10L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+ItCf0L7QstGA0LXQttC00LXQvdC90LDRjyDQutCw0YDRgtCwIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINC/0L7QstGA0LXQttC00LXQvS4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0L7RgtGE0L7RgNC80LDRgtC40YDQvtCy0LDRgtGMINC10LPQvi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4i0J7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCDQv9C+0LLRgNC10LbQtNC10L0uINCf0L7Qv9GA0L7QsdGD0LnRgtC1INC+0YLRhNC+0YDQvNCw0YLQuNGA0L7QstCw0YLRjCDQtdCz0L4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNELdC60LDRgNGC0LAg0L/QvtCy0YDQtdC20LTQtdC90LAuINCf0L7Qv9GA0L7QsdGD0LnRgtC1INC+0YLRhNC+0YDQvNCw0YLQuNGA0L7QstCw0YLRjCDQtdC1LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4i0J7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCDQvdC10L7QttC40LTQsNC90L3QviDQvtGC0LrQu9GO0YfQtdC9Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINC90LXQvtC20LjQtNCw0L3QvdC+INC+0YLQutC70Y7Rh9C10L0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4i0JrQsNGA0YLQsCBTRCDQvdC10L7QttC40LTQsNC90L3QviDQuNC30LLQu9C10YfQtdC90LAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4i0J/QtdGA0LXQtCDQuNC30LLQu9C10YfQtdC90LjQtdC8INC+0LHRidC10LPQviDQvdCw0LrQvtC/0LjRgtC10LvRjyDQvtGC0LrQu9GO0YfQuNGC0LUg0LXQs9C+INCy0L4g0LjQt9Cx0LXQttCw0L3QuNC1INC/0L7RgtC10YDQuCDQtNCw0L3QvdGL0YUuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjAwNTM5NjQ2NDQ5NDY0ODkzNyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDMyOTg0ODgxOTg2NTU5NDI0MSI+ItCf0LXRgNC10LQg0LjQt9Cy0LvQtdGH0LXQvdC40LXQvCDQvtCx0YnQtdCz0L4g0L3QsNC60L7Qv9C40YLQtdC70Y8g0L7RgtC60LvRjtGH0LjRgtC1INC10LPQviDQstC+INC40LfQsdC10LbQsNC90LjQtSDQv9C+0YLQtdGA0Lgg0LTQsNC90L3Ri9GFLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+ItCf0LXRgNC10LQg0LjQt9Cy0LvQtdGH0LXQvdC40LXQvCDQutCw0YDRgtGLIFNEINC+0YLQutC70Y7Rh9C40YLQtSDQtdC1INCy0L4g0LjQt9Cx0LXQttCw0L3QuNC1INC/0L7RgtC10YDQuCDQtNCw0L3QvdGL0YUuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINCx0LXQt9C+0L/QsNGB0L3QviDQvtGC0LrQu9GO0YfQtdC9Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINCx0LXQt9C+0L/QsNGB0L3QviDQvtGC0LrQu9GO0YfQtdC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4i0JHQtdC30L7Qv9Cw0YHQvdC+0LUg0YPQtNCw0LvQtdC90LjQtSDQutCw0YDRgtGLIFNEIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4i0KLQtdC/0LXRgNGMINC+0LHRidC40Lkg0L3QsNC60L7Qv9C40YLQtdC70Ywg0LzQvtC20LXRgiDQsdGL0YLRjCDQsdC10LfQvtC/0LDRgdC90L4g0L7RgtC60LvRjtGH0LXQvS4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiLQotC10L/QtdGA0Ywg0L7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCDQvNC+0LbQtdGCINCx0YvRgtGMINCx0LXQt9C+0L/QsNGB0L3QviDQvtGC0LrQu9GO0YfQtdC9LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiLQnNC+0LbQvdC+INCx0LXQt9C+0L/QsNGB0L3QviDQuNC30LLQu9C10YfRjCBTRC3QutCw0YDRgtGDLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4i0J7QsdGJ0LjQuSDQvdCw0LrQvtC/0LjRgtC10LvRjCDRg9C00LDQu9C10L0iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxODc0ODg5NzY0MzY3MDg1NTYyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDQ4NjM3NzIzMDE0MDIyNzY1MSI+ItCe0LHRidC40Lkg0L3QsNC60L7Qv9C40YLQtdC70Ywg0YPQtNCw0LvQtdC9Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+ItCe0YLRgdGD0YLRgdGC0LLRg9C10YIg0LrQsNGA0YLQsCBTRCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINC+0YLQutC70Y7Rh9C10L0uINCS0YHRgtCw0LLRjNGC0LUg0LTRgNGD0LPQvtC5INC90LDQutC+0L/QuNGC0LXQu9GMLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiLQntCx0YnQuNC5INC90LDQutC+0L/QuNGC0LXQu9GMINC+0YLQutC70Y7Rh9C10L0uINCS0YHRgtCw0LLRjNGC0LUg0LTRgNGD0LPQvtC5INC90LDQutC+0L/QuNGC0LXQu9GMLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IlNELdC60LDRgNGC0LAg0LjQt9Cy0LvQtdGH0LXQvdCwLiDQktGB0YLQsNCy0YzRgtC1INC90L7QstGD0Y4g0LrQsNGA0YLRgy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhY3Rpdml0eV9saXN0X2VtcHR5IiBtc2dpZD0iNDE2ODgyMDYwOTQwMzM4NTc4OSI+ItCf0L7QtNGF0L7QtNGP0YnQuNGFINC00LXQudGB0YLQstC40Lkg0L3QtSDQvdCw0LnQtNC10L3QviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiLQvtCx0L3QvtCy0LvRj9GC0Ywg0YHRgtCw0YLQuNGB0YLQuNC60YMg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LrQvtC80L/QvtC90LXQvdGC0L7QsiI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCmluZGV4IDdjMTE0NzEuLmI4YjU5NmEzIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4iVXR2ZWNrbGluZ3N2ZXJrdHlnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IkZ1bmt0aW9uZXIgc29tIGVuZGFzdCBiZWjDtnZzIGbDtnIgcHJvZ3JhbXV0dmVja2xhcmUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX3N0b3JhZ2UiIG1zZ2lkPSIxOTcxMTE4NzcwNTQ2MzM2OTY2Ij4iTGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4iRsOlIMOldGtvbXN0IHRpbGwgU0Qta29ydGV0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4iRsOlIMOldGtvbXN0IHRpbGwgU0Qta29ydGV0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjkyMDMzMDIyMTQ5MTUzNTU3NzQiPiJGw6Ugw6V0a29tc3QgdGlsbCBTRC1rb3J0ZXQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zdGF0dXNCYXIiIG1zZ2lkPSI3NDE3MTkyNjI5NjAxODkwNzkxIj4iaW5ha3RpdmVyYSBlbGxlciDDpG5kcmEgc3RhdHVzZsOkbHQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IGluYWt0aXZlcmFyIHN0YXR1c2bDpGx0ZXQgZWxsZXIgbMOkZ2dlciB0aWxsIG9jaCB0YXIgYm9ydCBzeXN0ZW1pa29uZXIuIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IG1vbnRlcmFyIG9jaCBkZW1vbnRlcmFyIGZpbHN5c3RlbSBmw7ZyIGZseXR0YmFyYSBsYWdyaW5nc21lZGlhLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTUyMzI4NTE0MzU3NjcxODk4MSI+ImZvcm1hdGVyYSBleHRlcm4gbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlRpbGzDpXRlciBhdHQgcHJvZ3JhbW1ldCBmb3JtYXRlcmFyIGZseXR0YmFyYSBsYWdyaW5nc21lZGlhLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4iZsOlIGluZm9ybWF0aW9uIG9tIHPDpGtlciBsYWdyaW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI3NjkxNjE2MjkyMTcwNTkwMjQ0Ij4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IGbDpXIgaW5mb3JtYXRpb24gb20gc8Oka2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjczMTIwNzgwMzIzMjY5Mjg4OTkiPiJza2FwYSBzw6RrZXIgbGFncmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IlRpbGzDpXRlciBhdHQgcHJvZ3JhbW1ldCBza2FwYXIgc8Oka2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI3Nzg3MzIyODc4OTU1MjYxMDA2Ij4iZsO2cnN0w7ZyIHPDpGtlciBsYWdyaW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iNTc0MDc1NDExNDk2Nzg5MzE2OSI+IlRpbGzDpXRlciBhdHQgcHJvZ3JhbW1ldCBmw7Zyc3TDtnIgc8Oka2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI3NTE3NDQ5Njk0NjY3ODI4NTkyIj4ibW9udGVyYS9hdm1vbnRlcmEgc8Oka2VyIGxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX21vdW50X3VubW91bnQiIG1zZ2lkPSI1NDM4MDc4MTIxNzE4NzM4NjI1Ij4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IG1vbnRlcmFyL2F2bW9udGVyYXIgc8Oka2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX3JlbmFtZSIgbXNnaWQ9IjU2ODUzNDQzOTA0Mzk5MzQ0OTUiPiJieXQgbmFtbiBww6Ugc8Oka2VyIGxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJUaWxsw6V0ZXIgYXR0IHByb2dyYW1tZXQgYnl0ZXIgbmFtbiBww6Ugc8Oka2VyIGxhZ3JpbmcuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJmw6UgaW5mb3JtYXRpb24gb20gc8Oka2VyIGxhZ3JpbmciPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NjkxNjE2MjkyMTcwNTkwMjQ0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijg4MjAzMjY1NTE2ODcyODU0MzkiPiJUaWxsw6V0ZXIgYXR0IHByb2dyYW1tZXQgZsOlciBpbmZvcm1hdGlvbiBvbSBzw6RrZXIgbGFncmluZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MzEyMDc4MDMyMzI2OTI4ODk5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNjQxNDc1NzIzNDc4OTMzNjMyNyI+InNrYXBhIHPDpGtlciBsYWdyaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzA0MTgwMjMyMjc1OTAxNDAzNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSIyNjIxMzQ2NzY0OTk1NzMxMjUwIj4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IHNrYXBhciBzw6RrZXIgbGFncmluZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3Nzg3MzIyODc4OTU1MjYxMDA2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjUyNjkyODMyODMwMTYxODAyMiI+ImbDtnJzdMO2ciBzw6RrZXIgbGFncmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiJUaWxsw6V0ZXIgYXR0IHByb2dyYW1tZXQgZsO2cnN0w7ZyIHPDpGtlciBsYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc1MTc0NDk2OTQ2Njc4Mjg1OTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iMjQ1NjI4NzYyMzY4OTAyOTc0NCI+Im1vbnRlcmEvYXZtb250ZXJhIHPDpGtlciBsYWdyaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IlRpbGzDpXRlciBhdHQgcHJvZ3JhbW1ldCBtb250ZXJhci9hdm1vbnRlcmFyIHPDpGtlciBsYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU2ODUzNDQzOTA0Mzk5MzQ0OTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI3NDk2NjMzOTU0MDgwNDcyNDE3Ij4iYnl0IG5hbW4gcMOlIHPDpGtlciBsYWdyaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iVGlsbMOldGVyIGF0dCBwcm9ncmFtbWV0IGJ5dGVyIG5hbW4gcMOlIHPDpGtlciBsYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJrb250cm9sbGVyYSB2aWJyYXRpb24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IlRpbGzDpXRlciBhdHQgcHJvZ3JhbW1ldCBzdHlyIHZpYnJhdG9ybi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4ic3R5cmEgbGFtcGEiPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IlRpbGzDpXQgYXR0IGV0dCBwcm9ncmFtIGzDpHNlciBhbGxhIHByaXZhdGEgb3JkLCBuYW1uIG9jaCBmcmFzZXIgc29tIGFudsOkbmRhcmVuIGxhZ3JhciBpIHNpbiBvcmRsaXN0YS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjY3MDMxMDk1MTE4MzYzNDMzNDEiPiJza3JpdmEgdGlsbCBhbnbDpG5kYXJkZWZpbmllcmFkIG9yZGxpc3RhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iMjI0MTI1NjIwNjUyNDA4Mjg4MCI+IlRpbGzDpXRlciBhdHQgZXR0IHByb2dyYW0gc2tyaXZlciBpbiBueWEgb3JkIGkgYW52w6RuZGFyb3JkbGlzdGFuLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iOTkzNzA3NDM2OTQxMDE2OTEzIj4iw6RuZHJhL3RhIGJvcnQgaW5uZWjDpWxsIHDDpSBTRC1rb3J0ZXQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiLDpG5kcmEvdGEgYm9ydCBpbm5laMOlbGwgcMOlIFNELWtvcnRldCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4MDc5NDAzNzU5MDAxNzc3MjkxIj4iw6RuZHJhL3RhIGJvcnQgaW5uZWjDpWxsIHDDpSBTRC1rb3J0ZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4iUHJvZ3JhbSBmw6VyIHNrcml2YSB0LiBTRC1rb3J0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQxMzE4NzE1NDExMjcyMTE1MjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1OTQzOTMzMzQ3ODU3MzgyNTIiPiJQcm9ncmFtIGbDpXIgc2tyaXZhIHQuIFNELWtvcnQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4iVGlsbMOldGVyIGF0dCBldHQgcHJvZ3JhbSBza3JpdmVyIHRpbGwgU0Qta29ydGV0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLDpXRrb21zdCB0aWxsIGNhY2hlZmlsc3lzdGVtZXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IlRpbGzDpXRlciBhdHQgZXR0IHByb2dyYW0gbMOkc2VyIG9jaCBza3JpdmVyIHRpbGwgY2FjaGVmaWxzeXN0ZW1ldC4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iVmlzYSBhbGxhIjwvYj48L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2FjdGl2aXR5X3RpdGxlIiBtc2dpZD0iMjM5OTI4OTk5OTYwODkwMDQ0MyI+IlVTQi1tYXNzbGFncmluZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTkwMTQ1OTA0MTM5ODc1MTQ5NSI+IlVTQi1hbnNsdXRlbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODIzMTQ2Mjc1MDAxMDA2Njg5NiI+IkR1IGhhciBhbnNsdXRpdCB0ZWxlZm9uZW4gdGlsbCBkYXRvcm4gdmlhIFVTQi4gVsOkbGoga25hcHBlbiBuZWRhbiBvbSBkdSB2aWxsIGtvcGllcmEgZmlsZXIgbWVsbGFuIGRhdG9ybiBvY2ggU0Qta29ydGV0IGkgZGluIEFuZHJvaWQuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODIzMTQ2Mjc1MDAxMDA2Njg5NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMTU3NzkzMjQ1NTE1MDIwNjIiPiJEdSBoYXIgYW5zbHV0aXQgdGVsZWZvbmVuIHRpbGwgZGF0b3JuIHZpYSBVU0IuIFbDpGxqIGtuYXBwZW4gbmVkYW4gb20gZHUgdmlsbCBrb3BpZXJhIGZpbGVyIG1lbGxhbiBkYXRvcm4gb2NoIFNELWtvcnRldCBpIGRpbiBBbmRyb2lkLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI0Nzk2NzU5NjQ2MTY3MjQ3MTc4Ij4iRHUgaGFyIGFuc2x1dGl0IHRlbGVmb25lbiB0aWxsIGRhdG9ybiB2aWEgVVNCLiBWw6RsaiBrbmFwcGVuIG5lZGFuIG9tIGR1IHZpbGwga29waWVyYSBmaWxlciBtZWxsYW4gZGF0b3JuIG9jaCBTRC1rb3J0ZXQgaSBkaW4gQW5kcm9pZC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iQWt0aXZlcmEgVVNCLWxhZ3JpbmciPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ4MTgzNDc3NTY0MDI3NDAyNjEiPiJEZXQgZ2ljayBpbnRlIGF0dCBhbnbDpG5kYSBkaXR0IFNELWtvcnQgZsO2ciBVU0ItbGFncmluZy4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IkRldCBnaWNrIGludGUgYXR0IGFudsOkbmRhIGRpdHQgU0Qta29ydCBmw7ZyIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzI3NjQxMzc2NDQzMDQ2ODQ1NCI+IkRldCBnaWNrIGludGUgYXR0IGFudsOkbmRhIGRpdHQgU0Qta29ydCBmw7ZyIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiJEZXQgZ2ljayBpbnRlIGF0dCBhbnbDpG5kYSBkaXR0IFNELWtvcnQgZsO2ciBVU0ItbGFncmluZy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iVVNCLWFuc2x1dGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4iVsOkbGogb20gZHUgdmlsbCBrb3BpZXJhIGZpbGVyIHRpbGwvZnLDpW4gZGluIGRhdG9yLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IkluYWt0aXZlcmEgVVNCLWxhZ3JpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IlbDpGxqIG9tIFVTQi1sYWdyaW5nIHNrYSBpbmFrdGl2ZXJhcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iVVNCLWxhZ3JldCBhbnbDpG5kcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iS29udHJvbGxlcmEgYXR0IGR1IGhhciBtb250ZXJhdCBib3J0IChcIm1hdGF0IHV0XCIpIEFuZHJvaWQtdGVsZWZvbmVucyBTRC1rb3J0IGZyw6VuIGRhdG9ybiBpbm5hbiBkdSBpbmFrdGl2ZXJhciBVU0ItbGFncmluZy4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA4NzQ1MzQ1MjYwNzgwMjY3MTg1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTM2ODg0MjI2OTQ2Mzc0NTA2NyI+IktvbnRyb2xsZXJhIGF0dCBkdSBoYXIgbW9udGVyYXQgYm9ydCAoXCJtYXRhdCB1dFwiKSBBbmRyb2lkLXRlbGVmb25lbnMgU0Qta29ydCBmcsOlbiBkYXRvcm4gaW5uYW4gZHUgaW5ha3RpdmVyYXIgVVNCLWxhZ3JpbmcuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IktvbnRyb2xsZXJhIGF0dCBkdSBoYXIgZGVtb250ZXJhdCAoXCJtYXRhdCB1dFwiKSBBbmRyb2lkLXRlbGVmb25lbnMgU0Qta29ydCBmcsOlbiBkYXRvcm4sIGlubmFuIGR1IGluYWt0aXZlcmFyIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+IkluYWt0aXZlcmEgVVNCLWxhZ3JpbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiJFdHQgcHJvYmxlbSB1cHBzdG9kIG7DpHIgVVNCLWxhZ3JpbmdzcGxhdHNlbiBza3VsbGUgaW5ha3RpdmVyYXMuIEtvbnRyb2xsZXJhIGF0dCBVU0ItdsOkcmRlbiBoYXIgZGVtb250ZXJhdHMgb2NoIGbDtnJzw7ZrIGlnZW4uIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiJPbSBkdSBha3RpdmVyYXIgVVNCLWxhZ3JpbmcgYXZicnl0cyBuw6VncmEgYXYgZGUgcHJvZ3JhbSBzb20ga8O2cnMgb2NoIGRlIGthbnNrZSBpbnRlIGJsaXIgdGlsbGfDpG5nbGlnYSBpZ2VuIGbDtnJyw6RuIGR1IGluYWt0aXZlcmFyIFVTQi1sYWdyaW5nLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJVU0Itw6V0Z8OkcmQgbWlzc2x5Y2thZGVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX29rIiBtc2dpZD0iNzM3Njk1MzE2NzAzOTg2NTcwMSI+Ik9LIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiJGb3JtYXRlcmEgU0Qta29ydCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4iRm9ybWF0ZXJhIFNELWtvcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4NjYzMjQ3OTI5NTUxMDk1ODU0Ij4iRm9ybWF0ZXJhIFNELWtvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDcwODE1MTQwMDY4NTAyODI0Ij4iRm9ybWF0ZXJhIFNELWtvcnQsIHJhZGVyYSBhbGxhIGZpbGVyPyDDhXRnw6RyZGVuIGthbiBpbnRlIMOlbmdyYXMhIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IkZvcm1hdGVyYSBTRC1rb3J0LCByYWRlcmEgYWxsYSBmaWxlcj8gw4V0Z8OkcmRlbiBrYW4gaW50ZSDDpW5ncmFzISI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYyMTM2OTk2MjQzMzUyMzYxOSI+IlZpbGwgZHUgZm9ybWF0ZXJhIFNELWtvcnRldD8gQWxsYSBkYXRhIHDDpSBkaXR0IGtvcnQga29tbWVyIGF0dCBnw6UgZsO2cmxvcmFkZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfYnV0dG9uX2Zvcm1hdCIgbXNnaWQ9IjQxMzEwNjQ1NjAxMjc0Nzg2OTUiPiJGb3JtYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiJVU0ItZmVsc8O2a25pbmcgYW5zbHV0ZW4iPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiJrYW5kaWRhdGVyIjwvdT48L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDIzOTUxNjY3NTAyODQzODk5NyI+IkbDtnJiZXJlZGVyIFNELWtvcnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MjM5NTE2Njc1MDI4NDM4OTk3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM0NDk4MTYwMDUzNTE0Njg1NjAiPiJGw7ZyYmVyZWRlciBTRC1rb3J0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiJGw7ZyYmVyZWRlciBTRC1rb3J0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+IlPDtmtlciBlZnRlciBmZWwuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiJUb210IFNELWtvcnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IlRvbXQgU0Qta29ydCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IlRvbXQgU0Qta29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiJTRC1rb3J0ZXQgw6RyIHRvbXQgZWxsZXIgc8OlIGhhciBkZXQgZXR0IGZpbHN5c3RlbSBzb20gaW50ZSBzdMO2ZHMuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IlNELWtvcnRldCDDpHIgdG9tdCBlbGxlciBzw6UgaGFyIGRldCBldHQgZmlsc3lzdGVtIHNvbSBpbnRlIHN0w7Zkcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJTRC1rb3J0ZXQgw6RyIHRvbXQgZWxsZXIgc8OlIGhhciBkZXQgZXR0IGZpbHN5c3RlbSBzb20gaW50ZSBzdMO2ZHMuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iU2thZGF0IFNELWtvcnQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiJTa2FkYXQgU0Qta29ydCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NDEwNzIzOTA2MDE5MTAwMTg5Ij4iU2thZGF0IFNELWtvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNjQ2MDMxMTgzNTEzMDY3MTE5NCI+IlNELWtvcnRldCDDpHIgc2thZGF0LiBEdSBtw6VzdGUgZXZlbnR1ZWxsdCBmb3JtYXRlcmEgb20gZGV0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY0NjAzMTE4MzUxMzA2NzExOTQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1MjkwMjEyOTkyOTQ0NTA2NjciPiJTRC1rb3J0ZXQgw6RyIHNrYWRhdC4gRHUgbcOlc3RlIGV2ZW50dWVsbHQgZm9ybWF0ZXJhIG9tIGRldC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iU0Qta29ydGV0IMOkciBza2FkYXQuIER1IG3DpXN0ZSBldmVudHVlbGx0IGZvcm1hdGVyYSBvbSBkZXQuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI1ODIxNzUwMTYwNjA0MzIwMzQiPiJTRC1rb3J0IHRvZ3Mgb3bDpG50YXQgYm9ydCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4iU0Qta29ydCB0b2dzIG92w6RudGF0IGJvcnQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iU0Qta29ydCB0b2dzIG92w6RudGF0IGJvcnQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDA1Mzk2NDY0NDk0NjQ4OTM3Ij4iTW9udGVyYSBib3J0IFNELWtvcnRldCBmw7ZyZSBib3J0dGFnbmluZyBmw7ZyIGF0dCB1bmR2aWthIGRhdGFmw7ZybHVzdC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4iTW9udGVyYSBib3J0IFNELWtvcnRldCBmw7ZyZSBib3J0dGFnbmluZyBmw7ZyIGF0dCB1bmR2aWthIGRhdGFmw7ZybHVzdC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiJEZW1vbnRlcmEgU0Qta29ydCBpbm5hbiBib3J0dGFnbmluZyBmw7ZyIGF0dCB1bmR2aWthIGRhdGFmw7ZybHVzdC4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNjUyNTg4MTAxODY3OTUxNSI+IlPDpGtlcnQgYXR0IHRhIGJvcnQgU0Qta29ydCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iU8Oka2VydCBhdHQgdGEgYm9ydCBTRC1rb3J0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iU8Oka2VydCBhdHQgdGEgYm9ydCBTRC1rb3J0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4iRGV0IMOkciBudSBzw6RrZXJ0IGF0dCB0YSBib3J0IFNELWtvcnRldC4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiJEZXQgw6RyIG51IHPDpGtlcnQgYXR0IHRhIGJvcnQgU0Qta29ydGV0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI1Njg4NDEyNzgxMzgzNzc2MDQiPiJEZXQgw6RyIG51IHPDpGtlcnQgYXR0IHRhIGJvcnQgU0Qta29ydGV0LiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4iU0Qta29ydGV0IGhhciB0YWdpdHMgYm9ydCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE4NzQ4ODk3NjQzNjcwODU1NjIgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0NDg2Mzc3MjMwMTQwMjI3NjUxIj4iU0Qta29ydGV0IGhhciB0YWdpdHMgYm9ydCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg5MDI1MTgwMzA0MDQzODEzMTgiPiJCb3J0dGFnZXQgU0Qta29ydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiJTRC1rb3J0ZXQgaGFyIHRhZ2l0cyBib3J0LiBTw6R0dCBpIGV0dCBueXR0LiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI3MzA4OTA0NDEzMzEzNDQ3NzYgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY5MjExMjYxNjI1ODA1NzQxNDMiPiJTRC1rb3J0ZXQgaGFyIHRhZ2l0cyBib3J0LiBTw6R0dCBpIGV0dCBueXR0LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IlNELWtvcnRldCBoYXIgdGFnaXRzIGJvcnQuIFPDpHR0IGkgZXR0IG55dHQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJJbmdhIG1hdGNoYW5kZSBha3Rpdml0ZXRlciBoaXR0YWRlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJ1cHBkYXRlcmEgc3RhdGlzdGlrIMO2dmVyIGFudsOkbmRuaW5nIGF2IGtvbXBvbmVudGVyIjwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKaW5kZXggZDEwODIzMi4uODVlMDAyOCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iMzQ0NjE2NDU4NDcxMDU5NjUxMyI+IkdlbGnFn3Rpcm1lIGFyYcOnbGFyxLEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSI5MDU2NDMxMTkzODkzODA5ODE0Ij4iWWFsbsSxemNhIHV5Z3VsYW1hIGdlbGnFn3RpcmljaWxlciBpw6dpbiBnZXJla2xpIMO2emVsbGlrbGVyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IkRlcG9sYW1hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjU0NTU4MDQzNTMyMjA1ODEzMTIiPiJQYXlsIGRlcG9sYW1hIGJpcmltaW5lIGVyacWfaW4uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiJQYXlsIGRlcG9sYW1hIGJpcmltaW5lIGVyacWfaW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+IlNEIGthcnRhIGVyacWfaW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zdGF0dXNCYXIiIG1zZ2lkPSI3NDE3MTkyNjI5NjAxODkwNzkxIj4iZHVydW0gw6d1YnXEn3VudSBkZXZyZSBkxLHFn8SxIGLEsXJhayB2ZXlhIGRlxJ9pxZ90aXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4iVXlndWxhbWFuxLFuIGR1cnVtIMOndWJ1xJ91bnUgZGV2cmUgZMSxxZ/EsSBixLFyYWttYXPEsW5hIHZleWEgc2lzdGVtIHNpbWdlbGVyaSBla2xleWlwIGthbGTEsXJtYXPEsW5hIGl6aW4gdmVyaXIuIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4iVXlndWxhbWFsYXLEsW4gw6fEsWthcsSxbGFiaWxpciBkZXBvbGFtYSBiaXJpbWxlcmkgacOnaW4gZG9zeWEgc2lzdGVtbGVyaSBpbGUgYmHEn2xhbnTEsSBrdXJtYXPEsW5hIHZlIGJhxJ9sYW50xLF5xLEga2VzbWVzaW5lIGl6aW4gdmVyaXIuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4iaGFyaWNpIGRlcG9sYW1hIGJpcmltaW5pIGJpw6dpbWxlbmRpciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X2Zvcm1hdF9maWxlc3lzdGVtcyIgbXNnaWQ9IjU3NDA2MDA0NDkwNjA0NzM4NiI+IlV5Z3VsYW1hbsSxbiDDp8Sxa2FyxLFsYWJpbGlyIGRlcG9sYW1hIGJpcmltaW5pIGJpw6dpbWxlbmRpcm1lc2luZSBpemluIHZlcmlyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIxMDcwMzY0MDc5MjQ5ODM0NjY2Ij4iZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pIGhha2vEsW5kYSBiaWxnaSBhbCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfYWNjZXNzIiBtc2dpZD0iNzY5MTYxNjI5MjE3MDU5MDI0NCI+IlV5Z3VsYW1hbsSxbiBnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWkgaGFra8SxbmRhIGJpbGdpIGFsbWFzxLFuYSBpemluIHZlcmlyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MzEyMDc4MDMyMzI2OTI4ODk5Ij4iZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pIG9sdcWfdHVyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19jcmVhdGUiIG1zZ2lkPSI3MDQxODAyMzIyNzU5MDE0MDM1Ij4iVXlndWxhbWFuxLFuIGfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaSBvbHXFn3R1cm1hc8SxbmEgaXppbiB2ZXJpci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9Ijc3ODczMjI4Nzg5NTUyNjEwMDYiPiJnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWluaSB5b2sgZXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2Rlc3Ryb3kiIG1zZ2lkPSI1NzQwNzU0MTE0OTY3ODkzMTY5Ij4iVXlndWxhbWFuxLFuIGfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaW5pIHlvayBldG1lc2luZSBpemluIHZlcmlyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNzUxNzQ0OTY5NDY2NzgyODU5MiI+ImfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaW5pIGVrbGUgLyBrYWxkxLFyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IlV5Z3VsYW1hbsSxbiBnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWluaSB5ZW5pZGVuIGVrbGVtZXNpbmUgLyBrYWxkxLFybWFzxLFuYSBpemluIHZlcmlyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19yZW5hbWUiIG1zZ2lkPSI1Njg1MzQ0MzkwNDM5OTM0NDk1Ij4iZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pbmkgeWVuaWRlbiBhZGxhbmTEsXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX3JlbmFtZSIgbXNnaWQ9IjEzODc4ODE3NzA3MDg4NzI0NzAiPiJVeWd1bGFtYW7EsW4gZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pbmkgeWVuaWRlbiBhZGxhbmTEsXJtYXPEsW5hIGl6aW4gdmVyaXIuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTA3MDM2NDA3OTI0OTgzNDY2NiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjM0MTEzMzg2MzIwMDIxOTM4NDYiPiJnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWkgaGFra8SxbmRhIGJpbGdpIGFsIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4iVXlndWxhbWFuxLFuIGfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaSBoYWtrxLFuZGEgYmlsZ2kgYWxtYXPEsW5hIGl6aW4gdmVyaXIuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiJnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWkgb2x1xZ90dXIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiJVeWd1bGFtYW7EsW4gZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pIG9sdcWfdHVybWFzxLFuYSBpemluIHZlcmlyLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDc3ODczMjI4Nzg5NTUyNjEwMDYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNTI2OTI4MzI4MzAxNjE4MDIyIj4iZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pbmkgeW9rIGV0Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTc0MDc1NDExNDk2Nzg5MzE2OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19kZXN0cm95IiBtc2dpZD0iMjc0NjcwNjg4OTIwODA2NjI1NiI+IlV5Z3VsYW1hbsSxbiBnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWluaSB5b2sgZXRtZXNpbmUgaXppbiB2ZXJpci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiJnw7x2ZW5saSBkZXBvbGFtYSBiaXJpbWluaSBla2xlIC8ga2FsZMSxciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0MzgwNzgxMjE3MTg3Mzg2MjUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjU5MzQzNzU1OTAxODkzNjgyMDAiPiJVeWd1bGFtYW7EsW4gZ8O8dmVubGkgZGVwb2xhbWEgYmlyaW1pbmkgeWVuaWRlbiBla2xlbWVzaW5lIC8ga2FsZMSxcm1hc8SxbmEgaXppbiB2ZXJpci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+ImfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaW5pIHllbmlkZW4gYWRsYW5kxLFyIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTM4Nzg4MTc3MDcwODg3MjQ3MCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19yZW5hbWUiIG1zZ2lkPSIyMTUyODI5OTg1MjM4ODc2NzkwIj4iVXlndWxhbWFuxLFuIGfDvHZlbmxpIGRlcG9sYW1hIGJpcmltaW5pIHllbmlkZW4gYWRsYW5kxLFybWFzxLFuYSBpemluIHZlcmlyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiJ0aXRyZcWfaW1pIGRlbmV0bGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IlV5Z3VsYW1hbsSxbiB0aXRyZcWfaW1pIGRlbmV0bGVtZXNpbmUgaXppbiB2ZXJpci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2ZsYXNobGlnaHQiIG1zZ2lkPSIyMTU1OTIwODEwMTIxOTg0MjE1Ij4iZmxhxZ/EsSBkZW5ldGxlIjwvc3RyaW5nPgpAQCAtNDI3LDkgKzQyNyw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19yZWFkRGljdGlvbmFyeSIgbXNnaWQ9IjEwODI5NzI2MDM1NzYzNjA2OTAiPiJLdWxsYW7EsWPEsW7EsW4ga3VsbGFuxLFjxLEgc8O2emzDvMSfw7xuZGUgZGVwb2xhbcSxxZ8gb2xhYmlsZWNlxJ9pIGtpxZ9pc2VsIGtlbGltZWxlcmksIGFkbGFyxLEgdmUga2VsaW1lIMO2YmVrbGVyaW5pIHV5Z3VsYW1hbGFyxLFuIG9rdW1hc8SxbmEgaXppbiB2ZXJpci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjY3MDMxMDk1MTE4MzYzNDMzNDEiPiJrdWxsYW7EsWPEsSB0YW7EsW1sxLEgc8O2emzDvMSfZSB5YXoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY193cml0ZURpY3Rpb25hcnkiIG1zZ2lkPSIyMjQxMjU2MjA2NTI0MDgyODgwIj4iVXlndWxhbWFsYXLEsW4ga3VsbGFuxLFjxLEgc8O2emzDvMSfw7xuZSB5ZW5pIGtlbGltZWxlciB5YXptYXPEsW5hIGl6aW4gdmVyaXIuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI5OTM3MDc0MzY5NDEwMTY5MTMiPiJwYXlsIGRlcGxtIGJpcm0gacOnZXJpxJ9pbmkgZGXEn2nFn3RyL3NpbCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDk5MzcwNzQzNjk0MTAxNjkxMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NTQzMDg3NjMxMDc2NDc1MiI+InBheWwgZGVwbG0gYmlybSBpw6dlcmnEn2luaSBkZcSfacWfdHIvc2lsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiJTRCBrYXJ0IGnDp2VyaWtsZXJpbmkgZGXEn2nFn3Rpci9zaWwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MTMxODcxNTQxMTI3MjExNTI2Ij4iVXlndWxhbWF5YSwgcGF5bCBkZXBsb2xhbWEgYmlyaW1pbmUgeWF6bWEgaXpuaSB2ZXJpci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MTMxODcxNTQxMTI3MjExNTI2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTk0MzkzMzM0Nzg1NzM4MjUyIj4iVXlndWxhbWF5YSwgcGF5bCBkZXBsb2xhbWEgYmlyaW1pbmUgeWF6bWEgaXpuaSB2ZXJpci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY2NDM5NjMyMDQ5NzY0NzE4NzgiPiJCaXIgdXlndWxhbWF5YSBTRCBrYXJ0YSB5YXptYSBpem5pIHZlcmlyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLDtm5iZWxsZWsgZG9zeWEgc2lzdGVtaW5lIGVyacWfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjE2MjQ3MzQ1Mjg0MzU2NTk5MDYiPiJCaXIgdXlndWxhbWFuxLFuIMO2bmJlbGxlayBkb3N5YSBzaXN0ZW1pbmRlIG9rdW1hIHlhem1hIHlhcG1hc8SxbmEgaXppbiB2ZXJpci4iPC9zdHJpbmc+CkBAIC04MDIsMTcgKzgwMiwxNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybXNfc2hvd19hbGwiIG1zZ2lkPSIyNjcxNzkxMTYzOTMzMDkxMTgwIj48Yj4iVMO8bcO8bsO8IGfDtnN0ZXIiPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iVVNCIFnEscSfxLFuIERlcG9sYW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfdGl0bGUiIG1zZ2lkPSI1OTAxNDU5MDQxMzk4NzUxNDk1Ij4iVVNCIGJhxJ9sYW5kxLEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiJUZWxlZm9udW51enUgVVNCIGlsZSBiaWxnaXNheWFyxLFuxLF6YSBiYcSfbGFkxLFuxLF6LiBCaWxnaXNheWFyxLFuxLF6IGlsZSBBbmRyb2lkXCdpbml6aW4gcGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaSBhcmFzxLFuZGEgZG9zeWEga29weWFsYW1hayBpc3RpeW9yc2FuxLF6IGHFn2HEn8SxZGFraSBkw7zEn21leWkgc2XDp2luLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4iVGVsZWZvbnVudXp1IFVTQiBpbGUgYmlsZ2lzYXlhcsSxbsSxemEgYmHEn2xhZMSxbsSxei4gQmlsZ2lzYXlhcsSxbsSxeiBpbGUgQW5kcm9pZFwnaW5pemluIHBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkgYXJhc8SxbmRhIGRvc3lhIGtvcHlhbGFtYWsgaXN0aXlvcnNhbsSxeiBhxZ9hxJ/EsWRha2kgZMO8xJ9tZXlpIHNlw6dpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IlRlbGVmb251bnV6dSBVU0IgaWxlIGJpbGdpc2F5YXLEsW7EsXphIGJhxJ9sYWTEsW7EsXouIEJpbGdpc2F5YXLEsW7EsXogaWxlIEFuZHJvaWRcJ2luaXppbiBTRCBrYXJ0xLEgYXJhc8SxbmRhIGRvc3lhIGtvcHlhbGFtYWsgaXN0aXlvcnNhbsSxeiBhxZ9hxJ/EsWRha2kgZMO8xJ9tZXlpIHNlw6dpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9idXR0b25fbW91bnQiIG1zZ2lkPSIxMDUyMjU5OTMwMzY5NTA4MjM1Ij4iVVNCIGRlcG9sYW1hIGJpcmltaW5pIGHDpyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWluaXppIFVTQiBkZXBvbGFtYSBhbWHDp2zEsSBrdWxsYW5tYXlsYSBpbGdpbGkgYmlyIHNvcnVuIHZhci4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMjUzNDc4NDc1MTYwMzM0NTM2MyI+IlNEIGthcnTEsW7EsXrEsSBVU0IgZGVwb2xhbWEgYmlyaW1pIGnDp2luIGt1bGxhbm1hZGEgYmlyIHNvcnVuIHZhci4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiJQYXlsYcWfxLFsYW4gZGVwb2xhbWEgYmlyaW1pbml6aSBVU0IgZGVwb2xhbWEgYW1hw6dsxLEga3VsbGFubWF5bGEgaWxnaWxpIGJpciBzb3J1biB2YXIuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDgxODM0Nzc1NjQwMjc0MDI2MSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjEyMDgxMDM5NzcxMzc3MzI3NSI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWluaXppIFVTQiBkZXBvbGFtYSBhbWHDp2zEsSBrdWxsYW5tYXlsYSBpbGdpbGkgYmlyIHNvcnVuIHZhci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI4MTc1ODkyNTU0NzU3MjE2NTI1Ij4iVVNCIGJhxJ9sYW5kxLEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgbXNnaWQ9IjczODAwODI0MDQyODgyMTkzNDEiPiJCaWxnaXNheWFyxLFuxLF6YS9iaWxnaXNheWFyxLFuxLF6ZGFuIGRvc3lhIGtvcHlhbGFtYWsgacOnaW4gc2XDp2luLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iMjMzNjA1ODM5NjY2MzUxNjAxNyI+IlVTQiBkZXBvbGFtYSBiaXJpbWluaSBrYXBhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSIyNTkxODEzNDkwMjY5ODQxNTM5Ij4iVVNCIGRlcG9sYW1hIGJpcmltaW5pIGthcGF0bWFrIGnDp2luIHNlw6dpbi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX3RpdGxlIiBtc2dpZD0iNjYwMTI5ODUxNzA4Nzc1ODUzIj4iVVNCIGRlcG9sYW1hIGJpcmltaSBrdWxsYW7EsWzEsXlvciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI4NzQ1MzQ1MjYwNzgwMjY3MTg1Ij4iVVNCIGRlcG9sYW1hIGJpcmltaW5pIGthcGF0bWFkYW4gw7ZuY2UgQW5kcm9pZFwnaW5pemluIHBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWluaW4gYmlsZ2lzYXlhcsSxbsSxemxhIG9sYW4gYmHEn2xhbnTEsXPEsW7EsSBrZXN0acSfaW5pemRlbiAoXCLDp8Sxa2FyZMSxxJ/EsW7EsXpkYW5cIikgZW1pbiBvbHVuLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDg3NDUzNDUyNjA3ODAyNjcxODUgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxMzY4ODQyMjY5NDYzNzQ1MDY3Ij4iVVNCIGRlcG9sYW1hIGJpcmltaW5pIGthcGF0bWFkYW4gw7ZuY2UgQW5kcm9pZFwnaW5pemluIHBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWluaW4gYmlsZ2lzYXlhcsSxbsSxemxhIG9sYW4gYmHEn2xhbnTEsXPEsW7EsSBrZXN0acSfaW5pemRlbiAoXCLDp8Sxa2FyZMSxxJ/EsW7EsXpkYW5cIikgZW1pbiBvbHVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiJVU0IgZGVwb2xhbWEgYmlyaW1pbmkga2FwYXRtYWRhbiDDtm5jZSBBbmRyb2lkIFNEIGthcnTEsW7EsSBiaWxnaXNheWFyxLFuxLF6ZGFuIGthbGTEsXJkxLHEn8SxbsSxemRhbiAoXCLDp8Sxa2FyZMSxxJ/EsW7EsXpkYW5cIikgZW1pbiBvbHVuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfYnV0dG9uX21vdW50IiBtc2dpZD0iNzA2MDIxODAzNDkwMDY5NjAyOSI+IlVTQiBkZXBvbGFtYSBiaXJpbWluaSBrYXBhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+IlVTQiBkZXBvbGFtYSBiaXJpbWluaSBrYXBhdMSxcmtlbiBiaXIgc29ydW4gb2x1xZ90dS4gVVNCIGFuYSBtYWtpbmVzaW5pIGthbGTEsXJkxLHEn8SxbsSxemRhbiBlbWluIG9sdW4gdmUgZGFoYSBzb25yYSB0ZWtyYXIgZGVuZXlpbi4iPC9zdHJpbmc+CkBAIC04MjAsOSArODIwLDkgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRsZ19jb25maXJtX2tpbGxfc3RvcmFnZV91c2Vyc190ZXh0IiBtc2dpZD0iMzIwMjgzODIzNDc4MDUwNTg4NiI+IlVTQiBkZXBvbGFtYSBiaXJpbWluaSBhw6dhcnNhbsSxeiwga3VsbGFubWFrdGEgb2xkdcSfdW51eiBiYXrEsSB1eWd1bGFtYWxhciBkdXJ1ciB2ZSBVU0IgZGVwb2xhbWEgYmlyaW1pIGthcGF0xLFsxLFuY2F5YSBrYWRhciBrdWxsYW7EsWxhbWF5YWJpbGlyLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19lcnJvcl90aXRsZSIgbXNnaWQ9IjgwNDg5OTk5NzM4MzczMzkxNzQiPiJVU0IgacWfbGVtaSBiYcWfYXLEsXPEsXogb2xkdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRsZ19vayIgbXNnaWQ9IjczNzY5NTMxNjcwMzk4NjU3MDEiPiJUYW1hbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTc3OTA4MDA2OTQ5NzQyMjE3Ij4iUGF5IGRlcCBiaXJtIGJpw6dtbG5kciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDY1Nzc5MDgwMDY5NDk3NDIyMTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3OTgwOTk1NTkyNTk1MDk3ODQxIj4iUGF5IGRlcCBiaXJtIGJpw6dtbG5kciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiJTRCBrYXJ0xLEgYmnDp2ltbGVuZGlyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkgYmnDp2ltbGVuZGlyaWxzaW4gbWk/IERlcG9sYW1hIGJpcmltaW5kZSBzYWtsYW5hbiB0w7xtIGRvc3lhbGFyIHNpbGluaXIuIMSwxZ9sZW0gZ2VyaSBhbMSxbmFtYXohIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzQ3MDgxNTE0MDA2ODUwMjgyNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODI5NjkwODA3OTcyMjg5Nzc3MiI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkgYmnDp2ltbGVuZGlyaWxzaW4gbWk/IERlcG9sYW1hIGJpcmltaW5kZSBzYWtsYW5hbiB0w7xtIGRvc3lhbGFyIHNpbGluaXIuIMSwxZ9sZW0gZ2VyaSBhbMSxbmFtYXohIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzNjIxMzY5OTYyNDMzNTIzNjE5Ij4iU0Qga2FydMSxIGJpw6dpbWxlbmRpcm1layBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PyBLYXJ0xLFuxLF6ZGFraSB0w7xtIHZlcmlsZXIgeW9rIG9sYWNhay4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfYnV0dG9uX2Zvcm1hdCIgbXNnaWQ9IjQxMzEwNjQ1NjAxMjc0Nzg2OTUiPiJCacOnaW1sZW5kaXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhZGJfYWN0aXZlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY3MjkwNDQ3Nzg5NDkxODk5MTgiPiJVU0IgaGF0YSBhecSxa2xhbWFzxLEgYmHEn2xhbmTEsSI8L3N0cmluZz4KQEAgLTgzMSwyOCArODMxLDI4IEBACiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9hbHBoYWJldCIgbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiPiIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJmYXN0X3Njcm9sbF9udW1lcmljX2FscGhhYmV0IiBtc2dpZD0iNDAzMDE3MDUyNDU5NTEyMzYxMCI+IiAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5kaWRhdGVzX3N0eWxlIiBtc2dpZD0iNDMzMzkxMzA4OTYzNzA2MjI1NyI+PHU+ImFkYXlsYXIiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4iUGF5bCBkZXBsIGJpcmltaSBoYXrEsXJsYW7EsXlvciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQyMzk1MTY2NzUwMjg0Mzg5OTcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ0OTgxNjAwNTM1MTQ2ODU2MCI+IlBheWwgZGVwbCBiaXJpbWkgaGF6xLFybGFuxLF5b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTQ1NzYwMzQxODk3MDk5NDA1MCI+IlNEIGthcnQgaGF6xLFybGFuxLF5b3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI4Mjg3MzE5ODgyOTI2NzM3MDUzIj4iSGF0YWxhciBkZW5ldGxlbml5b3IuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5MzczNDU1Nzc5ODM3MzA4NzMiPiJCb8WfIHBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzOTM3MzQ1NTc3OTgzNzMwODczIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzc4ODA0MDc0NTY4NjIyOTMwNyI+IkJvxZ8gcGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijc4MDQ3NzgzODI0MTIxMjk5NyI+IkJvxZ8gU0Qga2FydCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2MDY2NjA3NTYxMjQ2Mjk3MDgiPiJQYXlsYcWfxLFsYW4gZGVwb2xhbWEgYmlyaW1pIGJvxZ8gdmV5YSBkZXN0ZWtsZW5tZXllbiBiaXIgZG9zeWEgc2lzdGVtaW5lIHNhaGlwLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiJQYXlsYcWfxLFsYW4gZGVwb2xhbWEgYmlyaW1pIGJvxZ8gdmV5YSBkZXN0ZWtsZW5tZXllbiBiaXIgZG9zeWEgc2lzdGVtaW5lIHNhaGlwLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzgxNzcwNDA4ODAyNzgyOTM4MCI+IlNEIGthcnQgYm/FnyB2ZXlhIGRlc3Rla2xlbm1leWVuIGRvc3lhIHNpc3RlbWkgacOnZXJpeW9yIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNzI0NjE5OTAyMDc2NTI4ODg5Ij4iUGF5bMWfIGRlcGxtIGJpcmltaSB6YXJhciBnw7ZyZMO8Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTcyNDYxOTkwMjA3NjUyODg4OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyMDkwMDQ2NzY5NTMyNzEzNTYzIj4iUGF5bMWfIGRlcGxtIGJpcmltaSB6YXJhciBnw7ZyZMO8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY0MTA3MjM5MDYwMTkxMDAxODkiPiJIYXNhcmzEsSBTRCBrYXJ0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiJQYXlsYcWfxLFsYW4gZGVwb2xhbWEgYmlyaW1pIHphcmFyIGfDtnJkw7wuIFllbmlkZW4gYmnDp2ltbGVuZGlybWVuaXogZ2VyZWtlYmlsaXIuIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjQ2MDMxMTgzNTEzMDY3MTE5NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjUyOTAyMTI5OTI5NDQ1MDY2NyI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkgemFyYXIgZ8O2cmTDvC4gWWVuaWRlbiBiacOnaW1sZW5kaXJtZW5peiBnZXJla2ViaWxpci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2OTAyNTMxNzc1OTQ4MjM4OTg5Ij4iU0Qga2FydCB6YXJhciBnw7ZyZMO8LiBZZW5pZGVuIGJpw6dpbWxlbmRpcm1lbml6IGdlcmVrZWJpbGlyLiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4iUGF5bCBkZXBsIGJybSBiZWtsbm1kayDFn2VrbCDDp8Sxa2FybGQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNTgyMTc1MDE2MDYwNDMyMDM0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTY2MTY4MzAzMTMzMDk1MTA3MyI+IlBheWwgZGVwbCBicm0gYmVrbG5tZGsgxZ9la2wgw6fEsWthcmxkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlNEIGthcnQgYmVrbGVubWVkaWsgYmnDp2ltZGUgw6fEsWthcsSxbGTEsSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiJWZXJpIGtheWLEsSBvbG1hbWFzxLEgacOnaW4gcGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaW5pIMOnxLFrYXJtYWRhbiDDtm5jZSBiYcSfbGFudMSxc8SxbsSxIGtlc2luLiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDIwMDUzOTY0NjQ0OTQ2NDg5MzcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQzMjk4NDg4MTk4NjU1OTQyNDEiPiJWZXJpIGtheWLEsSBvbG1hbWFzxLEgacOnaW4gcGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaW5pIMOnxLFrYXJtYWRhbiDDtm5jZSBiYcSfbGFudMSxc8SxbsSxIGtlc2luLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNzI2MDE4MzI5Mzc0NzQ0ODI0MSI+IlZlcmkga2F5YsSxbmRhbiBrYcOnxLFubWFrIGnDp2luIFNEIGthcnTEsSDDp8Sxa2FybWFkYW4gw7ZuY2UgYmHEn2xhbnTEsXPEsW7EsSBrZXNpbi4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNjUyNTg4MTAxODY3OTUxNSI+IlBheWwgZGVwIGJpcm0gZ8O8dmVubGUgw6fEsWtybGJsciI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM2NTI1ODgxMDE4Njc5NTE1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTY3OTczODkzMjcwMzYwMjMwIj4iUGF5bCBkZXAgYmlybSBnw7x2ZW5sZSDDp8Sxa3JsYmxyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NzI5ODAxMTMwNzkwNjE2MjAwIj4iU0Qga2FydCBnw7x2ZW5sZSDDp8Sxa2FyxLFsYWJpbGlyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NTAzNzY5MTA2Mjg1MTg4NzAzIj4iUGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaW5pIGfDvHZlbmxpIGJpciDFn2VraWxkZSDDp8Sxa2FyYWJpbGlyc2luaXouIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzUwMzc2OTEwNjI4NTE4ODcwMyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2MTQyMTk1MzYxNjA2NDkzNTMwIj4iUGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaW5pIGfDvHZlbmxpIGJpciDFn2VraWxkZSDDp8Sxa2FyYWJpbGlyc2luaXouIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU2ODg0MTI3ODEzODM3NzYwNCI+IlNEIGthcnTEsSBnw7x2ZW5sZSBrYWxkxLFyYWJpbGlyc2luaXouIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE4NzQ4ODk3NjQzNjcwODU1NjIiPiJQYXlsIGRlcG9sYW1hIGJpcmltaSDDp8Sxa2FyxLFsZMSxIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiJQYXlsIGRlcG9sYW1hIGJpcmltaSDDp8Sxa2FyxLFsZMSxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iODkwMjUxODAzMDQwNDM4MTMxOCI+IlNEIGthcnQgw6fEsWthcsSxbG3EscWfIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjczMDg5MDQ0MTMzMTM0NDc3NiI+IlBheWxhxZ/EsWxhbiBkZXBvbGFtYSBiaXJpbWkgw6fEsWthcsSxbGTEsS4gWWVuaSBvcnRhbcSxIHRha8Sxbi4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNzMwODkwNDQxMzMxMzQ0Nzc2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2OTIxMTI2MTYyNTgwNTc0MTQzIj4iUGF5bGHFn8SxbGFuIGRlcG9sYW1hIGJpcmltaSDDp8Sxa2FyxLFsZMSxLiBZZW5pIG9ydGFtxLEgdGFrxLFuLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzg3MDEyMDY1Mjk4MzY1OTY0MSI+IlNEIGthcnQgw6fEsWthcsSxbGTEsS4gWWVuaSBiaXIgU0Qga2FydCB0YWvEsW4uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWN0aXZpdHlfbGlzdF9lbXB0eSIgbXNnaWQ9IjQxNjg4MjA2MDk0MDMzODU3ODkiPiJFxZ9sZcWfZW4gaGnDp2JpciBldGtpbmxpayBidWx1bmFtYWTEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfcGtnVXNhZ2VTdGF0cyIgbXNnaWQ9Ijg3ODczNTIwNzQzMjY3NDg4OTIiPiJiaWxlxZ9lbiBrdWxsYW7EsW0gaXN0YXRpc3Rpa2xlcmluaSBnw7xuY2VsbGUiPC9zdHJpbmc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCmluZGV4IGFiZjExOGYuLjFkNDE5YWEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iMzQ0NjE2NDU4NDcxMDU5NjUxMyI+IuW8gOWPkeW3peWFtyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2NfZGV2ZWxvcG1lbnRUb29scyIgbXNnaWQ9IjkwNTY0MzExOTM4OTM4MDk4MTQiPiLlj6rmnInlupTnlKjnqIvluo/lvIDlj5HkurrlkZjmiY3kvJrnlKjliLDnmoTlip/og73jgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBsYWJfc3RvcmFnZSIgbXNnaWQ9IjE5NzExMTg3NzA1NDYzMzY5NjYiPiLlrZjlgqgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTQ1NTgwNDM1MzIyMDU4MTMxMiI+Iuiuv+mXruWFseS6q+WtmOWCqOiuvuWkh+OAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU0NTU4MDQzNTMyMjA1ODEzMTIgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI3NDQyMzE4NTAyNDQ2ODc0OTk5Ij4i6K6/6Zeu5YWx5Lqr5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iOTIwMzMwMjIxNDkxNTM1NTc3NCI+Iuiuv+mXriBTRCDljaHjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhciIgbXNnaWQ9Ijc0MTcxOTI2Mjk2MDE4OTA3OTEiPiLlgZznlKjmiJbkv67mlLnnirbmgIHmoI8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zdGF0dXNCYXIiIG1zZ2lkPSIxMzY1NDczNTk1MzMxOTg5NzMyIj4i5YWB6K645bqU55So56iL5bqP5YGc55So54q25oCB5qCP5oiW6ICF5aKe5Yig57O757uf5Zu+5qCH44CCIjwvc3RyaW5nPgpAQCAtMzIxLDE2ICszMjEsMTYgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX21vdW50X3VubW91bnRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI2MjUzMjYzNzkyNTM1ODU5NzY3Ij4i5YWB6K645bqU55So56iL5bqP6KOF6L295ZKM5Y246L295Y+v56e75Yqo5a2Y5YKo5Zmo55qE5paH5Lu257O757uf44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4i5qC85byP5YyW5aSW6YOo5a2Y5YKo6K6+5aSHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4i5YWB6K645bqU55So56iL5bqP5qC85byP5YyW5Y+v56e76Zmk55qE5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiLojrflj5bmnInlhbPlronlhajlrZjlgqjnmoTkv6Hmga8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijc2OTE2MTYyOTIxNzA1OTAyNDQiPiLlhYHorrjlupTnlKjnqIvluo/ojrflj5bmnInlhbPlronlhajlrZjlgqjnmoTkv6Hmga/jgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+IuWIm+W7uuWuieWFqOWtmOWCqCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IuWFgeiuuOW6lOeUqOeoi+W6j+WIm+W7uuWuieWFqOWtmOWCqOOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+Iua4hemZpOWuieWFqOWtmOWCqCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiLlhYHorrjlupTnlKjnqIvluo/muIXpmaTlronlhajlrZjlgqjjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLlronoo4Uv5Y246L295a6J5YWo5a2Y5YKoIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IuWFgeiuuOW6lOeUqOeoi+W6j+WuieijhS/ljbjovb3lronlhajlrZjlgqjjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+IumHjeWRveWQjeWuieWFqOWtmOWCqCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMTM4Nzg4MTc3MDcwODg3MjQ3MCI+IuWFgeiuuOW6lOeUqOeoi+W6j+mHjeWRveWQjeWuieWFqOWtmOWCqOOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4i6I635Y+W5pyJ5YWz5a6J5YWo5a2Y5YKo55qE5L+h5oGvIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4i5YWB6K645bqU55So56iL5bqP6I635Y+W5pyJ5YWz5a6J5YWo5a2Y5YKo55qE5L+h5oGv44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiLliJvlu7rlronlhajlrZjlgqgiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiLlhYHorrjlupTnlKjnqIvluo/liJvlu7rlronlhajlrZjlgqjjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3Nzg3MzIyODc4OTU1MjYxMDA2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjUyNjkyODMyODMwMTYxODAyMiI+Iua4hemZpOWuieWFqOWtmOWCqCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiLlhYHorrjlupTnlKjnqIvluo/muIXpmaTlronlhajlrZjlgqjjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiLlronoo4Uv5Y246L295a6J5YWo5a2Y5YKoIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IuWFgeiuuOW6lOeUqOeoi+W6j+WuieijhS/ljbjovb3lronlhajlrZjlgqjjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+IumHjeWRveWQjeWuieWFqOWtmOWCqCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IuWFgeiuuOW6lOeUqOeoi+W6j+mHjeWRveWQjeWuieWFqOWtmOWCqOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiLmjqfliLbmjK/liqjlmagiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IuWFgeiuuOW6lOeUqOeoi+W6j+aOp+WItuaMr+WKqOWZqOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiLmjqfliLbpl6rlhYnnga8iPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IuWFgeiuuOW6lOeUqOeoi+W6j+ivu+WPlueUqOaIt+WcqOeUqOaIt+ivjeWFuOS4reWtmOWCqOeahOS7u+aEj+engeacieWtl+ivjeOAgeWQjeensOWSjOefreivreOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+IuWGmeWFpeeUqOaIt+WumuS5ieeahOivjeWFuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiLlhYHorrjlupTnlKjnqIvluo/lkJHnlKjmiLfor43lhbjkuK3lhpnlhaXmlrDor43jgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+IuS/ruaUuS/liKDpmaTlhbHkuqvlrZjlgqjorr7lpIflhoXlrrkiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiLkv67mlLkv5Yig6Zmk5YWx5Lqr5a2Y5YKo6K6+5aSH5YaF5a65Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiLkv67mlLkv5Yig6ZmkIFNEIOWNoeS4reeahOWGheWuuSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiLlhYHorrjlupTnlKjnqIvluo/lhpnlhaXlhbHkuqvlrZjlgqjorr7lpIfjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MTMxODcxNTQxMTI3MjExNTI2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTk0MzkzMzM0Nzg1NzM4MjUyIj4i5YWB6K645bqU55So56iL5bqP5YaZ5YWl5YWx5Lqr5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4i5YWB6K645bqU55So56iL5bqP5YaZ5YWlIFNEIOWNoeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLorr/pl67nvJPlrZjmlofku7bns7vnu58iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IuWFgeiuuOW6lOeUqOeoi+W6j+ivu+WPluWSjOWGmeWFpee8k+WtmOaWh+S7tuezu+e7n+OAgiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiLlhajpg6jmmL7npLoiPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iVVNCIOWkp+WuuemHj+WtmOWCqCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTkwMTQ1OTA0MTM5ODc1MTQ5NSI+IlVTQiDlt7Lov57mjqUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiLmgqjlt7LpgJrov4cgVVNCIOWwhuaJi+acuui/nuaOpeiHs+iuoeeul+acuuOAguWmguaenOaCqOimgeWcqOiuoeeul+acuuWSjCBBbmRyb2lkIOaJi+acuueahOWFseS6q+WtmOWCqOiuvuWkh+S5i+mXtOWkjeWItuaWh+S7tu+8jOivt+mAieaLqeS4i+mdoueahOaMiemSruOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4i5oKo5bey6YCa6L+HIFVTQiDlsIbmiYvmnLrov57mjqXoh7PorqHnrpfmnLrjgILlpoLmnpzmgqjopoHlnKjorqHnrpfmnLrlkowgQW5kcm9pZCDmiYvmnLrnmoTlhbHkuqvlrZjlgqjorr7lpIfkuYvpl7TlpI3liLbmlofku7bvvIzor7fpgInmi6nkuIvpnaLnmoTmjInpkq7jgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IuaCqOW3sumAmui/hyBVU0Ig5bCG5omL5py66L+e5o6l6Iez6K6h566X5py644CC5aaC5p6c5oKo6KaB5Zyo6K6h566X5py65ZKMIEFuZHJvaWQg5omL5py655qEIFNEIOWNoeS5i+mXtOWkjeWItuaWh+S7tu+8jOivt+eCueWHu+S4i+mdoueahOaMiemSruOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjEwNTIyNTk5MzAzNjk1MDgyMzUiPiLmiZPlvIAgVVNCIOWtmOWCqOiuvuWkhyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IuS9v+eUqOWFseS6q+WtmOWCqOiuvuWkh+S9nOS4uiBVU0Ig5a2Y5YKo5pe25Ye6546w6Zeu6aKY44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiLkvb/nlKggU0Qg5Y2h6L+b6KGMIFVTQiDlrZjlgqjml7blh7rnjrDpl67popjjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiLkvb/nlKjlhbHkuqvlrZjlgqjorr7lpIfkvZzkuLogVVNCIOWtmOWCqOaXtuWHuueOsOmXrumimOOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiLkvb/nlKjlhbHkuqvlrZjlgqjorr7lpIfkvZzkuLogVVNCIOWtmOWCqOaXtuWHuueOsOmXrumimOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0Ig5bey6L+e5o6lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4i6YCJ5oup5bCG5paH5Lu25aSN5Yi25Yiw6K6h566X5py65oiW5LuO6K6h566X5py65aSN5Yi25Yiw5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4i5YWz6ZetIFVTQiDlrZjlgqjorr7lpIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IumAieS4reS7peWFs+mXrSBVU0Ig5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IuS9v+eUqOS4reeahCBVU0Ig5a2Y5YKo6K6+5aSHIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg3NDUzNDUyNjA3ODAyNjcxODUiPiLlnKjlhbPpl60gVVNCIOWtmOWCqOWJje+8jOivt+ehruS/neaCqOW3suS7juiuoeeul+acuuS4reWNuOi9ve+8iOKAnOW8ueWHuuKAne+8iUFuZHJvaWQg5omL5py655qE5YWx5Lqr5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiLlnKjlhbPpl60gVVNCIOWtmOWCqOWJje+8jOivt+ehruS/neaCqOW3suS7juiuoeeul+acuuS4reWNuOi9ve+8iOKAnOW8ueWHuuKAne+8iUFuZHJvaWQg5omL5py655qE5YWx5Lqr5a2Y5YKo6K6+5aSH44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzYxMzcxMzM5NjQyNjYwNDEwNCI+IuWcqOWFs+mXrSBVU0Ig5a2Y5YKo6K6+5aSH5YmN77yM6K+356Gu5L+d5oKo5bey5LuO6K6h566X5py65Lit5Y246L2977yI4oCc5by55Ye64oCd77yJQW5kcm9pZCDmiYvmnLrnmoQgU0Qg5Y2h44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9idXR0b25fbW91bnQiIG1zZ2lkPSI3MDYwMjE4MDM0OTAwNjk2MDI5Ij4i5YWz6ZetIFVTQiDlrZjlgqjorr7lpIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2Vycm9yX21lc3NhZ2UiIG1zZ2lkPSIxNDM4ODE5MTQ4NDA0MTIxMDgiPiLlhbPpl60gVVNCIOWtmOWCqOiuvuWkh+aXtumBh+WIsOmXrumimOOAguivt+ajgOafpeW5tuehruS/neW3suWNuOi9veS6hiBVU0Ig5Li76K6+5aSH77yM54S25ZCO6YeN6K+V44CCIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiLlpoLmnpzmgqjmiZPlvIDkuoYgVVNCIOWtmOWCqOiuvuWkh++8jOWImeaCqOW9k+WJjeS9v+eUqOeahOafkOS6m+W6lOeUqOeoi+W6j+S8muWBnOatou+8jOiAjOS4lOWcqOaCqOWFs+mXrSBVU0Ig5a2Y5YKo6K6+5aSH5YmN5Y+v6IO96YO95peg5rOV5L2/55So44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+IlVTQiDmk43kvZzlpLHotKUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4i56Gu5a6aIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiLmoLzlvI/ljJblhbHkuqvlrZjlgqjorr7lpIciPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IuagvOW8j+WMluWFseS6q+WtmOWCqOiuvuWkhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiLmoLzlvI/ljJYgU0Qg5Y2hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IuehruWumuimgeagvOW8j+WMluWFseS6q+WtmOWCqOiuvuWkh++8jOaTpumZpOWFtuWtmOWCqOeahOaJgOacieaWh+S7tuWQl++8n+ivpeaTjeS9nOWwhuaXoOazleaSpOa2iO+8gSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiLnoa7lrpropoHmoLzlvI/ljJblhbHkuqvlrZjlgqjorr7lpIfvvIzmk6bpmaTlhbblrZjlgqjnmoTmiYDmnInmlofku7blkJfvvJ/or6Xmk43kvZzlsIbml6Dms5XmkqTmtojvvIEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiLnoa7lrpropoHlsIYgU0Qg5Y2h5qC85byP5YyW5ZCX77yf6K+l5Y2h5LiK55qE5omA5pyJ5pWw5o2u6YO95bCG5Lii5aSx44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X2J1dHRvbl9mb3JtYXQiIG1zZ2lkPSI0MTMxMDY0NTYwMTI3NDc4Njk1Ij4i5qC85byP5YyWIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYWRiX2FjdGl2ZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NzI5MDQ0Nzc4OTQ5MTg5OTE4Ij4i5bey6L+e5o6lIFVTQiDosIPor5UiPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiLlgJnpgIkiPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4i5q2j5Zyo5YeG5aSH5YWx5Lqr5a2Y5YKo6K6+5aSHIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4i5q2j5Zyo5YeG5aSH5YWx5Lqr5a2Y5YKo6K6+5aSHIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiLmraPlnKjlh4blpIcgU0Qg5Y2hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+Iuato+WcqOajgOafpeaYr+WQpuaciemUmeivr+OAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4i5YWx5Lqr5a2Y5YKo6K6+5aSH5Lit5peg5paH5Lu2Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiLlhbHkuqvlrZjlgqjorr7lpIfkuK3ml6Dmlofku7YiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiLnqbogU0Qg5Y2hIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTYwNjY2MDc1NjEyNDYyOTcwOCI+IuWFseS6q+WtmOWCqOiuvuWkh+S4reaXoOaWh+S7tuaIluS9v+eUqOS6huS4jeWPl+aUr+aMgeeahOaWh+S7tuezu+e7n+OAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE2MDY2NjA3NTYxMjQ2Mjk3MDggLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijg2MjMxMzA1MjI1NTYwODczMTEiPiLlhbHkuqvlrZjlgqjorr7lpIfkuK3ml6Dmlofku7bmiJbkvb/nlKjkuobkuI3lj5fmlK/mjIHnmoTmlofku7bns7vnu5/jgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM4MTc3MDQwODgwMjc4MjkzODAiPiJTRCDljaHml6Dmlofku7bns7vnu5/vvIzmiJbmlofku7bns7vnu5/kuI3lj5fmlK/mjIHjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE3MjQ2MTk5MDIwNzY1Mjg4ODkiPiLlhbHkuqvlrZjlgqjorr7lpIflt7LmjZ/lnY8iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAxNzI0NjE5OTAyMDc2NTI4ODg5IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwOTAwNDY3Njk1MzI3MTM1NjMiPiLlhbHkuqvlrZjlgqjorr7lpIflt7LmjZ/lnY8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjQxMDcyMzkwNjAxOTEwMDE4OSI+IlNEIOWNoeWPl+aNnyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NDYwMzExODM1MTMwNjcxMTk0Ij4i5YWx5Lqr5a2Y5YKo6K6+5aSH5bey5o2f5Z2P44CC5oKo5Y+v6IO95b+F6aG75bCG5YW26YeN5paw5qC85byP5YyW44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNjQ2MDMxMTgzNTEzMDY3MTE5NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjUyOTAyMTI5OTI5NDQ1MDY2NyI+IuWFseS6q+WtmOWCqOiuvuWkh+W3suaNn+Wdj+OAguaCqOWPr+iDveW/hemhu+WwhuWFtumHjeaWsOagvOW8j+WMluOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY5MDI1MzE3NzU5NDgyMzg5ODkiPiJTRCDljaHlt7LmjZ/lnY/jgILmgqjlj6/og73lv4XpobvlsIblhbbph43mlrDmoLzlvI/ljJbjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjU4MjE3NTAxNjA2MDQzMjAzNCI+IuWFseS6q+WtmOWCqOiuvuWkh+iiq+aEj+Wkluenu+mZpCI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDI1ODIxNzUwMTYwNjA0MzIwMzQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjYxNjgzMDMxMzMwOTUxMDczIj4i5YWx5Lqr5a2Y5YKo6K6+5aSH6KKr5oSP5aSW56e76ZmkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjg3MjE1Mjg4MjYwNDQwNzgzNyI+IlNEIOWNoeacquato+W4uOenu+mZpCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjIwMDUzOTY0NjQ0OTQ2NDg5MzciPiLor7flhYjljbjovb3lhbHkuqvlrZjlgqjorr7lpIfvvIzlho3lsIblhbbnp7vpmaTvvIzku6XpmLLmlbDmja7kuKLlpLHjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyMDA1Mzk2NDY0NDk0NjQ4OTM3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MzI5ODQ4ODE5ODY1NTk0MjQxIj4i6K+35YWI5Y246L295YWx5Lqr5a2Y5YKo6K6+5aSH77yM5YaN5bCG5YW256e76Zmk77yM5Lul6Ziy5pWw5o2u5Lii5aSx44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3MjYwMTgzMjkzNzQ3NDQ4MjQxIj4i6K+35YWI5Y246L29IFNEIOWNoe+8jOWGjeWwhuWFtuenu+mZpO+8jOS7pemYsuaVsOaNruS4ouWkseOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM2NTI1ODgxMDE4Njc5NTE1Ij4i5YWx5Lqr5a2Y5YKo6K6+5aSH5Y+v5a6J5YWo56e76ZmkIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzY1MjU4ODEwMTg2Nzk1MTUgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjM5Njc5NzM4OTMyNzAzNjAyMzAiPiLlhbHkuqvlrZjlgqjorr7lpIflj6/lronlhajnp7vpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjY3Mjk4MDExMzA3OTA2MTYyMDAiPiJTRCDljaHlt7Llronlhajnp7vpmaQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiLlj6/ku6Xlronlhajnp7vpmaTlhbHkuqvlrZjlgqjorr7lpIfjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiLlj6/ku6Xlronlhajnp7vpmaTlhbHkuqvlrZjlgqjorr7lpIfjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4i5oKo546w5Zyo5Y+v5Lul5a6J5YWo56e76ZmkIFNEIOWNoeOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4i5YWx5Lqr5a2Y5YKo6K6+5aSH5bey56e76ZmkIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiLlhbHkuqvlrZjlgqjorr7lpIflt7Lnp7vpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4OTAyNTE4MDMwNDA0MzgxMzE4Ij4i5bey56e76ZmkIFNEIOWNoSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiLlhbHkuqvlrZjlgqjorr7lpIflt7Lnp7vpmaTjgILor7fmj5LlhaXmlrDlqpLkvZPjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNzMwODkwNDQxMzMxMzQ0Nzc2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2OTIxMTI2MTYyNTgwNTc0MTQzIj4i5YWx5Lqr5a2Y5YKo6K6+5aSH5bey56e76Zmk44CC6K+35o+S5YWl5paw5aqS5L2T44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iU0Qg5Y2h5bey56e76Zmk44CC6K+35o+S5YWl5paw55qEIFNEIOWNoeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4i5om+5LiN5Yiw5Yy56YWN55qE5rS75YqoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+IuabtOaWsOe7hOS7tuS9v+eUqOaDheWGtee7n+iuoSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKaW5kZXggZWMyM2M0ZC4uZTIxZGJhZSAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwbGFiX2RldmVsb3BtZW50VG9vbHMiIG1zZ2lkPSIzNDQ2MTY0NTg0NzEwNTk2NTEzIj4i6ZaL55m85bel5YW3Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19kZXZlbG9wbWVudFRvb2xzIiBtc2dpZD0iOTA1NjQzMTE5Mzg5MzgwOTgxNCI+IuWPquaciemWi+eZvOiAhemcgOimgeatpOWKn+iDveOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGxhYl9zdG9yYWdlIiBtc2dpZD0iMTk3MTExODc3MDU0NjMzNjk2NiI+IuWEsuWtmCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1ncm91cGRlc2Nfc3RvcmFnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI1NDU1ODA0MzUzMjIwNTgxMzEyIj4i5a2Y5Y+W5YWx55So5YSy5a2Y6KOd572u44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQ1NTgwNDM1MzIyMDU4MTMxMiAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWdyb3VwZGVzY19zdG9yYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc0NDIzMTg1MDI0NDY4NzQ5OTkiPiLlrZjlj5blhbHnlKjlhLLlrZjoo53nva7jgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZ3JvdXBkZXNjX3N0b3JhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI5MjAzMzAyMjE0OTE1MzU1Nzc0Ij4i5a2Y5Y+WIFNEIOWNoeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc3RhdHVzQmFyIiBtc2dpZD0iNzQxNzE5MjYyOTYwMTg5MDc5MSI+IuWBnOeUqOaIluiuiuabtOeLgOaFi+WIlyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhciIgbXNnaWQ9IjEzNjU0NzM1OTUzMzE5ODk3MzIiPiLlhYHoqLHmh4nnlKjnqIvlvI/lgZznlKjni4DmhYvliJfmiJbmlrDlop7jgIHnp7vpmaTns7vntbHlnJbnpLrjgIIiPC9zdHJpbmc+CkBAIC0zMjEsMTYgKzMyMSwxNiBAQAogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfdW5tb3VudF9maWxlc3lzdGVtcyIgbXNnaWQ9IjYyNTMyNjM3OTI1MzU4NTk3NjciPiLlhYHoqLHmh4nnlKjnqIvlvI/mjpvovIkv5Y246LyJ5oq95Y+W5byP5YSy5a2Y6Kit5YKZ55qE5qqU5qGI57O757Wx44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9tb3VudF9mb3JtYXRfZmlsZXN5c3RlbXMiIG1zZ2lkPSI1NTIzMjg1MTQzNTc2NzE4OTgxIj4i5bCH5aSW5o6l5byP5YSy5a2Y6KOd572u5qC85byP5YyWIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbW91bnRfZm9ybWF0X2ZpbGVzeXN0ZW1zIiBtc2dpZD0iNTc0MDYwMDQ0OTA2MDQ3Mzg2Ij4i5YWB6Kix5oeJ55So56iL5byP5bCH5Y+v56e76Zmk5byP5YSy5a2Y6KOd572u5qC85byP5YyW44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2FjY2VzcyIgbXNnaWQ9IjEwNzAzNjQwNzkyNDk4MzQ2NjYiPiLlj5blvpflronlhajlhLLlrZjnqbrplpPnmoTos4foqIoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2FjY2VzcyIgbXNnaWQ9Ijc2OTE2MTYyOTIxNzA1OTAyNDQiPiLlhYHoqLHmh4nnlKjnqIvlvI/lj5blvpflronlhajlhLLlrZjnqbrplpPnmoTos4foqIrjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzMxMjA3ODAzMjMyNjkyODg5OSI+IuW7uueri+WuieWFqOWEsuWtmOepuumWkyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfY3JlYXRlIiBtc2dpZD0iNzA0MTgwMjMyMjc1OTAxNDAzNSI+IuWFgeioseaHieeUqOeoi+W8j+W7uueri+WuieWFqOWEsuWtmOepuumWk+OAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19kZXN0cm95IiBtc2dpZD0iNzc4NzMyMjg3ODk1NTI2MTAwNiI+IumKt+avgOWuieWFqOWEsuWtmOepuumWkyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjU3NDA3NTQxMTQ5Njc4OTMxNjkiPiLlhYHoqLHmh4nnlKjnqIvlvI/pirfmr4DlronlhajlhLLlrZjnqbrplpPjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9Ijc1MTc0NDk2OTQ2Njc4Mjg1OTIiPiLmjpvovIkv5Y246LyJ5a6J5YWo5YSy5a2Y56m66ZaTIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTQzODA3ODEyMTcxODczODYyNSI+IuWFgeioseaHieeUqOeoi+W8j+aOm+i8iS/ljbjovInlronlhajlhLLlrZjnqbrplpPjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNTY4NTM0NDM5MDQzOTkzNDQ5NSI+IumHjeaWsOWRveWQjeWuieWFqOWEsuWtmOepuumWkyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMTM4Nzg4MTc3MDcwODg3MjQ3MCI+IuWFgeioseaHieeUqOeoi+W8j+mHjeaWsOWRveWQjeWuieWFqOWEsuWtmOepuumWk+OAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEwNzAzNjQwNzkyNDk4MzQ2NjYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYXNlY19hY2Nlc3MiIG1zZ2lkPSIzNDExMzM4NjMyMDAyMTkzODQ2Ij4i5Y+W5b6X5a6J5YWo5YSy5a2Y56m66ZaT55qE6LOH6KiKIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzY5MTYxNjI5MjE3MDU5MDI0NCAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19hY2Nlc3MiIG1zZ2lkPSI4ODIwMzI2NTUxNjg3Mjg1NDM5Ij4i5YWB6Kix5oeJ55So56iL5byP5Y+W5b6X5a6J5YWo5YSy5a2Y56m66ZaT55qE6LOH6KiK44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNzMxMjA3ODAzMjMyNjkyODg5OSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9hc2VjX2NyZWF0ZSIgbXNnaWQ9IjY0MTQ3NTcyMzQ3ODkzMzYzMjciPiLlu7rnq4vlronlhajlhLLlrZjnqbrplpMiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3MDQxODAyMzIyNzU5MDE0MDM1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19hc2VjX2NyZWF0ZSIgbXNnaWQ9IjI2MjEzNDY3NjQ5OTU3MzEyNTAiPiLlhYHoqLHmh4nnlKjnqIvlvI/lu7rnq4vlronlhajlhLLlrZjnqbrplpPjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3Nzg3MzIyODc4OTU1MjYxMDA2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjUyNjkyODMyODMwMTYxODAyMiI+IumKt+avgOWuieWFqOWEsuWtmOepuumWkyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDU3NDA3NTQxMTQ5Njc4OTMxNjkgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfZGVzdHJveSIgbXNnaWQ9IjI3NDY3MDY4ODkyMDgwNjYyNTYiPiLlhYHoqLHmh4nnlKjnqIvlvI/pirfmr4DlronlhajlhLLlrZjnqbrplpPjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTE3NDQ5Njk0NjY3ODI4NTkyIC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfbW91bnRfdW5tb3VudCIgbXNnaWQ9IjI0NTYyODc2MjM2ODkwMjk3NDQiPiLmjpvovIkv5Y246LyJ5a6J5YWo5YSy5a2Y56m66ZaTIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNTQzODA3ODEyMTcxODczODYyNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfYXNlY19tb3VudF91bm1vdW50IiBtc2dpZD0iNTkzNDM3NTU5MDE4OTM2ODIwMCI+IuWFgeioseaHieeUqOeoi+W8j+aOm+i8iS/ljbjovInlronlhajlhLLlrZjnqbrplpPjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA1Njg1MzQ0MzkwNDM5OTM0NDk1IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2FzZWNfcmVuYW1lIiBtc2dpZD0iNzQ5NjYzMzk1NDA4MDQ3MjQxNyI+IumHjeaWsOWRveWQjeWuieWFqOWEsuWtmOepuumWkyI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDEzODc4ODE3NzA3MDg4NzI0NzAgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FzZWNfcmVuYW1lIiBtc2dpZD0iMjE1MjgyOTk4NTIzODg3Njc5MCI+IuWFgeioseaHieeUqOeoi+W8j+mHjeaWsOWRveWQjeWuieWFqOWEsuWtmOepuumWk+OAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfdmlicmF0ZSIgbXNnaWQ9Ijc3NjgzNTYwMTk5ODA4NDk2MDMiPiLmjqfliLbpnIfli5UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY192aWJyYXRlIiBtc2dpZD0iMjg4NjY3NzE3NzI1Nzc4OTE4NyI+IuWFgeioseaHieeUqOeoi+W8j+aOp+WItumch+WLleOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZmxhc2hsaWdodCIgbXNnaWQ9IjIxNTU5MjA4MTAxMjE5ODQyMTUiPiLmjqfliLbploPlhYnnh4giPC9zdHJpbmc+CkBAIC00MjcsOSArNDI3LDkgQEAKICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3JlYWREaWN0aW9uYXJ5IiBtc2dpZD0iMTA4Mjk3MjYwMzU3NjM2MDY5MCI+IuWFgeioseaHieeUqOeoi+W8j+iugOWPluS9v+eUqOiAheWEsuWtmOWcqOS9v+eUqOiAheWtl+WFuOWFp+eahOS7u+S9leengeS6uuWtl+ipnuOAgeWQjeeoseWSjOipnue1hOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfd3JpdGVEaWN0aW9uYXJ5IiBtc2dpZD0iNjcwMzEwOTUxMTgzNjM0MzM0MSI+IuWvq+WFpeS9v+eUqOiAheWumue+qeeahOWtl+WFuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3dyaXRlRGljdGlvbmFyeSIgbXNnaWQ9IjIyNDEyNTYyMDY1MjQwODI4ODAiPiLlhYHoqLHmh4nnlKjnqIvlvI/lsIfmlrDlrZfoqZ7lr6vlhaXkvb/nlKjogIXnmoTlrZflhbjjgIIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijk5MzcwNzQzNjk0MTAxNjkxMyI+IuS/ruaUuS/liKrpmaTlhbHnlKjlhLLlrZjoo53nva7lhaflrrkiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA5OTM3MDc0MzY5NDEwMTY5MTMgLS0+ICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODU0MzA4NzYzMTA3NjQ3NTIiPiLkv67mlLkv5Yiq6Zmk5YWx55So5YSy5a2Y6KOd572u5YWn5a65Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9zZGNhcmRXcml0ZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjgwNzk0MDM3NTkwMDE3NzcyOTEiPiLkv67mlLkv5Yiq6ZmkIFNEIOWNoeeahOWFp+WuuSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3NkY2FyZFdyaXRlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQxMzE4NzE1NDExMjcyMTE1MjYiPiLlhYHoqLHmh4nnlKjnqIvlvI/lr6vlhaXlhbHnlKjlhLLlrZjoo53nva7jgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0MTMxODcxNTQxMTI3MjExNTI2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19zZGNhcmRXcml0ZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2NTk0MzkzMzM0Nzg1NzM4MjUyIj4i5YWB6Kix5oeJ55So56iL5byP5a+r5YWl5YWx55So5YSy5a2Y6KOd572u44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2Nfc2RjYXJkV3JpdGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NjQzOTYzMjA0OTc2NDcxODc4Ij4i5YWB6Kix5oeJ55So56iL5byP5a+r5YWlIFNEIOWNoeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FjaGVfZmlsZXN5c3RlbSIgbXNnaWQ9IjU2NTY0ODcyNjQ4MTk2Njk4MjQiPiLlrZjlj5blv6vlj5bmqpTmoYjns7vntbEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYWNoZV9maWxlc3lzdGVtIiBtc2dpZD0iMTYyNDczNDUyODQzNTY1OTkwNiI+IuWFgeioseaHieeUqOeoi+W8j+iugOWPluWPiuWvq+WFpeW/q+WPluaqlOahiOezu+e1seOAgiI8L3N0cmluZz4KQEAgLTgwMiwxNyArODAyLDE3IEBACiAgICAgPHN0cmluZyBuYW1lPSJwZXJtc19zaG93X2FsbCIgbXNnaWQ9IjI2NzE3OTExNjM5MzMwOTExODAiPjxiPiLpoa/npLrlhajpg6giPC9iPjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfYWN0aXZpdHlfdGl0bGUiIG1zZ2lkPSIyMzk5Mjg5OTk5NjA4OTAwNDQzIj4iVVNCIOWkp+mHj+WEsuWtmOijnee9riI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3RpdGxlIiBtc2dpZD0iNTkwMTQ1OTA0MTM5ODc1MTQ5NSI+IlVTQiDlt7LpgKPmjqUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyMzE0NjI3NTAwMTAwNjY4OTYiPiLlt7LpgI/pgY4gVVNCIOmAo+aOpeaJi+apn+iIh+mbu+iFpuOAguWmguimgeWcqOmbu+iFpuWSjCBBbmRyb2lkIOeahOWFseeUqOWEsuWtmOijnee9ruS5i+mWk+ikh+ijveaqlOahiO+8jOiri+mBuOWPluS4i+aWueaMiemIleOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDgyMzE0NjI3NTAwMTAwNjY4OTYgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTE1Nzc5MzI0NTUxNTAyMDYyIj4i5bey6YCP6YGOIFVTQiDpgKPmjqXmiYvmqZ/oiIfpm7vohabjgILlpoLopoHlnKjpm7vohablkowgQW5kcm9pZCDnmoTlhbHnlKjlhLLlrZjoo53nva7kuYvplpPopIfoo73mqpTmoYjvvIzoq4vpgbjlj5bkuIvmlrnmjInpiJXjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNDc5Njc1OTY0NjE2NzI0NzE3OCI+IuW3sumAj+mBjiBVU0Ig6YCj5o6l5omL5qmf6IiH6Zu76IWm44CC5aaC6KaB5b6e6Zu76IWm5oiWIEFuZHJvaWQg57O757Wx55qEIFNEIOWNoeikh+ijveaqlOahiO+8jOiri+mBuOWPluS4i+aWueaMiemIleOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjEwNTIyNTk5MzAzNjk1MDgyMzUiPiLplovllZ8gVVNCIOWEsuWtmOijnee9riI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNDgxODM0Nzc1NjQwMjc0MDI2MSI+IuS9v+eUqCBVU0Ig5YSy5a2Y6KOd572u55qE5YWx55So5YSy5a2Y56m66ZaT5pmC55m855Sf5ZWP6aGM44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjI1MzQ3ODQ3NTE2MDMzNDUzNjMiPiLmioogU0Qg5Y2h55W25oiQIFVTQiDlhLLlrZjoo53nva7mmYLnmbznlJ/llY/poYzjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA0ODE4MzQ3NzU2NDAyNzQwMjYxIC0tPiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9lcnJvcl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjMyNzY0MTM3NjQ0MzA0Njg0NTQiPiLkvb/nlKggVVNCIOWEsuWtmOijnee9rueahOWFseeUqOWEsuWtmOepuumWk+aZgueZvOeUn+WVj+mhjOOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDQ4MTgzNDc3NTY0MDI3NDAyNjEgLS0+ICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX2Vycm9yX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIxMjA4MTAzOTc3MTM3NzMyNzUiPiLkvb/nlKggVVNCIOWEsuWtmOijnee9rueahOWFseeUqOWEsuWtmOepuumWk+aZgueZvOeUn+WVj+mhjOOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjgxNzU4OTI1NTQ3NTcyMTY1MjUiPiJVU0Ig5bey6YCj5o6lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfbm90aWZpY2F0aW9uX21lc3NhZ2UiIG1zZ2lkPSI3MzgwMDgyNDA0Mjg4MjE5MzQxIj4i6YG45Y+W5q2k6aCF5bCH5qqU5qGI6KSH6KO95Yiw6Zu76IWm77yM5oiW5b6e6Zu76IWm6KSH6KO944CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSIyMzM2MDU4Mzk2NjYzNTE2MDE3Ij4i6Zec6ZaJIFVTQiDlhLLlrZjoo53nva4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iMjU5MTgxMzQ5MDI2OTg0MTUzOSI+IumBuOWPluatpOiZlemXnOmWiSBVU0Ig5YSy5a2Y6KOd572u44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF90aXRsZSIgbXNnaWQ9IjY2MDEyOTg1MTcwODc3NTg1MyI+IlVTQiDlhLLlrZjnqbrplpPkvb/nlKjkuK0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODc0NTM0NTI2MDc4MDI2NzE4NSI+IumXnOmWiSBVU0Ig5YSy5a2Y6KOd572u5YmN77yM6KuL5YuZ5b+F5YWI5b6e6Zu76IWm5Y246LyJICjpgIDlh7opIEFuZHJvaWQg5omL5qmf55qE5YWx55So5YSy5a2Y6KOd572u44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gODc0NTM0NTI2MDc4MDI2NzE4NSAtLT4gICAgIDxzdHJpbmcgbmFtZT0idXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjEzNjg4NDIyNjk0NjM3NDUwNjciPiLpl5zplokgVVNCIOWEsuWtmOijnee9ruWJje+8jOiri+WLmeW/heWFiOW+numbu+iFpuWNuOi8iSAo6YCA5Ye6KSBBbmRyb2lkIOaJi+apn+eahOWFseeUqOWEsuWtmOijnee9ruOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MTM3MTMzOTY0MjY2MDQxMDQiPiLpl5zplokgVVNCIOWEsuWtmOijnee9ruWJje+8jOiri+WLmeW/heWFiOWwhyBBbmRyb2lkIOezu+e1seeahCBTRCDljaHlvp7pm7vohabkuIrljbjkuIsgKOmAgOWHuinjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ1c2Jfc3RvcmFnZV9zdG9wX2J1dHRvbl9tb3VudCIgbXNnaWQ9IjcwNjAyMTgwMzQ5MDA2OTYwMjkiPiLpl5zplokgVVNCIOWEsuWtmOijnee9riI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InVzYl9zdG9yYWdlX3N0b3BfZXJyb3JfbWVzc2FnZSIgbXNnaWQ9IjE0Mzg4MTkxNDg0MDQxMjEwOCI+IumXnOmWiSBVU0Ig5YSy5a2Y6KOd572u5pmC55m855Sf5ZWP6aGM44CC6KuL5qqi5p+l5oKo5piv5ZCm5bey5Y246LyJIFVTQiBIb3N077yM54S25b6M5YaN6Kmm5LiA5qyh44CCIjwvc3RyaW5nPgpAQCAtODIwLDkgKzgyMCw5IEBACiAgICAgPHN0cmluZyBuYW1lPSJkbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCIgbXNnaWQ9IjMyMDI4MzgyMzQ3ODA1MDU4ODYiPiLlpoLmnpzmgqjplovllZ8gVVNCIOWEsuWtmOijnee9ru+8jOWJh+aCqOato+WcqOS9v+eUqOeahOafkOS6m+aHieeUqOeoi+W8j+acg+WBnOatoumBi+S9nO+8jOiAjOS4lOWPr+iDveeEoeazleS9v+eUqO+8jOW+heaCqOWwhyBVU0Ig5YSy5a2Y6KOd572u6Zec6ZaJ5omN5pyD5oGi5b6p5q2j5bi444CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGxnX2Vycm9yX3RpdGxlIiBtc2dpZD0iODA0ODk5OTk3MzgzNzMzOTE3NCI+IlVTQiDmk43kvZzlpLHmlZciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkbGdfb2siIG1zZ2lkPSI3Mzc2OTUzMTY3MDM5ODY1NzAxIj4i56K65a6aIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY1Nzc5MDgwMDY5NDk3NDIyMTciPiLmoLzlvI/ljJblhbHnlKjlhLLlrZjoo53nva4iPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NTc3OTA4MDA2OTQ5NzQyMjE3IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNzk4MDk5NTU5MjU5NTA5Nzg0MSI+IuagvOW8j+WMluWFseeUqOWEsuWtmOijnee9riI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9Ijg2NjMyNDc5Mjk1NTEwOTU4NTQiPiLlsIcgU0Qg5Y2h5qC85byP5YyWIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0bWVkaWFfZm9ybWF0X21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzQ3MDgxNTE0MDA2ODUwMjgyNCI+IuagvOW8j+WMluWFseeUqOWEsuWtmOijnee9ruaZgu+8jOaYr+WQpua4hemZpOWFtuS4reWEsuWtmOeahOaJgOacieaqlOahiO+8n+mAmemgheWLleS9nOeEoeazleW+qeWOn++8gSI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDM0NzA4MTUxNDAwNjg1MDI4MjQgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjgyOTY5MDgwNzk3MjI4OTc3NzIiPiLmoLzlvI/ljJblhbHnlKjlhLLlrZjoo53nva7mmYLvvIzmmK/lkKbmuIXpmaTlhbbkuK3lhLLlrZjnmoTmiYDmnInmqpTmoYjvvJ/pgJnpoIXli5XkvZznhKHms5Xlvqnljp/vvIEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRtZWRpYV9mb3JtYXRfbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjM2MjEzNjk5NjI0MzM1MjM2MTkiPiLnorrlrpropoHlsIcgU0Qg5Y2h5qC85byP5YyW5ZeO77yf6KmyIFNEIOWNoeS4reeahOaJgOacieizh+aWmeWwh+acg+mBuuWkseOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dG1lZGlhX2Zvcm1hdF9idXR0b25fZm9ybWF0IiBtc2dpZD0iNDEzMTA2NDU2MDEyNzQ3ODY5NSI+IuagvOW8j+WMliI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFkYl9hY3RpdmVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjcyOTA0NDc3ODk0OTE4OTkxOCI+IlVTQiDlgbXpjK/mqKHlvI/lt7LllZ/nlKgiPC9zdHJpbmc+CkBAIC04MzEsMjggKzgzMSwyOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfYWxwaGFiZXQiIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5Ij4iIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZmFzdF9zY3JvbGxfbnVtZXJpY19hbHBoYWJldCIgbXNnaWQ9IjQwMzAxNzA1MjQ1OTUxMjM2MTAiPiIgMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY2FuZGlkYXRlc19zdHlsZSIgbXNnaWQ9IjQzMzM5MTMwODk2MzcwNjIyNTciPjx1PiLlvoXpgbjpoIXnm64iPC91Pjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI0MjM5NTE2Njc1MDI4NDM4OTk3Ij4i5q2j5Zyo5rqW5YKZ5YWx55So5YSy5a2Y6KOd572uIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gNDIzOTUxNjY3NTAyODQzODk5NyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzNDQ5ODE2MDA1MzUxNDY4NTYwIj4i5q2j5Zyo5rqW5YKZ5YWx55So5YSy5a2Y6KOd572uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjU0NTc2MDM0MTg5NzA5OTQwNTAiPiLmraPlnKjmupblgpkgU0Qg5Y2hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2NoZWNraW5nX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBtc2dpZD0iODI4NzMxOTg4MjkyNjczNzA1MyI+Iuato+WcqOaqouafpemMr+iqpOOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIzOTM3MzQ1NTc3OTgzNzMwODczIj4i5YWx55So5YSy5a2Y6KOd572u5rKS5pyJ5YWn5a65Ijwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMzkzNzM0NTU3Nzk4MzczMDg3MyAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc3ODgwNDA3NDU2ODYyMjkzMDciPiLlhbHnlKjlhLLlrZjoo53nva7mspLmnInlhaflrrkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI3ODA0Nzc4MzgyNDEyMTI5OTciPiJTRCDljaHngrrnqbrnmb0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxNjA2NjYwNzU2MTI0NjI5NzA4Ij4i5YWx55So5YSy5a2Y6KOd572u54Sh5YWn5a655oiW5L2/55So5LiN5Y+X5pSv5o+055qE5qqU5qGI57O757Wx44CCIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTYwNjY2MDc1NjEyNDYyOTcwOCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iODYyMzEzMDUyMjU1NjA4NzMxMSI+IuWFseeUqOWEsuWtmOijnee9rueEoeWFp+WuueaIluS9v+eUqOS4jeWPl+aUr+aPtOeahOaqlOahiOezu+e1seOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iMzgxNzcwNDA4ODAyNzgyOTM4MCI+IlNEIOWNoeWFp+eEoeaqlOahiOezu+e1se+8jOaIluaqlOahiOezu+e1seS4jeWPl+aUr+aPtOOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMTcyNDYxOTkwMjA3NjUyODg4OSI+IuWFseeUqOWEsuWtmOijnee9ruW3suaQjeWjniI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDE3MjQ2MTk5MDIwNzY1Mjg4ODkgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjA5MDA0Njc2OTUzMjcxMzU2MyI+IuWFseeUqOWEsuWtmOijnee9ruW3suaQjeWjniI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2NDEwNzIzOTA2MDE5MTAwMTg5Ij4iU0Qg5Y2h5bey5pCN5aOeIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjY0NjAzMTE4MzUxMzA2NzExOTQiPiLlhbHnlKjlhLLlrZjoo53nva7lt7LmkI3lo57vvIzmgqjlj6/og73lv4XpoIjph43mlrDmoLzlvI/ljJbjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA2NDYwMzExODM1MTMwNjcxMTk0IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfdW5tb3VudGFibGVfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iNTI5MDIxMjk5Mjk0NDUwNjY3Ij4i5YWx55So5YSy5a2Y6KOd572u5bey5pCN5aOe77yM5oKo5Y+v6IO95b+F6aCI6YeN5paw5qC85byP5YyW44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjkwMjUzMTc3NTk0ODIzODk4OSI+IlNEIOWNoeW3suavgOaQje+8jOaCqOWPr+iDveW/hemgiOS6iOS7pemHjeaWsOagvOW8j+WMluOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIyNTgyMTc1MDE2MDYwNDMyMDM0Ij4i5YWx55So5YSy5a2Y6KOd572u5bey5oSP5aSW56e76ZmkIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMjU4MjE3NTAxNjA2MDQzMjAzNCAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjE2NjE2ODMwMzEzMzA5NTEwNzMiPiLlhbHnlKjlhLLlrZjoo53nva7lt7LmhI/lpJbnp7vpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI2ODcyMTUyODgyNjA0NDA3ODM3Ij4iU0Qg5Y2h5pyq5q2j5bi456e76ZmkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMjAwNTM5NjQ2NDQ5NDY0ODkzNyI+Iuiri+WFiOWNuOi8ieWFseeUqOWEsuWtmOijnee9ru+8jOWGjeWwh+WFtuenu+mZpO+8jOS7peWFjeizh+aWmemBuuWkseOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG91dGRhdGVkIHRyYW5zbGF0aW9uIDIwMDUzOTY0NjQ0OTQ2NDg5MzcgLS0+ICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQzMjk4NDg4MTk4NjU1OTQyNDEiPiLoq4vlhYjljbjovInlhbHnlKjlhLLlrZjoo53nva7vvIzlho3lsIflhbbnp7vpmaTvvIzku6XlhY3os4fmlpnpgbrlpLHjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0iZGVmYXVsdCIgbXNnaWQ9IjcyNjAxODMyOTM3NDc0NDgyNDEiPiLoq4vlhYjljbjovIkgU0Qg5Y2h77yM5YaN5bCH5YW256e76Zmk77yM5Lul5YWN6LOH5paZ6YG65aSx44CCIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzY1MjU4ODEwMTg2Nzk1MTUiPiLlhbHnlKjlhLLlrZjoo53nva7lt7Llj6/lronlhajnp7vpmaQiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAzNjUyNTg4MTAxODY3OTUxNSAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX3NhZmVfdW5tb3VudF9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9Im5vc2RjYXJkIiBtc2dpZD0iMzk2Nzk3Mzg5MzI3MDM2MDIzMCI+IuWFseeUqOWEsuWtmOijnee9ruW3suWPr+WuieWFqOenu+mZpCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNjcyOTgwMTEzMDc5MDYxNjIwMCI+IuWPr+WuieWFqOenu+mZpCBTRCDljaEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9Ijc1MDM3NjkxMDYyODUxODg3MDMiPiLmgqjlj6/lronlhajnp7vpmaTlhbHnlKjlhLLlrZjoo53nva7kuobjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiA3NTAzNzY5MTA2Mjg1MTg4NzAzIC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjYxNDIxOTUzNjE2MDY0OTM1MzAiPiLmgqjlj6/lronlhajnp7vpmaTlhbHnlKjlhLLlrZjoo53nva7kuobjgIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJkZWZhdWx0IiBtc2dpZD0iNTY4ODQxMjc4MTM4Mzc3NjA0Ij4i5oKo54++5Zyo5Y+v5Lul5a6J5YWo5Zyw56e76ZmkIFNEIOWNoeOAgiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSIxODc0ODg5NzY0MzY3MDg1NTYyIj4i5YWx55So5YSy5a2Y6KOd572u5bey56e76ZmkIjwvc3RyaW5nPgorICAgIDwhLS0gb3V0ZGF0ZWQgdHJhbnNsYXRpb24gMTg3NDg4OTc2NDM2NzA4NTU2MiAtLT4gICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjQ0ODYzNzcyMzAxNDAyMjc2NTEiPiLlhbHnlKjlhLLlrZjoo53nva7lt7Lnp7vpmaQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fdGl0bGUiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSI4OTAyNTE4MDMwNDA0MzgxMzE4Ij4i5bey56e76ZmkIFNEIOWNoSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9ImV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl9tZXNzYWdlIiBwcm9kdWN0PSJub3NkY2FyZCIgbXNnaWQ9IjI3MzA4OTA0NDEzMzEzNDQ3NzYiPiLlhbHnlKjlhLLlrZjoo53nva7lt7Lnp7vpmaTjgILoq4vmj5LlhaXmlrDlqpLpq5TjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBvdXRkYXRlZCB0cmFuc2xhdGlvbiAyNzMwODkwNDQxMzMxMzQ0Nzc2IC0tPiAgICAgPHN0cmluZyBuYW1lPSJleHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSIgcHJvZHVjdD0ibm9zZGNhcmQiIG1zZ2lkPSI2OTIxMTI2MTYyNTgwNTc0MTQzIj4i5YWx55So5YSy5a2Y6KOd572u5bey56e76Zmk44CC6KuL5o+S5YWl5paw5aqS6auU44CCIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UiIHByb2R1Y3Q9ImRlZmF1bHQiIG1zZ2lkPSIzODcwMTIwNjUyOTgzNjU5NjQxIj4iU0Qg5Y2h5bey56e76Zmk77yM6KuL5o+S5YWl5paw55qEIFNEIOWNoeOAgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFjdGl2aXR5X2xpc3RfZW1wdHkiIG1zZ2lkPSI0MTY4ODIwNjA5NDAzMzg1Nzg5Ij4i5om+5LiN5Yiw56ym5ZCI55qE5rS75YuVIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9wa2dVc2FnZVN0YXRzIiBtc2dpZD0iODc4NzM1MjA3NDMyNjc0ODg5MiI+IuabtOaWsOWFg+S7tuS9v+eUqOe1seioiOizh+aWmSI8L3N0cmluZz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCmluZGV4IDAzN2EzNjIuLjA3NWNjNjYgMTAwNzU1Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbApAQCAtMTE1MywyOCArMTE1MywxMCBAQAogICAgICAgY29ubmVjdGlvbnMgd2l0aCBwYWlyZWQgZGV2aWNlcy48L3N0cmluZz4KIAogICAgIDwhLS0gVGl0bGUgb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgotICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9uZmNBZG1pbiI+TkZDIGFkbWluaXN0cmF0aW9uPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX25mYyI+Y29udHJvbCBOZWFyIEZpZWxkIENvbW11bmljYXRpb248L3N0cmluZz4KICAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX25mY0FkbWluIj5BbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gY29uZmlndXJlCi0gICAgICB0aGUgbG9jYWwgTkZDIHBob25lLjwvc3RyaW5nPgotCi0gICAgPCEtLSBUaXRsZSBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX25mY1JhdyI+TkZDIGZ1bGwgYWNjZXNzIHRvIHJlbW90ZSBkZXZpY2U8L3N0cmluZz4KLSAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX25mY1JhdyI+QWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGFjY2VzcwotICAgICAgcmVtb3RlIE5GQyBkZXZpY2VzLjwvc3RyaW5nPgotCi0gICAgPCEtLSBUaXRsZSBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX25mY05vdGlmeSI+TkZDIG5vdGlmaWNhdGlvbiBmcm9tIHJlbW90ZSBkZXZpY2U8L3N0cmluZz4KLSAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX25mY05vdGlmeSI+QWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGJlIG5vdGlmaWVkCi0gICAgICBvZiBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gcmVtb3RlIE5GQyBkZXZpY2VzLjwvc3RyaW5nPgotCi0gICAgPCEtLSBUaXRsZSBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX25mY0xsY3AiPk5GQyBub3RpZmljYXRpb24gZnJvbSByZW1vdGUgTExDUCBkZXZpY2U8L3N0cmluZz4KLSAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX25mY0xsY3AiPkFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBiZSBub3RpZmllZAotICAgICAgb2YgTExDUCBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gcmVtb3RlIE5GQyBkZXZpY2VzLjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfbmZjIj5BbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gY29tbXVuaWNhdGUKKyAgICAgIHdpdGggTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIHRhZ3MsIGNhcmRzLCBhbmQgcmVhZGVycy48L3N0cmluZz4KIAogICAgIDwhLS0gVGl0bGUgb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWxhYl9kaXNhYmxlS2V5Z3VhcmQiPmRpc2FibGUga2V5bG9jazwvc3RyaW5nPgpAQCAtMjMzNyw0ICsyMzE5LDMzIEBACiAgICAgPCEtLSBTaG93biB3aGVuIHRoZSB1c2VycyBiYW5kd2lkdGggaXMgcmVkdWNlZCBiZWNhdXNlIG9mIGV4Y2Vzc2l2ZSBkYXRhIHVzZSAtLT4KICAgICA8c3RyaW5nIG5hbWU9InRocm90dGxlZF9ub3RpZmljYXRpb25fdGl0bGUiPk1vYmlsZSBkYXRhIGxpbWl0IGV4Y2VlZGVkPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0aHJvdHRsZWRfbm90aWZpY2F0aW9uX21lc3NhZ2UiPlRvdWNoIHRvIGxlYXJuIG1vcmUgYWJvdXQgbW9iaWxlIGRhdGEgdXNlPC9zdHJpbmc+CisKKyAgICA8IS0tIFN0cmluZ3MgZm9yIEV4dGVybmFsU3RvcmFnZUZvcm1hdHRlciBzZXJ2aWNlLiAtLT4KKyAgICA8IS0tIFRleHQgZm9yIHByb2dyZXNzIGRpYWxvZyB3aGlsZSB1bm1vdW50aW5nIFVTQiBzdG9yYWdlIHZvbHVtZSBbQ0hBUiBMSU1JVD1OT05FXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByb2dyZXNzX3VubW91bnRpbmciIHByb2R1Y3Q9Im5vc2RjYXJkIj5Vbm1vdW50aW5nIFVTQiBzdG9yYWdlLi4uPC9zdHJpbmc+CisgICAgPCEtLSBUZXh0IGZvciBwcm9ncmVzcyBkaWFsb2cgd2hpbGUgdW5tb3VudGluZyBTRCBjYXJkIFtDSEFSIExJTUlUPU5PTkVdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icHJvZ3Jlc3NfdW5tb3VudGluZyIgcHJvZHVjdD0iZGVmYXVsdCI+VW5tb3VudGluZyBTRCBjYXJkLi4uPC9zdHJpbmc+CisgICAgPCEtLSBUZXh0IGZvciBwcm9ncmVzcyBkaWFsb2cgd2hpbGUgZXJhc2luZyBVU0Igc3RvcmFnZSB2b2x1bWUgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwcm9ncmVzc19lcmFzaW5nIiBwcm9kdWN0PSJub3NkY2FyZCI+RXJhc2luZyBVU0Igc3RvcmFnZS4uLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgcHJvZ3Jlc3MgZGlhbG9nIHdoaWxlIGVyYXNpbmcgU0QgY2FyZCBbQ0hBUiBMSU1JVD1OT05FXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByb2dyZXNzX2VyYXNpbmciIHByb2R1Y3Q9ImRlZmF1bHQiPkVyYXNpbmcgU0QgY2FyZC4uLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgbWVzc2FnZSB0byB1c2VyIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgd2hlbiBmb3JtYXR0aW5nIFVTQiBzdG9yYWdlIFtDSEFSIExJTUlUPU5PTkVdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iZm9ybWF0X2Vycm9yIiBwcm9kdWN0PSJub3NkY2FyZCI+RmFpbGVkIHRvIGVyYXNlIFVTQiBzdG9yYWdlLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgbWVzc2FnZSB0byB1c2VyIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgd2hlbiBmb3JtYXR0aW5nIFNEIGNhcmQgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJmb3JtYXRfZXJyb3IiIHByb2R1Y3Q9ImRlZmF1bHQiPkZhaWxlZCB0byBlcmFzZSBTRCBjYXJkLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgbWVzc2FnZSB0byB1c2VyIHRoYXQgU0QgY2FyZCBoYXMgYmVlbiByZW1vdmVkIHdoaWxlIGluIHVzZSBbQ0hBUiBMSU1JVD1OT05FXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX2JhZF9yZW1vdmFsIj5TRCBjYXJkIHdhcyByZW1vdmVkIGJlZm9yZSBiZWluZyB1bm1vdW50ZWQuPC9zdHJpbmc+CisgICAgPCEtLSBUZXh0IGZvciBtZXNzYWdlIHRvIHVzZXIgVVNCIHN0b3JhZ2UgaXMgY3VycmVudGx5IGJlaW5nIGNoZWNrZWQgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9jaGVja2luZyIgcHJvZHVjdD0ibm9zZGNhcmQiPlVTQiBzdG9yYWdlIGlzIGN1cnJlbnRseSBiZWluZyBjaGVja2VkLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgbWVzc2FnZSB0byB1c2VyIFNEIGNhcmQgaXMgY3VycmVudGx5IGJlaW5nIGNoZWNrZWQgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9jaGVja2luZyIgcHJvZHVjdD0iZGVmYXVsdCI+U0QgY2FyZCBpcyBjdXJyZW50bHkgYmVpbmcgY2hlY2tlZC48L3N0cmluZz4KKyAgICA8IS0tIFRleHQgZm9yIG1lc3NhZ2UgdG8gdXNlciBTRCBjYXJkIGhhcyBiZWVuIHJlbW92ZWQgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9yZW1vdmVkIj5TRCBjYXJkIGhhcyBiZWVuIHJlbW92ZWQuPC9zdHJpbmc+CisgICAgPCEtLSBUZXh0IGZvciBtZXNzYWdlIHRvIHVzZXIgVVNCIHN0b3JhZ2UgaXMgY3VycmVudGx5IG1vdW50ZWQgb24gYSBjb21wdXRlciBbQ0hBUiBMSU1JVD1OT05FXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3NoYXJlZCIgcHJvZHVjdD0ibm9zZGNhcmQiPlVTQiBzdG9yYWdlIGlzIGN1cnJlbnRseSBpbiB1c2UgYnkgYSBjb21wdXRlci48L3N0cmluZz4KKyAgICA8IS0tIFRleHQgZm9yIG1lc3NhZ2UgdG8gdXNlciBTRCBjYXJkIGlzIGN1cnJlbnRseSBtb3VudGVkIG9uIGEgY29tcHV0ZXIgW0NIQVIgTElNSVQ9Tk9ORV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJtZWRpYV9zaGFyZWQiIHByb2R1Y3Q9ImRlZmF1bHQiPlNEIGNhcmQgaXMgY3VycmVudGx5IGluIHVzZSBieSBhIGNvbXB1dGVyLjwvc3RyaW5nPgorICAgIDwhLS0gVGV4dCBmb3IgbWVzc2FnZSBmb3IgYW4gdW5rbm93biBleHRlcm5hbCBtZWRpYSBzdGF0ZSBbQ0hBUiBMSU1JVD1OT05FXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9Im1lZGlhX3Vua25vd25fc3RhdGUiPkV4dGVybmFsIG1lZGlhIGluIHVua25vd24gc3RhdGUuPC9zdHJpbmc+CisKIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvZG9jcy9odG1sL2d1aWRlL3RvcGljcy9wcm92aWRlcnMvY29udGVudC1wcm92aWRlcnMuamQgYi9kb2NzL2h0bWwvZ3VpZGUvdG9waWNzL3Byb3ZpZGVycy9jb250ZW50LXByb3ZpZGVycy5qZAppbmRleCAyYWVkNWUxLi4yYTg0YzI2IDEwMDY0NAotLS0gYS9kb2NzL2h0bWwvZ3VpZGUvdG9waWNzL3Byb3ZpZGVycy9jb250ZW50LXByb3ZpZGVycy5qZAorKysgYi9kb2NzL2h0bWwvZ3VpZGUvdG9waWNzL3Byb3ZpZGVycy9jb250ZW50LXByb3ZpZGVycy5qZApAQCAtODM4LDggKzgzOCw4IEBACiA8L3A+CiAKIDxwcmU+Ci0mbHQ7cHJvdmlkZXIgbmFtZT0iY29tLmV4YW1wbGUuYXV0b3MuQXV0b0luZm9Qcm92aWRlciIKLSAgICAgICAgICBhdXRob3JpdGllcz0iY29tLmV4YW1wbGUuYXV0b3MuYXV0b2luZm9wcm92aWRlciIgCismbHQ7cHJvdmlkZXIgYW5kcm9pZDpuYW1lPSJjb20uZXhhbXBsZS5hdXRvcy5BdXRvSW5mb1Byb3ZpZGVyIgorICAgICAgICAgIGFuZHJvaWQ6YXV0aG9yaXRpZXM9ImNvbS5leGFtcGxlLmF1dG9zLmF1dG9pbmZvcHJvdmlkZXIiIAogICAgICAgICAgIC4gLiAuIC8mZ3QKICZsdDsvcHJvdmlkZXImZ3Q7CiA8L3ByZT4KQEAgLTg5MSw4ICs4OTEsOCBAQAogKHJlZHVjZWQgdG8gbG93ZXJjYXNlKSB0byBlbnN1cmUgdW5pcXVlbmVzcy4gIFRoZSBhdXRob3JpdHkgaXMgZGVjbGFyZWQgaW4gCiB0aGUge0Bjb2RlICZsdDtwcm92aWRlciZndDt9IGVsZW1lbnQncyB7QGNvZGUgYXV0aG9yaXRpZXN9IGF0dHJpYnV0ZTo8L3A+CiAKLTxwcmU+Jmx0O3Byb3ZpZGVyIG5hbWU9Ii5UcmFuc3BvcnRhdGlvblByb3ZpZGVyIgotICAgICAgICAgIGF1dGhvcml0aWVzPSJjb20uZXhhbXBsZS50cmFuc3BvcnRhdGlvbnByb3ZpZGVyIgorPHByZT4mbHQ7cHJvdmlkZXIgYW5kcm9pZDpuYW1lPSIuVHJhbnNwb3J0YXRpb25Qcm92aWRlciIKKyAgICAgICAgICBhbmRyb2lkOmF1dGhvcml0aWVzPSJjb20uZXhhbXBsZS50cmFuc3BvcnRhdGlvbnByb3ZpZGVyIgogICAgICAgICAgIC4gLiAuICAmZ3Q7PC9wcmU+PC9saT4KIAogPGxpPjxwPlRoZSBwYXRoIHRoYXQgdGhlIGNvbnRlbnQgcHJvdmlkZXIgdXNlcyB0byBkZXRlcm1pbmUgd2hhdCBraW5kIG9mIGRhdGEgaXMKZGlmZiAtLWdpdCBhL2RvY3MvaHRtbC9ndWlkZS90b3BpY3Mvd2lyZWxlc3MvYmx1ZXRvb3RoLmpkIGIvZG9jcy9odG1sL2d1aWRlL3RvcGljcy93aXJlbGVzcy9ibHVldG9vdGguamQKaW5kZXggZmEyODc1Yi4uOThiNmU3ZCAxMDA2NDQKLS0tIGEvZG9jcy9odG1sL2d1aWRlL3RvcGljcy93aXJlbGVzcy9ibHVldG9vdGguamQKKysrIGIvZG9jcy9odG1sL2d1aWRlL3RvcGljcy93aXJlbGVzcy9ibHVldG9vdGguamQKQEAgLTksNyArOSw3IEBACiAgICAgPGxpPkFuZHJvaWQncyBibHVldG9vdGggQVBJcyBhbGxvdyB5b3VyIGFwcGxpY2F0aW9uIHRvIHBlcmZvcm0gd2lyZWxlc3MgZGF0YSB0cmFuc2FjdGlvbnMgd2l0aAogb3RoZXIgZGV2aWNlczwvbGk+CiAgIDwvdWw+Ci0gIAorCiAgIDxoMj5JbiB0aGlzIGRvY3VtZW50PC9oMj4KICAgPG9sPgogICAgIDxsaT48YSBocmVmPSIjVGhlQmFzaWNzIj5UaGUgQmFzaWNzPC9hPjwvbGk+CkBAIC0zMiw3ICszMiw3IEBACiAgICAgPC9saT4KICAgICA8bGk+PGEgaHJlZj0iI01hbmFnaW5nQUNvbm5lY3Rpb24iPk1hbmFnaW5nIGEgQ29ubmVjdGlvbjwvYT48L2xpPgogICA8L29sPgotICAKKwogICA8aDI+S2V5IGNsYXNzZXM8L2gyPgogICA8b2w+CiAgICAgPGxpPntAbGluayBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBZGFwdGVyfTwvbGk+CkBAIC0yODksNyArMjg5LDcgQEAKIG9mIHBhaXJlZCBkZXZpY2VzIHRvIHNlZSBpZiB0aGUgZGVzaXJlZCBkZXZpY2UgaXMgYWxyZWFkeSBrbm93bi4gVG8gZG8gc28sCiBjYWxsIHtAbGluayBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBZGFwdGVyI2dldEJvbmRlZERldmljZXMoKX0uIFRoaXMKIHdpbGwgcmV0dXJuIGEgU2V0IG9mIHtAbGluayBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2V9cyByZXByZXNlbnRpbmcKLXBhaXJlZCBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBxdWVyeSBhbGwgcGFpcmVkIGRldmljZXMgYW5kIHRoZW4gYWRkIHRoZW4KK3BhaXJlZCBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBxdWVyeSBhbGwgcGFpcmVkIGRldmljZXMgYW5kIHRoZW4KIHNob3cgdGhlIG5hbWUgb2YgZWFjaCBkZXZpY2UgdG8gdGhlIHVzZXIsIHVzaW5nIGFuIEFycmF5QWRhcHRlcjo8L3A+CiA8cHJlPgogU2V0Jmx0O0JsdWV0b290aERldmljZT4gcGFpcmVkRGV2aWNlcyA9IG1CbHVldG9vdGhBZGFwdGVyLmdldEJvbmRlZERldmljZXMoKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaAppbmRleCAyYmI3NzgzLi4xZDk0MTYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9PTVhDb2RlYy5oCkBAIC0zMyw3ICszMywxMSBAQAogICAgICAgICAgICAgICAgICAgcHVibGljIE1lZGlhQnVmZmVyT2JzZXJ2ZXIgewogICAgIGVudW0gQ3JlYXRpb25GbGFncyB7CiAgICAgICAgIGtQcmVmZXJTb2Z0d2FyZUNvZGVjcyAgICA9IDEsCi0gICAgICAgIGtJZ25vcmVDb2RlY1NwZWNpZmljRGF0YSA9IDIKKyAgICAgICAga0lnbm9yZUNvZGVjU3BlY2lmaWNEYXRhID0gMiwKKworICAgICAgICAvLyBUaGUgY2xpZW50IHdhbnRzIHRvIGFjY2VzcyB0aGUgb3V0cHV0IGJ1ZmZlcidzIHZpZGVvCisgICAgICAgIC8vIGRhdGEgZm9yIGV4YW1wbGUgZm9yIHRodW1ibmFpbCBleHRyYWN0aW9uLgorICAgICAgICBrQ2xpZW50TmVlZHNGcmFtZWJ1ZmZlciAgPSA0LAogICAgIH07CiAgICAgc3RhdGljIHNwPE1lZGlhU291cmNlPiBDcmVhdGUoCiAgICAgICAgICAgICBjb25zdCBzcDxJT01YPiAmb214LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9BdWRpby5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9BdWRpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ODI4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0F1ZGlvLmgKQEAgLTAsMCArMSwxMzI4IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvcHlyaWdodCAoQykgMTk5OC0yMDA5IFBhY2tldFZpZGVvCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyCisgKiBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKKyAqIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCBUaGUgS2hyb25vcyBHcm91cCBJbmMuIAorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QKKyAqIHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIAorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuIAorICoKKyAqLworCisvKiogQGZpbGUgT01YX0F1ZGlvLmggLSBPcGVuTWF4IElMIHZlcnNpb24gMS4xLjIKKyAqICBUaGUgc3RydWN0dXJlcyBuZWVkZWQgYnkgQXVkaW8gY29tcG9uZW50cyB0byBleGNoYW5nZQorICogIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSB3aXRoIHRoZSBjb21wb25lbm1pbHRzLgorICovCisKKyNpZm5kZWYgT01YX0F1ZGlvX2gKKyNkZWZpbmUgT01YX0F1ZGlvX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisKKy8qIEVhY2ggT01YIGhlYWRlciBtdXN0IGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqICBoZWFkZXIgdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQKKyAqICBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworCisjaW5jbHVkZSA8T01YX0NvcmUuaD4KKworLyoqIEBkZWZncm91cCBtaWRpIE1JREkKKyAqIEBpbmdyb3VwIGF1ZGlvCisgKi8KKyAKKy8qKiBAZGVmZ3JvdXAgZWZmZWN0cyBBdWRpbyBlZmZlY3RzCisgKiBAaW5ncm91cCBhdWRpbworICovCisKKy8qKiBAZGVmZ3JvdXAgYXVkaW8gT3Blbk1BWCBJTCBBdWRpbyBEb21haW4KKyAqIFN0cnVjdHVyZXMgZm9yIE9wZW5NQVggSUwgQXVkaW8gZG9tYWluCisgKiBAeworICovCisKKy8qKiBFbnVtZXJhdGlvbiB1c2VkIHRvIGRlZmluZSB0aGUgcG9zc2libGUgYXVkaW8gY29kaW5ncy4gIAorICogIElmICJPTVhfQVVESU9fQ29kaW5nVW51c2VkIiBpcyBzZWxlY3RlZCwgdGhlIGNvZGluZyBzZWxlY3Rpb24gbXVzdCAKKyAqICBiZSBkb25lIGluIGEgdmVuZG9yIHNwZWNpZmljIHdheS4gIFNpbmNlIHRoaXMgaXMgZm9yIGFuIGF1ZGlvIAorICogIHByb2Nlc3NpbmcgZWxlbWVudCB0aGlzIGVudW0gaXMgcmVsZXZhbnQuICBIb3dldmVyLCBmb3IgYW5vdGhlciAKKyAqICB0eXBlIG9mIGNvbXBvbmVudCBvdGhlciBlbnVtcyB3b3VsZCBiZSBpbiB0aGlzIGFyZWEuCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fQ09ESU5HVFlQRSB7CisgICAgT01YX0FVRElPX0NvZGluZ1VudXNlZCA9IDAsICAvKio8IFBsYWNlaG9sZGVyIHZhbHVlIHdoZW4gY29kaW5nIGlzIE4vQSAgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nQXV0b0RldGVjdCwgIC8qKjwgYXV0byBkZXRlY3Rpb24gb2YgYXVkaW8gZm9ybWF0ICovCisgICAgT01YX0FVRElPX0NvZGluZ1BDTSwgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFBDTSBjb2RpbmcgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nQURQQ00sICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQURQQ00gZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ0FNUiwgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFNUiBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nR1NNRlIsICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgR1NNIGZ1bGxyYXRlIChpLmUuIEdTTTYxMCkgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nR1NNRUZSLCAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgR1NNIEVuaGFuY2VkIEZ1bGxyYXRlIGVuY29kZWQgZGF0YSovCisgICAgT01YX0FVRElPX0NvZGluZ0dTTUhSLCAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEdTTSBIYWxmcmF0ZSBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nUERDRlIsICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgUERDIEZ1bGxyYXRlIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdQRENFRlIsICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBQREMgRW5oYW5jZWQgRnVsbHJhdGUgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ1BEQ0hSLCAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFBEQyBIYWxmcmF0ZSBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nVERNQUZSLCAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgVERNQSBGdWxscmF0ZSBlbmNvZGVkIGRhdGEgKFRJQS9FSUEtMTM2LTQyMCkgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nVERNQUVGUiwgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgVERNQSBFbmhhbmNlZCBGdWxscmF0ZSBlbmNvZGVkIGRhdGEgKFRJQS9FSUEtMTM2LTQxMCkgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nUUNFTFA4LCAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgUUNFTFAgOGticHMgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ1FDRUxQMTMsICAgICAvKio8IEFueSB2YXJpYW50IG9mIFFDRUxQIDEza2JwcyBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nRVZSQywgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgRVZSQyBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nU01WLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgU01WIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdHNzExLCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBHLjcxMSBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nRzcyMywgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgRy43MjMgZG90IDEgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ0c3MjYsICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEcuNzI2IGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdHNzI5LCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBHLjcyOSBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nQUFDLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQUFDIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdNUDMsICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBNUDMgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ1NCQywgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFNCQyBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fQ29kaW5nVk9SQklTLCAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgVk9SQklTIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdXTUEsICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBXTUEgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0NvZGluZ1JBLCAgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFJBIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdNSURJLCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBNSURJIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19Db2RpbmdLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX0NvZGluZ1ZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0FVRElPX0NvZGluZ01heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX0NPRElOR1RZUEU7CisKKworLyoqIFRoZSBQb3J0RGVmaW5pdGlvbiBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBkZWZpbmUgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzIAorICogIG5lY2Vzc2FyeSBmb3IgdGhlIGNvbXBsaWFudCBjb21wb25lbnQgdG8gc2V0dXAgYW4gaW5wdXQgb3IgYW4gb3V0cHV0IGF1ZGlvIAorICogIHBhdGguICBJZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBkZWZpbmUgdGhlIHBhcmFtZXRlcnMgb2YgdGhlCisgKiAgcG9ydCAoc3VjaCBhcyBmcmVxdWVuY3kpLCBhZGRpdGlvbmFsIHN0cnVjdHVyZXMgbXVzdCBiZSBzZW50IHN1Y2ggYXMgdGhlCisgKiAgT01YX0FVRElPX1BBUkFNX1BDTU1PREVUWVBFIHN0cnVjdHVyZSB0byBzdXBwbHkgdGhlIGV4dHJhIHBhcmFtZXRlcnMgZm9yIHRoZSBwb3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUE9SVERFRklOSVRJT05UWVBFIHsKKyAgICBPTVhfU1RSSU5HIGNNSU1FVHlwZTsgICAgICAgICAgICAvKio8IE1JTUUgdHlwZSBvZiBkYXRhIGZvciB0aGUgcG9ydCAqLworICAgIE9NWF9OQVRJVkVfREVWSUNFVFlQRSBwTmF0aXZlUmVuZGVyOyAvKiogPCBwbGF0Zm9ybSBzcGVjaWZpYyByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIG91dHB1dCBkZXZpY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcndpc2UgdGhpcyBmaWVsZCBpcyAwICovCisgICAgT01YX0JPT0wgYkZsYWdFcnJvckNvbmNlYWxtZW50OyAgLyoqPCBUdXJucyBvbiBlcnJvciBjb25jZWFsbWVudCBpZiBpdCBpcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgT01YIGNvbXBvbmVudCAqLworICAgIE9NWF9BVURJT19DT0RJTkdUWVBFIGVFbmNvZGluZzsgIC8qKjwgVHlwZSBvZiBkYXRhIGV4cGVjdGVkIGZvciB0aGlzIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCAoZS5nLiBQQ00sIEFNUiwgTVAzLCBldGMpICovCit9IE9NWF9BVURJT19QT1JUREVGSU5JVElPTlRZUEU7CisKKworLyoqICBQb3J0IGZvcm1hdCBwYXJhbWV0ZXIuICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGVudW1lcmF0ZQorICAqICB0aGUgdmFyaW91cyBkYXRhIGlucHV0L291dHB1dCBmb3JtYXQgc3VwcG9ydGVkIGJ5IHRoZSBwb3J0LgorICAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1BPUlRGT1JNQVRUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAgIC8qKjwgSW5kaWNhdGVzIHdoaWNoIHBvcnQgdG8gc2V0ICovCisgICAgT01YX1UzMiBuSW5kZXg7ICAgICAgICAgICAgICAgICAvKio8IEluZGljYXRlcyB0aGUgZW51bWVyYXRpb24gaW5kZXggZm9yIHRoZSBmb3JtYXQgZnJvbSAweDAgdG8gTi0xICovCisgICAgT01YX0FVRElPX0NPRElOR1RZUEUgZUVuY29kaW5nOyAvKio8IFR5cGUgb2YgZGF0YSBleHBlY3RlZCBmb3IgdGhpcyBwb3J0IChlLmcuIFBDTSwgQU1SLCBNUDMsIGV0YykgKi8KK30gT01YX0FVRElPX1BBUkFNX1BPUlRGT1JNQVRUWVBFOworCisKKy8qKiBQQ00gbW9kZSB0eXBlICAqLyAKK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fUENNTU9ERVRZUEUgeyAKKyAgICBPTVhfQVVESU9fUENNTW9kZUxpbmVhciA9IDAsICAvKio8IExpbmVhciBQQ00gZW5jb2RlZCBkYXRhICovIAorICAgIE9NWF9BVURJT19QQ01Nb2RlQUxhdywgICAgICAgIC8qKjwgQSBsYXcgUENNIGVuY29kZWQgZGF0YSAoRy43MTEpICovIAorICAgIE9NWF9BVURJT19QQ01Nb2RlTVVMYXcsICAgICAgIC8qKjwgTXUgbGF3IFBDTSBlbmNvZGVkIGRhdGEgKEcuNzExKSAgKi8gCisgICAgT01YX0FVRElPX1BDTU1vZGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX1BDTU1vZGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9BVURJT19QQ01Nb2RlTWF4ID0gMHg3RkZGRkZGRiAKK30gT01YX0FVRElPX1BDTU1PREVUWVBFOyAKKworCit0eXBlZGVmIGVudW0gT01YX0FVRElPX0NIQU5ORUxUWVBFIHsKKyAgICBPTVhfQVVESU9fQ2hhbm5lbE5vbmUgPSAweDAsICAgIC8qKjwgVW51c2VkIG9yIGVtcHR5ICovCisgICAgT01YX0FVRElPX0NoYW5uZWxMRiAgID0gMHgxLCAgICAvKio8IExlZnQgZnJvbnQgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbFJGICAgPSAweDIsICAgIC8qKjwgUmlnaHQgZnJvbnQgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbENGICAgPSAweDMsICAgIC8qKjwgQ2VudGVyIGZyb250ICovCisgICAgT01YX0FVRElPX0NoYW5uZWxMUyAgID0gMHg0LCAgICAvKio8IExlZnQgc3Vycm91bmQgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbFJTICAgPSAweDUsICAgIC8qKjwgUmlnaHQgc3Vycm91bmQgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbExGRSAgPSAweDYsICAgIC8qKjwgTG93IGZyZXF1ZW5jeSBlZmZlY3RzICovCisgICAgT01YX0FVRElPX0NoYW5uZWxDUyAgID0gMHg3LCAgICAvKio8IEJhY2sgc3Vycm91bmQgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbExSICAgPSAweDgsICAgIC8qKjwgTGVmdCByZWFyLiAqLworICAgIE9NWF9BVURJT19DaGFubmVsUlIgICA9IDB4OSwgICAgLyoqPCBSaWdodCByZWFyLiAqLworICAgIE9NWF9BVURJT19DaGFubmVsS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9BVURJT19DaGFubmVsVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1heCAgPSAweDdGRkZGRkZGIAorfSBPTVhfQVVESU9fQ0hBTk5FTFRZUEU7CisKKyNkZWZpbmUgT01YX0FVRElPX01BWENIQU5ORUxTIDE2ICAvKio8IG1heGltdW0gbnVtYmVyIGRpc3RpbmN0IGF1ZGlvIGNoYW5uZWxzIHRoYXQgYSBidWZmZXIgbWF5IGNvbnRhaW4gKi8KKyNkZWZpbmUgT01YX01JTl9QQ01QQVlMT0FEX01TRUMgNSAvKio8IE1pbmltdW0gYXVkaW8gYnVmZmVyIHBheWxvYWQgc2l6ZSBmb3IgdW5jb21wcmVzc2VkIChQQ00pIGF1ZGlvICovCisKKy8qKiBQQ00gZm9ybWF0IGRlc2NyaXB0aW9uICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1BDTU1PREVUWVBFIHsgCisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgICAgIC8qKjwgU2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSwgaW4gQnl0ZXMgKi8gCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLyAKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLyAKKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgKGUuZy4gMiBmb3Igc3RlcmVvKSAqLyAKKyAgICBPTVhfTlVNRVJJQ0FMREFUQVRZUEUgZU51bURhdGE7ICAgLyoqPCBpbmRpY2F0ZXMgUENNIGRhdGEgYXMgc2lnbmVkIG9yIHVuc2lnbmVkICovIAorICAgIE9NWF9FTkRJQU5UWVBFIGVFbmRpYW47ICAgICAgICAgICAvKio8IGluZGljYXRlcyBQQ00gZGF0YSBhcyBsaXR0bGUgb3IgYmlnIGVuZGlhbiAqLyAKKyAgICBPTVhfQk9PTCBiSW50ZXJsZWF2ZWQ7ICAgICAgICAgICAgLyoqPCBUcnVlIGZvciBub3JtYWwgaW50ZXJsZWF2ZWQgZGF0YTsgZmFsc2UgZm9yIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1pbnRlcmxlYXZlZCBkYXRhIChlLmcuIGJsb2NrIGRhdGEpICovIAorICAgIE9NWF9VMzIgbkJpdFBlclNhbXBsZTsgICAgICAgICAgICAvKio8IEJpdCBwZXIgc2FtcGxlICovIAorICAgIE9NWF9VMzIgblNhbXBsaW5nUmF0ZTsgICAgICAgICAgICAvKio8IFNhbXBsaW5nIHJhdGUgb2YgdGhlIHNvdXJjZSBkYXRhLiAgVXNlIDAgZm9yIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG9yIHVua25vd24gc2FtcGxpbmcgcmF0ZS4gKi8gCisgICAgT01YX0FVRElPX1BDTU1PREVUWVBFIGVQQ01Nb2RlOyAgIC8qKjwgUENNIG1vZGUgZW51bWVyYXRpb24gKi8gCisgICAgT01YX0FVRElPX0NIQU5ORUxUWVBFIGVDaGFubmVsTWFwcGluZ1tPTVhfQVVESU9fTUFYQ0hBTk5FTFNdOyAvKio8IFNsb3QgaSBjb250YWlucyBjaGFubmVsIGRlZmluZWQgYnkgZUNoYW5uZWxNYXBbaV0gKi8KKworfSBPTVhfQVVESU9fUEFSQU1fUENNTU9ERVRZUEU7IAorCisKKy8qKiBBdWRpbyBjaGFubmVsIG1vZGUuICBUaGlzIGlzIHVzZWQgYnkgYm90aCBBQUMgYW5kIE1QMywgYWx0aG91Z2ggdGhlIG5hbWVzIGFyZSBtb3JlIGFwcHJvcHJpYXRlCisgKiBmb3IgdGhlIE1QMy4gIEZvciBleGFtcGxlLCBKb2ludFN0ZXJlbyBmb3IgTVAzIGlzIENvdXBsaW5nQ2hhbm5lbHMgZm9yIEFBQy4gCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fQ0hBTk5FTE1PREVUWVBFIHsKKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVTdGVyZW8gPSAwLCAgLyoqPCAyIGNoYW5uZWxzLCB0aGUgYml0cmF0ZSBhbGxvY2F0aW9uIGJldHdlZW4gdGhvc2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gY2hhbm5lbHMgY2hhbmdlcyBhY2NvcmRpbmdseSB0byBlYWNoIGNoYW5uZWwgaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVKb2ludFN0ZXJlbywgLyoqPCBtb2RlIHRoYXQgdGFrZXMgYWR2YW50YWdlIG9mIHdoYXQgaXMgY29tbW9uIGJldHdlZW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiBjaGFubmVscyBmb3IgaGlnaGVyIGNvbXByZXNzaW9uIGdhaW4gKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVEdWFsLCAgICAgICAgLyoqPCAyIG1vbm8tY2hhbm5lbHMsIGVhY2ggY2hhbm5lbCBpcyBlbmNvZGVkIHdpdGggaGFsZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYml0cmF0ZSBvZiB0aGUgb3ZlcmFsbCBiaXRyYXRlICovCisgICAgT01YX0FVRElPX0NoYW5uZWxNb2RlTW9ubywgICAgICAgIC8qKjwgTW9ubyBjaGFubmVsIG1vZGUgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX0NoYW5uZWxNb2RlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fQ2hhbm5lbE1vZGVNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19DSEFOTkVMTU9ERVRZUEU7CisKKwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19NUDNTVFJFQU1GT1JNQVRUWVBFIHsKKyAgICBPTVhfQVVESU9fTVAzU3RyZWFtRm9ybWF0TVAxTGF5ZXIzID0gMCwgLyoqPCBNUDMgQXVkaW8gTVBFRyAxIExheWVyIDMgU3RyZWFtIGZvcm1hdCAqLworICAgIE9NWF9BVURJT19NUDNTdHJlYW1Gb3JtYXRNUDJMYXllcjMsICAgICAvKio8IE1QMyBBdWRpbyBNUEVHIDIgTGF5ZXIgMyBTdHJlYW0gZm9ybWF0ICovCisgICAgT01YX0FVRElPX01QM1N0cmVhbUZvcm1hdE1QMl81TGF5ZXIzLCAgIC8qKjwgTVAzIEF1ZGlvIE1QRUcyLjUgTGF5ZXIgMyBTdHJlYW0gZm9ybWF0ICovCisgICAgT01YX0FVRElPX01QM1N0cmVhbUZvcm1hdEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfQVVESU9fTVAzU3RyZWFtRm9ybWF0VmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fTVAzU3RyZWFtRm9ybWF0TWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfQVVESU9fTVAzU1RSRUFNRk9STUFUVFlQRTsKKworLyoqIE1QMyBwYXJhbXMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9NUDNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgKi8KKyAgICBPTVhfVTMyIG5CaXRSYXRlOyAgICAgICAgICAgICAgLyoqPCBCaXQgcmF0ZSBvZiB0aGUgaW5wdXQgZGF0YS4gIFVzZSAwIGZvciB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGUgb3IgdW5rbm93biBiaXQgcmF0ZXMgKi8KKyAgICBPTVhfVTMyIG5TYW1wbGVSYXRlOyAgICAgICAgICAgLyoqPCBTYW1wbGluZyByYXRlIG9mIHRoZSBzb3VyY2UgZGF0YS4gIFVzZSAwIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG9yIHVua25vd24gc2FtcGxpbmcgcmF0ZS4gKi8KKyAgICBPTVhfVTMyIG5BdWRpb0JhbmRXaWR0aDsgICAgICAgLyoqPCBBdWRpbyBiYW5kIHdpZHRoIChpbiBIeikgdG8gd2hpY2ggYW4gZW5jb2RlciBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCB0aGUgYXVkaW8gc2lnbmFsLiBVc2UgMCB0byBsZXQgZW5jb2RlciBkZWNpZGUgKi8KKyAgICBPTVhfQVVESU9fQ0hBTk5FTE1PREVUWVBFIGVDaGFubmVsTW9kZTsgICAvKio8IENoYW5uZWwgbW9kZSBlbnVtZXJhdGlvbiAqLworICAgIE9NWF9BVURJT19NUDNTVFJFQU1GT1JNQVRUWVBFIGVGb3JtYXQ7ICAvKio8IE1QMyBzdHJlYW0gZm9ybWF0ICovCit9IE9NWF9BVURJT19QQVJBTV9NUDNUWVBFOworCisKK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fQUFDU1RSRUFNRk9STUFUVFlQRSB7CisgICAgT01YX0FVRElPX0FBQ1N0cmVhbUZvcm1hdE1QMkFEVFMgPSAwLCAvKio8IEFBQyBBdWRpbyBEYXRhIFRyYW5zcG9ydCBTdHJlYW0gMiBmb3JtYXQgKi8KKyAgICBPTVhfQVVESU9fQUFDU3RyZWFtRm9ybWF0TVA0QURUUywgICAgIC8qKjwgQUFDIEF1ZGlvIERhdGEgVHJhbnNwb3J0IFN0cmVhbSA0IGZvcm1hdCAqLworICAgIE9NWF9BVURJT19BQUNTdHJlYW1Gb3JtYXRNUDRMT0FTLCAgICAgLyoqPCBBQUMgTG93IE92ZXJoZWFkIEF1ZGlvIFN0cmVhbSBmb3JtYXQgKi8KKyAgICBPTVhfQVVESU9fQUFDU3RyZWFtRm9ybWF0TVA0TEFUTSwgICAgIC8qKjwgQUFDIExvdyBvdmVyaGVhZCBBdWRpbyBUcmFuc3BvcnQgTXVsdGlwbGV4ICovCisgICAgT01YX0FVRElPX0FBQ1N0cmVhbUZvcm1hdEFESUYsICAgICAgICAvKio8IEFBQyBBdWRpbyBEYXRhIEludGVyY2hhbmdlIEZvcm1hdCAqLworICAgIE9NWF9BVURJT19BQUNTdHJlYW1Gb3JtYXRNUDRGRiwgICAgICAgLyoqPCBBQUMgaW5zaWRlIE1QRUctNC9JU08gRmlsZSBGb3JtYXQgKi8KKyAgICBPTVhfQVVESU9fQUFDU3RyZWFtRm9ybWF0UkFXLCAgICAgICAgIC8qKjwgQUFDIFJhdyBGb3JtYXQgKi8KKyAgICBPTVhfQVVESU9fQUFDU3RyZWFtRm9ybWF0S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9BVURJT19BQUNTdHJlYW1Gb3JtYXRWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9BVURJT19BQUNTdHJlYW1Gb3JtYXRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19BQUNTVFJFQU1GT1JNQVRUWVBFOworCisKKy8qKiBBQUMgbW9kZSB0eXBlLiAgTm90ZSB0aGF0IHRoZSB0ZXJtIHByb2ZpbGUgaXMgdXNlZCB3aXRoIHRoZSBNUEVHLTIKKyAqIHN0YW5kYXJkIGFuZCB0aGUgdGVybSBvYmplY3QgdHlwZSBhbmQgcHJvZmlsZSBpcyB1c2VkIHdpdGggTVBFRy00ICovCit0eXBlZGVmIGVudW0gT01YX0FVRElPX0FBQ1BST0ZJTEVUWVBFeworICBPTVhfQVVESU9fQUFDT2JqZWN0TnVsbCA9IDAsICAgICAgLyoqPCBOdWxsLCBub3QgdXNlZCAqLworICBPTVhfQVVESU9fQUFDT2JqZWN0TWFpbiA9IDEsICAgICAgLyoqPCBBQUMgTWFpbiBvYmplY3QgKi8KKyAgT01YX0FVRElPX0FBQ09iamVjdExDLCAgICAgICAgICAgIC8qKjwgQUFDIExvdyBDb21wbGV4aXR5IG9iamVjdCAoQUFDIHByb2ZpbGUpICovCisgIE9NWF9BVURJT19BQUNPYmplY3RTU1IsICAgICAgICAgICAvKio8IEFBQyBTY2FsYWJsZSBTYW1wbGUgUmF0ZSBvYmplY3QgKi8KKyAgT01YX0FVRElPX0FBQ09iamVjdExUUCwgICAgICAgICAgIC8qKjwgQUFDIExvbmcgVGVybSBQcmVkaWN0aW9uIG9iamVjdCAqLworICBPTVhfQVVESU9fQUFDT2JqZWN0SEUsICAgICAgICAgICAgLyoqPCBBQUMgSGlnaCBFZmZpY2llbmN5IChvYmplY3QgdHlwZSBTQlIsIEhFLUFBQyBwcm9maWxlKSAqLworICBPTVhfQVVESU9fQUFDT2JqZWN0U2NhbGFibGUsICAgICAgLyoqPCBBQUMgU2NhbGFibGUgb2JqZWN0ICovCisgIE9NWF9BVURJT19BQUNPYmplY3RFUkxDID0gMTcsICAgICAvKio8IEVSIEFBQyBMb3cgQ29tcGxleGl0eSBvYmplY3QgKEVycm9yIFJlc2lsaWVudCBBQUMtTEMpICovCisgIE9NWF9BVURJT19BQUNPYmplY3RMRCA9IDIzLCAgICAgICAvKio8IEFBQyBMb3cgRGVsYXkgb2JqZWN0IChFcnJvciBSZXNpbGllbnQpICovCisgIE9NWF9BVURJT19BQUNPYmplY3RIRV9QUyA9IDI5LCAgICAvKio8IEFBQyBIaWdoIEVmZmljaWVuY3kgd2l0aCBQYXJhbWV0cmljIFN0ZXJlbyBjb2RpbmcgKEhFLUFBQyB2Miwgb2JqZWN0IHR5cGUgUFMpICovCisgIE9NWF9BVURJT19BQUNPYmplY3RLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgIE9NWF9BVURJT19BQUNPYmplY3RWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICBPTVhfQVVESU9fQUFDT2JqZWN0TWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfQVVESU9fQUFDUFJPRklMRVRZUEU7CisKKworLyoqIEFBQyB0b29sIHVzYWdlIChmb3IgbkFBQ3Rvb2xzIGluIE9NWF9BVURJT19QQVJBTV9BQUNQUk9GSUxFVFlQRSkuCisgKiBSZXF1aXJlZCBmb3IgZW5jb2RlciBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25hbCBhcyBkZWNvZGVyIGluZm8gb3V0cHV0LgorICogRm9yIE1QMywgT01YX0FVRElPX0NIQU5ORUxNT0RFVFlQRSBpcyBzdWZmaWNpZW50LiAqLworI2RlZmluZSBPTVhfQVVESU9fQUFDVG9vbE5vbmUgMHgwMDAwMDAwMCAvKio8IG5vIEFBQyB0b29scyBhbGxvd2VkIChlbmNvZGVyIGNvbmZpZykgb3IgYWN0aXZlIChkZWNvZGVyIGluZm8gb3V0cHV0KSAqLworI2RlZmluZSBPTVhfQVVESU9fQUFDVG9vbE1TICAgMHgwMDAwMDAwMSAvKio8IE1TOiBNaWQvc2lkZSBqb2ludCBjb2RpbmcgdG9vbCBhbGxvd2VkIG9yIGFjdGl2ZSAqLworI2RlZmluZSBPTVhfQVVESU9fQUFDVG9vbElTICAgMHgwMDAwMDAwMiAvKio8IElTOiBJbnRlbnNpdHkgc3RlcmVvIHRvb2wgYWxsb3dlZCBvciBhY3RpdmUgKi8KKyNkZWZpbmUgT01YX0FVRElPX0FBQ1Rvb2xUTlMgIDB4MDAwMDAwMDQgLyoqPCBUTlM6IFRlbXBvcmFsIE5vaXNlIFNoYXBpbmcgdG9vbCBhbGxvd2VkIG9yIGFjdGl2ZSAqLworI2RlZmluZSBPTVhfQVVESU9fQUFDVG9vbFBOUyAgMHgwMDAwMDAwOCAvKio8IFBOUzogTVBFRy00IFBlcmNlcHR1YWwgTm9pc2Ugc3Vic3RpdHV0aW9uIHRvb2wgYWxsb3dlZCBvciBhY3RpdmUgKi8KKyNkZWZpbmUgT01YX0FVRElPX0FBQ1Rvb2xMVFAgIDB4MDAwMDAwMTAgLyoqPCBMVFA6IE1QRUctNCBMb25nIFRlcm0gUHJlZGljdGlvbiB0b29sIGFsbG93ZWQgb3IgYWN0aXZlICovCisjZGVmaW5lIE9NWF9BVURJT19BQUNUb29sQWxsICAweDdGRkZGRkZGIC8qKjwgYWxsIEFBQyB0b29scyBhbGxvd2VkIG9yIGFjdGl2ZSAoKi8KKworLyoqIE1QRUctNCBBQUMgZXJyb3IgcmVzaWxpZW5jZSAoRVIpIHRvb2wgdXNhZ2UgKGZvciBuQUFDRVJ0b29scyBpbiBPTVhfQVVESU9fUEFSQU1fQUFDUFJPRklMRVRZUEUpLgorICogUmVxdWlyZWQgZm9yIEVSIGVuY29kZXIgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uYWwgYXMgZGVjb2RlciBpbmZvIG91dHB1dCAqLworI2RlZmluZSBPTVhfQVVESU9fQUFDRVJOb25lICAweDAwMDAwMDAwICAvKio8IG5vIEFBQyBFUiB0b29scyBhbGxvd2VkL3VzZWQgKi8KKyNkZWZpbmUgT01YX0FVRElPX0FBQ0VSVkNCMTEgMHgwMDAwMDAwMSAgLyoqPCBWQ0IxMTogVmlydHVhbCBDb2RlIEJvb2tzIGZvciBBQUMgc2VjdGlvbiBkYXRhICovCisjZGVmaW5lIE9NWF9BVURJT19BQUNFUlJWTEMgIDB4MDAwMDAwMDIgIC8qKjwgUlZMQzogUmV2ZXJzaWJsZSBWYXJpYWJsZSBMZW5ndGggQ29kaW5nICovCisjZGVmaW5lIE9NWF9BVURJT19BQUNFUkhDUiAgIDB4MDAwMDAwMDQgIC8qKjwgSENSOiBIdWZmbWFuIENvZGV3b3JkIFJlb3JkZXJpbmcgKi8KKyNkZWZpbmUgT01YX0FVRElPX0FBQ0VSQWxsICAgMHg3RkZGRkZGRiAgLyoqPCBhbGwgQUFDIEVSIHRvb2xzIGFsbG93ZWQvdXNlZCAqLworCisKKy8qKiBBQUMgcGFyYW1zICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fQUFDUFJPRklMRVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAgICAvKio8IFNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUsIGluIEJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgICAvKio8IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzICovCisgICAgT01YX1UzMiBuU2FtcGxlUmF0ZTsgICAgICAgICAgIC8qKjwgU2FtcGxpbmcgcmF0ZSBvZiB0aGUgc291cmNlIGRhdGEuICBVc2UgMCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBvciB1bmtub3duIHNhbXBsaW5nIHJhdGUuICovCisgICAgT01YX1UzMiBuQml0UmF0ZTsgICAgICAgICAgICAgIC8qKjwgQml0IHJhdGUgb2YgdGhlIGlucHV0IGRhdGEuICBVc2UgMCBmb3IgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlIG9yIHVua25vd24gYml0IHJhdGVzICovCisgICAgT01YX1UzMiBuQXVkaW9CYW5kV2lkdGg7ICAgICAgIC8qKjwgQXVkaW8gYmFuZCB3aWR0aCAoaW4gSHopIHRvIHdoaWNoIGFuIGVuY29kZXIgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgdGhlIGF1ZGlvIHNpZ25hbC4gVXNlIDAgdG8gbGV0IGVuY29kZXIgZGVjaWRlICovCisgICAgT01YX1UzMiBuRnJhbWVMZW5ndGg7ICAgICAgICAgIC8qKjwgRnJhbWUgbGVuZ3RoIChpbiBhdWRpbyBzYW1wbGVzIHBlciBjaGFubmVsKSBvZiB0aGUgY29kZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIDEwMjQgb3IgOTYwIChBQUMtTEMpLCAyMDQ4IChIRS1BQUMpLCA0ODAgb3IgNTEyIChBQUMtTEQpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSAwIHRvIGxldCBlbmNvZGVyIGRlY2lkZSAqLworICAgIE9NWF9VMzIgbkFBQ3Rvb2xzOyAgICAgICAgICAgICAvKio8IEFBQyB0b29sIHVzYWdlICovCisgICAgT01YX1UzMiBuQUFDRVJ0b29sczsgICAgICAgICAgIC8qKjwgTVBFRy00IEFBQyBlcnJvciByZXNpbGllbmNlIHRvb2wgdXNhZ2UgKi8KKyAgICBPTVhfQVVESU9fQUFDUFJPRklMRVRZUEUgZUFBQ1Byb2ZpbGU7ICAgLyoqPCBBQUMgcHJvZmlsZSBlbnVtZXJhdGlvbiAqLworICAgIE9NWF9BVURJT19BQUNTVFJFQU1GT1JNQVRUWVBFIGVBQUNTdHJlYW1Gb3JtYXQ7IC8qKjwgQUFDIHN0cmVhbSBmb3JtYXQgZW51bWVyYXRpb24gKi8KKyAgICBPTVhfQVVESU9fQ0hBTk5FTE1PREVUWVBFIGVDaGFubmVsTW9kZTsgICAvKio8IENoYW5uZWwgbW9kZSBlbnVtZXJhdGlvbiAqLworfSBPTVhfQVVESU9fUEFSQU1fQUFDUFJPRklMRVRZUEU7CisKKworLyoqIFZPUkJJUyBwYXJhbXMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9WT1JCSVNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzICovCisgICAgT01YX1UzMiBuQml0UmF0ZTsgICAgICAgICAvKio8IEJpdCByYXRlIG9mIHRoZSBlbmNvZGVkIGRhdGEgZGF0YS4gIFVzZSAwIGZvciB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlIG9yIHVua25vd24gYml0IHJhdGVzLiBFbmNvZGluZyBpcyBzZXQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHJhdGUgY2xvc2VzdCB0byBzcGVjaWZpZWQgIHZhbHVlIChpbiBicHMpICovCisgICAgT01YX1UzMiBuTWluQml0UmF0ZTsgICAgICAvKio8IFNldHMgbWluaW11bSBiaXRyYXRlIChpbiBicHMpLiAqLworICAgIE9NWF9VMzIgbk1heEJpdFJhdGU7ICAgICAgLyoqPCBTZXRzIG1heGltdW0gYml0cmF0ZSAoaW4gYnBzKS4gKi8KKworICAgIE9NWF9VMzIgblNhbXBsZVJhdGU7ICAgICAgLyoqPCBTYW1wbGluZyByYXRlIG9mIHRoZSBzb3VyY2UgZGF0YS4gIFVzZSAwIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBvciB1bmtub3duIHNhbXBsaW5nIHJhdGUuICovCisgICAgT01YX1UzMiBuQXVkaW9CYW5kV2lkdGg7ICAvKio8IEF1ZGlvIGJhbmQgd2lkdGggKGluIEh6KSB0byB3aGljaCBhbiBlbmNvZGVyIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCB0aGUgYXVkaW8gc2lnbmFsLiBVc2UgMCB0byBsZXQgZW5jb2RlciBkZWNpZGUgKi8KKyAgICBPTVhfUzMyIG5RdWFsaXR5OwkJICAvKio8IFNldHMgZW5jb2RpbmcgcXVhbGl0eSB0byBuLCBiZXR3ZWVuIC0xIChsb3cpIGFuZCAxMCAoaGlnaCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBkZWZhdWx0IG1vZGUgb2Ygb3BlcmF0aW9uLCB0ZWggcXVhbGl0eSBsZXZlbCBpcyAzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWwgcXVhbGl0eSByYW5nZSBpcyAwIC0gMTAuICovCisgICAgT01YX0JPT0wgYk1hbmFnZWQ7CQkgIC8qKjwgU2V0ICBiaXRyYXRlICBtYW5hZ2VtZW50ICBtb2RlLiBUaGlzIHR1cm5zIG9mZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIFZCUiBlbmNvZGluZywgYnV0IGFsbG93cyBoYXJkIG9yIHNvZnQgYml0cmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50cyB0byBiZSBlbmZvcmNlZCBieSB0aGUgZW5jb2Rlci4gVGhpcyBtb2RlIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzbG93ZXIsIGFuZCBtYXkgYWxzbyBiZSBsb3dlciBxdWFsaXR5LiBJdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJpbHkgdXNlZnVsIGZvciBzdHJlYW1pbmcuICovCisgICAgT01YX0JPT0wgYkRvd25taXg7CQkgIC8qKjwgRG93bm1peCBpbnB1dCBmcm9tIHN0ZXJlbyB0byBtb25vIChoYXMgbm8gZWZmZWN0IG9uIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tc3RlcmVvIHN0cmVhbXMpLiBVc2VmdWwgZm9yIGxvd2VyLWJpdHJhdGUgZW5jb2RpbmcuICovICAgICAKK30gT01YX0FVRElPX1BBUkFNX1ZPUkJJU1RZUEU7CisKKworLyoqIFdNQSBWZXJzaW9uICovCit0eXBlZGVmIGVudW0gT01YX0FVRElPX1dNQUZPUk1BVFRZUEUgeworICBPTVhfQVVESU9fV01BRm9ybWF0VW51c2VkID0gMCwgLyoqPCBmb3JtYXQgdW51c2VkIG9yIHVua25vd24gKi8KKyAgT01YX0FVRElPX1dNQUZvcm1hdDcsICAgICAgICAgIC8qKjwgV2luZG93cyBNZWRpYSBBdWRpbyBmb3JtYXQgNyAqLworICBPTVhfQVVESU9fV01BRm9ybWF0OCwgICAgICAgICAgLyoqPCBXaW5kb3dzIE1lZGlhIEF1ZGlvIGZvcm1hdCA4ICovCisgIE9NWF9BVURJT19XTUFGb3JtYXQ5LCAgICAgICAgICAvKio8IFdpbmRvd3MgTWVkaWEgQXVkaW8gZm9ybWF0IDkgKi8KKyAgT01YX0FVRElPX1dNQUZvcm1hdEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgT01YX0FVRElPX1dNQUZvcm1hdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgIE9NWF9BVURJT19XTUFGb3JtYXRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19XTUFGT1JNQVRUWVBFOworCisKKy8qKiBXTUEgUHJvZmlsZSAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19XTUFQUk9GSUxFVFlQRSB7CisgIE9NWF9BVURJT19XTUFQcm9maWxlVW51c2VkID0gMCwgIC8qKjwgcHJvZmlsZSB1bnVzZWQgb3IgdW5rbm93biAqLworICBPTVhfQVVESU9fV01BUHJvZmlsZUwxLCAgICAgICAgICAvKio8IFdpbmRvd3MgTWVkaWEgYXVkaW8gdmVyc2lvbiA5IHByb2ZpbGUgTDEgKi8KKyAgT01YX0FVRElPX1dNQVByb2ZpbGVMMiwgICAgICAgICAgLyoqPCBXaW5kb3dzIE1lZGlhIGF1ZGlvIHZlcnNpb24gOSBwcm9maWxlIEwyICovCisgIE9NWF9BVURJT19XTUFQcm9maWxlTDMsICAgICAgICAgIC8qKjwgV2luZG93cyBNZWRpYSBhdWRpbyB2ZXJzaW9uIDkgcHJvZmlsZSBMMyAqLworICBPTVhfQVVESU9fV01BUHJvZmlsZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgT01YX0FVRElPX1dNQVByb2ZpbGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICBPTVhfQVVESU9fV01BUHJvZmlsZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX1dNQVBST0ZJTEVUWVBFOworCisKKy8qKiBXTUEgcGFyYW1zICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fV01BVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UxNiBuQ2hhbm5lbHM7ICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyAqLworICAgIE9NWF9VMzIgbkJpdFJhdGU7ICAgICAgICAgLyoqPCBCaXQgcmF0ZSBvZiB0aGUgaW5wdXQgZGF0YS4gIFVzZSAwIGZvciB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlIG9yIHVua25vd24gYml0IHJhdGVzICovCisgICAgT01YX0FVRElPX1dNQUZPUk1BVFRZUEUgZUZvcm1hdDsgLyoqPCBWZXJzaW9uIG9mIFdNQSBzdHJlYW0gLyBkYXRhICovCisJT01YX0FVRElPX1dNQVBST0ZJTEVUWVBFIGVQcm9maWxlOyAgLyoqPCBQcm9maWxlIG9mIFdNQSBzdHJlYW0gLyBkYXRhICovCisgICAgT01YX1UzMiBuU2FtcGxpbmdSYXRlOyAgICAvKio8IFNhbXBsaW5nIHJhdGUgb2YgdGhlIHNvdXJjZSBkYXRhICovCisgICAgT01YX1UxNiBuQmxvY2tBbGlnbjsgICAgICAvKio8IGlzIHRoZSBibG9jayBhbGlnbm1lbnQsIG9yIGJsb2NrIHNpemUsIGluIGJ5dGVzIG9mIHRoZSBhdWRpbyBjb2RlYyAqLworICAgIE9NWF9VMTYgbkVuY29kZU9wdGlvbnM7ICAgLyoqPCBXTUEgVHlwZS1zcGVjaWZpYyBkYXRhICovCisgICAgT01YX1UzMiBuU3VwZXJCbG9ja0FsaWduOyAvKio8IFdNQSBUeXBlLXNwZWNpZmljIGRhdGEgKi8KK30gT01YX0FVRElPX1BBUkFNX1dNQVRZUEU7CisKKy8qKiAKKyAqIFJlYWxBdWRpbyBmb3JtYXQKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19SQUZPUk1BVFRZUEUgeworICAgIE9NWF9BVURJT19SQUZvcm1hdFVudXNlZCA9IDAsIC8qKjwgRm9ybWF0IHVudXNlZCBvciB1bmtub3duICovCisgICAgT01YX0FVRElPX1JBOCwgICAgICAgICAgICAgICAgLyoqPCBSZWFsQXVkaW8gOCBjb2RlYyAqLworICAgIE9NWF9BVURJT19SQTksICAgICAgICAgICAgICAgIC8qKjwgUmVhbEF1ZGlvIDkgY29kZWMgKi8KKyAgICBPTVhfQVVESU9fUkExMF9BQUMsICAgICAgICAgICAvKio8IE1QRUctNCBBQUMgY29kZWMgZm9yIGJpdHJhdGVzIG9mIG1vcmUgdGhhbiAxMjhrYnBzICovCisgICAgT01YX0FVRElPX1JBMTBfQ09ERUMsICAgICAgICAgLyoqPCBSZWFsQXVkaW8gY29kZWMgZm9yIGJpdHJhdGVzIGxlc3MgdGhhbiAxMjgga2JwcyAqLworICAgIE9NWF9BVURJT19SQTEwX0xPU1NMRVNTLCAgICAgIC8qKjwgUmVhbEF1ZGlvIExvc3NsZXNzICovCisgICAgT01YX0FVRElPX1JBMTBfTVVMVElDSEFOTkVMLCAgLyoqPCBSZWFsQXVkaW8gTXVsdGljaGFubmVsICovCisgICAgT01YX0FVRElPX1JBMTBfVk9JQ0UsICAgICAgICAgLyoqPCBSZWFsQXVkaW8gVm9pY2UgZm9yIGJpdHJhdGVzIGJlbG93IDE1IGticHMgKi8KKyAgICBPTVhfQVVESU9fUkFGb3JtYXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX1JBRm9ybWF0VmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfVklERU9fUkFGb3JtYXRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19SQUZPUk1BVFRZUEU7CisKKy8qKiBSQSAoUmVhbCBBdWRpbykgcGFyYW1zICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1JBVFlQRSB7IAorICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IFNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUsIGluIEJ5dGVzICovIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8gCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8gCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzICovIAorICAgIE9NWF9VMzIgblNhbXBsaW5nUmF0ZTsgICAgICAvKio8IGlzIHRoZSBzYW1wbGluZyByYXRlIG9mIHRoZSBzb3VyY2UgZGF0YSAqLyAKKyAgICBPTVhfVTMyIG5CaXRzUGVyRnJhbWU7ICAgICAgLyoqPCBpcyB0aGUgdmFsdWUgZm9yIGJpdHMgcGVyIGZyYW1lICAqLyAKKyAgICBPTVhfVTMyIG5TYW1wbGVQZXJGcmFtZTsgICAgLyoqPCBpcyB0aGUgdmFsdWUgZm9yIHNhbXBsZXMgcGVyIGZyYW1lICovIAorICAgIE9NWF9VMzIgbkNvdXBsaW5nUXVhbnRCaXRzOyAvKio8IGlzIHRoZSBudW1iZXIgb2YgY291cGxpbmcgcXVhbnRpemF0aW9uIGJpdHMgaW4gdGhlIHN0cmVhbSAqLyAKKyAgICBPTVhfVTMyIG5Db3VwbGluZ1N0YXJ0UmVnaW9uOyAgIC8qKjwgaXMgdGhlIGNvdXBsaW5nIHN0YXJ0IHJlZ2lvbiBpbiB0aGUgc3RyZWFtICAqLyAKKyAgICBPTVhfVTMyIG5OdW1SZWdpb25zOyAgICAgICAgLyoqPCBpcyB0aGUgbnVtYmVyIG9mIHJlZ2lvbnMgdmFsdWUgKi8gCisgICAgT01YX0FVRElPX1JBRk9STUFUVFlQRSBlRm9ybWF0OyAvKio8IGlzIHRoZSBSZWFsQXVkaW8gYXVkaW8gZm9ybWF0ICovCit9IE9NWF9BVURJT19QQVJBTV9SQVRZUEU7IAorCisKKy8qKiBTQkMgQWxsb2NhdGlvbiBNZXRob2QgVHlwZSAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19TQkNBTExPQ01FVEhPRFRZUEUgeworICBPTVhfQVVESU9fU0JDQWxsb2NNZXRob2RMb3VkbmVzcywgLyoqPCBMb3VkbmVzcyBhbGxvY2F0aW9uIG1ldGhvZCAqLworICBPTVhfQVVESU9fU0JDQWxsb2NNZXRob2RTTlIsICAgICAgLyoqPCBTTlIgYWxsb2NhdGlvbiBtZXRob2QgKi8KKyAgT01YX0FVRElPX1NCQ0FsbG9jTWV0aG9kS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICBPTVhfQVVESU9fU0JDQWxsb2NNZXRob2RWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICBPTVhfQVVESU9fU0JDQWxsb2NNZXRob2RNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19TQkNBTExPQ01FVEhPRFRZUEU7CisKKworLyoqIFNCQyBwYXJhbXMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9TQkNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyAqLworICAgIE9NWF9VMzIgbkJpdFJhdGU7ICAgICAgICAgIC8qKjwgQml0IHJhdGUgb2YgdGhlIGlucHV0IGRhdGEuICBVc2UgMCBmb3IgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGUgb3IgdW5rbm93biBiaXQgcmF0ZXMgKi8KKyAgICBPTVhfVTMyIG5TYW1wbGVSYXRlOyAgICAgICAvKio8IFNhbXBsaW5nIHJhdGUgb2YgdGhlIHNvdXJjZSBkYXRhLiAgVXNlIDAgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBvciB1bmtub3duIHNhbXBsaW5nIHJhdGUuICovCisgICAgT01YX1UzMiBuQmxvY2tzOyAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgYmxvY2tzICovCisgICAgT01YX1UzMiBuU3ViYmFuZHM7ICAgICAgICAgLyoqPCBOdW1iZXIgb2Ygc3ViYmFuZHMgKi8KKyAgICBPTVhfVTMyIG5CaXRQb29sOyAgICAgICAgICAvKio8IEJpdHBvb2wgdmFsdWUgKi8KKyAgICBPTVhfQk9PTCBiRW5hYmxlQml0cmF0ZTsgICAvKio8IFVzZSBiaXRyYXRlIHZhbHVlIGluc3RlYWQgb2YgYml0cG9vbCAqLworICAgIE9NWF9BVURJT19DSEFOTkVMTU9ERVRZUEUgZUNoYW5uZWxNb2RlOyAvKio8IENoYW5uZWwgbW9kZSBlbnVtZXJhdGlvbiAqLworICAgIE9NWF9BVURJT19TQkNBTExPQ01FVEhPRFRZUEUgZVNCQ0FsbG9jVHlwZTsgICAvKio8IFNCQyBBbGxvY2F0aW9uIG1ldGhvZCB0eXBlICovCit9IE9NWF9BVURJT19QQVJBTV9TQkNUWVBFOworCisKKy8qKiBBRFBDTSBzdHJlYW0gZm9ybWF0IHBhcmFtZXRlcnMgKi8gCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fQURQQ01UWVBFIHsgCisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8gCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8gCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzIGluIHRoZSBkYXRhIHN0cmVhbSAobm90IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovIAorICAgIE9NWF9VMzIgbkJpdHNQZXJTYW1wbGU7ICAgICAvKio8IE51bWJlciBvZiBiaXRzIGluIGVhY2ggc2FtcGxlICovIAorICAgIE9NWF9VMzIgblNhbXBsZVJhdGU7ICAgICAgICAvKio8IFNhbXBsaW5nIHJhdGUgb2YgdGhlIHNvdXJjZSBkYXRhLiAgVXNlIDAgZm9yIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb3IgdW5rbm93biBzYW1wbGluZyByYXRlLiAqLyAKK30gT01YX0FVRElPX1BBUkFNX0FEUENNVFlQRTsgCisKKworLyoqIEc3MjMgcmF0ZSAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19HNzIzUkFURSB7CisgICAgT01YX0FVRElPX0c3MjNNb2RlVW51c2VkID0gMCwgIC8qKjwgQU1STkIgTW9kZSB1bnVzZWQgLyB1bmtub3duICovCisgICAgT01YX0FVRElPX0c3MjNNb2RlTG93LCAgICAgICAgIC8qKjwgNTMwMCBicHMgKi8KKyAgICBPTVhfQVVESU9fRzcyM01vZGVIaWdoLCAgICAgICAgLyoqPCA2MzAwIGJwcyAqLworICAgIE9NWF9BVURJT19HNzIzTW9kZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfQVVESU9fRzcyM01vZGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9BVURJT19HNzIzTW9kZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX0c3MjNSQVRFOworCisKKy8qKiBHNzIzIC0gU2FtcGxlIHJhdGUgbXVzdCBiZSA4IEtIeiAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX0c3MjNUWVBFIHsgCisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8gCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8gCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGRhdGEgc3RyZWFtIChub3QgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovIAorICAgIE9NWF9CT09MIGJEVFg7ICAgICAgICAgICAgICAgIC8qKjwgRW5hYmxlIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzc2lvbiAqLyAKKyAgICBPTVhfQVVESU9fRzcyM1JBVEUgZUJpdFJhdGU7ICAvKio8IHRvZG86IFNob3VsZCB0aGlzIGJlIG1vdmVkIHRvIGEgY29uZmlnPyAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgICAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8gCisgICAgT01YX0JPT0wgYlBvc3RGaWx0ZXI7ICAgICAgICAgLyoqPCBFbmFibGUgUG9zdCBGaWx0ZXIgKi8gCit9IE9NWF9BVURJT19QQVJBTV9HNzIzVFlQRTsgCisKKworLyoqIElUVSBHNzI2IChBRFBDTSkgcmF0ZSAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19HNzI2TU9ERSB7CisgICAgT01YX0FVRElPX0c3MjZNb2RlVW51c2VkID0gMCwgIC8qKjwgRzcyNiBNb2RlIHVudXNlZCAvIHVua25vd24gKi8KKyAgICBPTVhfQVVESU9fRzcyNk1vZGUxNiwgICAgICAgICAgLyoqPCAxNiBrYnBzICovCisgICAgT01YX0FVRElPX0c3MjZNb2RlMjQsICAgICAgICAgIC8qKjwgMjQga2JwcyAqLworICAgIE9NWF9BVURJT19HNzI2TW9kZTMyLCAgICAgICAgICAvKio8IDMyIGticHMsIG1vc3QgY29tbW9uIHJhdGUsIGFsc28gRzcyMSAqLworICAgIE9NWF9BVURJT19HNzI2TW9kZTQwLCAgICAgICAgICAvKio8IDQwIGticHMgKi8KKyAgICBPTVhfQVVESU9fRzcyNk1vZGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX0c3MjZNb2RlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fRzcyNk1vZGVNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19HNzI2TU9ERTsKKworCisvKiogRy43MjYgc3RyZWFtIGZvcm1hdCBwYXJhbWV0ZXJzIC0gbXVzdCBiZSBhdCA4S0h6ICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX0c3MjZUWVBFIHsgCisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8gCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8gCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzIGluIHRoZSBkYXRhIHN0cmVhbSAobm90IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovIAorICAgICBPTVhfQVVESU9fRzcyNk1PREUgZUc3MjZNb2RlOworfSBPTVhfQVVESU9fUEFSQU1fRzcyNlRZUEU7IAorCisKKy8qKiBHNzI5IGNvZGVyIHR5cGUgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fRzcyOVRZUEUgeworICAgIE9NWF9BVURJT19HNzI5ID0gMCwgICAgICAgICAgIC8qKjwgSVRVIEcuNzI5ICBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fRzcyOUEsICAgICAgICAgICAgICAvKio8IElUVSBHLjcyOSBhbm5leCBBICBlbmNvZGVkIGRhdGEgKi8KKyAgICBPTVhfQVVESU9fRzcyOUIsICAgICAgICAgICAgICAvKio8IElUVSBHLjcyOSB3aXRoIGFubmV4IEIgZW5jb2RlZCBkYXRhICovCisgICAgT01YX0FVRElPX0c3MjlBQiwgICAgICAgICAgICAgLyoqPCBJVFUgRy43MjkgYW5uZXhlcyBBIGFuZCBCIGVuY29kZWQgZGF0YSAqLworICAgIE9NWF9BVURJT19HNzI5S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9BVURJT19HNzI5VmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fRzcyOU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX0c3MjlUWVBFOworCisKKy8qKiBHNzI5IHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAtIGZpeGVkIDZLSHogc2FtcGxlIHJhdGUgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9HNzI5VFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyBpbiB0aGUgZGF0YSBzdHJlYW0gKG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJlbmRlcmVkLiAqLworICAgIE9NWF9CT09MIGJEVFg7ICAgICAgICAgICAgLyoqPCBFbmFibGUgRGlzY29udGludW91cyBUcmFuc21pc3NzaW9uICovCisgICAgT01YX0FVRElPX0c3MjlUWVBFIGVCaXRUeXBlOworfSBPTVhfQVVESU9fUEFSQU1fRzcyOVRZUEU7CisKKworLyoqIEFNUiBGcmFtZSBmb3JtYXQgKi8gCit0eXBlZGVmIGVudW0gT01YX0FVRElPX0FNUkZSQU1FRk9STUFUVFlQRSB7IAorICAgIE9NWF9BVURJT19BTVJGcmFtZUZvcm1hdENvbmZvcm1hbmNlID0gMCwgIC8qKjwgRnJhbWUgRm9ybWF0IGlzIEFNUiBDb25mb3JtYW5jZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdGFuZGFyZCkgRm9ybWF0ICovIAorICAgIE9NWF9BVURJT19BTVJGcmFtZUZvcm1hdElGMSwgICAgICAgICAgICAgIC8qKjwgRnJhbWUgRm9ybWF0IGlzIEFNUiBJbnRlcmZhY2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgMSAqLyAKKyAgICBPTVhfQVVESU9fQU1SRnJhbWVGb3JtYXRJRjIsICAgICAgICAgICAgICAvKio8IEZyYW1lIEZvcm1hdCBpcyBBTVIgSW50ZXJmYWNlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0IDIqLyAKKyAgICBPTVhfQVVESU9fQU1SRnJhbWVGb3JtYXRGU0YsICAgICAgICAgICAgICAvKio8IEZyYW1lIEZvcm1hdCBpcyBBTVIgRmlsZSBTdG9yYWdlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ICovIAorICAgIE9NWF9BVURJT19BTVJGcmFtZUZvcm1hdFJUUFBheWxvYWQsICAgICAgIC8qKjwgRnJhbWUgRm9ybWF0IGlzIEFNUiBSZWFsLVRpbWUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnQgUHJvdG9jb2wgUGF5bG9hZCBGb3JtYXQgKi8gCisgICAgT01YX0FVRElPX0FNUkZyYW1lRm9ybWF0SVRVLCAgICAgICAgICAgICAgLyoqPCBGcmFtZSBGb3JtYXQgaXMgSVRVIEZvcm1hdCAoYWRkZWQgYXQgTW90b3JvbGEgcmVxdWVzdCkgKi8gCisgICAgT01YX0FVRElPX0FNUkZyYW1lRm9ybWF0S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9BVURJT19BTVJGcmFtZUZvcm1hdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0FVRElPX0FNUkZyYW1lRm9ybWF0TWF4ID0gMHg3RkZGRkZGRiAKK30gT01YX0FVRElPX0FNUkZSQU1FRk9STUFUVFlQRTsgCisKKworLyoqIEFNUiBiYW5kIG1vZGUgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fQU1SQkFORE1PREVUWVBFIHsKKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVVbnVzZWQgPSAwLCAgICAgICAgICAvKio8IEFNUk5CIE1vZGUgdW51c2VkIC8gdW5rbm93biAqLworICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZU5CMCwgICAgICAgICAgICAgICAgIC8qKjwgQU1STkIgTW9kZSAwID0gIDQ3NTAgYnBzICovCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlTkIxLCAgICAgICAgICAgICAgICAgLyoqPCBBTVJOQiBNb2RlIDEgPSAgNTE1MCBicHMgKi8KKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjIsICAgICAgICAgICAgICAgICAvKio8IEFNUk5CIE1vZGUgMiA9ICA1OTAwIGJwcyAqLyAKKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjMsICAgICAgICAgICAgICAgICAvKio8IEFNUk5CIE1vZGUgMyA9ICA2NzAwIGJwcyAqLworICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZU5CNCwgICAgICAgICAgICAgICAgIC8qKjwgQU1STkIgTW9kZSA0ID0gIDc0MDAgYnBzICovCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlTkI1LCAgICAgICAgICAgICAgICAgLyoqPCBBTVJOQiBNb2RlIDUgPSAgNzk1MCBicHMgKi8KKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVOQjYsICAgICAgICAgICAgICAgICAvKio8IEFNUk5CIE1vZGUgNiA9IDEwMjAwIGJwcyAqLworICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZU5CNywgICAgICAgICAgICAgICAgIC8qKjwgQU1STkIgTW9kZSA3ID0gMTIyMDAgYnBzICovCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlV0IwLCAgICAgICAgICAgICAgICAgLyoqPCBBTVJXQiBNb2RlIDAgPSAgNjYwMCBicHMgKi8KKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjEsICAgICAgICAgICAgICAgICAvKio8IEFNUldCIE1vZGUgMSA9ICA4ODUwIGJwcyAqLworICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMiwgICAgICAgICAgICAgICAgIC8qKjwgQU1SV0IgTW9kZSAyID0gMTI2NTAgYnBzICovIAorICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMywgICAgICAgICAgICAgICAgIC8qKjwgQU1SV0IgTW9kZSAzID0gMTQyNTAgYnBzICovIAorICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCNCwgICAgICAgICAgICAgICAgIC8qKjwgQU1SV0IgTW9kZSA0ID0gMTU4NTAgYnBzICovCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlV0I1LCAgICAgICAgICAgICAgICAgLyoqPCBBTVJXQiBNb2RlIDUgPSAxODI1MCBicHMgKi8KKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjYsICAgICAgICAgICAgICAgICAvKio8IEFNUldCIE1vZGUgNiA9IDE5ODUwIGJwcyAqLworICAgIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCNywgICAgICAgICAgICAgICAgIC8qKjwgQU1SV0IgTW9kZSA3ID0gMjMwNTAgYnBzICovCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlV0I4LCAgICAgICAgICAgICAgICAgLyoqPCBBTVJXQiBNb2RlIDggPSAyMzg1MCBicHMgKi8gICAgICAKKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX0FNUkJhbmRNb2RlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fQU1SQmFuZE1vZGVNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19BTVJCQU5ETU9ERVRZUEU7CisgICAgIAorCisvKiogQU1SIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzaW9uIG1vZGUgKi8gCit0eXBlZGVmIGVudW0gT01YX0FVRElPX0FNUkRUWE1PREVUWVBFIHsgCisgICAgT01YX0FVRElPX0FNUkRUWE1vZGVPZmYgPSAwLCAgICAgICAgLyoqPCBBTVIgRGlzY29udGludW91cyBUcmFuc21pc3Npb24gTW9kZSBpcyBkaXNhYmxlZCAqLyAKKyAgICBPTVhfQVVESU9fQU1SRFRYTW9kZU9uVkFEMSwgICAgICAgICAvKio8IEFNUiBEaXNjb250aW51b3VzIFRyYW5zbWlzc2lvbiBNb2RlIHVzaW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0b3IgMSAoVkFEMSkgaXMgZW5hYmxlZCAqLyAKKyAgICBPTVhfQVVESU9fQU1SRFRYTW9kZU9uVkFEMiwgICAgICAgICAvKio8IEFNUiBEaXNjb250aW51b3VzIFRyYW5zbWlzc2lvbiBNb2RlIHVzaW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0b3IgMiAoVkFEMikgaXMgZW5hYmxlZCAqLyAgICAgICAKKyAgICBPTVhfQVVESU9fQU1SRFRYTW9kZU9uQXV0bywgICAgICAgICAvKio8IFRoZSBjb2RlYyB3aWxsIGF1dG9tYXRpY2FsbHkgc2VsZWN0IGJldHdlZW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmYsIFZBRDEgb3IgVkFEMiBtb2RlcyAqLyAKKworICAgIE9NWF9BVURJT19BTVJEVFhhc0VGUiwgICAgICAgICAgICAgLyoqPCBEVFggYXMgRUZSIGluc3RlYWQgb2YgQU1SIHN0YW5kYXJkICgzR1BQIDI2LjEwMSwgZnJhbWUgdHlwZSA9OCw5LDEwKSAqLworCisgICAgT01YX0FVRElPX0FNUkRUWE1vZGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX0FNUkRUWE1vZGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9BVURJT19BTVJEVFhNb2RlTWF4ID0gMHg3RkZGRkZGRiAKK30gT01YX0FVRElPX0FNUkRUWE1PREVUWVBFOyAKKyAKKworLyoqIEFNUiBwYXJhbXMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9BTVJUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgICAgICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgICAgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgKi8KKyAgICBPTVhfVTMyIG5CaXRSYXRlOyAgICAgICAgICAgICAgICAgICAgICAgLyoqPCBCaXQgcmF0ZSByZWFkIG9ubHkgZmllbGQgKi8KKyAgICBPTVhfQVVESU9fQU1SQkFORE1PREVUWVBFIGVBTVJCYW5kTW9kZTsgLyoqPCBBTVIgQmFuZCBNb2RlIGVudW1lcmF0aW9uICovIAorICAgIE9NWF9BVURJT19BTVJEVFhNT0RFVFlQRSAgZUFNUkRUWE1vZGU7ICAvKio8IEFNUiBEVFggTW9kZSBlbnVtZXJhdGlvbiAqLworICAgIE9NWF9BVURJT19BTVJGUkFNRUZPUk1BVFRZUEUgZUFNUkZyYW1lRm9ybWF0OyAvKio8IEFNUiBmcmFtZSBmb3JtYXQgZW51bWVyYXRpb24gKi8KK30gT01YX0FVRElPX1BBUkFNX0FNUlRZUEU7CisKKworLyoqIEdTTV9GUiAoRVRTSSAwNi4xMCwgM0dQUCA0Ni4wMTApIHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX0dTTUZSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkRUWDsgICAgICAgICAgICAvKio8IEVuYWJsZSBEaXNjb250aW51b3VzIFRyYW5zbWlzc3Npb24gKi8KKyAgICBPTVhfQk9PTCBiSGlQYXNzRmlsdGVyOyAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX0dTTUZSVFlQRTsKKworCisvKiogR1NNLUhSIChFVFNJIDA2LjIwLCAzR1BQIDQ2LjAyMCkgc3RyZWFtIGZvcm1hdCBwYXJhbWV0ZXJzICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fR1NNSFJUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfQk9PTCBiRFRYOyAgICAgICAgICAgIC8qKjwgRW5hYmxlIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzc2lvbiAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgLyoqPCBFbmFibGUgSGlnaCBQYXNzIEZpbHRlciAqLworfSBPTVhfQVVESU9fUEFSQU1fR1NNSFJUWVBFOworCisKKy8qKiBHU00tRUZSIChFVFNJIDA2LjYwLCAzR1BQIDQ2LjA2MCkgc3RyZWFtIGZvcm1hdCBwYXJhbWV0ZXJzICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fR1NNRUZSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkRUWDsgICAgICAgICAgICAvKio8IEVuYWJsZSBEaXNjb250aW51b3VzIFRyYW5zbWlzc3Npb24gKi8KKyAgICBPTVhfQk9PTCBiSGlQYXNzRmlsdGVyOyAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX0dTTUVGUlRZUEU7CisKKworLyoqIFRETUEgRlIgKFRJQS9FSUEtMTM2LTQyMCwgVlNFTFAgNy45NWticHMgY29kZXIpIHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1RETUFGUlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9VMzIgbkNoYW5uZWxzOyAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzIGluIHRoZSBkYXRhIHN0cmVhbSAobm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSByZW5kZXJlZC4gKi8KKyAgICBPTVhfQk9PTCBiRFRYOyAgICAgICAgICAgICAgICAvKio8IEVuYWJsZSBEaXNjb250aW51b3VzIFRyYW5zbWlzc3Npb24gKi8KKyAgICBPTVhfQk9PTCBiSGlQYXNzRmlsdGVyOyAgICAgICAvKio8IEVuYWJsZSBIaWdoIFBhc3MgRmlsdGVyICovCit9IE9NWF9BVURJT19QQVJBTV9URE1BRlJUWVBFOworCisKKy8qKiBURE1BIEVGUiAoVElBL0VJQS0xMzYtNDEwLCBBQ0VMUCA3LjRrYnBzIGNvZGVyKSBzdHJlYW0gZm9ybWF0IHBhcmFtZXRlcnMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9URE1BRUZSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGRhdGEgc3RyZWFtIChub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJlbmRlcmVkLiAqLworICAgIE9NWF9CT09MIGJEVFg7ICAgICAgICAgICAgICAgIC8qKjwgRW5hYmxlIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzc2lvbiAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgICAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX1RETUFFRlJUWVBFOworCisKKy8qKiBQREMgRlIgKCBSQ1ItMjcsIFZTRUxQIDYuN2ticHMgY29kZXIpIHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1BEQ0ZSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGRhdGEgc3RyZWFtIChub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJlbmRlcmVkLiAqLworICAgIE9NWF9CT09MIGJEVFg7ICAgICAgICAgICAgICAgIC8qKjwgRW5hYmxlIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzc2lvbiAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgICAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX1BEQ0ZSVFlQRTsKKworCisvKiogUERDIEVGUiAoIFJDUi0yNywgQUNFTFAgNi43a2JwcyBjb2Rlcikgc3RyZWFtIGZvcm1hdCBwYXJhbWV0ZXJzICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fUERDRUZSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGRhdGEgc3RyZWFtIChub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJlbmRlcmVkLiAqLworICAgIE9NWF9CT09MIGJEVFg7ICAgICAgICAgICAgICAgIC8qKjwgRW5hYmxlIERpc2NvbnRpbnVvdXMgVHJhbnNtaXNzc2lvbiAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgICAgIC8qKjwgRW5hYmxlIEhpZ2ggUGFzcyBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX1BEQ0VGUlRZUEU7CisKKy8qKiBQREMgSFIgKCBSQ1ItMjcsIFBTSS1DRUxQIDMuNDVrYnBzIGNvZGVyKSBzdHJlYW0gZm9ybWF0IHBhcmFtZXRlcnMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9QRENIUlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9VMzIgbkNoYW5uZWxzOyAgICAgICAgICAgIC8qKjwgTnVtYmVyIG9mIGNoYW5uZWxzIGluIHRoZSBkYXRhIHN0cmVhbSAobm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSByZW5kZXJlZC4gKi8KKyAgICBPTVhfQk9PTCBiRFRYOyAgICAgICAgICAgICAgICAvKio8IEVuYWJsZSBEaXNjb250aW51b3VzIFRyYW5zbWlzc3Npb24gKi8KKyAgICBPTVhfQk9PTCBiSGlQYXNzRmlsdGVyOyAgICAgICAvKio8IEVuYWJsZSBIaWdoIFBhc3MgRmlsdGVyICovCit9IE9NWF9BVURJT19QQVJBTV9QRENIUlRZUEU7CisKKworLyoqIENETUEgUmF0ZSB0eXBlcyAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19DRE1BUkFURVRZUEUgeworICAgIE9NWF9BVURJT19DRE1BUmF0ZUJsYW5rID0gMCwgICAgICAgICAgLyoqPCBDRE1BIGVuY29kZWQgZnJhbWUgaXMgYmxhbmsgKi8KKyAgICBPTVhfQVVESU9fQ0RNQVJhdGVGdWxsLCAgICAgICAgICAgICAgIC8qKjwgQ0RNQSBlbmNvZGVkIGZyYW1lIGluIGZ1bGwgcmF0ZSAqLworICAgIE9NWF9BVURJT19DRE1BUmF0ZUhhbGYsICAgICAgICAgICAgICAgLyoqPCBDRE1BIGVuY29kZWQgZnJhbWUgaW4gaGFsZiByYXRlICovCisgICAgT01YX0FVRElPX0NETUFSYXRlUXVhcnRlciwgICAgICAgICAgICAvKio8IENETUEgZW5jb2RlZCBmcmFtZSBpbiBxdWFydGVyIHJhdGUgKi8KKyAgICBPTVhfQVVESU9fQ0RNQVJhdGVFaWdodGgsICAgICAgICAgICAgIC8qKjwgQ0RNQSBlbmNvZGVkIGZyYW1lIGluIGVpZ2h0aCByYXRlIChEVFgpKi8KKyAgICBPTVhfQVVESU9fQ0RNQVJhdGVFcmFzdXJlLCAgICAgICAgICAgIC8qKjwgQ0RNQSBlcmFzdXJlIGZyYW1lICovCisgICAgT01YX0FVRElPX0NETUFSYXRlS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9BVURJT19DRE1BUmF0ZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0FVRElPX0NETUFSYXRlTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfQVVESU9fQ0RNQVJBVEVUWVBFOworCisKKy8qKiBRQ0VMUDggKFRJQS9FSUEtOTYsIHVwIHRvIDhrYnBzIGNvZGVyKSBzdHJlYW0gZm9ybWF0IHBhcmFtZXRlcnMgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19QQVJBTV9RQ0VMUDhUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyBpbiB0aGUgZGF0YSBzdHJlYW0gKG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjaGFubmVscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovCisgICAgT01YX1UzMiBuQml0UmF0ZTsgICAgICAgICAgICAgLyoqPCBCaXQgcmF0ZSBvZiB0aGUgaW5wdXQgZGF0YS4gIFVzZSAwIGZvciB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZSBvciB1bmtub3duIGJpdCByYXRlcyAqLworICAgIE9NWF9BVURJT19DRE1BUkFURVRZUEUgZUNETUFSYXRlOyAvKio8IEZyYW1lIHJhdGUgKi8KKyAgICBPTVhfVTMyIG5NaW5CaXRSYXRlOyAgICAgICAgICAvKio8IG1pbm1hbCByYXRlIGZvciB0aGUgZW5jb2RlciA9IDEsMiwzLDQsIGRlZmF1bHQgPSAxICovCisgICAgT01YX1UzMiBuTWF4Qml0UmF0ZTsgICAgICAgICAgLyoqPCBtYXhpbWFsIHJhdGUgZm9yIHRoZSBlbmNvZGVyID0gMSwyLDMsNCwgZGVmYXVsdCA9IDQgKi8KK30gT01YX0FVRElPX1BBUkFNX1FDRUxQOFRZUEU7CisKKworLyoqIFFDRUxQMTMgKCBDRE1BLCBFSUEvVElBLTczMywgMTMuM2ticHMgY29kZXIpIHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX1FDRUxQMTNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyBpbiB0aGUgZGF0YSBzdHJlYW0gKG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjaGFubmVscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovCisgICAgT01YX0FVRElPX0NETUFSQVRFVFlQRSBlQ0RNQVJhdGU7IC8qKjwgRnJhbWUgcmF0ZSAqLworICAgIE9NWF9VMzIgbk1pbkJpdFJhdGU7ICAgICAgICAgIC8qKjwgbWlubWFsIHJhdGUgZm9yIHRoZSBlbmNvZGVyID0gMSwyLDMsNCwgZGVmYXVsdCA9IDEgKi8KKyAgICBPTVhfVTMyIG5NYXhCaXRSYXRlOyAgICAgICAgICAvKio8IG1heGltYWwgcmF0ZSBmb3IgdGhlIGVuY29kZXIgPSAxLDIsMyw0LCBkZWZhdWx0ID0gNCAqLworfSBPTVhfQVVESU9fUEFSQU1fUUNFTFAxM1RZUEU7CisKKworLyoqIEVWUkMgKCBDRE1BLCBFSUEvVElBLTEyNywgUkNFTFAgdXAgdG8gOC41NWticHMgY29kZXIpIHN0cmVhbSBmb3JtYXQgcGFyYW1ldGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX0VWUkNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5DaGFubmVsczsgICAgICAgICAgICAvKio8IE51bWJlciBvZiBjaGFubmVscyBpbiB0aGUgZGF0YSBzdHJlYW0gKG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjaGFubmVscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVuZGVyZWQuICovCisgICAgT01YX0FVRElPX0NETUFSQVRFVFlQRSBlQ0RNQVJhdGU7IC8qKjwgYWN0dWFsIEZyYW1lIHJhdGUgKi8KKyAgICBPTVhfQk9PTCBiUkFURV9SRURVQ29uOyAgICAgICAvKio8IFJBVEVfUkVEVUN0aW9uIGlzIHJlcXVlc3RlZCBmb3IgdGhpcyBmcmFtZSAqLworICAgIE9NWF9VMzIgbk1pbkJpdFJhdGU7ICAgICAgICAgIC8qKjwgbWlubWFsIHJhdGUgZm9yIHRoZSBlbmNvZGVyID0gMSwyLDMsNCwgZGVmYXVsdCA9IDEgKi8KKyAgICBPTVhfVTMyIG5NYXhCaXRSYXRlOyAgICAgICAgICAvKio8IG1heGltYWwgcmF0ZSBmb3IgdGhlIGVuY29kZXIgPSAxLDIsMyw0LCBkZWZhdWx0ID0gNCAqLworICAgIE9NWF9CT09MIGJIaVBhc3NGaWx0ZXI7ICAgICAgIC8qKjwgRW5hYmxlIGVuY29kZXIncyBIaWdoIFBhc3MgRmlsdGVyICovCisgICAgT01YX0JPT0wgYk5vaXNlU3VwcHJlc3NvcjsgICAgLyoqPCBFbmFibGUgZW5jb2RlcidzIG5vaXNlIHN1cHByZXNzb3IgcHJlLXByb2Nlc3NpbmcgKi8KKyAgICBPTVhfQk9PTCBiUG9zdEZpbHRlcjsgICAgICAgICAvKio8IEVuYWJsZSBkZWNvZGVyJ3MgcG9zdCBGaWx0ZXIgKi8KK30gT01YX0FVRElPX1BBUkFNX0VWUkNUWVBFOworCisKKy8qKiBTTVYgKCB1cCB0byA4LjU1a2JwcyBjb2Rlcikgc3RyZWFtIGZvcm1hdCBwYXJhbWV0ZXJzICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fU01WVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbHM7ICAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIGRhdGEgc3RyZWFtIChub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHJlbmRlcmVkLiAqLworICAgIE9NWF9BVURJT19DRE1BUkFURVRZUEUgZUNETUFSYXRlOyAvKio8IEZyYW1lIHJhdGUgKi8KKyAgICBPTVhfQk9PTCBiUkFURV9SRURVQ29uOyAgICAgICAgICAgLyoqPCBSQVRFX1JFRFVDdGlvbiBpcyByZXF1ZXN0ZWQgZm9yIHRoaXMgZnJhbWUgKi8KKyAgICBPTVhfVTMyIG5NaW5CaXRSYXRlOyAgICAgICAgICAvKio8IG1pbm1hbCByYXRlIGZvciB0aGUgZW5jb2RlciA9IDEsMiwzLDQsIGRlZmF1bHQgPSAxID8/Ki8KKyAgICBPTVhfVTMyIG5NYXhCaXRSYXRlOyAgICAgICAgICAvKio8IG1heGltYWwgcmF0ZSBmb3IgdGhlIGVuY29kZXIgPSAxLDIsMyw0LCBkZWZhdWx0ID0gNCA/PyovCisgICAgT01YX0JPT0wgYkhpUGFzc0ZpbHRlcjsgICAgICAgLyoqPCBFbmFibGUgZW5jb2RlcidzIEhpZ2ggUGFzcyBGaWx0ZXIgPz8qLworICAgIE9NWF9CT09MIGJOb2lzZVN1cHByZXNzb3I7ICAgIC8qKjwgRW5hYmxlIGVuY29kZXIncyBub2lzZSBzdXBwcmVzc29yIHByZS1wcm9jZXNzaW5nICovCisgICAgT01YX0JPT0wgYlBvc3RGaWx0ZXI7ICAgICAgICAgLyoqPCBFbmFibGUgZGVjb2RlcidzIHBvc3QgRmlsdGVyID8/Ki8KK30gT01YX0FVRElPX1BBUkFNX1NNVlRZUEU7CisKKworLyoqIE1JREkgRm9ybWF0IAorICogQGluZ3JvdXAgbWlkaQorICovCit0eXBlZGVmIGVudW0gT01YX0FVRElPX01JRElGT1JNQVRUWVBFCit7CisgICAgT01YX0FVRElPX01JRElGb3JtYXRVbmtub3duID0gMCwgLyoqPCBNSURJIEZvcm1hdCB1bmtub3duIG9yIGRvbid0IGNhcmUgKi8KKyAgICBPTVhfQVVESU9fTUlESUZvcm1hdFNNRjAsICAgICAgICAvKio8IFN0YW5kYXJkIE1JREkgRmlsZSBUeXBlIDAgKi8KKyAgICBPTVhfQVVESU9fTUlESUZvcm1hdFNNRjEsICAgICAgICAvKio8IFN0YW5kYXJkIE1JREkgRmlsZSBUeXBlIDEgKi8KKyAgICBPTVhfQVVESU9fTUlESUZvcm1hdFNNRjIsICAgICAgICAvKio8IFN0YW5kYXJkIE1JREkgRmlsZSBUeXBlIDIgKi8KKyAgICBPTVhfQVVESU9fTUlESUZvcm1hdFNQTUlESSwgICAgICAvKio8IFNQLU1JREkgKi8KKyAgICBPTVhfQVVESU9fTUlESUZvcm1hdFhNRjAsICAgICAgICAvKio8IGVYdGVuc2libGUgTXVzaWMgRm9ybWF0IHR5cGUgMCAqLworICAgIE9NWF9BVURJT19NSURJRm9ybWF0WE1GMSwgICAgICAgIC8qKjwgZVh0ZW5zaWJsZSBNdXNpYyBGb3JtYXQgdHlwZSAxICovCisgICAgT01YX0FVRElPX01JRElGb3JtYXRNb2JpbGVYTUYsICAgLyoqPCBNb2JpbGUgWE1GIChlWHRlbnNpYmxlIE11c2ljIEZvcm1hdCB0eXBlIDIpICovCisgICAgT01YX0FVRElPX01JRElGb3JtYXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX01JRElGb3JtYXRWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9BVURJT19NSURJRm9ybWF0TWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfQVVESU9fTUlESUZPUk1BVFRZUEU7CisKKworLyoqIE1JREkgcGFyYW1zIAorICogQGluZ3JvdXAgbWlkaQorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fUEFSQU1fTUlESVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9VMzIgbkZpbGVTaXplOyAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIE1JREkgZmlsZSBpbiBieXRlcywgd2hlcmUgdGhlIGVudGlyZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIGZpbGUgcGFzc2VkIGluLCBvdGhlcndpc2UgaWYgMHgwLCB0aGUgTUlESSBkYXRhIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG1lcmdlZCBhbmQgc3RyZWFtZWQgKGluc3RlYWQgb2YgcGFzc2VkIGFzIGFuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGlyZSBNSURJIGZpbGUpICovCisgICAgT01YX0JVMzIgc01heFBvbHlwaG9ueTsgICAgICAgIC8qKjwgU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHNpbXVsdGFuZW91cyBwb2x5cGhvbmljIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWNlcy4gQSB2YWx1ZSBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRoZSBkZWZhdWx0IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbHlwaG9ueSBvZiB0aGUgZGV2aWNlIGlzIHVzZWQgICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgT01YX0JPT0wgYkxvYWREZWZhdWx0U291bmQ7ICAgIC8qKjwgV2hldGhlciB0byBsb2FkIGRlZmF1bHQgc291bmQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuayBhdCBpbml0aWFsaXphdGlvbiAqLworICAgIE9NWF9BVURJT19NSURJRk9STUFUVFlQRSBlTWlkaUZvcm1hdDsgLyoqPCBWZXJzaW9uIG9mIHRoZSBNSURJIGZpbGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gT01YX0FVRElPX1BBUkFNX01JRElUWVBFOworCisKKy8qKiBUeXBlIG9mIHRoZSBNSURJIHNvdW5kIGJhbmsgCisgKiBAaW5ncm91cCBtaWRpCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fTUlESVNPVU5EQkFOS1RZUEUgeworICAgIE9NWF9BVURJT19NSURJU291bmRCYW5rVW51c2VkID0gMCwgICAgICAgICAgIC8qKjwgdW51c2VkL3Vua25vd24gc291bmRiYW5rIHR5cGUgKi8KKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0RMUzEsICAgICAgICAgICAgICAgICAvKio8IERMUyB2ZXJzaW9uIDEgKi8KKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0RMUzIsICAgICAgICAgICAgICAgICAvKio8IERMUyB2ZXJzaW9uIDIgKi8KKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua01vYmlsZURMU0Jhc2UsICAgICAgICAvKio8IE1vYmlsZSBETFMsIHVzaW5nIHRoZSBiYXNlIGZ1bmN0aW9uYWxpdHkgKi8KKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua01vYmlsZURMU1BsdXNPcHRpb25zLCAvKio8IE1vYmlsZSBETFMsIHVzaW5nIHRoZSBzcGVjaWZpY2F0aW9uLWRlZmluZWQgb3B0aW9uYWwgZmVhdHVyZSBzZXQgKi8KKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0tocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua1ZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0FVRElPX01JRElTb3VuZEJhbmtNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19NSURJU09VTkRCQU5LVFlQRTsKKworCisvKiogQmFuayBMYXlvdXQgZGVzY3JpYmVzIGhvdyBiYW5rIE1TQiAmIExTQiBhcmUgdXNlZCBpbiB0aGUgRExTIGluc3RydW1lbnQgZGVmaW5pdGlvbnMgc291bmQgYmFuayAKKyAqIEBpbmdyb3VwIG1pZGkKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9BVURJT19NSURJU09VTkRCQU5LTEFZT1VUVFlQRSB7CisgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0xheW91dFVudXNlZCA9IDAsICAgLyoqPCB1bnVzZWQvdW5rbm93biBzb3VuZGJhbmsgdHlwZSAqLworICAgT01YX0FVRElPX01JRElTb3VuZEJhbmtMYXlvdXRHTSwgICAgICAgICAgIC8qKjwgR1MgbGF5b3V0IChiYXNlZCBvbiBiYW5rIE1TQiAweDAwKSAqLworICAgT01YX0FVRElPX01JRElTb3VuZEJhbmtMYXlvdXRHTTIsICAgICAgICAgIC8qKjwgR2VuZXJhbCBNSURJIDIgbGF5b3V0ICh1c2luZyBNU0IgMHg3OC8weDc5LCBMU0IgMHgwMCkgKi8KKyAgIE9NWF9BVURJT19NSURJU291bmRCYW5rTGF5b3V0VXNlciwgICAgICAgICAvKio8IERvZXMgbm90IGNvbmZvcm0gdG8gYW55IGJhbmsgbnVtYmVyaW5nIHN0YW5kYXJkcyAqLworICAgT01YX0FVRElPX01JRElTb3VuZEJhbmtMYXlvdXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0xheW91dFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICBPTVhfQVVESU9fTUlESVNvdW5kQmFua0xheW91dE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX01JRElTT1VOREJBTktMQVlPVVRUWVBFOworCisKKy8qKiBNSURJIHBhcmFtcyB0byBsb2FkL3VubG9hZCB1c2VyIHNvdW5kYmFuayAKKyAqIEBpbmdyb3VwIG1pZGkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX1BBUkFNX01JRElMT0FEVVNFUlNPVU5EVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuRExTSW5kZXg7ICAgICAgICAvKio8IERMUyBmaWxlIGluZGV4IHRvIGJlIGxvYWRlZCAqLworICAgIE9NWF9VMzIgbkRMU1NpemU7ICAgICAgICAgLyoqPCBTaXplIGluIGJ5dGVzICovCisgICAgT01YX1BUUiBwRExTRGF0YTsgICAgICAgICAvKio8IFBvaW50ZXIgdG8gRExTIGZpbGUgZGF0YSAqLworICAgIE9NWF9BVURJT19NSURJU09VTkRCQU5LVFlQRSBlTWlkaVNvdW5kQmFuazsgICAvKio8IE1pZGkgc291bmQgYmFuayB0eXBlIGVudW1lcmF0aW9uICovCisgICAgT01YX0FVRElPX01JRElTT1VOREJBTktMQVlPVVRUWVBFIGVNaWRpU291bmRCYW5rTGF5b3V0OyAvKio8IE1pZGkgc291bmQgYmFuayBsYXlvdXQgZW51bWVyYXRpb24gKi8KK30gT01YX0FVRElPX1BBUkFNX01JRElMT0FEVVNFUlNPVU5EVFlQRTsKKworCisvKiogU3RydWN0dXJlIGZvciBMaXZlIE1JREkgZXZlbnRzIGFuZCBNSVAgbWVzc2FnZXMuIAorICogKE1JUCA9IE1heGltdW0gSW5zdGFudGFuZW91cyBQb2x5cGhvbnk7IHBhcnQgb2YgdGhlIFNQLU1JREkgc3RhbmRhcmQuKSAKKyAqIEBpbmdyb3VwIG1pZGkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX0NPTkZJR19NSURJSU1NRURJQVRFRVZFTlRUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIC8qKjwgUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfVTMyIG5NaWRpRXZlbnRTaXplOyAgIC8qKjwgU2l6ZSBvZiBpbW1lZGlhdGUgTUlESSBldmVudHMgb3IgTUlQIG1lc3NhZ2UgaW4gYnl0ZXMgICovCisgICAgT01YX1U4IG5NaWRpRXZlbnRzWzFdOyAgICAvKio8IE1JREkgZXZlbnQgYXJyYXkgdG8gYmUgcmVuZGVyZWQgaW1tZWRpYXRlbHksIG9yIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IGZvciB0aGUgTUlQIG1lc3NhZ2UgYnVmZmVyLCB3aGVyZSB0aGUgc2l6ZSBpcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGVkIGJ5IG5NaWRpRXZlbnRTaXplICovCit9IE9NWF9BVURJT19DT05GSUdfTUlESUlNTUVESUFURUVWRU5UVFlQRTsKKworCisvKiogTUlESSBzb3VuZCBiYW5rLyBwcm9ncmFtIHBhaXIgaW4gYSBnaXZlbiBjaGFubmVsIAorICogQGluZ3JvdXAgbWlkaQorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX01JRElTT1VOREJBTktQUk9HUkFNVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAvKio8IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbDsgICAgICAgICAgIC8qKjwgVmFsaWQgY2hhbm5lbCB2YWx1ZXMgcmFuZ2UgZnJvbSAxIHRvIDE2ICovCisgICAgT01YX1UxNiBuSURQcm9ncmFtOyAgICAgICAgIC8qKjwgVmFsaWQgcHJvZ3JhbSBJRCByYW5nZSBpcyAxIHRvIDEyOCAqLworICAgIE9NWF9VMTYgbklEU291bmRCYW5rOyAgICAgICAvKio8IFNvdW5kIGJhbmsgSUQgKi8KKyAgICBPTVhfVTMyIG5Vc2VyU291bmRCYW5rSW5kZXg7LyoqPCBVc2VyIHNvdW5kYmFuayBpbmRleCwgZWFzaWVyIHRvIGFjY2VzcyBzb3VuZGJhbmtzIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGluZGV4IGlmIG11bHRpcGxlIGJhbmtzIGFyZSBwcmVzZW50ICovCit9IE9NWF9BVURJT19DT05GSUdfTUlESVNPVU5EQkFOS1BST0dSQU1UWVBFOworCisKKy8qKiBNSURJIGNvbnRyb2wgCisgKiBAaW5ncm91cCBtaWRpCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfTUlESUNPTlRST0xUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfQlMzMiBzUGl0Y2hUcmFuc3Bvc2l0aW9uOyAvKio8IFBpdGNoIHRyYW5zcG9zaXRpb24gaW4gc2VtaXRvbmVzLCBzdG9yZWQgYXMgUTIyLjEwIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGJhc2VkIG9uIEpBVkEgTU1BUEkgKEpTUi0xMzUpIHJlcXVpcmVtZW50ICovCisgICAgT01YX0JVMzIgc1BsYXlCYWNrUmF0ZTsgICAgICAgLyoqPCBSZWxhdGl2ZSBwbGF5YmFjayByYXRlLCBzdG9yZWQgYXMgUTE0LjE3IGZpeGVkLXBvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgYmFzZWQgb24gSlNSLTEzNSByZXF1aXJlbWVudCAqLworICAgIE9NWF9CVTMyIHNUZW1wbyA7ICAgICAgICAgICAgIC8qKjwgVGVtcG8gaW4gYmVhdHMgcGVyIG1pbnV0ZSAoQlBNKSwgc3RvcmVkIGFzIFEyMi4xMCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkLXBvaW50IG51bWJlciBiYXNlZCBvbiBKU1ItMTM1IHJlcXVpcmVtZW50ICovCisgICAgT01YX1UzMiBuTWF4UG9seXBob255OyAgICAgICAgLyoqPCBTcGVjaWZpZXMgdGhlIG1heGltdW0gc2ltdWx0YW5lb3VzIHBvbHlwaG9uaWMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2ljZXMuIEEgdmFsdWUgb2YgemVybyBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVmYXVsdCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbHlwaG9ueSBvZiB0aGUgZGV2aWNlIGlzIHVzZWQgICovCisgICAgT01YX1UzMiBuTnVtUmVwZWF0OyAgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHBsYXliYWNrICovCisgICAgT01YX1UzMiBuU3RvcFRpbWU7ICAgICAgICAgICAgLyoqPCBUaW1lIGluIG1pbGxpc2Vjb25kcyB0byBpbmRpY2F0ZSB3aGVuIHBsYXliYWNrIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBzdG9wIGF1dG9tYXRpY2FsbHkuICBTZXQgdG8gemVybyBpZiBub3QgdXNlZCAqLworICAgIE9NWF9VMTYgbkNoYW5uZWxNdXRlTWFzazsgICAgIC8qKjwgMTYgYml0IG1hc2sgZm9yIGNoYW5uZWwgbXV0ZSBzdGF0dXMgKi8KKyAgICBPTVhfVTE2IG5DaGFubmVsU29sb01hc2s7ICAgICAvKio8IDE2IGJpdCBtYXNrIGZvciBjaGFubmVsIHNvbG8gc3RhdHVzICovCisgICAgT01YX1UzMiBuVHJhY2swMDMxTXV0ZU1hc2s7ICAgLyoqPCAzMiBiaXQgbWFzayBmb3IgdHJhY2sgbXV0ZSBzdGF0dXMuIE5vdGU6IFRoaXMgaXMgZm9yIHRyYWNrcyAwLTMxICovCisgICAgT01YX1UzMiBuVHJhY2szMjYzTXV0ZU1hc2s7ICAgLyoqPCAzMiBiaXQgbWFzayBmb3IgdHJhY2sgbXV0ZSBzdGF0dXMuIE5vdGU6IFRoaXMgaXMgZm9yIHRyYWNrcyAzMi02MyAqLworICAgIE9NWF9VMzIgblRyYWNrMDAzMVNvbG9NYXNrOyAgIC8qKjwgMzIgYml0IG1hc2sgZm9yIHRyYWNrIHNvbG8gc3RhdHVzLiBOb3RlOiBUaGlzIGlzIGZvciB0cmFja3MgMC0zMSAqLworICAgIE9NWF9VMzIgblRyYWNrMzI2M1NvbG9NYXNrOyAgIC8qKjwgMzIgYml0IG1hc2sgZm9yIHRyYWNrIHNvbG8gc3RhdHVzLiBOb3RlOiBUaGlzIGlzIGZvciB0cmFja3MgMzItNjMgKi8KKworfSBPTVhfQVVESU9fQ09ORklHX01JRElDT05UUk9MVFlQRTsKKworCisvKiogTUlESSBQbGF5YmFjayBTdGF0ZXMgCisgKiBAaW5ncm91cCBtaWRpCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fTUlESVBMQVlCQUNLU1RBVEVUWVBFIHsKKyAgT01YX0FVRElPX01JRElQbGF5QmFja1N0YXRlVW5rbm93biA9IDAsICAgICAgLyoqPCBVbmtub3duIHN0YXRlIG9yIHN0YXRlIGRvZXMgbm90IG1hcCB0byAKKyAgCQkJCQkJCQkJCQkJCW90aGVyIGRlZmluZWQgc3RhdGVzICovCisgIE9NWF9BVURJT19NSURJUGxheUJhY2tTdGF0ZUNsb3NlZEVuZ2FnZWQsICAgIC8qKjwgTm8gTUlESSByZXNvdXJjZSBpcyBjdXJyZW50bHkgb3Blbi4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE1JREkgZW5naW5lIGlzIGN1cnJlbnRseSBwcm9jZXNzaW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JREkgZXZlbnRzLiAqLworICBPTVhfQVVESU9fTUlESVBsYXlCYWNrU3RhdGVQYXJzaW5nLCAgICAgICAgICAvKio8IEEgTUlESSByZXNvdXJjZSBpcyBvcGVuIGFuZCBpcyBiZWluZyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltZWQuIFRoZSBNSURJIGVuZ2luZSBpcyBjdXJyZW50bHkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBNSURJIGV2ZW50cy4gKi8KKyAgT01YX0FVRElPX01JRElQbGF5QmFja1N0YXRlT3BlbkVuZ2FnZWQsICAgICAgLyoqPCBBIE1JREkgcmVzb3VyY2UgaXMgb3BlbiBhbmQgcHJpbWVkIGJ1dCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGxheWluZy4gVGhlIE1JREkgZW5naW5lIGlzIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcgTUlESSBldmVudHMuIFRoZSB0cmFuc2l0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBzdGF0ZSBpcyBvbmx5IHBvc3NpYmxlIGZyb20gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9NWF9BVURJT19NSURJUGxheUJhY2tTdGF0ZVBsYXlpbmcgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgJ3BsYXliYWNrIGhlYWQnIHJlYWNoZXMgdGhlIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1lZGlhIGRhdGEgb3IgdGhlIHBsYXliYWNrIHN0b3BzIGR1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHN0b3AgdGltZSBzZXQuKi8KKyAgT01YX0FVRElPX01JRElQbGF5QmFja1N0YXRlUGxheWluZywgICAgICAgICAgLyoqPCBBIE1JREkgcmVzb3VyY2UgaXMgb3BlbiBhbmQgY3VycmVudGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWluZy4gVGhlIE1JREkgZW5naW5lIGlzIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcgTUlESSBldmVudHMuKi8KKyAgT01YX0FVRElPX01JRElQbGF5QmFja1N0YXRlUGxheWluZ1BhcnRpYWxseSwgLyoqPCBCZXN0LWVmZm9ydCBwbGF5YmFjayBkdWUgdG8gU1AtTUlESS9ETFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSBjb25zdHJhaW50cyAqLworICBPTVhfQVVESU9fTUlESVBsYXlCYWNrU3RhdGVQbGF5aW5nU2lsZW50bHksICAvKio8IER1ZSB0byBzeXN0ZW0gcmVzb3VyY2UgY29uc3RyYWludHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1AtTUlESSBjb250ZW50IGNvbnN0cmFpbnRzLCB0aGVyZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vIGF1ZGlibGUgTUlESSBjb250ZW50IGR1cmluZyBwbGF5YmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseS4gVGhlIHNpdHVhdGlvbiBtYXkgY2hhbmdlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzIGFyZSBmcmVlZCBsYXRlci4qLworICBPTVhfQVVESU9fTUlESVBsYXlCYWNrU3RhdGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgIE9NWF9BVURJT19NSURJUGxheUJhY2tTdGF0ZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgIE9NWF9BVURJT19NSURJUGxheUJhY2tTdGF0ZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0FVRElPX01JRElQTEFZQkFDS1NUQVRFVFlQRTsKKworCisvKiogTUlESSBzdGF0dXMgCisgKiBAaW5ncm91cCBtaWRpCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfTUlESVNUQVRVU1RZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9VMTYgbk51bVRyYWNrczsgICAgICAgICAvKio8IE51bWJlciBvZiBNSURJIHRyYWNrcyBpbiB0aGUgZmlsZSwgcmVhZCBvbmx5IGZpZWxkLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1RFOiBNYXkgbm90IHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgdW50aWwgdGhlIGVudGlyZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGlzIHBhcnNlZCBhbmQgYnVmZmVyZWQuICAqLworICAgIE9NWF9VMzIgbkR1cmF0aW9uOyAgICAgICAgICAvKio8IFRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnRseSBvcGVuIE1JREkgcmVzb3VyY2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzLiBOT1RFOiBNYXkgbm90IHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgdGhlIGVudGlyZSBmaWxlIGlzIHBhcnNlZCBhbmQgYnVmZmVyZWQuICAqLyAgCisgICAgT01YX1UzMiBuUG9zaXRpb247ICAgICAgICAgIC8qKjwgQ3VycmVudCBQb3NpdGlvbiBvZiB0aGUgTUlESSByZXNvdXJjZSBiZWluZyBwbGF5ZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzICovCisgICAgT01YX0JPT0wgYlZpYnJhOyAgICAgICAgICAgIC8qKjwgRG9lcyBWaWJyYSB0cmFjayBleGlzdD8gTk9URTogTWF5IG5vdCByZXR1cm4gYSBtZWFuaW5nZnVsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIHVudGlsIHRoZSBlbnRpcmUgZmlsZSBpcyBwYXJzZWQgYW5kIGJ1ZmZlcmVkLiAqLworICAgIE9NWF9VMzIgbk51bU1ldGFFdmVudHM7ICAgICAvKio8IFRvdGFsIG51bWJlciBvZiBNSURJIE1ldGEgRXZlbnRzIGluIHRoZSBjdXJyZW50bHkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiBNSURJIHJlc291cmNlLiBOT1RFOiBNYXkgbm90IHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgdGhlIGVudGlyZSBmaWxlIGlzIHBhcnNlZCBhbmQgYnVmZmVyZWQuICAqLworICAgIE9NWF9VMzIgbk51bUFjdGl2ZVZvaWNlczsgICAvKio8IE51bWJlciBvZiBhY3RpdmUgdm9pY2VzIGluIHRoZSBjdXJyZW50bHkgcGxheWluZyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIHJlc291cmNlLiBOT1RFOiBNYXkgbm90IHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgdW50aWwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBmaWxlIGlzIHBhcnNlZCBhbmQgYnVmZmVyZWQuICovCisgICAgT01YX0FVRElPX01JRElQTEFZQkFDS1NUQVRFVFlQRSBlTUlESVBsYXlCYWNrU3RhdGU7ICAvKio8IE1JREkgcGxheWJhY2sgc3RhdGUgZW51bWVyYXRpb24sIHJlYWQgb25seSBmaWVsZCAqLworfSBPTVhfQVVESU9fQ09ORklHX01JRElTVEFUVVNUWVBFOworCisKKy8qKiBNSURJIE1ldGEgRXZlbnQgc3RydWN0dXJlIG9uZSBwZXIgTWV0YSBFdmVudC4KKyAqICBNSURJIE1ldGEgRXZlbnRzIGFyZSBsaWtlIGF1ZGlvIG1ldGFkYXRhLCBleGNlcHQgdGhhdCB0aGV5IGFyZSBpbnRlcnNwZXJzZWQgCisgKiAgd2l0aCB0aGUgTUlESSBjb250ZW50IHRocm91Z2hvdXQgdGhlIGZpbGUgYW5kIGFyZSBub3QgbG9jYWxpemVkIGluIHRoZSBoZWFkZXIuIAorICogIEFzIHN1Y2gsIGl0IGlzIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBNZXRhIEV2ZW50cyBmcm9tIAorICogIHRoZSBlbmdpbmUsIGFzIGl0IGVuY291bnRlcnMgdGhlc2UgTWV0YSBFdmVudHMgd2l0aGluIHRoZSBNSURJIGNvbnRlbnQuIAorICogIEZvciBleGFtcGxlLCBTTUYgZmlsZXMgY2FuIGhhdmUgdXAgdG8gMTQgdHlwZXMgb2YgTUlESSBNZXRhIEV2ZW50cyAoY29weXJpZ2h0LCAKKyAqICBhdXRob3IsIGRlZmF1bHQgdGVtcG8sIGV0Yy4pIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSBmaWxlLiAKKyAqICBAaW5ncm91cCBtaWRpCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfTUlESU1FVEFFVkVOVFRZUEV7IAorICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8gCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8gCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovIAorICAgIE9NWF9VMzIgbkluZGV4OyAgICAgICAgICAgLyoqPCBJbmRleCBvZiBNZXRhIEV2ZW50ICovIAorICAgIE9NWF9VOCBuTWV0YUV2ZW50VHlwZTsgICAgLyoqPCBNZXRhIEV2ZW50IFR5cGUsIDdiaXRzIChpLmUuIDAgLSAxMjcpICovIAorICAgIE9NWF9VMzIgbk1ldGFFdmVudFNpemU7ICAgLyoqPCBzaXplIG9mIHRoZSBNZXRhIEV2ZW50IGluIGJ5dGVzICovIAorICAgIE9NWF9VMzIgblRyYWNrOyAgICAgICAgICAgLyoqPCB0cmFjayBudW1iZXIgZm9yIHRoZSBtZXRhIGV2ZW50ICovCisgICAgT01YX1UzMiBuUG9zaXRpb247ICAgICAgICAvKio8IFBvc2l0aW9uIG9mIHRoZSBtZXRhLWV2ZW50IGluIG1pbGxpc2Vjb25kcyAqLworfSBPTVhfQVVESU9fQ09ORklHX01JRElNRVRBRVZFTlRUWVBFOyAKKworCisvKiogTUlESSBNZXRhIEV2ZW50IERhdGEgc3RydWN0dXJlIC0gb25lIHBlciBNZXRhIEV2ZW50LiAKKyAqIEBpbmdyb3VwIG1pZGkKKyAqLyAKK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfTUlESU1FVEFFVkVOVERBVEFUWVBFeyAKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLyAKKyAgICBPTVhfVTMyIG5JbmRleDsgICAgICAgICAgIC8qKjwgSW5kZXggb2YgTWV0YSBFdmVudCAqLyAKKyAgICBPTVhfVTMyIG5NZXRhRXZlbnRTaXplOyAgIC8qKjwgc2l6ZSBvZiB0aGUgTWV0YSBFdmVudCBpbiBieXRlcyAqLyAKKyAgICBPTVhfVTggbkRhdGFbMV07ICAgICAgICAgIC8qKjwgYXJyYXkgb2Ygb25lIG9yIG1vcmUgYnl0ZXMgb2YgbWV0YSBkYXRhIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBpbmRpY2F0ZWQgYnkgdGhlIG5NZXRhRXZlbnRTaXplIGZpZWxkICovIAorfSBPTVhfQVVESU9fQ09ORklHX19NSURJTUVUQUVWRU5UREFUQVRZUEU7IAorCisKKy8qKiBBdWRpbyBWb2x1bWUgYWRqdXN0bWVudCBmb3IgYSBwb3J0ICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX1ZPTFVNRVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgLyoqPCBQb3J0IGluZGV4IGluZGljYXRpbmcgd2hpY2ggcG9ydCB0byAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQuICBTZWxlY3QgdGhlIGlucHV0IHBvcnQgdG8gc2V0IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3QgdGhhdCBwb3J0J3Mgdm9sdW1lLiAgU2VsZWN0IHRoZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgcG9ydCB0byBhZGp1c3QgdGhlIG1hc3RlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2x1bWUuICovCisgICAgT01YX0JPT0wgYkxpbmVhcjsgICAgICAgICAgIC8qKjwgSXMgdGhlIHZvbHVtZSB0byBiZSBzZXQgaW4gbGluZWFyICgwLjEwMCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbG9nYXJpdGhtaWMgc2NhbGUgKG1CKSAqLworICAgIE9NWF9CUzMyIHNWb2x1bWU7ICAgICAgICAgICAvKio8IFZvbHVtZSBsaW5lYXIgc2V0dGluZyBpbiB0aGUgMC4uMTAwIHJhbmdlLCBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvbHVtZSBsb2dhcml0aG1pYyBzZXR0aW5nIGZvciB0aGlzIHBvcnQuICBUaGUgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZvbHVtZSBhcmUgaW4gbUIgKG1pbGxpYmVscyA9IDEvMTAwIGRCKSByZWxhdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGEgZ2FpbiBvZiAxIChlLmcuIHRoZSBvdXRwdXQgaXMgdGhlIHNhbWUgYXMgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IGxldmVsKS4gIFZhbHVlcyBhcmUgaW4gbUIgZnJvbSBuTWF4IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXhpbXVtIHZvbHVtZSkgdG8gbk1pbiBtQiAodHlwaWNhbGx5IG5lZ2F0aXZlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5jZSB0aGUgdm9sdW1lIGlzICJ2b2x0YWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgYSAicG93ZXIiLCBpdCB0YWtlcyBhIHNldHRpbmcgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtNjAwIG1CIHRvIGRlY3JlYXNlIHRoZSB2b2x1bWUgYnkgMS8yLiAgSWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNvbXBvbmVudCBjYW5ub3QgYWNjdXJhdGVseSBzZXQgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbHVtZSB0byB0aGUgcmVxdWVzdGVkIHZhbHVlLCBpdCBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRoZSB2b2x1bWUgdG8gdGhlIGNsb3Nlc3QgdmFsdWUgQkVMT1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWVzdGVkIHZhbHVlLiAgV2hlbiBnZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbHVtZSBzZXR0aW5nLCB0aGUgY3VycmVudCBhY3R1YWwgdm9sdW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSByZXR1cm5lZC4gKi8KK30gT01YX0FVRElPX0NPTkZJR19WT0xVTUVUWVBFOworCisKKy8qKiBBdWRpbyBWb2x1bWUgYWRqdXN0bWVudCBmb3IgYSBjaGFubmVsICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0NIQU5ORUxWT0xVTUVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgUG9ydCBpbmRleCBpbmRpY2F0aW5nIHdoaWNoIHBvcnQgdG8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LiAgU2VsZWN0IHRoZSBpbnB1dCBwb3J0IHRvIHNldCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IHRoYXQgcG9ydCdzIHZvbHVtZS4gIFNlbGVjdCB0aGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHBvcnQgdG8gYWRqdXN0IHRoZSBtYXN0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sdW1lLiAqLworICAgIE9NWF9VMzIgbkNoYW5uZWw7ICAgICAgICAgICAvKio8IGNoYW5uZWwgdG8gc2VsZWN0IGZyb20gMCB0byBOLTEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIE9NWF9BTEwgdG8gYXBwbHkgdm9sdW1lIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWxsIGNoYW5uZWxzICovCisgICAgT01YX0JPT0wgYkxpbmVhcjsgICAgICAgICAgIC8qKjwgSXMgdGhlIHZvbHVtZSB0byBiZSBzZXQgaW4gbGluZWFyICgwLjEwMCkgb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nYXJpdGhtaWMgc2NhbGUgKG1CKSAqLworICAgIE9NWF9CUzMyIHNWb2x1bWU7ICAgICAgICAgICAvKio8IFZvbHVtZSBsaW5lYXIgc2V0dGluZyBpbiB0aGUgMC4uMTAwIHJhbmdlLCBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvbHVtZSBsb2dhcml0aG1pYyBzZXR0aW5nIGZvciB0aGlzIHBvcnQuICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWVzIGZvciB2b2x1bWUgYXJlIGluIG1CIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaWxsaWJlbHMgPSAxLzEwMCBkQikgcmVsYXRpdmUgdG8gYSBnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgMSAoZS5nLiB0aGUgb3V0cHV0IGlzIHRoZSBzYW1lIGFzIHRoZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCBsZXZlbCkuICBWYWx1ZXMgYXJlIGluIG1CIGZyb20gbk1heCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4aW11bSB2b2x1bWUpIHRvIG5NaW4gbUIgKHR5cGljYWxseSBuZWdhdGl2ZSkuICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5jZSB0aGUgdm9sdW1lIGlzICJ2b2x0YWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgYSAicG93ZXIiLCBpdCB0YWtlcyBhIHNldHRpbmcgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtNjAwIG1CIHRvIGRlY3JlYXNlIHRoZSB2b2x1bWUgYnkgMS8yLiAgSWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNvbXBvbmVudCBjYW5ub3QgYWNjdXJhdGVseSBzZXQgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbHVtZSB0byB0aGUgcmVxdWVzdGVkIHZhbHVlLCBpdCBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRoZSB2b2x1bWUgdG8gdGhlIGNsb3Nlc3QgdmFsdWUgQkVMT1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWVzdGVkIHZhbHVlLiAgV2hlbiBnZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbHVtZSBzZXR0aW5nLCB0aGUgY3VycmVudCBhY3R1YWwgdm9sdW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSByZXR1cm5lZC4gKi8KKyAgICBPTVhfQk9PTCBiSXNNSURJOyAgICAgICAgICAgLyoqPCBUUlVFIGlmIG5DaGFubmVsIHJlZmVycyB0byBhIE1JREkgY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSBvdGhlcndpc2UgKi8KK30gT01YX0FVRElPX0NPTkZJR19DSEFOTkVMVk9MVU1FVFlQRTsKKworCisvKiogQXVkaW8gYmFsYW5jZSBzZXR0aW5nICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0JBTEFOQ0VUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgUG9ydCBpbmRleCBpbmRpY2F0aW5nIHdoaWNoIHBvcnQgdG8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LiAgU2VsZWN0IHRoZSBpbnB1dCBwb3J0IHRvIHNldCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IHRoYXQgcG9ydCdzIGJhbGFuY2UuICBTZWxlY3QgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBwb3J0IHRvIGFkanVzdCB0aGUgbWFzdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbGFuY2UuICovCisgICAgT01YX1MzMiBuQmFsYW5jZTsgICAgICAgICAgIC8qKjwgYmFsYW5jZSBzZXR0aW5nIGZvciB0aGlzIHBvcnQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xMDAgdG8gMTAwLCB3aGVyZSAtMTAwIGluZGljYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBsZWZ0LCBhbmQgbm8gcmlnaHQgKi8KK30gT01YX0FVRElPX0NPTkZJR19CQUxBTkNFVFlQRTsKKworCisvKiogQXVkaW8gUG9ydCBtdXRlICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX01VVEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgIC8qKjwgUG9ydCBpbmRleCBpbmRpY2F0aW5nIHdoaWNoIHBvcnQgdG8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LiAgU2VsZWN0IHRoZSBpbnB1dCBwb3J0IHRvIHNldCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0IHRoYXQgcG9ydCdzIG11dGUuICBTZWxlY3QgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBwb3J0IHRvIGFkanVzdCB0aGUgbWFzdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGUuICovCisgICAgT01YX0JPT0wgYk11dGU7ICAgICAgICAgICAgIC8qKjwgTXV0ZSBzZXR0aW5nIGZvciB0aGlzIHBvcnQgKi8KK30gT01YX0FVRElPX0NPTkZJR19NVVRFVFlQRTsKKworCisvKiogQXVkaW8gQ2hhbm5lbCBtdXRlICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0NIQU5ORUxNVVRFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1UzMiBuQ2hhbm5lbDsgICAgICAgICAgIC8qKjwgY2hhbm5lbCB0byBzZWxlY3QgZnJvbSAwIHRvIE4tMSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgT01YX0FMTCB0byBhcHBseSBtdXRlIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWxsIGNoYW5uZWxzICovCisgICAgT01YX0JPT0wgYk11dGU7ICAgICAgICAgICAgIC8qKjwgTXV0ZSBzZXR0aW5nIGZvciB0aGlzIGNoYW5uZWwgKi8KKyAgICBPTVhfQk9PTCBiSXNNSURJOyAgICAgICAgICAgLyoqPCBUUlVFIGlmIG5DaGFubmVsIHJlZmVycyB0byBhIE1JREkgY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSBvdGhlcndpc2UgKi8gCit9IE9NWF9BVURJT19DT05GSUdfQ0hBTk5FTE1VVEVUWVBFOworCisKKworLyoqIEVuYWJsZSAvIERpc2FibGUgZm9yIGxvdWRuZXNzIGNvbnRyb2wsIHdoaWNoIGJvb3N0cyBiYXNzIGFuZCB0byBhIAorICogIHNtYWxsZXIgZXh0ZW50IGhpZ2ggZW5kIGZyZXF1ZW5jaWVzIHRvIGNvbXBlbnNhdGUgZm9yIGhlYXJpbmcKKyAqICBhYmlsaXR5IGF0IHRoZSBleHRyZW1lIGVuZHMgb2YgdGhlIGF1ZGlvIHNwZWN0cnVtCisgKi8gCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0xPVURORVNTVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkxvdWRuZXNzOyAgICAgICAgLyoqPCBFbmFibGUvZGlzYWJsZSBmb3IgbG91ZG5lc3MgKi8KK30gT01YX0FVRElPX0NPTkZJR19MT1VETkVTU1RZUEU7CisKKworLyoqIEVuYWJsZSAvIERpc2FibGUgZm9yIGJhc3MsIHdoaWNoIGNvbnRyb2xzIGxvdyBmcmVxdWVuY2llcworICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX0NPTkZJR19CQVNTVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkVuYWJsZTsgICAgICAgICAgLyoqPCBFbmFibGUvZGlzYWJsZSBmb3IgYmFzcyBjb250cm9sICovCisgICAgT01YX1MzMiBuQmFzczsgICAgICAgICAgICAgLyoqPCBiYXNzIHNldHRpbmcgZm9yIHRoZSBwb3J0LCBhcyBhIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludW91cyB2YWx1ZSBmcm9tIC0xMDAgdG8gMTAwICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwIG1lYW5zIG5vIGNoYW5nZSBpbiBiYXNzIGxldmVsKSovCit9IE9NWF9BVURJT19DT05GSUdfQkFTU1RZUEU7CisKKworLyoqIEVuYWJsZSAvIERpc2FibGUgZm9yIHRyZWJsZSwgd2hpY2ggY29udHJvbHMgaGlnaCBmcmVxdWVuY2llcyB0b25lcworICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX0NPTkZJR19UUkVCTEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfQk9PTCBiRW5hYmxlOyAgICAgICAgICAvKio8IEVuYWJsZS9kaXNhYmxlIGZvciB0cmVibGUgY29udHJvbCAqLworICAgIE9NWF9TMzIgIG5UcmVibGU7ICAgICAgICAgIC8qKjwgdHJlYmxlIHNldHRpbmcgZm9yIHRoZSBwb3J0LCBhcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51b3VzIHZhbHVlIGZyb20gLTEwMCB0byAxMDAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAgbWVhbnMgbm8gY2hhbmdlIGluIHRyZWJsZSBsZXZlbCkgKi8KK30gT01YX0FVRElPX0NPTkZJR19UUkVCTEVUWVBFOworCisKKy8qKiBBbiBlcXVhbGl6ZXIgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIHR3byByZWFzb25zOiB0byBjb21wZW5zYXRlIGZvciBhbiAKKyAqICBzdWItb3B0aW1hbCBmcmVxdWVuY3kgcmVzcG9uc2Ugb2YgYSBzeXN0ZW0gdG8gbWFrZSBpdCBzb3VuZCBtb3JlIG5hdHVyYWwgCisgKiAgb3IgdG8gY3JlYXRlIGludGVudGlvbmFsbHkgc29tZSB1bm5hdHVyYWwgY29sb3JpbmcgdG8gdGhlIHNvdW5kIHRvIGNyZWF0ZQorICogIGFuIGVmZmVjdC4KKyAqICBAaW5ncm91cCBlZmZlY3RzCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfRVFVQUxJWkVSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkVuYWJsZTsgICAgICAgICAgLyoqPCBFbmFibGUvZGlzYWJsZSBmb3IgZXF1YWxpemVyICovCisgICAgT01YX0JVMzIgc0JhbmRJbmRleDsgICAgICAgLyoqPCBCYW5kIG51bWJlciB0byBiZSBzZXQuICBVcHBlciBMaW1pdCBpcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4tMSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIGJhbmRzLCBsb3dlciBsaW1pdCBpcyAwICovCisgICAgT01YX0JVMzIgc0NlbnRlckZyZXE7ICAgICAgLyoqPCBDZW50ZXIgZnJlcXVlY2llcyBpbiBIei4gIFRoaXMgaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCBvbmx5IGVsZW1lbnQgYW5kIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxvd2VyLCBjZW50ZXIgYW5kIHVwcGVyIGZyZXF1ZW5jeSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgYmFuZC4gICovCisgICAgT01YX0JTMzIgc0JhbmRMZXZlbDsgICAgICAgLyoqPCBiYW5kIGxldmVsIGluIG1pbGxpYmVscyAqLworfSBPTVhfQVVESU9fQ09ORklHX0VRVUFMSVpFUlRZUEU7CisKKworLyoqIFN0ZXJlbyB3aWRlbmluZyBtb2RlIHR5cGUgCisgKiBAaW5ncm91cCBlZmZlY3RzCisgKi8gCit0eXBlZGVmIGVudW0gT01YX0FVRElPX1NURVJFT1dJREVOSU5HVFlQRSB7CisgICAgT01YX0FVRElPX1N0ZXJlb1dpZGVuaW5nSGVhZHBob25lcywgICAgLyoqPCBTdGVyZW8gd2lkZW5pbmcgZm9yIGxvdWRzcGVha2VycyAqLworICAgIE9NWF9BVURJT19TdGVyZW9XaWRlbmluZ0xvdWRzcGVha2VycywgIC8qKjwgU3RlcmVvIHdpZGVuaW5nIGZvciBjbG9zZWx5IHNwYWNlZCBsb3Vkc3BlYWtlcnMgKi8KKyAgICBPTVhfQVVESU9fU3RlcmVvV2lkZW5pbmdLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0FVRElPX1N0ZXJlb1dpZGVuaW5nVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQVVESU9fU3RlcmVvV2lkZW5pbmdNYXggPSAweDdGRkZGRkZGCit9IE9NWF9BVURJT19TVEVSRU9XSURFTklOR1RZUEU7CisKKworLyoqIENvbnRyb2wgZm9yIHN0ZXJlbyB3aWRlbmluZywgd2hpY2ggaXMgYSBzcGVjaWFsIDItY2hhbm5lbAorICogIGNhc2Ugb2YgdGhlIGF1ZGlvIHZpcnR1YWxpemVyIGVmZmVjdC4gRm9yIGV4YW1wbGUsIGZvciA1LjEtY2hhbm5lbCAKKyAqICBvdXRwdXQsIGl0IHRyYW5zbGF0ZXMgdG8gdmlydHVhbCBzdXJyb3VuZCBzb3VuZC4gCisgKiBAaW5ncm91cCBlZmZlY3RzCisgKi8gCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX1NURVJFT1dJREVOSU5HVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkVuYWJsZTsgICAgICAgICAgLyoqPCBFbmFibGUvZGlzYWJsZSBmb3Igc3RlcmVvIHdpZGVuaW5nIGNvbnRyb2wgKi8KKyAgICBPTVhfQVVESU9fU1RFUkVPV0lERU5JTkdUWVBFIGVXaWRlbmluZ1R5cGU7IC8qKjwgU3RlcmVvIHdpZGVuaW5nIGFsZ29yaXRobSB0eXBlICovCisgICAgT01YX1UzMiAgblN0ZXJlb1dpZGVuaW5nOyAgLyoqPCBzdGVyZW8gd2lkZW5pbmcgc2V0dGluZyBmb3IgdGhlIHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIGNvbnRpbnVvdXMgdmFsdWUgZnJvbSAwIHRvIDEwMCAgKi8KK30gT01YX0FVRElPX0NPTkZJR19TVEVSRU9XSURFTklOR1RZUEU7CisKKworLyoqIFRoZSBjaG9ydXMgZWZmZWN0IChvciBgYGNob3JhbGl6ZXInJykgaXMgYW55IHNpZ25hbCBwcm9jZXNzb3Igd2hpY2ggbWFrZXMKKyAqICBvbmUgc291bmQgc291cmNlIChzdWNoIGFzIGEgdm9pY2UpIHNvdW5kIGxpa2UgbWFueSBzdWNoIHNvdXJjZXMgc2luZ2luZyAKKyAqICAob3IgcGxheWluZykgaW4gdW5pc29uLiBTaW5jZSBwZXJmb3JtYW5jZSBpbiB1bmlzb24gaXMgbmV2ZXIgZXhhY3QsIGNob3J1cyAKKyAqICBlZmZlY3RzIHNpbXVsYXRlIHRoaXMgYnkgbWFraW5nIGluZGVwZW5kZW50bHkgbW9kaWZpZWQgY29waWVzIG9mIHRoZSBpbnB1dCAKKyAqICBzaWduYWwuIE1vZGlmaWNhdGlvbnMgbWF5IGluY2x1ZGUgKDEpIGRlbGF5LCAoMikgZnJlcXVlbmN5IHNoaWZ0LCBhbmQgCisgKiAgKDMpIGFtcGxpdHVkZSBtb2R1bGF0aW9uLgorICogQGluZ3JvdXAgZWZmZWN0cworICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0NIT1JVU1RZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9CT09MIGJFbmFibGU7ICAgICAgICAgIC8qKjwgRW5hYmxlL2Rpc2FibGUgZm9yIGNob3J1cyAqLworICAgIE9NWF9CVTMyIHNEZWxheTsgICAgICAgICAgIC8qKjwgYXZlcmFnZSBkZWxheSBpbiBtaWxsaXNlY29uZHMgKi8KKyAgICBPTVhfQlUzMiBzTW9kdWxhdGlvblJhdGU7ICAvKio8IHJhdGUgb2YgbW9kdWxhdGlvbiBpbiBtaWxsaWhlcnR6ICovCisgICAgT01YX1UzMiBuTW9kdWxhdGlvbkRlcHRoOyAgLyoqPCBkZXB0aCBvZiBtb2R1bGF0aW9uIGFzIGEgcGVyY2VudGFnZSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5IChpLmUuIDAgdG8gMTAwKSAqLworICAgIE9NWF9CVTMyIG5GZWVkYmFjazsgICAgICAgIC8qKjwgRmVlZGJhY2sgZnJvbSBjaG9ydXMgb3V0cHV0IHRvIGlucHV0IGluIHBlcmNlbnRhZ2UgKi8KK30gT01YX0FVRElPX0NPTkZJR19DSE9SVVNUWVBFOworCisKKy8qKiBSZXZlcmJlcmF0aW9uIGlzIHBhcnQgb2YgdGhlIHJlZmxlY3RlZCBzb3VuZCB0aGF0IGZvbGxvd3MgdGhlIGVhcmx5IAorICogIHJlZmxlY3Rpb25zLiBJbiBhIHR5cGljYWwgcm9vbSwgdGhpcyBjb25zaXN0cyBvZiBhIGRlbnNlIHN1Y2Nlc3Npb24gb2YgCisgKiAgZWNob2VzIHdob3NlIGVuZXJneSBkZWNheXMgZXhwb25lbnRpYWxseS4gVGhlIHJldmVyYmVyYXRpb24gZWZmZWN0IHN0cnVjdHVyZSAKKyAqICBhcyBkZWZpbmVkIGhlcmUgaW5jbHVkZXMgYm90aCAoZWFybHkpIHJlZmxlY3Rpb25zIGFzIHdlbGwgYXMgKGxhdGUpIHJldmVyYmVyYXRpb25zLiAKKyAqIEBpbmdyb3VwIGVmZmVjdHMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0FVRElPX0NPTkZJR19SRVZFUkJFUkFUSU9OVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX0JPT0wgYkVuYWJsZTsgICAgICAgICAgICAgLyoqPCBFbmFibGUvZGlzYWJsZSBmb3IgcmV2ZXJiZXJhdGlvbiBjb250cm9sICovCisgICAgT01YX0JTMzIgc1Jvb21MZXZlbDsgICAgICAgICAgLyoqPCBJbnRlbnNpdHkgbGV2ZWwgZm9yIHRoZSB3aG9sZSByb29tIGVmZmVjdCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGJvdGggZWFybHkgcmVmbGVjdGlvbnMgYW5kIGxhdGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcmJlcmF0aW9uKSBpbiBtaWxsaWJlbHMgKi8KKyAgICBPTVhfQlMzMiBzUm9vbUhpZ2hGcmVxTGV2ZWw7ICAvKio8IEF0dGVudWF0aW9uIGF0IGhpZ2ggZnJlcXVlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlIHRvIHRoZSBpbnRlbnNpdHkgYXQgbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY2llcyBpbiBtaWxsaWJlbHMgKi8KKyAgICBPTVhfQlMzMiBzUmVmbGVjdGlvbnNMZXZlbDsgICAvKio8IEludGVuc2l0eSBsZXZlbCBvZiBlYXJseSByZWZsZWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aXZlIHRvIHJvb20gdmFsdWUpLCBpbiBtaWxsaWJlbHMgKi8KKyAgICBPTVhfQlUzMiBzUmVmbGVjdGlvbnNEZWxheTsgICAvKio8IERlbGF5IHRpbWUgb2YgdGhlIGZpcnN0IHJlZmxlY3Rpb24gcmVsYXRpdmUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGlyZWN0IHBhdGgsIGluIG1pbGxpc2Vjb25kcyAqLworICAgIE9NWF9CUzMyIHNSZXZlcmJMZXZlbDsgICAgICAgIC8qKjwgSW50ZW5zaXR5IGxldmVsIG9mIGxhdGUgcmV2ZXJiZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gcm9vbSBsZXZlbCwgaW4gbWlsbGliZWxzICovCisgICAgT01YX0JVMzIgc1JldmVyYkRlbGF5OyAgICAgICAgLyoqPCBUaW1lIGRlbGF5IGZyb20gdGhlIGZpcnN0IGVhcmx5IHJlZmxlY3Rpb24gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXRlIHJldmVyYmVyYXRpb24gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBpbiBtaWxsaXNlY29uZHMgKi8KKyAgICBPTVhfQlUzMiBzRGVjYXlUaW1lOyAgICAgICAgICAvKio8IExhdGUgcmV2ZXJiZXJhdGlvbiBkZWNheSB0aW1lIGF0IGxvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmNpZXMsIGluIG1pbGxpc2Vjb25kcyAqLworICAgIE9NWF9CVTMyIG5EZWNheUhpZ2hGcmVxUmF0aW87IC8qKjwgUmF0aW8gb2YgaGlnaCBmcmVxdWVuY3kgZGVjYXkgdGltZSByZWxhdGl2ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGxvdyBmcmVxdWVuY3kgZGVjYXkgdGltZSBpbiBwZXJjZW50ICAqLworICAgIE9NWF9VMzIgbkRlbnNpdHk7ICAgICAgICAgICAgIC8qKjwgTW9kYWwgZGVuc2l0eSBpbiB0aGUgbGF0ZSByZXZlcmJlcmF0aW9uIGRlY2F5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gcGVyY2VudCAoaS5lLiAwIC0gMTAwKSAqLworICAgIE9NWF9VMzIgbkRpZmZ1c2lvbjsgICAgICAgICAgIC8qKjwgRWNobyBkZW5zaXR5IGluIHRoZSBsYXRlIHJldmVyYmVyYXRpb24gZGVjYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBwZXJjZW50IChpLmUuIDAgLSAxMDApICovCisgICAgT01YX0JVMzIgc1JlZmVyZW5jZUhpZ2hGcmVxOyAgLyoqPCBSZWZlcmVuY2UgaGlnaCBmcmVxdWVuY3kgaW4gSGVydHouIFRoaXMgaXMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlcXVlbmN5IHVzZWQgYXMgdGhlIHJlZmVyZW5jZSBmb3IgYWxsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhpZ2gtZnJlcXVlbmN5IHNldHRpbmdzIGFib3ZlICovCisKK30gT01YX0FVRElPX0NPTkZJR19SRVZFUkJFUkFUSU9OVFlQRTsKKworCisvKiogUG9zc2libGUgc2V0dGluZ3MgZm9yIHRoZSBFY2hvIENhbmNlbGF0aW9uIHN0cnVjdHVyZSB0byB1c2UgCisgKiBAaW5ncm91cCBlZmZlY3RzCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfQVVESU9fRUNIT0NBTlRZUEUgeworICAgT01YX0FVRElPX0VjaG9DYW5PZmYgPSAwLCAgICAvKio8IEVjaG8gQ2FuY2VsbGF0aW9uIGlzIGRpc2FibGVkICovCisgICBPTVhfQVVESU9fRWNob0Nhbk5vcm1hbCwgICAgIC8qKjwgRWNobyBDYW5jZWxsYXRpb24gbm9ybWFsIG9wZXJhdGlvbiAtIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gZnJvbSBwbGFzdGljcyBhbmQgZmFjZSAqLworICAgT01YX0FVRElPX0VjaG9DYW5IRnJlZSwgICAgICAvKio8IEVjaG8gQ2FuY2VsbGF0aW9uIG9wdGltaXplZCBmb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZHMgRnJlZSBvcGVyYXRpb24gKi8KKyAgIE9NWF9BVURJT19FY2hvQ2FuQ2FyS2l0LCAgICAvKio8IEVjaG8gQ2FuY2VsbGF0aW9uIG9wdGltaXplZCBmb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FyIEtpdCAobG9uZ2VyIGVjaG8pICovCisgICBPTVhfQVVESU9fRWNob0Nhbktocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgIE9NWF9BVURJT19FY2hvQ2FuVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgIE9NWF9BVURJT19FY2hvQ2FuTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfQVVESU9fRUNIT0NBTlRZUEU7CisKKworLyoqIEVuYWJsZSAvIERpc2FibGUgZm9yIGVjaG8gY2FuY2VsYXRpb24sIHdoaWNoIHJlbW92ZXMgdW5kZXNpcmVkIGVjaG8ncworICogIGZyb20gdGhlIGF1ZGlvCisgKiBAaW5ncm91cCBlZmZlY3RzCisgKi8gCit0eXBlZGVmIHN0cnVjdCBPTVhfQVVESU9fQ09ORklHX0VDSE9DQU5DRUxBVElPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9BVURJT19FQ0hPQ0FOVFlQRSBlRWNob0NhbmNlbGF0aW9uOyAvKio8IEVjaG8gY2FuY2VsYXRpb24gc2V0dGluZ3MgKi8KK30gT01YX0FVRElPX0NPTkZJR19FQ0hPQ0FOQ0VMQVRJT05UWVBFOworCisKKy8qKiBFbmFibGUgLyBEaXNhYmxlIGZvciBub2lzZSByZWR1Y3Rpb24sIHdoaWNoIHVuZGVzaXJlZCBub2lzZSBmcm9tCisgKiB0aGUgYXVkaW8KKyAqIEBpbmdyb3VwIGVmZmVjdHMKKyAqLyAKK3R5cGVkZWYgc3RydWN0IE9NWF9BVURJT19DT05GSUdfTk9JU0VSRURVQ1RJT05UWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgIC8qKjwgcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfQk9PTCBiTm9pc2VSZWR1Y3Rpb247ICAvKio8IEVuYWJsZS9kaXNhYmxlIGZvciBub2lzZSByZWR1Y3Rpb24gKi8KK30gT01YX0FVRElPX0NPTkZJR19OT0lTRVJFRFVDVElPTlRZUEU7CisKKy8qKiBAfSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisjZW5kaWYKKy8qIEZpbGUgRU9GICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfQ29tcG9uZW50LmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0NvbXBvbmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1Yjc4NGVhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9Db21wb25lbnQuaApAQCAtMCwwICsxLDU5NiBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBQYWNrZXRWaWRlbworICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlcgorICogZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCisgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggVGhlIEtocm9ub3MgR3JvdXAgSW5jLiAKKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0CisgKiB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAKKyAqIAorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAKKyAqCisgKi8KKworLyoqIE9NWF9Db21wb25lbnQuaCAtIE9wZW5NYXggSUwgdmVyc2lvbiAxLjEuMgorICogIFRoZSBPTVhfQ29tcG9uZW50IGhlYWRlciBmaWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyB1c2VkIHRvIGRlZmluZQorICogIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIGEgY29tcG9uZW50LiAgVGhpcyBoZWFkZXIgZmlsZSBpcyBpbnRlbmRlZCB0bworICogIGJlIHVzZWQgYnkgYm90aCB0aGUgYXBwbGljYXRpb24gYW5kIHRoZSBjb21wb25lbnQuCisgKi8KKworI2lmbmRlZiBPTVhfQ29tcG9uZW50X2gKKyNkZWZpbmUgT01YX0NvbXBvbmVudF9oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworCisKKy8qIEVhY2ggT01YIGhlYWRlciBtdXN0IGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqICBoZWFkZXIgdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQKKyAqICBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworCisjaW5jbHVkZSA8T01YX0F1ZGlvLmg+CisjaW5jbHVkZSA8T01YX1ZpZGVvLmg+CisjaW5jbHVkZSA8T01YX0ltYWdlLmg+CisjaW5jbHVkZSA8T01YX090aGVyLmg+CisKKy8qKiBAaW5ncm91cCBjb21wICovCit0eXBlZGVmIGVudW0gT01YX1BPUlRET01BSU5UWVBFIHsgCisgICAgT01YX1BvcnREb21haW5BdWRpbywgCisgICAgT01YX1BvcnREb21haW5WaWRlbywgCisgICAgT01YX1BvcnREb21haW5JbWFnZSwgCisgICAgT01YX1BvcnREb21haW5PdGhlciwKKyAgICBPTVhfUG9ydERvbWFpbktocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfUG9ydERvbWFpblZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1BvcnREb21haW5NYXggPSAweDdmZmZmZmYKK30gT01YX1BPUlRET01BSU5UWVBFOworCisvKiogQGluZ3JvdXAgY29tcCAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX1BPUlRERUZJTklUSU9OVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgIC8qKjwgU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgICAvKio8IFBvcnQgbnVtYmVyIHRoZSBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9ESVJUWVBFIGVEaXI7ICAgICAgICAgICAgICAvKio8IERpcmVjdGlvbiAoaW5wdXQgb3Igb3V0cHV0KSBvZiB0aGlzIHBvcnQgKi8KKyAgICBPTVhfVTMyIG5CdWZmZXJDb3VudEFjdHVhbDsgICAgLyoqPCBUaGUgYWN0dWFsIG51bWJlciBvZiBidWZmZXJzIGFsbG9jYXRlZCBvbiB0aGlzIHBvcnQgKi8KKyAgICBPTVhfVTMyIG5CdWZmZXJDb3VudE1pbjsgICAgICAgLyoqPCBUaGUgbWluaW11bSBudW1iZXIgb2YgYnVmZmVycyB0aGlzIHBvcnQgcmVxdWlyZXMgKi8KKyAgICBPTVhfVTMyIG5CdWZmZXJTaXplOyAgICAgICAgICAgLyoqPCBTaXplLCBpbiBieXRlcywgZm9yIGJ1ZmZlcnMgdG8gYmUgdXNlZCBmb3IgdGhpcyBjaGFubmVsICovCisgICAgT01YX0JPT0wgYkVuYWJsZWQ7ICAgICAgICAgICAgIC8qKjwgUG9ydHMgZGVmYXVsdCB0byBlbmFibGVkIGFuZCBhcmUgZW5hYmxlZC9kaXNhYmxlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9NWF9Db21tYW5kUG9ydEVuYWJsZS9PTVhfQ29tbWFuZFBvcnREaXNhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gZGlzYWJsZWQgYSBwb3J0IGlzIHVucG9wdWxhdGVkLiBBIGRpc2FibGVkIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgcG9wdWxhdGVkIHdpdGggYnVmZmVycyBvbiBhIHRyYW5zaXRpb24gdG8gSURMRS4gKi8KKyAgICBPTVhfQk9PTCBiUG9wdWxhdGVkOyAgICAgICAgICAgLyoqPCBQb3J0IGlzIHBvcHVsYXRlZCB3aXRoIGFsbCBvZiBpdHMgYnVmZmVycyBhcyBpbmRpY2F0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuQnVmZmVyQ291bnRBY3R1YWwuIEEgZGlzYWJsZWQgcG9ydCBpcyBhbHdheXMgdW5wb3B1bGF0ZWQuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGVuYWJsZWQgcG9ydCBpcyBwb3B1bGF0ZWQgb24gYSB0cmFuc2l0aW9uIHRvIE9NWF9TdGF0ZUlkbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdW5wb3B1bGF0ZWQgb24gYSB0cmFuc2l0aW9uIHRvIGxvYWRlZC4gKi8KKyAgICBPTVhfUE9SVERPTUFJTlRZUEUgZURvbWFpbjsgICAgLyoqPCBEb21haW4gb2YgdGhlIHBvcnQuIERldGVybWluZXMgdGhlIGNvbnRlbnRzIG9mIG1ldGFkYXRhIGJlbG93LiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgT01YX0FVRElPX1BPUlRERUZJTklUSU9OVFlQRSBhdWRpbzsKKyAgICAgICAgT01YX1ZJREVPX1BPUlRERUZJTklUSU9OVFlQRSB2aWRlbzsKKyAgICAgICAgT01YX0lNQUdFX1BPUlRERUZJTklUSU9OVFlQRSBpbWFnZTsKKyAgICAgICAgT01YX09USEVSX1BPUlRERUZJTklUSU9OVFlQRSBvdGhlcjsKKyAgICB9IGZvcm1hdDsKKyAgICBPTVhfQk9PTCBiQnVmZmVyc0NvbnRpZ3VvdXM7CisgICAgT01YX1UzMiBuQnVmZmVyQWxpZ25tZW50OworfSBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFOworCisvKiogQGluZ3JvdXAgY29tcCAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX1UzMlRZUEUgeyAKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgICAgLyoqPCBTaXplIG9mIHRoaXMgc3RydWN0dXJlLCBpbiBCeXRlcyAqLyAKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovIAorICAgIE9NWF9VMzIgblUzMjsgICAgICAgICAgICAgICAgICAgICAvKio8IFUzMiB2YWx1ZSAqLworfSBPTVhfUEFSQU1fVTMyVFlQRTsKKworLyoqIEBpbmdyb3VwIHJwbSAqLwordHlwZWRlZiBlbnVtIE9NWF9TVVNQRU5TSU9OUE9MSUNZVFlQRSB7CisgICAgT01YX1N1c3BlbnNpb25EaXNhYmxlZCwgLyoqPCBObyBzdXNwZW5zaW9uOyB2MS4wIGJlaGF2aW9yICovCisgICAgT01YX1N1c3BlbnNpb25FbmFibGVkLCAgLyoqPCBTdXNwZW5zaW9uIGFsbG93ZWQgKi8gICAKKyAgICBPTVhfU3VzcGVuc2lvblBvbGljeUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfU3VzcGVuc2lvblBvbGljeVN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1N1c3BlbnNpb25Qb2xpY3lNYXggPSAweDdmZmZmZmZmCit9IE9NWF9TVVNQRU5TSU9OUE9MSUNZVFlQRTsKKworLyoqIEBpbmdyb3VwIHJwbSAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX1NVU1BFTlNJT05QT0xJQ1lUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAgIAorICAgIE9NWF9TVVNQRU5TSU9OUE9MSUNZVFlQRSBlUG9saWN5OworfSBPTVhfUEFSQU1fU1VTUEVOU0lPTlBPTElDWVRZUEU7CisKKy8qKiBAaW5ncm91cCBycG0gKi8KK3R5cGVkZWYgZW51bSBPTVhfU1VTUEVOU0lPTlRZUEUgeworICAgIE9NWF9Ob3RTdXNwZW5kZWQsIC8qKjwgY29tcG9uZW50IGlzIG5vdCBzdXNwZW5kZWQgKi8KKyAgICBPTVhfU3VzcGVuZGVkLCAgICAvKio8IGNvbXBvbmVudCBpcyBzdXNwZW5kZWQgKi8KKyAgICBPTVhfU3VzcGVuc2lvbktocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfU3VzcGVuc2lvblZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1N1c3BlbmRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9TVVNQRU5TSU9OVFlQRTsKKworLyoqIEBpbmdyb3VwIHJwbSAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX1NVU1BFTlNJT05UWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgIAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAgCisgICAgT01YX1NVU1BFTlNJT05UWVBFIGVUeXBlOyAgICAgICAgICAgICAKK30gT01YX1BBUkFNX1NVU1BFTlNJT05UWVBFIDsKKwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19CT09MRUFOVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX0JPT0wgYkVuYWJsZWQ7ICAgIAorfSBPTVhfQ09ORklHX0JPT0xFQU5UWVBFOworCisvKiBQYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgY29udGVudCB1cmkgdG8gdXNlLiAqLworLyoqIEBpbmdyb3VwIGNwICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUEFSQU1fQ09OVEVOVFVSSVRZUEUKK3sKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcywgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgVVJJIG5hbWUgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVTggY29udGVudFVSSVsxXTsgICAgICAgICAgICAgICAvKio8IFRoZSBVUkkgbmFtZSAqLworfSBPTVhfUEFSQU1fQ09OVEVOVFVSSVRZUEU7CisKKy8qIFBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBwaXBlIHRvIHVzZS4gKi8KKy8qKiBAaW5ncm91cCBjcCAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX0NPTlRFTlRQSVBFVFlQRQoreworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfSEFORExFVFlQRSBoUGlwZTsgICAgICAgLyoqPCBUaGUgcGlwZSBoYW5kbGUqLworfSBPTVhfUEFSQU1fQ09OVEVOVFBJUEVUWVBFOworCisvKiogQGluZ3JvdXAgcnBtICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUkVTT1VSQ0VDT05DRUFMTUVOVFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX0JPT0wgYlJlc291cmNlQ29uY2VhbG1lbnRGb3JiaWRkZW47IC8qKjwgZGlzYWxsb3cgdGhlIHVzZSBvZiByZXNvdXJjZSBjb25jZWFsbWVudCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kcyAobGlrZSBkZWdyYWRpbmcgYWxnb3JpdGhtIHF1YWxpdHkgdG8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyIHJlc291cmNlIGNvbnN1bXB0aW9uIG9yIGZ1bmN0aW9uYWwgYnlwYXNzKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gYSBjb21wb25lbnQgYXMgYSByZXNvbHV0aW9uIHRvIHJlc291cmNlIGNvbmZsaWN0cy4gKi8KK30gT01YX1JFU09VUkNFQ09OQ0VBTE1FTlRUWVBFOworCisKKy8qKiBAaW5ncm91cCBtZXRhZGF0YSAqLwordHlwZWRlZiBlbnVtIE9NWF9NRVRBREFUQUNIQVJTRVRUWVBFIHsKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0VW5rbm93biA9IDAsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldEFTQ0lJLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRCaW5hcnksCisgICAgT01YX01ldGFkYXRhQ2hhcnNldENvZGVQYWdlMTI1MiwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0VVRGOCwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SmF2YUNvbmZvcm1hbnRVVEY4LAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRVVEY3LAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJbWFwVVRGNywKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0VVRGMTZMRSwgCisgICAgT01YX01ldGFkYXRhQ2hhcnNldFVURjE2QkUsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldEdCMTIzNDUsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldEhaR0IyMzEyLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRHQjIzMTIsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldEdCMTgwMzAsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldEdCSywKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0QmlnNSwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPODg1OTEsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldElTTzg4NTkyLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU084ODU5MywKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPODg1OTQsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldElTTzg4NTk1LAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU084ODU5NiwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPODg1OTcsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldElTTzg4NTk4LAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU084ODU5OSwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPODg1OTEwLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU084ODU5MTMsCisgICAgT01YX01ldGFkYXRhQ2hhcnNldElTTzg4NTkxNCwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPODg1OTE1LAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRTaGlmdEpJUywKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0SVNPMjAyMkpQLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU08yMDIySlAxLAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRJU09FVUNKUCwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0U01TN0JpdCwKKyAgICBPTVhfTWV0YWRhdGFDaGFyc2V0S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9NZXRhZGF0YUNoYXJzZXRUeXBlTWF4PSAweDdGRkZGRkZGCit9IE9NWF9NRVRBREFUQUNIQVJTRVRUWVBFOworCisvKiogQGluZ3JvdXAgbWV0YWRhdGEgKi8KK3R5cGVkZWYgZW51bSBPTVhfTUVUQURBVEFTQ09QRVRZUEUKK3sKKyAgICBPTVhfTWV0YWRhdGFTY29wZUFsbExldmVscywKKyAgICBPTVhfTWV0YWRhdGFTY29wZVRvcExldmVsLAorICAgIE9NWF9NZXRhZGF0YVNjb3BlUG9ydExldmVsLAorICAgIE9NWF9NZXRhZGF0YVNjb3BlTm9kZUxldmVsLAorICAgIE9NWF9NZXRhZGF0YVNjb3BlS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9NZXRhZGF0YVNjb3BlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfTWV0YWRhdGFTY29wZVR5cGVNYXggPSAweDdmZmZmZmZmCit9IE9NWF9NRVRBREFUQVNDT1BFVFlQRTsKKworLyoqIEBpbmdyb3VwIG1ldGFkYXRhICovCit0eXBlZGVmIGVudW0gT01YX01FVEFEQVRBU0VBUkNITU9ERVRZUEUKK3sKKyAgICBPTVhfTWV0YWRhdGFTZWFyY2hWYWx1ZVNpemVCeUluZGV4LAorICAgIE9NWF9NZXRhZGF0YVNlYXJjaEl0ZW1CeUluZGV4LAorICAgIE9NWF9NZXRhZGF0YVNlYXJjaE5leHRJdGVtQnlLZXksCisgICAgT01YX01ldGFkYXRhU2VhcmNoS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9NZXRhZGF0YVNlYXJjaFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX01ldGFkYXRhU2VhcmNoVHlwZU1heCA9IDB4N2ZmZmZmZmYKK30gT01YX01FVEFEQVRBU0VBUkNITU9ERVRZUEU7CisvKiogQGluZ3JvdXAgbWV0YWRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfTUVUQURBVEFJVEVNQ09VTlRUWVBFCit7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX01FVEFEQVRBU0NPUEVUWVBFIGVTY29wZU1vZGU7CisgICAgT01YX1UzMiBuU2NvcGVTcGVjaWZpZXI7CisgICAgT01YX1UzMiBuTWV0YWRhdGFJdGVtQ291bnQ7Cit9IE9NWF9DT05GSUdfTUVUQURBVEFJVEVNQ09VTlRUWVBFOworCisvKiogQGluZ3JvdXAgbWV0YWRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfTUVUQURBVEFJVEVNVFlQRQoreworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9NRVRBREFUQVNDT1BFVFlQRSBlU2NvcGVNb2RlOworICAgIE9NWF9VMzIgblNjb3BlU3BlY2lmaWVyOworICAgIE9NWF9VMzIgbk1ldGFkYXRhSXRlbUluZGV4OyAgCisgICAgT01YX01FVEFEQVRBU0VBUkNITU9ERVRZUEUgZVNlYXJjaE1vZGU7CisgICAgT01YX01FVEFEQVRBQ0hBUlNFVFRZUEUgZUtleUNoYXJzZXQ7CisgICAgT01YX1U4IG5LZXlTaXplVXNlZDsKKyAgICBPTVhfVTggbktleVsxMjhdOworICAgIE9NWF9NRVRBREFUQUNIQVJTRVRUWVBFIGVWYWx1ZUNoYXJzZXQ7CisgICAgT01YX1NUUklORyBzTGFuZ3VhZ2VDb3VudHJ5OworICAgIE9NWF9VMzIgblZhbHVlTWF4U2l6ZTsKKyAgICBPTVhfVTMyIG5WYWx1ZVNpemVVc2VkOworICAgIE9NWF9VOCBuVmFsdWVbMV07Cit9IE9NWF9DT05GSUdfTUVUQURBVEFJVEVNVFlQRTsKKworLyogQGluZ3JvdXAgbWV0YWRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfQ09OVEFJTkVSTk9ERUNPVU5UVFlQRQoreworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9CT09MIGJBbGxLZXlzOworICAgIE9NWF9VMzIgblBhcmVudE5vZGVJRDsKKyAgICBPTVhfVTMyIG5OdW1Ob2RlczsKK30gT01YX0NPTkZJR19DT05UQUlORVJOT0RFQ09VTlRUWVBFOworCisvKiogQGluZ3JvdXAgbWV0YWRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfQ09OVEFJTkVSTk9ERUlEVFlQRQoreworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9CT09MIGJBbGxLZXlzOworICAgIE9NWF9VMzIgblBhcmVudE5vZGVJRDsKKyAgICBPTVhfVTMyIG5Ob2RlSW5kZXg7IAorICAgIE9NWF9VMzIgbk5vZGVJRDsgCisgICAgT01YX1NUUklORyBjTm9kZU5hbWU7CisgICAgT01YX0JPT0wgYklzTGVhZlR5cGU7Cit9IE9NWF9DT05GSUdfQ09OVEFJTkVSTk9ERUlEVFlQRTsKKworLyoqIEBpbmdyb3VwIG1ldGFkYXRhICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUEFSQU1fTUVUQURBVEFGSUxURVJUWVBFIAoreyAKKyAgICBPTVhfVTMyIG5TaXplOyAKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IAorICAgIE9NWF9CT09MIGJBbGxLZXlzOwkvKiBpZiB0cnVlIHRoZW4gdGhpcyBzdHJ1Y3R1cmUgcmVmZXJzIHRvIGFsbCBrZXlzIGFuZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSB0aHJlZSBrZXkgZmllbGRzIGJlbG93IGFyZSBpZ25vcmVkICovCisgICAgT01YX01FVEFEQVRBQ0hBUlNFVFRZUEUgZUtleUNoYXJzZXQ7CisgICAgT01YX1UzMiBuS2V5U2l6ZVVzZWQ7IAorICAgIE9NWF9VOCAgIG5LZXkgWzEyOF07IAorICAgIE9NWF9VMzIgbkxhbmd1YWdlQ291bnRyeVNpemVVc2VkOworICAgIE9NWF9VOCBuTGFuZ3VhZ2VDb3VudHJ5WzEyOF07CisgICAgT01YX0JPT0wgYkVuYWJsZWQ7CS8qIGlmIHRydWUgdGhlbiBrZXkgaXMgcGFydCBvZiBmaWx0ZXIgKGUuZy4gCisgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXRhaW5lZCBmb3IgcXVlcnkgbGF0ZXIpLiBJZiBmYWxzZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBrZXkgaXMgbm90IHBhcnQgb2YgZmlsdGVyICovCit9IE9NWF9QQVJBTV9NRVRBREFUQUZJTFRFUlRZUEU7IAorCisvKiogVGhlIE9NWF9IQU5ETEVUWVBFIHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBjb21wb25lbnQgaGFuZGxlLiAgVGhlIGNvbXBvbmVudCAKKyAqICBoYW5kbGUgaXMgdXNlZCB0byBhY2Nlc3MgYWxsIG9mIHRoZSBjb21wb25lbnQncyBwdWJsaWMgbWV0aG9kcyBhbmQgYWxzbworICogIGNvbnRhaW5zIHBvaW50ZXJzIHRvIHRoZSBjb21wb25lbnQncyBwcml2YXRlIGRhdGEgYXJlYS4gIFRoZSBjb21wb25lbnQKKyAqICBoYW5kbGUgaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIE9NWCBjb3JlICh3aXRoIGhlbHAgZnJvbSB0aGUgY29tcG9uZW50KQorICogIGR1cmluZyB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBjb21wb25lbnQuICBBZnRlciB0aGUgY29tcG9uZW50IGlzCisgKiAgc3VjY2Vzc2Z1bGx5IGxvYWRlZCwgdGhlIGFwcGxpY2F0aW9uIGNhbiBzYWZlbHkgYWNjZXNzIGFueSBvZiB0aGUKKyAqICBjb21wb25lbnQncyBwdWJsaWMgZnVuY3Rpb25zIChhbHRob3VnaCBzb21lIG1heSByZXR1cm4gYW4gZXJyb3IgYmVjYXVzZQorICogIHRoZSBzdGF0ZSBpcyBpbmFwcHJvcHJpYXRlIGZvciB0aGUgYWNjZXNzKS4KKyAqIAorICogIEBpbmdyb3VwIGNvbXAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTVBPTkVOVFRZUEUKK3sKKyAgICAvKiogVGhlIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUsIGluIGJ5dGVzLiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5CisgICAgICAgIG9mIHRoZSBhbGxvY2F0b3Igb2YgdGhpcyBzdHJ1Y3R1cmUgdG8gZmlsbCBpbiB0aGlzIHZhbHVlLiAgU2luY2UKKyAgICAgICAgdGhpcyBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGJ5IHRoZSBHZXRIYW5kbGUgZnVuY3Rpb24sIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gd2lsbCBmaWxsIGluIHRoaXMgdmFsdWUuICovCisgICAgT01YX1UzMiBuU2l6ZTsKKworICAgIC8qKiBuVmVyc2lvbiBpcyB0aGUgdmVyc2lvbiBvZiB0aGUgT01YIHNwZWNpZmljYXRpb24gdGhhdCB0aGUgc3RydWN0dXJlIAorICAgICAgICBpcyBidWlsdCBhZ2FpbnN0LiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjcmVhdG9yIG9mIHRoaXMgCisgICAgICAgIHN0cnVjdHVyZSB0byBpbml0aWFsaXplIHRoaXMgdmFsdWUgYW5kIGV2ZXJ5IHVzZXIgb2YgdGhpcyBzdHJ1Y3R1cmUgCisgICAgICAgIHNob3VsZCB2ZXJpZnkgdGhhdCBpdCBrbm93cyBob3cgdG8gdXNlIHRoZSBleGFjdCB2ZXJzaW9uIG9mIAorICAgICAgICB0aGlzIHN0cnVjdHVyZSBmb3VuZCBoZXJlaW4uICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworCisgICAgLyoqIHBDb21wb25lbnRQcml2YXRlIGlzIGEgcG9pbnRlciB0byB0aGUgY29tcG9uZW50IHByaXZhdGUgZGF0YSBhcmVhLiAgCisgICAgICAgIFRoaXMgbWVtYmVyIGlzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgYnkgdGhlIGNvbXBvbmVudCB3aGVuIHRoZSAKKyAgICAgICAgY29tcG9uZW50IGlzIGZpcnN0IGxvYWRlZC4gIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGFjY2VzcyB0aGlzIAorICAgICAgICBkYXRhIGFyZWEuICovCisgICAgT01YX1BUUiBwQ29tcG9uZW50UHJpdmF0ZTsKKworICAgIC8qKiBwQXBwbGljYXRpb25Qcml2YXRlIGlzIGEgcG9pbnRlciB0aGF0IGlzIGEgcGFyYW1ldGVyIHRvIHRoZSAKKyAgICAgICAgT01YX0dldEhhbmRsZSBtZXRob2QsIGFuZCBjb250YWlucyBhbiBhcHBsaWNhdGlvbiBwcml2YXRlIHZhbHVlIAorICAgICAgICBwcm92aWRlZCBieSB0aGUgSUwgY2xpZW50LiAgVGhpcyBhcHBsaWNhdGlvbiBwcml2YXRlIGRhdGEgaXMgCisgICAgICAgIHJldHVybmVkIHRvIHRoZSBJTCBDbGllbnQgYnkgT01YIGluIGFsbCBjYWxsYmFja3MgKi8KKyAgICBPTVhfUFRSIHBBcHBsaWNhdGlvblByaXZhdGU7CisKKyAgICAvKiogcmVmZXIgdG8gT01YX0dldENvbXBvbmVudFZlcnNpb24gaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBHZXRDb21wb25lbnRWZXJzaW9uIG1ldGhvZC4KKyAgICAgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqR2V0Q29tcG9uZW50VmVyc2lvbikoCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9IQU5ETEVUWVBFIGhDb21wb25lbnQsCisgICAgICAgICAgICBPTVhfT1VUIE9NWF9TVFJJTkcgcENvbXBvbmVudE5hbWUsCisgICAgICAgICAgICBPTVhfT1VUIE9NWF9WRVJTSU9OVFlQRSogcENvbXBvbmVudFZlcnNpb24sCisgICAgICAgICAgICBPTVhfT1VUIE9NWF9WRVJTSU9OVFlQRSogcFNwZWNWZXJzaW9uLAorICAgICAgICAgICAgT01YX09VVCBPTVhfVVVJRFRZUEUqIHBDb21wb25lbnRVVUlEKTsKKworICAgIC8qKiByZWZlciB0byBPTVhfU2VuZENvbW1hbmQgaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBTZW5kQ29tbWFuZCBtZXRob2QuCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKlNlbmRDb21tYW5kKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0NPTU1BTkRUWVBFIENtZCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX1UzMiBuUGFyYW0xLAorICAgICAgICAgICAgT01YX0lOICBPTVhfUFRSIHBDbWREYXRhKTsKKworICAgIC8qKiByZWZlciB0byBPTVhfR2V0UGFyYW1ldGVyIGluIE9NWF9jb3JlLmggb3IgdGhlIE9NWCBJTCAKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUgR2V0UGFyYW1ldGVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqR2V0UGFyYW1ldGVyKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwgCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9JTkRFWFRZUEUgblBhcmFtSW5kZXgsICAKKyAgICAgICAgICAgIE9NWF9JTk9VVCBPTVhfUFRSIHBDb21wb25lbnRQYXJhbWV0ZXJTdHJ1Y3R1cmUpOworCisKKyAgICAvKiogcmVmZXIgdG8gT01YX1NldFBhcmFtZXRlciBpbiBPTVhfY29yZS5oIG9yIHRoZSBPTVggSUwgCisgICAgICAgIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIFNldFBhcmFtZXRlciBtZXRob2QuCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKlNldFBhcmFtZXRlcikoCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9IQU5ETEVUWVBFIGhDb21wb25lbnQsIAorICAgICAgICAgICAgT01YX0lOICBPTVhfSU5ERVhUWVBFIG5JbmRleCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX1BUUiBwQ29tcG9uZW50UGFyYW1ldGVyU3RydWN0dXJlKTsKKworCisgICAgLyoqIHJlZmVyIHRvIE9NWF9HZXRDb25maWcgaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBHZXRDb25maWcgbWV0aG9kLgorICAgICAqLworICAgIE9NWF9FUlJPUlRZUEUgKCpHZXRDb25maWcpKAorICAgICAgICAgICAgT01YX0lOICBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50LAorICAgICAgICAgICAgT01YX0lOICBPTVhfSU5ERVhUWVBFIG5JbmRleCwgCisgICAgICAgICAgICBPTVhfSU5PVVQgT01YX1BUUiBwQ29tcG9uZW50Q29uZmlnU3RydWN0dXJlKTsKKworCisgICAgLyoqIHJlZmVyIHRvIE9NWF9TZXRDb25maWcgaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBTZXRDb25maWcgbWV0aG9kLgorICAgICAqLworICAgIE9NWF9FUlJPUlRZUEUgKCpTZXRDb25maWcpKAorICAgICAgICAgICAgT01YX0lOICBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50LAorICAgICAgICAgICAgT01YX0lOICBPTVhfSU5ERVhUWVBFIG5JbmRleCwgCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9QVFIgcENvbXBvbmVudENvbmZpZ1N0cnVjdHVyZSk7CisKKworICAgIC8qKiByZWZlciB0byBPTVhfR2V0RXh0ZW5zaW9uSW5kZXggaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBHZXRFeHRlbnNpb25JbmRleCBtZXRob2QuCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKkdldEV4dGVuc2lvbkluZGV4KSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX1NUUklORyBjUGFyYW1ldGVyTmFtZSwKKyAgICAgICAgICAgIE9NWF9PVVQgT01YX0lOREVYVFlQRSogcEluZGV4VHlwZSk7CisKKworICAgIC8qKiByZWZlciB0byBPTVhfR2V0U3RhdGUgaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBHZXRTdGF0ZSBtZXRob2QuCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKkdldFN0YXRlKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9PVVQgT01YX1NUQVRFVFlQRSogcFN0YXRlKTsKKworICAgIAorICAgIC8qKiBUaGUgQ29tcG9uZW50VHVubmVsUmVxdWVzdCBtZXRob2Qgd2lsbCBpbnRlcmFjdCB3aXRoIGFub3RoZXIgT01YCisgICAgICAgIGNvbXBvbmVudCB0byBkZXRlcm1pbmUgaWYgdHVubmVsaW5nIGlzIHBvc3NpYmxlIGFuZCB0byBzZXR1cCB0aGUKKyAgICAgICAgdHVubmVsaW5nLiAgVGhlIHJldHVybiBjb2RlcyBmb3IgdGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gCisgICAgICAgIGRldGVybWluZSBpZiB0dW5uZWxpbmcgaXMgbm90IHBvc3NpYmxlLCBvciBpZiB0dW5uZWxpbmcgaXMgbm90CisgICAgICAgIHN1cHBvcnRlZC4gIAorICAgICAgICAKKyAgICAgICAgQmFzZSBwcm9maWxlIGNvbXBvbmVudHMgKGkuZS4gbm9uLWludGVyb3ApIGRvIG5vdCBzdXBwb3J0IHRoaXMKKyAgICAgICAgbWV0aG9kIGFuZCBzaG91bGQgcmV0dXJuIE9NWF9FcnJvck5vdEltcGxlbWVudGVkIAorCisgICAgICAgIFRoZSBpbnRlcm9wIHByb2ZpbGUgY29tcG9uZW50IE1VU1Qgc3VwcG9ydCB0dW5uZWxpbmcgdG8gYW5vdGhlciAKKyAgICAgICAgaW50ZXJvcCBwcm9maWxlIGNvbXBvbmVudCB3aXRoIGEgY29tcGF0aWJsZSBwb3J0IHBhcmFtZXRlcnMuICAKKyAgICAgICAgQSBjb21wb25lbnQgbWF5IGFsc28gc3VwcG9ydCBwcm9wcmlldGFyeSBjb21tdW5pY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgSWYgcHJvcHJpZXRhcnkgY29tbXVuaWNhdGlvbiBpcyBzdXBwb3J0ZWQgdGhlIG5lZ290aWF0aW9uIG9mIAorICAgICAgICBwcm9wcmlldGFyeSBjb21tdW5pY2F0aW9uIGlzIGRvbmUgb3V0c2lkZSBvZiBPTVggaW4gYSB2ZW5kb3IgCisgICAgICAgIHNwZWNpZmljIHdheS4gSXQgaXMgb25seSByZXF1aXJlZCB0aGF0IHRoZSBwcm9wZXIgcmVzdWx0IGJlIAorICAgICAgICByZXR1cm5lZCBhbmQgdGhlIGRldGFpbHMgb2YgaG93IHRoZSBzZXR1cCBpcyBkb25lIGlzIGxlZnQgCisgICAgICAgIHRvIHRoZSBjb21wb25lbnQgaW1wbGVtZW50YXRpb24uICAKKyAgICAKKyAgICAgICAgV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkIHdoZW4gblBvcnQgaW4gYW4gb3V0cHV0IHBvcnQsIHRoZQorICAgICAgICBjb21wb25lbnQgd2lsbDoKKyAgICAgICAgMS4gIFBvcHVsYXRlIHRoZSBwVHVubmVsU2V0dXAgc3RydWN0dXJlIHdpdGggdGhlIG91dHB1dCBwb3J0J3MgCisgICAgICAgICAgICByZXF1aXJlbWVudHMgYW5kIGNvbnN0cmFpbnRzIGZvciB0aGUgdHVubmVsLgorCisgICAgICAgIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCB3aGVuIG5Qb3J0IGluIGFuIGlucHV0IHBvcnQsIHRoZQorICAgICAgICBjb21wb25lbnQgd2lsbDoKKyAgICAgICAgMS4gIFF1ZXJ5IHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycyBmcm9tIHRoZSBvdXRwdXQgcG9ydCB0byAKKyAgICAgICAgICAgIGRldGVybWluZSBpZiB0aGUgcG9ydHMgYXJlIGNvbXBhdGlibGUgZm9yIHR1bm5lbGluZworICAgICAgICAyLiAgSWYgdGhlIHBvcnRzIGFyZSBjb21wYXRpYmxlLCB0aGUgY29tcG9uZW50IHNob3VsZCBzdG9yZQorICAgICAgICAgICAgdGhlIHR1bm5lbCBzdGVwIHByb3ZpZGVkIGJ5IHRoZSBvdXRwdXQgcG9ydAorICAgICAgICAzLiAgRGV0ZXJtaW5lIHdoaWNoIHBvcnQgKGVpdGhlciBpbnB1dCBvciBvdXRwdXQpIGlzIHRoZSBidWZmZXIKKyAgICAgICAgICAgIHN1cHBsaWVyLCBhbmQgY2FsbCBPTVhfU2V0UGFyYW1ldGVyIG9uIHRoZSBvdXRwdXQgcG9ydCB0bworICAgICAgICAgICAgaW5kaWNhdGUgdGhpcyBzZWxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBUaGUgY29tcG9uZW50IHdpbGwgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiA1IG1zZWMuCisgICAgCisgICAgICAgIEBwYXJhbSBbaW5dIGhDb21wCisgICAgICAgICAgICBIYW5kbGUgb2YgdGhlIGNvbXBvbmVudCB0byBiZSBhY2Nlc3NlZC4gIFRoaXMgaXMgdGhlIGNvbXBvbmVudAorICAgICAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIG1ldGhvZC4KKyAgICAgICAgQHBhcmFtIFtpbl0gblBvcnQKKyAgICAgICAgICAgIG5Qb3J0IGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBwb3J0IG9uIHRoZSBjb21wb25lbnQgdG8gYmUgdXNlZAorICAgICAgICAgICAgZm9yIHR1bm5lbGluZy4KKyAgICAgICAgQHBhcmFtIFtpbl0gaFR1bm5lbGVkQ29tcAorICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gdHVubmVsIHdpdGguICBUaGlzIGlzIHRoZSBjb21wb25lbnQgCisgICAgICAgICAgICBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gdGhlIE9NWF9HZXRIYW5kbGUgbWV0aG9kLiAgV2hlbgorICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgaXMgMHgwIHRoZSBjb21wb25lbnQgc2hvdWxkIHNldHVwIHRoZSBwb3J0IGZvcgorICAgICAgICAgICAgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbiAvIElMIENsaWVudC4KKyAgICAgICAgQHBhcmFtIFtpbl0gblBvcnRPdXRwdXQKKyAgICAgICAgICAgIG5Qb3J0T3V0cHV0IGlzIHVzZWQgaW5kaWNhdGUgdGhlIHBvcnQgdGhlIGNvbXBvbmVudCBzaG91bGQKKyAgICAgICAgICAgIHR1bm5lbCB3aXRoLgorICAgICAgICBAcGFyYW0gW2luXSBwVHVubmVsU2V0dXAKKyAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHR1bm5lbCBzZXR1cCBzdHJ1Y3R1cmUuICBXaGVuIG5Qb3J0IGlzIGFuIG91dHB1dCBwb3J0CisgICAgICAgICAgICB0aGUgY29tcG9uZW50IHNob3VsZCBwb3B1bGF0ZSB0aGUgZmllbGRzIG9mIHRoaXMgc3RydWN0dXJlLiAgV2hlbgorICAgICAgICAgICAgV2hlbiBuUG9ydCBpcyBhbiBpbnB1dCBwb3J0IHRoZSBjb21wb25lbnQgc2hvdWxkIHJldmlldyB0aGUgc2V0dXAKKyAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHRoZSBjb21wb25lbnQgd2l0aCB0aGUgb3V0cHV0IHBvcnQuCisgICAgICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICAgIEBpbmdyb3VwIHR1bgorICAgICovCisKKyAgICBPTVhfRVJST1JUWVBFICgqQ29tcG9uZW50VHVubmVsUmVxdWVzdCkoCisgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXAsCisgICAgICAgIE9NWF9JTiAgT01YX1UzMiBuUG9ydCwKKyAgICAgICAgT01YX0lOICBPTVhfSEFORExFVFlQRSBoVHVubmVsZWRDb21wLAorICAgICAgICBPTVhfSU4gIE9NWF9VMzIgblR1bm5lbGVkUG9ydCwKKyAgICAgICAgT01YX0lOT1VUICBPTVhfVFVOTkVMU0VUVVBUWVBFKiBwVHVubmVsU2V0dXApOyAKKworICAgIC8qKiByZWZlciB0byBPTVhfVXNlQnVmZmVyIGluIE9NWF9jb3JlLmggb3IgdGhlIE9NWCBJTCAKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUgVXNlQnVmZmVyIG1ldGhvZC4KKyAgICAgICAgQGluZ3JvdXAgYnVmCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKlVzZUJ1ZmZlcikoCisgICAgICAgICAgICBPTVhfSU4gT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTk9VVCBPTVhfQlVGRkVSSEVBREVSVFlQRSoqIHBwQnVmZmVySGRyLAorICAgICAgICAgICAgT01YX0lOIE9NWF9VMzIgblBvcnRJbmRleCwKKyAgICAgICAgICAgIE9NWF9JTiBPTVhfUFRSIHBBcHBQcml2YXRlLAorICAgICAgICAgICAgT01YX0lOIE9NWF9VMzIgblNpemVCeXRlcywKKyAgICAgICAgICAgIE9NWF9JTiBPTVhfVTgqIHBCdWZmZXIpOworCisgICAgLyoqIHJlZmVyIHRvIE9NWF9BbGxvY2F0ZUJ1ZmZlciBpbiBPTVhfY29yZS5oIG9yIHRoZSBPTVggSUwgCisgICAgICAgIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIEFsbG9jYXRlQnVmZmVyIG1ldGhvZC4KKyAgICAgICAgQGluZ3JvdXAgYnVmCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKkFsbG9jYXRlQnVmZmVyKSgKKyAgICAgICAgICAgIE9NWF9JTiBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50LAorICAgICAgICAgICAgT01YX0lOT1VUIE9NWF9CVUZGRVJIRUFERVJUWVBFKiogcHBCdWZmZXIsCisgICAgICAgICAgICBPTVhfSU4gT01YX1UzMiBuUG9ydEluZGV4LAorICAgICAgICAgICAgT01YX0lOIE9NWF9QVFIgcEFwcFByaXZhdGUsCisgICAgICAgICAgICBPTVhfSU4gT01YX1UzMiBuU2l6ZUJ5dGVzKTsKKworICAgIC8qKiByZWZlciB0byBPTVhfRnJlZUJ1ZmZlciBpbiBPTVhfY29yZS5oIG9yIHRoZSBPTVggSUwgCisgICAgICAgIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIEZyZWVCdWZmZXIgbWV0aG9kLgorICAgICAgICBAaW5ncm91cCBidWYKKyAgICAgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqRnJlZUJ1ZmZlcikoCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9IQU5ETEVUWVBFIGhDb21wb25lbnQsCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9VMzIgblBvcnRJbmRleCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0JVRkZFUkhFQURFUlRZUEUqIHBCdWZmZXIpOworCisgICAgLyoqIHJlZmVyIHRvIE9NWF9FbXB0eVRoaXNCdWZmZXIgaW4gT01YX2NvcmUuaCBvciB0aGUgT01YIElMIAorICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBFbXB0eVRoaXNCdWZmZXIgbWV0aG9kLgorICAgICAgICBAaW5ncm91cCBidWYKKyAgICAgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqRW1wdHlUaGlzQnVmZmVyKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0JVRkZFUkhFQURFUlRZUEUqIHBCdWZmZXIpOworCisgICAgLyoqIHJlZmVyIHRvIE9NWF9GaWxsVGhpc0J1ZmZlciBpbiBPTVhfY29yZS5oIG9yIHRoZSBPTVggSUwgCisgICAgICAgIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIEZpbGxUaGlzQnVmZmVyIG1ldGhvZC4KKyAgICAgICAgQGluZ3JvdXAgYnVmCisgICAgICovCisgICAgT01YX0VSUk9SVFlQRSAoKkZpbGxUaGlzQnVmZmVyKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0JVRkZFUkhFQURFUlRZUEUqIHBCdWZmZXIpOworCisgICAgLyoqIFRoZSBTZXRDYWxsYmFja3MgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGNvcmUgdG8gc3BlY2lmeSB0aGUgY2FsbGJhY2sKKyAgICAgICAgc3RydWN0dXJlIGZyb20gdGhlIGFwcGxpY2F0aW9uIHRvIHRoZSBjb21wb25lbnQuICBUaGlzIGlzIGEgYmxvY2tpbmcKKyAgICAgICAgY2FsbC4gIFRoZSBjb21wb25lbnQgd2lsbCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgICAgICBAcGFyYW0gW2luXSBwQ2FsbGJhY2tzCisgICAgICAgICAgICBwb2ludGVyIHRvIGFuIE9NWF9DQUxMQkFDS1RZUEUgc3RydWN0dXJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgCisgICAgICAgICAgICBjYWxsYmFjayBpbmZvcm1hdGlvbiB0byB0aGUgY29tcG9uZW50CisgICAgICAgIEBwYXJhbSBbaW5dIHBBcHBEYXRhCisgICAgICAgICAgICBwb2ludGVyIHRvIGFuIGFwcGxpY2F0aW9uIGRlZmluZWQgdmFsdWUuICBJdCBpcyBhbnRpY2lwYXRlZCB0aGF0IAorICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcGFzcyBhIHBvaW50ZXIgdG8gYSBkYXRhIHN0cnVjdHVyZSBvciBhICJ0aGlzCisgICAgICAgICAgICBwb2ludGVyIiBpbiB0aGlzIGFyZWEgdG8gYWxsb3cgdGhlIGNhbGxiYWNrIChpbiB0aGUgYXBwbGljYXRpb24pCisgICAgICAgICAgICB0byBkZXRlcm1pbmUgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwKKyAgICAgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqU2V0Q2FsbGJhY2tzKSgKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgICAgIE9NWF9JTiAgT01YX0NBTExCQUNLVFlQRSogcENhbGxiYWNrcywgCisgICAgICAgICAgICBPTVhfSU4gIE9NWF9QVFIgcEFwcERhdGEpOworCisgICAgLyoqIENvbXBvbmVudERlSW5pdCBtZXRob2QgaXMgdXNlZCB0byBkZWluaXRpYWxpemUgdGhlIGNvbXBvbmVudAorICAgICAgICBwcm92aWRpbmcgYSBtZWFucyB0byBmcmVlIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGF0IGNvbXBvbmVudAorICAgICAgICBpbml0aWFsaXphdGlvbi4gIE5PVEU6ICBBZnRlciB0aGlzIGNhbGwgdGhlIGNvbXBvbmVudCBoYW5kbGUgaXMKKyAgICAgICAgbm90IHZhbGlkIGZvciBmdXJ0aGVyIHVzZS4KKyAgICAgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgICAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgICAgIE9NWF9FcnJvck5vbmUuICBPdGhlcndpc2UgdGhlIGFwcHJvcHJpYXRlIE9NWCBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorICAgICAqLworICAgIE9NWF9FUlJPUlRZUEUgKCpDb21wb25lbnREZUluaXQpKAorICAgICAgICAgICAgT01YX0lOICBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50KTsKKworICAgIC8qKiBAaW5ncm91cCBidWYgKi8KKyAgICBPTVhfRVJST1JUWVBFICgqVXNlRUdMSW1hZ2UpKAorICAgICAgICAgICAgT01YX0lOIE9NWF9IQU5ETEVUWVBFIGhDb21wb25lbnQsCisgICAgICAgICAgICBPTVhfSU5PVVQgT01YX0JVRkZFUkhFQURFUlRZUEUqKiBwcEJ1ZmZlckhkciwKKyAgICAgICAgICAgIE9NWF9JTiBPTVhfVTMyIG5Qb3J0SW5kZXgsCisgICAgICAgICAgICBPTVhfSU4gT01YX1BUUiBwQXBwUHJpdmF0ZSwKKyAgICAgICAgICAgIE9NWF9JTiB2b2lkKiBlZ2xJbWFnZSk7CisKKyAgICBPTVhfRVJST1JUWVBFICgqQ29tcG9uZW50Um9sZUVudW0pKAorICAgICAgICBPTVhfSU4gT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKwkJT01YX09VVCBPTVhfVTggKmNSb2xlLAorCQlPTVhfSU4gT01YX1UzMiBuSW5kZXgpOworCit9IE9NWF9DT01QT05FTlRUWVBFOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisjZW5kaWYKKy8qIEZpbGUgRU9GICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0NvbnRlbnRQaXBlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0NvbnRlbnRQaXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZTRkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfQ29udGVudFBpcGUuaApAQCAtMCwwICsxLDIxMiBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBQYWNrZXRWaWRlbworICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlcgorICogZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCisgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggVGhlIEtocm9ub3MgR3JvdXAgSW5jLiAKKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0CisgKiB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAKKyAqIAorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAKKyAqCisgKi8KKworLyoqIE9NWF9Db250ZW50UGlwZS5oIC0gT3Blbk1heCBJTCB2ZXJzaW9uIDEuMS4yCisgKiAgVGhlIE9NWF9Db250ZW50UGlwZSBoZWFkZXIgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgdXNlZCB0byBkZWZpbmUKKyAqICB0aGUgcHVibGljIGludGVyZmFjZSBmb3IgY29udGVudCBwaXBsZXMuICBUaGlzIGhlYWRlciBmaWxlIGlzIGludGVuZGVkIHRvCisgKiAgYmUgdXNlZCBieSB0aGUgY29tcG9uZW50LgorICovCisKKyNpZm5kZWYgT01YX0NPTlRFTlRQSVBFX0gKKyNkZWZpbmUgT01YX0NPTlRFTlRQSVBFX0gKKworI2lmbmRlZiBLRF9FQUNDRVMKKy8qIE9wZW5LT0RFIGVycm9yIGNvZGVzLiBDUFJlc3VsdCB2YWx1ZXMgbWF5IGJlIHplcm8gKGluZGljYXRpbmcgc3VjY2VzcworICAgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzKSAqLworI2RlZmluZSBLRF9FQUNDRVMgKDEpCisjZGVmaW5lIEtEX0VBRERSSU5VU0UgKDIpCisjZGVmaW5lIEtEX0VBR0FJTiAoNSkKKyNkZWZpbmUgS0RfRUJBREYgKDcpCisjZGVmaW5lIEtEX0VCVVNZICg4KQorI2RlZmluZSBLRF9FQ09OTlJFRlVTRUQgKDkpCisjZGVmaW5lIEtEX0VDT05OUkVTRVQgKDEwKQorI2RlZmluZSBLRF9FREVBRExLICgxMSkKKyNkZWZpbmUgS0RfRURFU1RBRERSUkVRICgxMikKKyNkZWZpbmUgS0RfRVJBTkdFICgzNSkKKyNkZWZpbmUgS0RfRUVYSVNUICgxMykKKyNkZWZpbmUgS0RfRUZCSUcgKDE0KQorI2RlZmluZSBLRF9FSE9TVFVOUkVBQ0ggKDE1KQorI2RlZmluZSBLRF9FSU5WQUwgKDE3KQorI2RlZmluZSBLRF9FSU8gKDE4KQorI2RlZmluZSBLRF9FSVNDT05OICgyMCkKKyNkZWZpbmUgS0RfRUlTRElSICgyMSkKKyNkZWZpbmUgS0RfRU1GSUxFICgyMikKKyNkZWZpbmUgS0RfRU5BTUVUT09MT05HICgyMykKKyNkZWZpbmUgS0RfRU5PRU5UICgyNCkKKyNkZWZpbmUgS0RfRU5PTUVNICgyNSkKKyNkZWZpbmUgS0RfRU5PU1BDICgyNikKKyNkZWZpbmUgS0RfRU5PU1lTICgyNykKKyNkZWZpbmUgS0RfRU5PVENPTk4gKDI4KQorI2RlZmluZSBLRF9FUEVSTSAoMzMpCisjZGVmaW5lIEtEX0VUSU1FRE9VVCAoMzYpCisjZGVmaW5lIEtEX0VJTFNFUSAoMTkpCisjZW5kaWYKKworLyoqIE1hcCB0eXBlcyBmcm9tIE9NWCBzdGFuZGFyZCB0eXBlcyBvbmx5IGhlcmUgc28gaW50ZXJmYWNlIGlzIGFzIGdlbmVyaWMgYXMgcG9zc2libGUuICovCit0eXBlZGVmIE9NWF9VMzIgICAgQ1ByZXN1bHQ7Cit0eXBlZGVmIGNoYXIgKiAgICAgQ1BzdHJpbmc7ICAKK3R5cGVkZWYgdm9pZCAqICAgICBDUGhhbmRsZTsKK3R5cGVkZWYgT01YX1UzMiAgICBDUHVpbnQ7Cit0eXBlZGVmIE9NWF9TMzIgICAgQ1BpbnQ7ICAKK3R5cGVkZWYgY2hhciAgICAgICBDUGJ5dGU7ICAKK3R5cGVkZWYgT01YX0JPT0wgICBDUGJvb2w7CisKKy8qKiBlbnVtZXJhdGlvbiBvZiBvcmlnaW4gdHlwZXMgdXNlZCBpbiB0aGUgQ1BfUElQRVRZUEUncyBTZWVrIGZ1bmN0aW9uIAorICogQGluZ3JvdXAgY3AKKyAqLwordHlwZWRlZiBlbnVtIENQX09SSUdJTlRZUEUgeworICAgIENQX09yaWdpbkJlZ2luLCAgICAgIAorICAgIENQX09yaWdpbkN1ciwgICAgICAKKyAgICBDUF9PcmlnaW5FbmQsICAgICAgCisgICAgQ1BfT3JpZ2luS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIENQX09yaWdpblZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgQ1BfT3JpZ2luTWF4ID0gMFg3RkZGRkZGRgorfSBDUF9PUklHSU5UWVBFOworCisvKiogZW51bWVyYXRpb24gb2YgY29udGFjdCBhY2Nlc3MgdHlwZXMgdXNlZCBpbiB0aGUgQ1BfUElQRVRZUEUncyBPcGVuIGZ1bmN0aW9uIAorICogQGluZ3JvdXAgY3AKKyAqLwordHlwZWRlZiBlbnVtIENQX0FDQ0VTU1RZUEUgeworICAgIENQX0FjY2Vzc1JlYWQsICAgICAgCisgICAgQ1BfQWNjZXNzV3JpdGUsICAKKyAgICBDUF9BY2Nlc3NSZWFkV3JpdGUgLCAgCisgICAgQ1BfQWNjZXNzS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIENQX0FjY2Vzc1ZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgQ1BfQWNjZXNzTWF4ID0gMFg3RkZGRkZGRgorfSBDUF9BQ0NFU1NUWVBFOworCisvKiogZW51bWVyYXRpb24gb2YgcmVzdWx0cyByZXR1cm5lZCBieSB0aGUgQ1BfUElQRVRZUEUncyBDaGVja0F2YWlsYWJsZUJ5dGVzIGZ1bmN0aW9uIAorICogQGluZ3JvdXAgY3AKKyAqLwordHlwZWRlZiBlbnVtIENQX0NIRUNLQllURVNSRVNVTFRUWVBFCit7CisgICAgQ1BfQ2hlY2tCeXRlc09rLCAgICAgICAgICAgICAgICAgICAgLyoqPCBUaGVyZSBhcmUgYXQgbGVhc3QgdGhlIHJlcXVlc3QgbnVtYmVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGJ5dGVzIGF2YWlsYWJsZSAqLworICAgIENQX0NoZWNrQnl0ZXNOb3RSZWFkeSwgICAgICAgICAgICAgIC8qKjwgVGhlIHBpcGUgaXMgc3RpbGwgcmV0cmlldmluZyBieXRlcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcHJlc2VudGx5IGxhY2tzIHN1ZmZpY2llbnQgYnl0ZXMuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZXkgYXJlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2YWlsYWJsZS4gKi8KKyAgICBDUF9DaGVja0J5dGVzSW5zdWZmaWNpZW50Qnl0ZXMgICwgICAgIC8qKjwgVGhlIHBpcGUgaGFzIHJldHJpZXZlZCBhbGwgYnl0ZXMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRob3NlIGF2YWlsYWJsZSBhcmUgbGVzcyB0aGFuIHRob3NlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZCAqLworICAgIENQX0NoZWNrQnl0ZXNBdEVuZE9mU3RyZWFtLCAgICAgICAgIC8qKjwgVGhlIHBpcGUgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbm8gbW9yZSBieXRlcyBhcmUgYXZhaWxhYmxlLiAqLworICAgIENQX0NoZWNrQnl0ZXNPdXRPZkJ1ZmZlcnMsICAgICAgICAgIC8qKjwgQWxsIHJlYWQvd3JpdGUgYnVmZmVycyBhcmUgY3VycmVudGx5IGluIHVzZS4gKi8KKyAgICBDUF9DaGVja0J5dGVzS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIENQX0NoZWNrQnl0ZXNWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIENQX0NoZWNrQnl0ZXNNYXggPSAwWDdGRkZGRkZGCit9IENQX0NIRUNLQllURVNSRVNVTFRUWVBFOworCisvKiogZW51bWVyYXRpb24gb2YgY29udGVudCBwaXBlIGV2ZW50cyBzZW50IHRvIHRoZSBjbGllbnQgY2FsbGJhY2suIAorICogQGluZ3JvdXAgY3AKKyAqLwordHlwZWRlZiBlbnVtIENQX0VWRU5UVFlQRXsKKyAgICBDUF9CeXRlc0F2YWlsYWJsZSwgICAgICAJICAgIC8qKiBieXRlcyByZXF1ZXN0ZWQgaW4gYSBDaGVja0F2YWlsYWJsZUJ5dGVzIGNhbGwgYXJlIG5vdyBhdmFpbGFibGUqLworICAgIENQX092ZXJmbG93LCAgCQkgICAgICAgICAgIC8qKiBlbnVtZXJhdGlvbiBvZiBjb250ZW50IHBpcGUgZXZlbnRzIHNlbnQgdG8gdGhlIGNsaWVudCBjYWxsYmFjayovCisgICAgQ1BfUGlwZURpc2Nvbm5lY3RlZCAgLCAgCQkgICAgLyoqIGVudW1lcmF0aW9uIG9mIGNvbnRlbnQgcGlwZSBldmVudHMgc2VudCB0byB0aGUgY2xpZW50IGNhbGxiYWNrKi8KKyAgICBDUF9FdmVudEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBDUF9FdmVudFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgQ1BfRXZlbnRNYXggPSAwWDdGRkZGRkZGCit9IENQX0VWRU5UVFlQRTsKKworLyoqIGNvbnRlbnQgcGlwZSBkZWZpbml0aW9uIAorICogQGluZ3JvdXAgY3AKKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ1BfUElQRVRZUEUKK3sKKyAgICAvKiogT3BlbiBhIGNvbnRlbnQgc3RyZWFtIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuICovIAorICAgIENQcmVzdWx0ICgqT3BlbikoIENQaGFuZGxlKiBoQ29udGVudCwgQ1BzdHJpbmcgc3pVUkksIENQX0FDQ0VTU1RZUEUgZUFjY2VzcyApOworCisgICAgLyoqIENsb3NlIGEgY29udGVudCBzdHJlYW0uICovIAorICAgIENQcmVzdWx0ICgqQ2xvc2UpKCBDUGhhbmRsZSBoQ29udGVudCApOworCisgICAgLyoqIENyZWF0ZSBhIGNvbnRlbnQgc291cmNlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nLiAqLyAKKyAgICBDUHJlc3VsdCAoKkNyZWF0ZSkoIENQaGFuZGxlICpoQ29udGVudCwgQ1BzdHJpbmcgc3pVUkkgKTsKKworICAgIC8qKiBDaGVjayB0aGUgdGhhdCBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyAoZGVwZW5kaW5nIG9uIGFjY2VzcyB0eXBlKS4qLworICAgIENQcmVzdWx0ICgqQ2hlY2tBdmFpbGFibGVCeXRlcykoIENQaGFuZGxlIGhDb250ZW50LCBDUHVpbnQgbkJ5dGVzUmVxdWVzdGVkLCBDUF9DSEVDS0JZVEVTUkVTVUxUVFlQRSAqZVJlc3VsdCApOworCisgICAgLyoqIFNlZWsgdG8gY2VydGFpbiBwb3NpdGlvbiBpbiB0aGUgY29udGVudCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi8KKyAgICBDUHJlc3VsdCAoKlNldFBvc2l0aW9uKSggQ1BoYW5kbGUgIGhDb250ZW50LCBDUGludCBuT2Zmc2V0LCBDUF9PUklHSU5UWVBFIGVPcmlnaW4pOworCisgICAgLyoqIFJldHJpZXZlIHRoZSBjdXJyZW50IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGVudC4gKi8KKyAgICBDUHJlc3VsdCAoKkdldFBvc2l0aW9uKSggQ1BoYW5kbGUgaENvbnRlbnQsIENQdWludCAqcFBvc2l0aW9uKTsKKworICAgIC8qKiBSZXRyaWV2ZSBkYXRhIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZSBmcm9tIHRoZSBjb250ZW50IHN0cmVhbSAoYWR2YW5jZSBjb250ZW50IHBvaW50ZXIgYnkgc2l6ZSBvZiBkYXRhKS4KKyAgICAgICBOb3RlOiBwaXBlIGNsaWVudCBwcm92aWRlcyBwb2ludGVyLiBUaGlzIGZ1bmN0aW9uIGlzIGFwcHJvcHJpYXRlIGZvciBzbWFsbCBoaWdoIGZyZXF1ZW5jeSByZWFkcy4gKi8KKyAgICBDUHJlc3VsdCAoKlJlYWQpKCBDUGhhbmRsZSBoQ29udGVudCwgQ1BieXRlICpwRGF0YSwgQ1B1aW50IG5TaXplKTsgCisKKyAgICAvKiogUmV0cmlldmUgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHRoZSBwaXBlIHRoYXQgY29udGFpbnMgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgYnl0ZXMuIAorICAgICAgIEJ1ZmZlciBjb250YWlucyB0aGUgbmV4dCBibG9jayBvZiBieXRlcywgYXMgc3BlY2lmaWVkIGJ5IG5TaXplLCBvZiB0aGUgY29udGVudC4gblNpemUgYWxzbworICAgICAgIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJsb2NrIGFjdHVhbGx5IHJlYWQuIENvbnRlbnQgcG9pbnRlciBhZHZhbmNlcyB0aGUgYnkgdGhlIHJldHVybmVkIHNpemUuIAorICAgICAgIE5vdGU6IHBpcGUgcHJvdmlkZXMgcG9pbnRlci4gVGhpcyBmdW5jdGlvbiBpcyBhcHByb3ByaWF0ZSBmb3IgbGFyZ2UgcmVhZHMuIFRoZSBjbGllbnQgbXVzdCBjYWxsIAorICAgICAgIFJlbGVhc2VSZWFkQnVmZmVyIHdoZW4gZG9uZSB3aXRoIGJ1ZmZlci4gCisKKyAgICAgICBJbiBzb21lIGNhc2VzIHRoZSByZXF1ZXN0ZWQgYmxvY2sgbWF5IG5vdCByZXNpZGUgaW4gY29udGlndW91cyBtZW1vcnkgd2l0aGluIHRoZQorICAgICAgIHBpcGUgaW1wbGVtZW50YXRpb24uIEZvciBpbnN0YW5jZSBpZiB0aGUgcGlwZSBsZXZlcmFnZXMgYSBjaXJjdWxhciBidWZmZXIgdGhlbiB0aGUgcmVxdWVzdGVkIAorICAgICAgIGJsb2NrIG1heSBzdHJhZGRsZSB0aGUgYm91bmRhcnkgb2YgdGhlIGNpcmN1bGFyIGJ1ZmZlci4gQnkgZGVmYXVsdCBhIHBpcGUgaW1wbGVtZW50YXRpb24gCisgICAgICAgcGVyZm9ybXMgYSBjb3B5IGluIHRoaXMgY2FzZSB0byBwcm92aWRlIHRoZSBibG9jayB0byB0aGUgcGlwZSBjbGllbnQgaW4gb25lIGNvbnRpZ3VvdXMgYnVmZmVyLgorICAgICAgIElmLCBob3dldmVyLCB0aGUgY2xpZW50IHNldHMgYkZvcmJpZENvcHksIHRoZW4gdGhlIHBpcGUgcmV0dXJucyBvbmx5IHRob3NlIGJ5dGVzIHByZWNlZGluZyB0aGUgbWVtb3J5IAorICAgICAgIGJvdW5kYXJ5LiBIZXJlIHRoZSBjbGllbnQgbWF5IHJldHJpZXZlIHRoZSBkYXRhIGluIHNlZ21lbnRzIG92ZXIgc3VjY2Vzc2l2ZSBjYWxscy4gKi8KKyAgICBDUHJlc3VsdCAoKlJlYWRCdWZmZXIpKCBDUGhhbmRsZSBoQ29udGVudCwgQ1BieXRlICoqcHBCdWZmZXIsIENQdWludCAqblNpemUsIENQYm9vbCBiRm9yYmlkQ29weSk7CisKKyAgICAvKiogUmVsZWFzZSBhIGJ1ZmZlciBvYnRhaW5lZCBieSBSZWFkQnVmZmVyIGJhY2sgdG8gdGhlIHBpcGUuICovCisgICAgQ1ByZXN1bHQgKCpSZWxlYXNlUmVhZEJ1ZmZlcikoQ1BoYW5kbGUgaENvbnRlbnQsIENQYnl0ZSAqcEJ1ZmZlcik7CisKKyAgICAvKiogV3JpdGUgZGF0YSBvZiB0aGUgc3BlY2lmaWVkIHNpemUgdG8gdGhlIGNvbnRlbnQgKGFkdmFuY2UgY29udGVudCBwb2ludGVyIGJ5IHNpemUgb2YgZGF0YSkuCisgICAgICAgTm90ZTogcGlwZSBjbGllbnQgcHJvdmlkZXMgcG9pbnRlci4gVGhpcyBmdW5jdGlvbiBpcyBhcHByb3ByaWF0ZSBmb3Igc21hbGwgaGlnaCBmcmVxdWVuY3kgd3JpdGVzLiAqLworICAgIENQcmVzdWx0ICgqV3JpdGUpKCBDUGhhbmRsZSBoQ29udGVudCwgQ1BieXRlICpkYXRhLCBDUHVpbnQgblNpemUpOyAKKworICAgIC8qKiBSZXRyaWV2ZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdGhlIHBpcGUgdXNlZCB0byB3cml0ZSBkYXRhIHRvIHRoZSBjb250ZW50LiAKKyAgICAgICBDbGllbnQgd2lsbCBmaWxsIGJ1ZmZlciB3aXRoIG91dHB1dCBkYXRhLiBOb3RlOiBwaXBlIHByb3ZpZGVzIHBvaW50ZXIuIFRoaXMgZnVuY3Rpb24gaXMgYXBwcm9wcmlhdGUKKyAgICAgICBmb3IgbGFyZ2Ugd3JpdGVzLiBUaGUgY2xpZW50IG11c3QgY2FsbCBXcml0ZUJ1ZmZlciB3aGVuIGRvbmUgaXQgaGFzIGZpbGxlZCB0aGUgYnVmZmVyIHdpdGggZGF0YS4qLworICAgIENQcmVzdWx0ICgqR2V0V3JpdGVCdWZmZXIpKCBDUGhhbmRsZSBoQ29udGVudCwgQ1BieXRlICoqcHBCdWZmZXIsIENQdWludCBuU2l6ZSk7CisKKyAgICAvKiogRGVsaXZlciBhIGJ1ZmZlciBvYnRhaW5lZCB2aWEgR2V0V3JpdGVCdWZmZXIgdG8gdGhlIHBpcGUuIFBpcGUgd2lsbCB3cml0ZSB0aGUgCisgICAgICAgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgdG8gY29udGVudCBhbmQgYWR2YW5jZSBjb250ZW50IHBvaW50ZXIgYnkgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAqLworICAgIENQcmVzdWx0ICgqV3JpdGVCdWZmZXIpKCBDUGhhbmRsZSBoQ29udGVudCwgQ1BieXRlICpwQnVmZmVyLCBDUHVpbnQgbkZpbGxlZFNpemUpOworCisgICAgLyoqIFJlZ2lzdGVyIGEgcGVyLWhhbmRsZSBjbGllbnQgY2FsbGJhY2sgd2l0aCB0aGUgY29udGVudCBwaXBlLiAqLworICAgIENQcmVzdWx0ICgqUmVnaXN0ZXJDYWxsYmFjaykoIENQaGFuZGxlIGhDb250ZW50LCBDUHJlc3VsdCAoKkNsaWVudENhbGxiYWNrKShDUF9FVkVOVFRZUEUgZUV2ZW50LCBDUHVpbnQgaVBhcmFtKSk7CisKK30gQ1BfUElQRVRZUEU7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0NvcmUuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfQ29yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjBmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0NvcmUuaApAQCAtMCwwICsxLDE0NDggQEAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weXJpZ2h0IChDKSAxOTk4LTIwMDkgUGFja2V0VmlkZW8KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucworICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4gCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdAorICogdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gCisgKgorICovCisKKy8qKiBPTVhfQ29yZS5oIC0gT3Blbk1heCBJTCB2ZXJzaW9uIDEuMS4yCisgKiAgVGhlIE9NWF9Db3JlIGhlYWRlciBmaWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyB1c2VkIGJ5IGJvdGggdGhlCisgKiAgYXBwbGljYXRpb24gYW5kIHRoZSBjb21wb25lbnQgdG8gYWNjZXNzIGNvbW1vbiBpdGVtcy4KKyAqLworCisjaWZuZGVmIE9NWF9Db3JlX2gKKyNkZWZpbmUgT01YX0NvcmVfaAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKworLyogRWFjaCBPTVggaGVhZGVyIHNoYWxsIGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqICBoZWFkZXIgdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQKKyAqICBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworCisjaW5jbHVkZSA8T01YX0luZGV4Lmg+CisKKworLyoqIFRoZSBPTVhfQ09NTUFORFRZUEUgZW51bWVyYXRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBhY3Rpb24gaW4gdGhlCisgKiAgT01YX1NlbmRDb21tYW5kIG1hY3JvLiAgCisgKiAgQGluZ3JvdXAgY29yZQorICovCit0eXBlZGVmIGVudW0gT01YX0NPTU1BTkRUWVBFCit7CisgICAgT01YX0NvbW1hbmRTdGF0ZVNldCwgICAgLyoqPCBDaGFuZ2UgdGhlIGNvbXBvbmVudCBzdGF0ZSAqLworICAgIE9NWF9Db21tYW5kRmx1c2gsICAgICAgIC8qKjwgRmx1c2ggdGhlIGRhdGEgcXVldWUocykgb2YgYSBjb21wb25lbnQgKi8KKyAgICBPTVhfQ29tbWFuZFBvcnREaXNhYmxlLCAvKio8IERpc2FibGUgYSBwb3J0IG9uIGEgY29tcG9uZW50LiAqLworICAgIE9NWF9Db21tYW5kUG9ydEVuYWJsZSwgIC8qKjwgRW5hYmxlIGEgcG9ydCBvbiBhIGNvbXBvbmVudC4gKi8KKyAgICBPTVhfQ29tbWFuZE1hcmtCdWZmZXIsICAvKio8IE1hcmsgYSBjb21wb25lbnQvYnVmZmVyIGZvciBvYnNlcnZhdGlvbiAqLworICAgIE9NWF9Db21tYW5kS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9Db21tYW5kVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfQ29tbWFuZE1heCA9IDBYN0ZGRkZGRkYKK30gT01YX0NPTU1BTkRUWVBFOworCisKKworLyoqIFRoZSBPTVhfU1RBVEVUWVBFIGVudW1lcmF0aW9uIGlzIHVzZWQgdG8gaW5kaWNhdGUgb3IgY2hhbmdlIHRoZSBjb21wb25lbnQKKyAqICBzdGF0ZS4gIFRoaXMgZW51bWVyYXRpb24gcmVmbGVjdHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudCB3aGVuCisgKiAgdXNlZCB3aXRoIHRoZSBPTVhfR2V0U3RhdGUgbWFjcm8gb3IgYmVjb21lcyB0aGUgcGFyYW1ldGVyIGluIGEgc3RhdGUgY2hhbmdlCisgKiAgY29tbWFuZCB3aGVuIHVzZWQgd2l0aCB0aGUgT01YX1NlbmRDb21tYW5kIG1hY3JvLgorICoKKyAqICBUaGUgY29tcG9uZW50IHdpbGwgYmUgaW4gdGhlIExvYWRlZCBzdGF0ZSBhZnRlciB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseQorICogIGxvYWRlZCBpbnRvIG1lbW9yeS4gIEluIHRoZSBMb2FkZWQgc3RhdGUsIHRoZSBjb21wb25lbnQgaXMgbm90IGFsbG93ZWQgdG8KKyAqICBhbGxvY2F0ZSBvciBob2xkIHJlc291cmNlcyBvdGhlciB0aGFuIHRvIGJ1aWxkIGl0J3MgaW50ZXJuYWwgcGFyYW1ldGVyCisgKiAgYW5kIGNvbmZpZ3VyYXRpb24gdGFibGVzLiAgVGhlIGFwcGxpY2F0aW9uIHdpbGwgc2VuZCBvbmUgb3IgbW9yZQorICogIFNldFBhcmFtZXRlcnMvR2V0UGFyYW1ldGVycyBhbmQgU2V0Q29uZmlnL0dldENvbmZpZyBjb21tYW5kcyB0byB0aGUKKyAqICBjb21wb25lbnQgYW5kIHRoZSBjb21wb25lbnQgd2lsbCByZWNvcmQgZWFjaCBvZiB0aGVzZSBwYXJhbWV0ZXIgYW5kCisgKiAgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciB1c2UgbGF0ZXIuICBXaGVuIHRoZSBhcHBsaWNhdGlvbiBzZW5kcyB0aGUKKyAqICBJZGxlIGNvbW1hbmQsIHRoZSBjb21wb25lbnQgd2lsbCBhY3F1aXJlIHRoZSByZXNvdXJjZXMgbmVlZGVkIGZvciB0aGUKKyAqICBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiBhbmQgd2lsbCB0cmFuc2l0aW9uIHRvIHRoZSBpZGxlIHN0YXRlIGlmIHRoZQorICogIGFsbG9jYXRpb24gaXMgc3VjY2Vzc2Z1bC4gIElmIHRoZSBjb21wb25lbnQgY2Fubm90IHN1Y2Nlc3NmdWxseQorICogIHRyYW5zaXRpb24gdG8gdGhlIGlkbGUgc3RhdGUgZm9yIGFueSByZWFzb24sIHRoZSBzdGF0ZSBvZiB0aGUgY29tcG9uZW50CisgKiAgc2hhbGwgYmUgZnVsbHkgcm9sbGVkIGJhY2sgdG8gdGhlIExvYWRlZCBzdGF0ZSAoZS5nLiBhbGwgYWxsb2NhdGVkIAorICogIHJlc291cmNlcyBzaGFsbCBiZSByZWxlYXNlZCkuICBXaGVuIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgdGhlIGNvbW1hbmQKKyAqICB0byBnbyB0byB0aGUgRXhlY3V0aW5nIHN0YXRlLCBpdCBzaGFsbCBiZWdpbiBwcm9jZXNzaW5nIGJ1ZmZlcnMgYnkKKyAqICBzZW5kaW5nIGFsbCBpbnB1dCBidWZmZXJzIGl0IGhvbGRzIHRvIHRoZSBhcHBsaWNhdGlvbi4gIFdoaWxlCisgKiAgdGhlIGNvbXBvbmVudCBpcyBpbiB0aGUgSWRsZSBzdGF0ZSwgdGhlIGFwcGxpY2F0aW9uIG1heSBhbHNvIHNlbmQgdGhlCisgKiAgUGF1c2UgY29tbWFuZC4gIElmIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgdGhlIHBhdXNlIGNvbW1hbmQgd2hpbGUgaW4gdGhlCisgKiAgSWRsZSBzdGF0ZSwgdGhlIGNvbXBvbmVudCBzaGFsbCBzZW5kIGFsbCBpbnB1dCBidWZmZXJzIGl0IGhvbGRzIHRvIHRoZSAKKyAqICBhcHBsaWNhdGlvbiwgYnV0IHNoYWxsIG5vdCBiZWdpbiBwcm9jZXNzaW5nIGJ1ZmZlcnMuICBUaGlzIHdpbGwgYWxsb3cgdGhlCisgKiAgYXBwbGljYXRpb24gdG8gcHJlZmlsbCBidWZmZXJzLgorICogCisgKiAgQGluZ3JvdXAgY29tcAorICovCisKK3R5cGVkZWYgZW51bSBPTVhfU1RBVEVUWVBFCit7CisgICAgT01YX1N0YXRlSW52YWxpZCwgICAgICAvKio8IGNvbXBvbmVudCBoYXMgZGV0ZWN0ZWQgdGhhdCBpdCdzIGludGVybmFsIGRhdGEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMgYXJlIGNvcnJ1cHRlZCB0byB0aGUgcG9pbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBjYW5ub3QgZGV0ZXJtaW5lIGl0J3Mgc3RhdGUgcHJvcGVybHkgKi8KKyAgICBPTVhfU3RhdGVMb2FkZWQsICAgICAgLyoqPCBjb21wb25lbnQgaGFzIGJlZW4gbG9hZGVkIGJ1dCBoYXMgbm90IGNvbXBsZXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbi4gIFRoZSBPTVhfU2V0UGFyYW1ldGVyIG1hY3JvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgT01YX0dldFBhcmFtZXRlciBtYWNybyBhcmUgdGhlIG9ubHkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG1hY3JvcyBhbGxvd2VkIHRvIGJlIHNlbnQgdG8gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgaW4gdGhpcyBzdGF0ZS4gKi8KKyAgICBPTVhfU3RhdGVJZGxlLCAgICAgICAgLyoqPCBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24gaGFzIGJlZW4gY29tcGxldGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSBhbmQgdGhlIGNvbXBvbmVudCBpcyByZWFkeSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzdGFydC4gKi8KKyAgICBPTVhfU3RhdGVFeGVjdXRpbmcsICAgLyoqPCBjb21wb25lbnQgaGFzIGFjY2VwdGVkIHRoZSBzdGFydCBjb21tYW5kIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBwcm9jZXNzaW5nIGRhdGEgKGlmIGRhdGEgaXMgYXZhaWxhYmxlKSAqLworICAgIE9NWF9TdGF0ZVBhdXNlLCAgICAgICAvKio8IGNvbXBvbmVudCBoYXMgcmVjZWl2ZWQgcGF1c2UgY29tbWFuZCAqLworICAgIE9NWF9TdGF0ZVdhaXRGb3JSZXNvdXJjZXMsIC8qKjwgY29tcG9uZW50IGlzIHdhaXRpbmcgZm9yIHJlc291cmNlcywgZWl0aGVyIGFmdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVlbXB0aW9uIG9yIGJlZm9yZSBpdCBnZXRzIHRoZSByZXNvdXJjZXMgcmVxdWVzdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgc3BlY2lmaWNhdGlvbiBmb3IgY29tcGxldGUgZGV0YWlscy4gKi8KKyAgICBPTVhfU3RhdGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1N0YXRlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfU3RhdGVNYXggPSAwWDdGRkZGRkZGCit9IE9NWF9TVEFURVRZUEU7CisKKy8qKiBUaGUgT01YX0VSUk9SVFlQRSBlbnVtZXJhdGlvbiBkZWZpbmVzIHRoZSBzdGFuZGFyZCBPTVggRXJyb3JzLiAgVGhlc2UgCisgKiAgZXJyb3JzIHNob3VsZCBjb3ZlciBtb3N0IG9mIHRoZSBjb21tb24gZmFpbHVyZSBjYXNlcy4gIEhvd2V2ZXIsIAorICogIHZlbmRvcnMgYXJlIGZyZWUgdG8gYWRkIGFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgb2YgdGhlaXIgb3duIGFzIAorICogIGxvbmcgYXMgdGhleSBmb2xsb3cgdGhlc2UgcnVsZXM6CisgKiAgMS4gIFZlbmRvciBlcnJvciBtZXNzYWdlcyBzaGFsbCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMHg5MDAwMDAwMCB0bworICogICAgICAweDkwMDBGRkZGLgorICogIDIuICBWZW5kb3IgZXJyb3IgbWVzc2FnZXMgc2hhbGwgYmUgZGVmaW5lZCBpbiBhIGhlYWRlciBmaWxlIHByb3ZpZGVkCisgKiAgICAgIHdpdGggdGhlIGNvbXBvbmVudC4gIE5vIGVycm9yIG1lc3NhZ2VzIGFyZSBhbGxvd2VkIHRoYXQgYXJlCisgKiAgICAgIG5vdCBkZWZpbmVkLgorICovCit0eXBlZGVmIGVudW0gT01YX0VSUk9SVFlQRQoreworICBPTVhfRXJyb3JOb25lID0gMCwKKworICAvKiogVGhlcmUgd2VyZSBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gKi8KKyAgT01YX0Vycm9ySW5zdWZmaWNpZW50UmVzb3VyY2VzID0gKE9NWF9TMzIpIDB4ODAwMDEwMDAsCisKKyAgLyoqIFRoZXJlIHdhcyBhbiBlcnJvciwgYnV0IHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgY291bGQgbm90IGJlIGRldGVybWluZWQgKi8KKyAgT01YX0Vycm9yVW5kZWZpbmVkID0gKE9NWF9TMzIpIDB4ODAwMDEwMDEsCisKKyAgLyoqIFRoZSBjb21wb25lbnQgbmFtZSBzdHJpbmcgd2FzIG5vdCB2YWxpZCAqLworICBPTVhfRXJyb3JJbnZhbGlkQ29tcG9uZW50TmFtZSA9IChPTVhfUzMyKSAweDgwMDAxMDAyLAorCisgIC8qKiBObyBjb21wb25lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgc3RyaW5nIHdhcyBmb3VuZCAqLworICBPTVhfRXJyb3JDb21wb25lbnROb3RGb3VuZCA9IChPTVhfUzMyKSAweDgwMDAxMDAzLAorCisgIC8qKiBUaGUgY29tcG9uZW50IHNwZWNpZmllZCBkaWQgbm90IGhhdmUgYSAiT01YX0NvbXBvbmVudEluaXQiIG9yCisgICAgICAiT01YX0NvbXBvbmVudERlSW5pdCBlbnRyeSBwb2ludCAqLworICBPTVhfRXJyb3JJbnZhbGlkQ29tcG9uZW50ID0gKE9NWF9TMzIpIDB4ODAwMDEwMDQsCisKKyAgLyoqIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgd2VyZSBub3QgdmFsaWQgKi8KKyAgT01YX0Vycm9yQmFkUGFyYW1ldGVyID0gKE9NWF9TMzIpIDB4ODAwMDEwMDUsCisKKyAgLyoqIFRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkICovCisgIE9NWF9FcnJvck5vdEltcGxlbWVudGVkID0gKE9NWF9TMzIpIDB4ODAwMDEwMDYsCisKKyAgLyoqIFRoZSBidWZmZXIgd2FzIGVtcHRpZWQgYmVmb3JlIHRoZSBuZXh0IGJ1ZmZlciB3YXMgcmVhZHkgKi8KKyAgT01YX0Vycm9yVW5kZXJmbG93ID0gKE9NWF9TMzIpIDB4ODAwMDEwMDcsCisKKyAgLyoqIFRoZSBidWZmZXIgd2FzIG5vdCBhdmFpbGFibGUgd2hlbiBpdCB3YXMgbmVlZGVkICovCisgIE9NWF9FcnJvck92ZXJmbG93ID0gKE9NWF9TMzIpIDB4ODAwMDEwMDgsCisKKyAgLyoqIFRoZSBoYXJkd2FyZSBmYWlsZWQgdG8gcmVzcG9uZCBhcyBleHBlY3RlZCAqLworICBPTVhfRXJyb3JIYXJkd2FyZSA9IChPTVhfUzMyKSAweDgwMDAxMDA5LAorCisgIC8qKiBUaGUgY29tcG9uZW50IGlzIGluIHRoZSBzdGF0ZSBPTVhfU3RhdGVJbnZhbGlkICovCisgIE9NWF9FcnJvckludmFsaWRTdGF0ZSA9IChPTVhfUzMyKSAweDgwMDAxMDBBLAorCisgIC8qKiBTdHJlYW0gaXMgZm91bmQgdG8gYmUgY29ycnVwdCAqLworICBPTVhfRXJyb3JTdHJlYW1Db3JydXB0ID0gKE9NWF9TMzIpIDB4ODAwMDEwMEIsCisKKyAgLyoqIFBvcnRzIGJlaW5nIGNvbm5lY3RlZCBhcmUgbm90IGNvbXBhdGlibGUgKi8KKyAgT01YX0Vycm9yUG9ydHNOb3RDb21wYXRpYmxlID0gKE9NWF9TMzIpIDB4ODAwMDEwMEMsCisKKyAgLyoqIFJlc291cmNlcyBhbGxvY2F0ZWQgdG8gYW4gaWRsZSBjb21wb25lbnQgaGF2ZSBiZWVuCisgICAgICBsb3N0IHJlc3VsdGluZyBpbiB0aGUgY29tcG9uZW50IHJldHVybmluZyB0byB0aGUgbG9hZGVkIHN0YXRlICovCisgIE9NWF9FcnJvclJlc291cmNlc0xvc3QgPSAoT01YX1MzMikgMHg4MDAwMTAwRCwKKworICAvKiogTm8gbW9yZSBpbmRpY2llcyBjYW4gYmUgZW51bWVyYXRlZCAqLworICBPTVhfRXJyb3JOb01vcmUgPSAoT01YX1MzMikgMHg4MDAwMTAwRSwKKworICAvKiogVGhlIGNvbXBvbmVudCBkZXRlY3RlZCBhIHZlcnNpb24gbWlzbWF0Y2ggKi8KKyAgT01YX0Vycm9yVmVyc2lvbk1pc21hdGNoID0gKE9NWF9TMzIpIDB4ODAwMDEwMEYsCisKKyAgLyoqIFRoZSBjb21wb25lbnQgaXMgbm90IHJlYWR5IHRvIHJldHVybiBkYXRhIGF0IHRoaXMgdGltZSAqLworICBPTVhfRXJyb3JOb3RSZWFkeSA9IChPTVhfUzMyKSAweDgwMDAxMDEwLAorCisgIC8qKiBUaGVyZSB3YXMgYSB0aW1lb3V0IHRoYXQgb2NjdXJyZWQgKi8KKyAgT01YX0Vycm9yVGltZW91dCA9IChPTVhfUzMyKSAweDgwMDAxMDExLAorCisgIC8qKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIHRyeWluZyB0byB0cmFuc2l0aW9uIGludG8gdGhlIHN0YXRlIHlvdSBhcmUgYWxyZWFkeSBpbiAqLworICBPTVhfRXJyb3JTYW1lU3RhdGUgPSAoT01YX1MzMikgMHg4MDAwMTAxMiwKKworICAvKiogUmVzb3VyY2VzIGFsbG9jYXRlZCB0byBhbiBleGVjdXRpbmcgb3IgcGF1c2VkIGNvbXBvbmVudCBoYXZlIGJlZW4gCisgICAgICBwcmVlbXB0ZWQsIGNhdXNpbmcgdGhlIGNvbXBvbmVudCB0byByZXR1cm4gdG8gdGhlIGlkbGUgc3RhdGUgKi8KKyAgT01YX0Vycm9yUmVzb3VyY2VzUHJlZW1wdGVkID0gKE9NWF9TMzIpIDB4ODAwMDEwMTMsIAorCisgIC8qKiBBIG5vbi1zdXBwbGllciBwb3J0IHNlbmRzIHRoaXMgZXJyb3IgdG8gdGhlIElMIGNsaWVudCAodmlhIHRoZSBFdmVudEhhbmRsZXIgY2FsbGJhY2spIAorICAgICAgZHVyaW5nIHRoZSBhbGxvY2F0aW9uIG9mIGJ1ZmZlcnMgKG9uIGEgdHJhbnNpdGlvbiBmcm9tIHRoZSBMT0FERUQgdG8gdGhlIElETEUgc3RhdGUgb3IKKyAgICAgIG9uIGEgcG9ydCByZXN0YXJ0KSB3aGVuIGl0IGRlZW1zIHRoYXQgaXQgaGFzIHdhaXRlZCBhbiB1bnVzdWFsbHkgbG9uZyB0aW1lIGZvciB0aGUgc3VwcGxpZXIgCisgICAgICB0byBzZW5kIGl0IGFuIGFsbG9jYXRlZCBidWZmZXIgdmlhIGEgVXNlQnVmZmVyIGNhbGwuICovCisgIE9NWF9FcnJvclBvcnRVbnJlc3BvbnNpdmVEdXJpbmdBbGxvY2F0aW9uID0gKE9NWF9TMzIpIDB4ODAwMDEwMTQsCisKKyAgLyoqIEEgbm9uLXN1cHBsaWVyIHBvcnQgc2VuZHMgdGhpcyBlcnJvciB0byB0aGUgSUwgY2xpZW50ICh2aWEgdGhlIEV2ZW50SGFuZGxlciBjYWxsYmFjaykgCisgICAgICBkdXJpbmcgdGhlIGRlYWxsb2NhdGlvbiBvZiBidWZmZXJzIChvbiBhIHRyYW5zaXRpb24gZnJvbSB0aGUgSURMRSB0byBMT0FERUQgc3RhdGUgb3IgCisgICAgICBvbiBhIHBvcnQgc3RvcCkgd2hlbiBpdCBkZWVtcyB0aGF0IGl0IGhhcyB3YWl0ZWQgYW4gdW51c3VhbGx5IGxvbmcgdGltZSBmb3IgdGhlIHN1cHBsaWVyIAorICAgICAgdG8gcmVxdWVzdCB0aGUgZGVhbGxvY2F0aW9uIG9mIGEgYnVmZmVyIGhlYWRlciB2aWEgYSBGcmVlQnVmZmVyIGNhbGwuICovCisgIE9NWF9FcnJvclBvcnRVbnJlc3BvbnNpdmVEdXJpbmdEZWFsbG9jYXRpb24gPSAoT01YX1MzMikgMHg4MDAwMTAxNSwKKworICAvKiogQSBzdXBwbGllciBwb3J0IHNlbmRzIHRoaXMgZXJyb3IgdG8gdGhlIElMIGNsaWVudCAodmlhIHRoZSBFdmVudEhhbmRsZXIgY2FsbGJhY2spIAorICAgICAgZHVyaW5nIHRoZSBzdG9wcGluZyBvZiBhIHBvcnQgKGVpdGhlciBvbiBhIHRyYW5zaXRpb24gZnJvbSB0aGUgSURMRSB0byBMT0FERUQgCisgICAgICBzdGF0ZSBvciBhIHBvcnQgc3RvcCkgd2hlbiBpdCBkZWVtcyB0aGF0IGl0IGhhcyB3YWl0ZWQgYW4gdW51c3VhbGx5IGxvbmcgdGltZSBmb3IgCisgICAgICB0aGUgbm9uLXN1cHBsaWVyIHRvIHJldHVybiBhIGJ1ZmZlciB2aWEgYW4gRW1wdHlUaGlzQnVmZmVyIG9yIEZpbGxUaGlzQnVmZmVyIGNhbGwuICovCisgIE9NWF9FcnJvclBvcnRVbnJlc3BvbnNpdmVEdXJpbmdTdG9wID0gKE9NWF9TMzIpIDB4ODAwMDEwMTYsCisKKyAgLyoqIEF0dGVtcHRpbmcgYSBzdGF0ZSB0cmFuc3Rpb24gdGhhdCBpcyBub3QgYWxsb3dlZCAqLworICBPTVhfRXJyb3JJbmNvcnJlY3RTdGF0ZVRyYW5zaXRpb24gPSAoT01YX1MzMikgMHg4MDAwMTAxNywKKworICAvKiBBdHRlbXB0aW5nIGEgY29tbWFuZCB0aGF0IGlzIG5vdCBhbGxvd2VkIGR1cmluZyB0aGUgcHJlc2VudCBzdGF0ZS4gKi8KKyAgT01YX0Vycm9ySW5jb3JyZWN0U3RhdGVPcGVyYXRpb24gPSAoT01YX1MzMikgMHg4MDAwMTAxOCwgCisKKyAgLyoqIFRoZSB2YWx1ZXMgZW5jYXBzdWxhdGVkIGluIHRoZSBwYXJhbWV0ZXIgb3IgY29uZmlnIHN0cnVjdHVyZSBhcmUgbm90IHN1cHBvcnRlZC4gKi8KKyAgT01YX0Vycm9yVW5zdXBwb3J0ZWRTZXR0aW5nID0gKE9NWF9TMzIpIDB4ODAwMDEwMTksCisKKyAgLyoqIFRoZSBwYXJhbWV0ZXIgb3IgY29uZmlnIGluZGljYXRlZCBieSB0aGUgZ2l2ZW4gaW5kZXggaXMgbm90IHN1cHBvcnRlZC4gKi8KKyAgT01YX0Vycm9yVW5zdXBwb3J0ZWRJbmRleCA9IChPTVhfUzMyKSAweDgwMDAxMDFBLAorCisgIC8qKiBUaGUgcG9ydCBpbmRleCBzdXBwbGllZCBpcyBpbmNvcnJlY3QuICovCisgIE9NWF9FcnJvckJhZFBvcnRJbmRleCA9IChPTVhfUzMyKSAweDgwMDAxMDFCLAorCisgIC8qKiBUaGUgcG9ydCBoYXMgbG9zdCBvbmUgb3IgbW9yZSBvZiBpdHMgYnVmZmVycyBhbmQgaXQgdGh1cyB1bnBvcHVsYXRlZC4gKi8KKyAgT01YX0Vycm9yUG9ydFVucG9wdWxhdGVkID0gKE9NWF9TMzIpIDB4ODAwMDEwMUMsCisKKyAgLyoqIENvbXBvbmVudCBzdXNwZW5kZWQgZHVlIHRvIHRlbXBvcmFyeSBsb3NzIG9mIHJlc291cmNlcyAqLworICBPTVhfRXJyb3JDb21wb25lbnRTdXNwZW5kZWQgPSAoT01YX1MzMikgMHg4MDAwMTAxRCwKKworICAvKiogQ29tcG9uZW50IHN1c3BlbmRlZCBkdWUgdG8gYW4gaW5hYmlsaXR5IHRvIGFjcXVpcmUgZHluYW1pYyByZXNvdXJjZXMgKi8KKyAgT01YX0Vycm9yRHluYW1pY1Jlc291cmNlc1VuYXZhaWxhYmxlID0gKE9NWF9TMzIpIDB4ODAwMDEwMUUsCisKKyAgLyoqIFdoZW4gdGhlIG1hY3JvYmxvY2sgZXJyb3IgcmVwb3J0aW5nIGlzIGVuYWJsZWQgdGhlIGNvbXBvbmVudCByZXR1cm5zIG5ldyBlcnJvciAKKyAgZm9yIGV2ZXJ5IGZyYW1lIHRoYXQgaGFzIGVycm9ycyAqLworICBPTVhfRXJyb3JNYkVycm9yc0luRnJhbWUgPSAoT01YX1MzMikgMHg4MDAwMTAxRiwKKworICAvKiogQSBjb21wb25lbnQgcmVwb3J0cyB0aGlzIGVycm9yIHdoZW4gaXQgY2Fubm90IHBhcnNlIG9yIGRldGVybWluZSB0aGUgZm9ybWF0IG9mIGFuIGlucHV0IHN0cmVhbS4gKi8KKyAgT01YX0Vycm9yRm9ybWF0Tm90RGV0ZWN0ZWQgPSAoT01YX1MzMikgMHg4MDAwMTAyMCwgCisKKyAgLyoqIFRoZSBjb250ZW50IG9wZW4gb3BlcmF0aW9uIGZhaWxlZC4gKi8KKyAgT01YX0Vycm9yQ29udGVudFBpcGVPcGVuRmFpbGVkID0gKE9NWF9TMzIpIDB4ODAwMDEwMjEsCisKKyAgLyoqIFRoZSBjb250ZW50IGNyZWF0aW9uIG9wZXJhdGlvbiBmYWlsZWQuICovCisgIE9NWF9FcnJvckNvbnRlbnRQaXBlQ3JlYXRpb25GYWlsZWQgPSAoT01YX1MzMikgMHg4MDAwMTAyMiwKKworICAvKiogU2VwYXJhdGUgdGFibGUgaW5mb3JtYXRpb24gaXMgYmVpbmcgdXNlZCAqLworICBPTVhfRXJyb3JTZXBlcmF0ZVRhYmxlc1VzZWQgPSAoT01YX1MzMikgMHg4MDAwMTAyMywKKworICAvKiogVHVubmVsaW5nIGlzIHVuc3VwcG9ydGVkIGJ5IHRoZSBjb21wb25lbnQqLworICBPTVhfRXJyb3JUdW5uZWxpbmdVbnN1cHBvcnRlZCA9IChPTVhfUzMyKSAweDgwMDAxMDI0LAorCisgIE9NWF9FcnJvcktocm9ub3NFeHRlbnNpb25zID0gKE9NWF9TMzIpMHg4RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgT01YX0Vycm9yVmVuZG9yU3RhcnRVbnVzZWQgPSAoT01YX1MzMikweDkwMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgT01YX0Vycm9yTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfRVJST1JUWVBFOworCisvKiogQGluZ3JvdXAgY29yZSAqLwordHlwZWRlZiBPTVhfRVJST1JUWVBFICgqIE9NWF9DT01QT05FTlRJTklUVFlQRSkoT01YX0lOICBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50KTsKKworLyoqIEBpbmdyb3VwIGNvcmUgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT01QT05FTlRSRUdJU1RFUlRZUEUKK3sKKyAgY29uc3QgY2hhciAgICAgICAgICAqIHBOYW1lOyAgICAgICAvKiBDb21wb25lbnQgbmFtZSwgMTI4IGJ5dGUgbGltaXQgKGluY2x1ZGluZyAnXDAnKSBhcHBsaWVzICovCisgIE9NWF9DT01QT05FTlRJTklUVFlQRSBwSW5pdGlhbGl6ZTsgLyogQ29tcG9uZW50IGluc3RhbmNlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uICovCit9IE9NWF9DT01QT05FTlRSRUdJU1RFUlRZUEU7CisKKy8qKiBAaW5ncm91cCBjb3JlICovCitleHRlcm4gT01YX0NPTVBPTkVOVFJFR0lTVEVSVFlQRSBPTVhfQ29tcG9uZW50UmVnaXN0ZXJlZFtdOworCisvKiogQGluZ3JvdXAgcnBtICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUFJJT1JJVFlNR01UVFlQRSB7CisgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyBPTVhfVTMyIG5Hcm91cFByaW9yaXR5OyAgICAgICAgICAgIC8qKjwgUHJpb3JpdHkgb2YgdGhlIGNvbXBvbmVudCBncm91cCAqLworIE9NWF9VMzIgbkdyb3VwSUQ7ICAgICAgICAgICAgICAgICAgLyoqPCBJRCBvZiB0aGUgY29tcG9uZW50IGdyb3VwICovCit9IE9NWF9QUklPUklUWU1HTVRUWVBFOworCisvKiBDb21wb25lbnQgbmFtZSBhbmQgUm9sZSBuYW1lcyBhcmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVycyBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nICdcMCcuICovCisjZGVmaW5lIE9NWF9NQVhfU1RSSU5HTkFNRV9TSVpFIDEyOAorCisvKiogQGluZ3JvdXAgY29tcCAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX0NPTVBPTkVOVFJPTEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1U4IGNSb2xlW09NWF9NQVhfU1RSSU5HTkFNRV9TSVpFXTsgIC8qKjwgbmFtZSBvZiBzdGFuZGFyZCBjb21wb25lbnQgd2hpY2ggZGVmaW5lcyBjb21wb25lbnQgcm9sZSAqLworfSBPTVhfUEFSQU1fQ09NUE9ORU5UUk9MRVRZUEU7CisKKy8qKiBFbmQgb2YgU3RyZWFtIEJ1ZmZlciBGbGFnOiAKKyAgKgorICAqIEEgY29tcG9uZW50IHNldHMgRU9TIHdoZW4gaXQgaGFzIG5vIG1vcmUgZGF0YSB0byBlbWl0IG9uIGEgcGFydGljdWxhciAKKyAgKiBvdXRwdXQgcG9ydC4gVGh1cyBhbiBvdXRwdXQgcG9ydCBzaGFsbCBzZXQgRU9TIG9uIHRoZSBsYXN0IGJ1ZmZlciBpdCAKKyAgKiBlbWl0cy4gQSBjb21wb25lbnQncyBkZXRlcm1pbmF0aW9uIG9mIHdoZW4gYW4gb3V0cHV0IHBvcnQgc2hvdWxkIAorICAqIGNlYXNlIHNlbmRpbmcgZGF0YSBpcyBpbXBsZW1lbmF0aW9uIHNwZWNpZmljLgorICAqIEBpbmdyb3VwIGJ1ZgorICAqLworCisjZGVmaW5lIE9NWF9CVUZGRVJGTEFHX0VPUyAweDAwMDAwMDAxIAorCisvKiogU3RhcnQgVGltZSBCdWZmZXIgRmxhZzogCisgKgorICogVGhlIHNvdXJjZSBvZiBhIHN0cmVhbSAoZS5nLiBhIGRlbXV4IGNvbXBvbmVudCkgc2V0cyB0aGUgU1RBUlRUSU1FCisgKiBmbGFnIG9uIHRoZSBidWZmZXIgdGhhdCBjb250YWlucyB0aGUgc3RhcnRpbmcgdGltZXN0YW1wIGZvciB0aGUKKyAqIHN0cmVhbS4gVGhlIHN0YXJ0aW5nIHRpbWVzdGFtcCBjb3JyZXNwb25kcyB0byB0aGUgZmlyc3QgZGF0YSB0aGF0CisgKiBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHN0YXJ0dXAgb3IgYWZ0ZXIgYSBzZWVrLgorICogVGhlIGZpcnN0IHRpbWVzdGFtcCBvZiB0aGUgc3RyZWFtIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc3RhcnQgdGltZS4KKyAqIEZvciBpbnN0YW5jZSwgaW4gdGhlIGNhc2Ugb2YgYSBzZWVrIHRvIGEgcGFydGljdWxhciB2aWRlbyBmcmFtZSwgCisgKiB0aGUgdGFyZ2V0IGZyYW1lIG1heSBiZSBhbiBpbnRlcmZyYW1lLiBUaHVzIHRoZSBmaXJzdCBidWZmZXIgb2YgCisgKiB0aGUgc3RyZWFtIHdpbGwgYmUgdGhlIGludHJhLWZyYW1lIHByZWNlZGluZyB0aGUgdGFyZ2V0IGZyYW1lIGFuZAorICogdGhlIHN0YXJ0dGltZSB3aWxsIG9jY3VyIHdpdGggdGhlIHRhcmdldCBmcmFtZSAod2l0aCBhbnkgb3RoZXIKKyAqIHJlcXVpcmVkIGZyYW1lcyByZXF1aXJlZCB0byByZWNvbnN0cnVjdCB0aGUgdGFyZ2V0IGludGVydmVuaW5nKS4KKyAqCisgKiBUaGUgU1RBUlRUSU1FIGZsYWcgaXMgZGlyZWN0bHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBidWZmZXIncyAKKyAqIHRpbWVzdGFtcCAnIHRodXMgaXRzIGFzc29jaWF0aW9uIHRvIGJ1ZmZlciBkYXRhIGFuZCBpdHMgCisgKiBwcm9wYWdhdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIHRpbWVzdGFtcCdzLgorICoKKyAqIFdoZW4gYSBTeW5jIENvbXBvbmVudCBjbGllbnQgcmVjZWl2ZXMgYSBidWZmZXIgd2l0aCB0aGUgCisgKiBTVEFSVFRJTUUgZmxhZyBpdCBzaGFsbCBwZXJmb3JtIGEgU2V0Q29uZmlnIG9uIGl0cyBzeW5jIHBvcnQgCisgKiB1c2luZyBPTVhfQ29uZmlnVGltZUNsaWVudFN0YXJ0VGltZSBhbmQgcGFzc2luZyB0aGUgYnVmZmVyJ3MKKyAqIHRpbWVzdGFtcC4KKyAqIAorICogQGluZ3JvdXAgYnVmCisgKi8KKworI2RlZmluZSBPTVhfQlVGRkVSRkxBR19TVEFSVFRJTUUgMHgwMDAwMDAwMgorCisgCisKKy8qKiBEZWNvZGUgT25seSBCdWZmZXIgRmxhZzogCisgKgorICogVGhlIHNvdXJjZSBvZiBhIHN0cmVhbSAoZS5nLiBhIGRlbXV4IGNvbXBvbmVudCkgc2V0cyB0aGUgREVDT0RFT05MWQorICogZmxhZyBvbiBhbnkgYnVmZmVyIHRoYXQgc2hvdWxkIHNoYWxsIGJlIGRlY29kZWQgYnV0IHNob3VsZCBub3QgYmUKKyAqIGRpc3BsYXllZC4gVGhpcyBmbGFnIGlzIHVzZWQsIGZvciBpbnN0YW5jZSwgd2hlbiBhIHNvdXJjZSBzZWVrcyB0byAKKyAqIGEgdGFyZ2V0IGludGVyZnJhbWUgdGhhdCByZXF1aXJlcyB0aGUgZGVjb2RlIG9mIGZyYW1lcyBwcmVjZWRpbmcgdGhlIAorICogdGFyZ2V0IHRvIGZhY2lsaXRhdGUgdGhlIHRhcmdldCdzIHJlY29uc3RydWN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIAorICogc291cmNlIHdvdWxkIGVtaXQgdGhlIGZyYW1lcyBwcmVjZWRpbmcgdGhlIHRhcmdldCBkb3duc3RyZWFtIAorICogYnV0IG1hcmsgdGhlbSBhcyBkZWNvZGUgb25seS4KKyAqCisgKiBUaGUgREVDT0RFT05MWSBpcyBhc3NvY2lhdGVkIHdpdGggYnVmZmVyIGRhdGEgYW5kIHByb3BhZ2F0ZWQgaW4gYSAKKyAqIG1hbm5lciBpZGVudGljYWwgdG8gdGhlIGJ1ZmZlciB0aW1lc3RhbXAuCisgKgorICogQSBjb21wb25lbnQgdGhhdCByZW5kZXJzIGRhdGEgc2hvdWxkIGlnbm9yZSBhbGwgYnVmZmVycyB3aXRoIAorICogdGhlIERFQ09ERU9OTFkgZmxhZyBzZXQuCisgKiAKKyAqIEBpbmdyb3VwIGJ1ZgorICovCisKKyNkZWZpbmUgT01YX0JVRkZFUkZMQUdfREVDT0RFT05MWSAweDAwMDAwMDA0CisKKworLyogRGF0YSBDb3JydXB0IEZsYWc6IFRoaXMgZmxhZyBpcyBzZXQgd2hlbiB0aGUgSUwgY2xpZW50IGJlbGlldmVzIHRoZSBkYXRhIGluIHRoZSBhc3NvY2lhdGVkIGJ1ZmZlciBpcyBjb3JydXB0IAorICogQGluZ3JvdXAgYnVmCisgKi8KKworI2RlZmluZSBPTVhfQlVGRkVSRkxBR19EQVRBQ09SUlVQVCAweDAwMDAwMDA4CisKKy8qIEVuZCBvZiBGcmFtZTogVGhlIGJ1ZmZlciBjb250YWlucyBleGFjdGx5IG9uZSBlbmQgb2YgZnJhbWUgYW5kIG5vIGRhdGEKKyAqICBvY2N1cnMgYWZ0ZXIgdGhlIGVuZCBvZiBmcmFtZS4gVGhpcyBmbGFnIGlzIGFuIG9wdGlvbmFsIGhpbnQuIFRoZSBhYnNlbmNlCisgKiAgb2YgdGhpcyBmbGFnIGRvZXMgbm90IGltcGx5IHRoZSBhYnNlbmNlIG9mIGFuIGVuZCBvZiBmcmFtZSB3aXRoaW4gdGhlIGJ1ZmZlci4gCisgKiBAaW5ncm91cCBidWYKKyovCisjZGVmaW5lIE9NWF9CVUZGRVJGTEFHX0VORE9GRlJBTUUgMHgwMDAwMDAxMAorCisvKiBTeW5jIEZyYW1lIEZsYWc6IFRoaXMgZmxhZyBpcyBzZXQgd2hlbiB0aGUgYnVmZmVyIGNvbnRlbnQgY29udGFpbnMgYSBjb2RlZCBzeW5jIGZyYW1lICcgCisgKiAgYSBmcmFtZSB0aGF0IGhhcyBubyBkZXBlbmRlbmN5IG9uIGFueSBvdGhlciBmcmFtZSBpbmZvcm1hdGlvbiAKKyAqICBAaW5ncm91cCBidWYKKyAqLworI2RlZmluZSBPTVhfQlVGRkVSRkxBR19TWU5DRlJBTUUgMHgwMDAwMDAyMAorCisvKiBFeHRyYSBkYXRhIHByZXNlbnQgZmxhZzogdGhlcmUgaXMgZXh0cmEgZGF0YSBhcHBlbmRlZCB0byB0aGUgZGF0YSBzdHJlYW0KKyAqIHJlc2lkaW5nIGluIHRoZSBidWZmZXIgCisgKiBAaW5ncm91cCBidWYgIAorICovCisjZGVmaW5lIE9NWF9CVUZGRVJGTEFHX0VYVFJBREFUQSAweDAwMDAwMDQwCisKKy8qKiBDb2RlYyBDb25maWcgQnVmZmVyIEZsYWc6IAorKiBPTVhfQlVGRkVSRkxBR19DT0RFQ0NPTkZJRyBpcyBhbiBvcHRpb25hbCBmbGFnIHRoYXQgaXMgc2V0IGJ5IGFuCisqIG91dHB1dCBwb3J0IHdoZW4gYWxsIGJ5dGVzIGluIHRoZSBidWZmZXIgZm9ybSBwYXJ0IG9yIGFsbCBvZiBhIHNldCBvZgorKiBjb2RlYyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRhdGEuICBFeGFtcGxlcyBpbmNsdWRlIFNQUy9QUFMgbmFsIHVuaXRzCisqIGZvciBPTVhfVklERU9fQ29kaW5nQVZDIG9yIEF1ZGlvU3BlY2lmaWNDb25maWcgZGF0YSBmb3IKKyogT01YX0FVRElPX0NvZGluZ0FBQy4gIEFueSBjb21wb25lbnQgdGhhdCBmb3IgYSBnaXZlbiBzdHJlYW0gc2V0cyAKKyogT01YX0JVRkZFUkZMQUdfQ09ERUNDT05GSUcgc2hhbGwgbm90IG1peCBjb2RlYyBjb25maWd1cmF0aW9uIGJ5dGVzCisqIHdpdGggZnJhbWUgZGF0YSBpbiB0aGUgc2FtZSBidWZmZXIsIGFuZCBzaGFsbCBzZW5kIGFsbCBidWZmZXJzCisqIGNvbnRhaW5pbmcgY29kZWMgY29uZmlndXJhdGlvbiBieXRlcyBiZWZvcmUgYW55IGJ1ZmZlcnMgY29udGFpbmluZworKiBmcmFtZSBkYXRhIHRoYXQgdGhvc2UgY29uZmlndXJhdGlvbnMgYnl0ZXMgZGVzY3JpYmUuCisqIElmIHRoZSBzdHJlYW0gZm9ybWF0IGZvciBhIHBhcnRpY3VsYXIgY29kZWMgaGFzIGEgZnJhbWUgc3BlY2lmaWMKKyogaGVhZGVyIGF0IHRoZSBzdGFydCBvZiBlYWNoIGZyYW1lLCBmb3IgZXhhbXBsZSBPTVhfQVVESU9fQ29kaW5nTVAzIG9yCisqIE9NWF9BVURJT19Db2RpbmdBQUMgaW4gQURUUyBtb2RlLCB0aGVuIHRoZXNlIHNoYWxsIGJlIHByZXNlbnRlZCBhcworKiBub3JtYWwgd2l0aG91dCBzZXR0aW5nIE9NWF9CVUZGRVJGTEFHX0NPREVDQ09ORklHLgorICogQGluZ3JvdXAgYnVmCisgKi8KKyNkZWZpbmUgT01YX0JVRkZFUkZMQUdfQ09ERUNDT05GSUcgMHgwMDAwMDA4MAorCisKKworLyoqIEBpbmdyb3VwIGJ1ZiAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0JVRkZFUkhFQURFUlRZUEUKK3sKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1U4KiBwQnVmZmVyOyAgICAgICAgICAgIC8qKjwgUG9pbnRlciB0byBhY3R1YWwgYmxvY2sgb2YgbWVtb3J5IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgYWN0aW5nIGFzIHRoZSBidWZmZXIgKi8KKyAgICBPTVhfVTMyIG5BbGxvY0xlbjsgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkLCBpbiBieXRlcyAqLworICAgIE9NWF9VMzIgbkZpbGxlZExlbjsgICAgICAgICAvKio8IG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgaW4gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciAqLworICAgIE9NWF9VMzIgbk9mZnNldDsgICAgICAgICAgICAvKio8IHN0YXJ0IG9mZnNldCBvZiB2YWxpZCBkYXRhIGluIGJ5dGVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAqLworICAgIE9NWF9QVFIgcEFwcFByaXZhdGU7ICAgICAgICAvKio8IHBvaW50ZXIgdG8gYW55IGRhdGEgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBidWZmZXIgKi8KKyAgICBPTVhfUFRSIHBQbGF0Zm9ybVByaXZhdGU7ICAgLyoqPCBwb2ludGVyIHRvIGFueSBkYXRhIHRoZSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnRzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgYnVmZmVyICovIAorICAgIE9NWF9QVFIgcElucHV0UG9ydFByaXZhdGU7ICAvKio8IHBvaW50ZXIgdG8gYW55IGRhdGEgdGhlIGlucHV0IHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50cyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGJ1ZmZlciAqLworICAgIE9NWF9QVFIgcE91dHB1dFBvcnRQcml2YXRlOyAvKio8IHBvaW50ZXIgdG8gYW55IGRhdGEgdGhlIG91dHB1dCBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBidWZmZXIgKi8KKyAgICBPTVhfSEFORExFVFlQRSBoTWFya1RhcmdldENvbXBvbmVudDsgLyoqPCBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBnZW5lcmF0ZSBhIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmsgZXZlbnQgdXBvbiBwcm9jZXNzaW5nIHRoaXMgYnVmZmVyLiAqLworICAgIE9NWF9QVFIgcE1hcmtEYXRhOyAgICAgICAgICAvKio8IEFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEgYXNzb2NpYXRlZCB3aXRoIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYXJrIHNlbnQgb24gYSBtYXJrIGV2ZW50IHRvIGRpc2FtYmlndWF0ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG1hcmsgZnJvbSBvdGhlcnMuICovCisgICAgT01YX1UzMiBuVGlja0NvdW50OyAgICAgICAgIC8qKjwgT3B0aW9uYWwgZW50cnkgdGhhdCB0aGUgY29tcG9uZW50IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGNhbiB1cGRhdGUgd2l0aCBhIHRpY2sgY291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZXkgYWNjZXNzIHRoZSBjb21wb25lbnQuICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGluIG1pY3Jvc2Vjb25kcy4gIFNpbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBhIHZhbHVlIHJlbGF0aXZlIHRvIGFuIGFyYml0cmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIHBvaW50LCB0aGlzIHZhbHVlIGNhbm5vdCBiZSB1c2VkIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSBhYnNvbHV0ZSB0aW1lLiAgVGhpcyBpcyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGVudHJ5IGFuZCBub3QgYWxsIGNvbXBvbmVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHVwZGF0ZSBpdC4qLworIE9NWF9USUNLUyBuVGltZVN0YW1wOyAgICAgICAgICAvKio8IFRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzYW1wbGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGxvZ2ljYWwgc2FtcGxlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5IGluIHRoZSBidWZmZXIuIFRpbWVzdGFtcHMgb2YgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2l2ZSBzYW1wbGVzIHdpdGhpbiB0aGUgYnVmZmVyIG1heQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGluZmVycmVkIGJ5IGFkZGluZyB0aGUgZHVyYXRpb24gb2YgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwcmVjZWRpbmcgYnVmZmVyIHRvIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcHJlY2VkaW5nIGJ1ZmZlci4qLworICBPTVhfVTMyICAgICBuRmxhZ3M7ICAgICAgICAgICAvKio8IGJ1ZmZlciBzcGVjaWZpYyBmbGFncyAqLworICBPTVhfVTMyIG5PdXRwdXRQb3J0SW5kZXg7ICAgICAvKio8IFRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IHBvcnQgKGlmIGFueSkgdXNpbmcgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBidWZmZXIgKi8KKyAgT01YX1UzMiBuSW5wdXRQb3J0SW5kZXg7ICAgICAgLyoqPCBUaGUgaW5kZXggb2YgdGhlIGlucHV0IHBvcnQgKGlmIGFueSkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGJ1ZmZlciAqLworfSBPTVhfQlVGRkVSSEVBREVSVFlQRTsKKworLyoqIFRoZSBPTVhfRVhUUkFEQVRBVFlQRSBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIGRlZmluZSB0aGUgCisgKiBwb3NzaWJsZSBleHRyYSBkYXRhIHBheWxvYWQgdHlwZXMuCisgKiBOQjogdGhpcyBlbnVtIGlzIGJpbmFyeSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cworICogT01YX0VYVFJBREFUQV9RVUFOVCBkZWZpbmUuICBUaGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoCisgKiBPTVhfRXh0cmFEYXRhUXVhbnRpemF0aW9uLgorICovCit0eXBlZGVmIGVudW0gT01YX0VYVFJBREFUQVRZUEUKK3sKKyAgIE9NWF9FeHRyYURhdGFOb25lID0gMCwgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgSW5kaWNhdGVzIHRoYXQgbm8gbW9yZSBleHRyYSBkYXRhIHNlY3Rpb25zIGZvbGxvdyAqLyAgICAgICAgCisgICBPTVhfRXh0cmFEYXRhUXVhbnRpemF0aW9uLCAgICAgICAgICAgICAgICAgICAvKio8IFRoZSBkYXRhIHBheWxvYWQgY29udGFpbnMgcXVhbnRpemF0aW9uIGRhdGEgKi8KKyAgIE9NWF9FeHRyYURhdGFLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICBPTVhfRXh0cmFEYXRhVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgIE9NWF9FeHRyYURhdGFNYXggPSAweDdGRkZGRkZGCit9IE9NWF9FWFRSQURBVEFUWVBFOworCisKK3R5cGVkZWYgc3RydWN0IE9NWF9PVEhFUl9FWFRSQURBVEFUWVBFICB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgICAgICAgICAgCisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9FWFRSQURBVEFUWVBFIGVUeXBlOyAgICAgICAvKiBFeHRyYSBEYXRhIHR5cGUgKi8KKyAgICBPTVhfVTMyIG5EYXRhU2l6ZTsgICAvKiBTaXplIG9mIHRoZSBzdXBwb3J0aW5nIGRhdGEgdG8gZm9sbG93ICovCisgICAgT01YX1U4ICBkYXRhWzFdOyAgICAgLyogU3VwcG9ydGluZyBkYXRhIGhpbnQgICovCit9IE9NWF9PVEhFUl9FWFRSQURBVEFUWVBFOworCisvKiogQGluZ3JvdXAgY29tcCAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BPUlRfUEFSQU1fVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRzOyAgICAgICAgICAgICAvKio8IFRoZSBudW1iZXIgb2YgcG9ydHMgZm9yIHRoaXMgY29tcG9uZW50ICovCisgICAgT01YX1UzMiBuU3RhcnRQb3J0TnVtYmVyOyAgIC8qKiBmaXJzdCBwb3J0IG51bWJlciBmb3IgdGhpcyB0eXBlIG9mIHBvcnQgKi8KK30gT01YX1BPUlRfUEFSQU1fVFlQRTsgCisKKy8qKiBAaW5ncm91cCBjb21wICovCit0eXBlZGVmIGVudW0gT01YX0VWRU5UVFlQRQoreworICAgIE9NWF9FdmVudENtZENvbXBsZXRlLCAgICAgICAgIC8qKjwgY29tcG9uZW50IGhhcyBzdWNlc3NmdWxseSBjb21wbGV0ZWQgYSBjb21tYW5kICovCisgICAgT01YX0V2ZW50RXJyb3IsICAgICAgICAgICAgICAgLyoqPCBjb21wb25lbnQgaGFzIGRldGVjdGVkIGFuIGVycm9yIGNvbmRpdGlvbiAqLworICAgIE9NWF9FdmVudE1hcmssICAgICAgICAgICAgICAgIC8qKjwgY29tcG9uZW50IGhhcyBkZXRlY3RlZCBhIGJ1ZmZlciBtYXJrICovCisgICAgT01YX0V2ZW50UG9ydFNldHRpbmdzQ2hhbmdlZCwgLyoqPCBjb21wb25lbnQgaXMgcmVwb3J0ZWQgYSBwb3J0IHNldHRpbmdzIGNoYW5nZSAqLworICAgIE9NWF9FdmVudEJ1ZmZlckZsYWcsICAgICAgICAgIC8qKjwgY29tcG9uZW50IGhhcyBkZXRlY3RlZCBhbiBFT1MgKi8gCisgICAgT01YX0V2ZW50UmVzb3VyY2VzQWNxdWlyZWQsICAgLyoqPCBjb21wb25lbnQgaGFzIGJlZW4gZ3JhbnRlZCByZXNvdXJjZXMgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHN0YXJ0aW5nIHRoZSBzdGF0ZSBjaGFuZ2UgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT01YX1N0YXRlV2FpdEZvclJlc291cmNlcyB0byBPTVhfU3RhdGVJZGxlLiAqLworICAgT01YX0V2ZW50Q29tcG9uZW50UmVzdW1lZCwgICAgIC8qKjwgQ29tcG9uZW50IHJlc3VtZWQgZHVlIHRvIHJlYWNxdWlzaXRpb24gb2YgcmVzb3VyY2VzICovCisgICBPTVhfRXZlbnREeW5hbWljUmVzb3VyY2VzQXZhaWxhYmxlLCAvKio8IENvbXBvbmVudCBoYXMgYWNxdWlyZWQgcHJldmlvdXNseSB1bmF2YWlsYWJsZSBkeW5hbWljIHJlc291cmNlcyAqLworICAgT01YX0V2ZW50UG9ydEZvcm1hdERldGVjdGVkLCAgICAgIC8qKjwgQ29tcG9uZW50IGhhcyBkZXRlY3RlZCBhIHN1cHBvcnRlZCBmb3JtYXQuICovCisgICBPTVhfRXZlbnRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICBPTVhfRXZlbnRWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgT01YX0V2ZW50TWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfRVZFTlRUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfQ0FMTEJBQ0tUWVBFCit7CisgICAgLyoqIFRoZSBFdmVudEhhbmRsZXIgbWV0aG9kIGlzIHVzZWQgdG8gbm90aWZ5IHRoZSBhcHBsaWNhdGlvbiB3aGVuIGFuCisgICAgICAgIGV2ZW50IG9mIGludGVyZXN0IG9jY3Vycy4gIEV2ZW50cyBhcmUgZGVmaW5lZCBpbiB0aGUgT01YX0VWRU5UVFlQRQorICAgICAgICBlbnVtZXJhdGlvbi4gIFBsZWFzZSBzZWUgdGhhdCBlbnVtZXJhdGlvbiBmb3IgZGV0YWlscyBvZiB3aGF0IHdpbGwKKyAgICAgICAgYmUgcmV0dXJuZWQgZm9yIGVhY2ggdHlwZSBvZiBldmVudC4gQ2FsbGJhY2tzIHNob3VsZCBub3QgcmV0dXJuCisgICAgICAgIGFuIGVycm9yIHRvIHRoZSBjb21wb25lbnQsIHNvIGlmIGFuIGVycm9yIG9jY3VycywgdGhlIGFwcGxpY2F0aW9uIAorICAgICAgICBzaGFsbCBoYW5kbGUgaXQgaW50ZXJuYWxseS4gIFRoaXMgaXMgYSBibG9ja2luZyBjYWxsLgorCisgICAgICAgIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiA1IG1zZWMgdG8gYXZvaWQKKyAgICAgICAgYmxvY2tpbmcgdGhlIGNvbXBvbmVudCBmb3IgYW4gZXhjZXNzaXZlbHkgbG9uZyBwZXJpb2Qgb2YgdGltZS4KKworICAgICAgICBAcGFyYW0gaENvbXBvbmVudAorICAgICAgICAgICAgaGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYWNjZXNzLiAgVGhpcyBpcyB0aGUgY29tcG9uZW50CisgICAgICAgICAgICBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gdGhlIEdldEhhbmRsZSBmdW5jdGlvbi4KKyAgICAgICAgQHBhcmFtIHBBcHBEYXRhCisgICAgICAgICAgICBwb2ludGVyIHRvIGFuIGFwcGxpY2F0aW9uIGRlZmluZWQgdmFsdWUgdGhhdCB3YXMgcHJvdmlkZWQgaW4gdGhlIAorICAgICAgICAgICAgcEFwcERhdGEgcGFyYW1ldGVyIHRvIHRoZSBPTVhfR2V0SGFuZGxlIG1ldGhvZCBmb3IgdGhlIGNvbXBvbmVudC4KKyAgICAgICAgICAgIFRoaXMgYXBwbGljYXRpb24gZGVmaW5lZCB2YWx1ZSBpcyBwcm92aWRlZCBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiAKKyAgICAgICAgICAgIGNhbiBoYXZlIGEgY29tcG9uZW50IHNwZWNpZmljIGNvbnRleHQgd2hlbiByZWNlaXZpbmcgdGhlIGNhbGxiYWNrLgorICAgICAgICBAcGFyYW0gZUV2ZW50CisgICAgICAgICAgICBFdmVudCB0aGF0IHRoZSBjb21wb25lbnQgd2FudHMgdG8gbm90aWZ5IHRoZSBhcHBsaWNhdGlvbiBhYm91dC4KKyAgICAgICAgQHBhcmFtIG5EYXRhMQorICAgICAgICAgICAgbkRhdGEgd2lsbCBiZSB0aGUgT01YX0VSUk9SVFlQRSBmb3IgYW4gZXJyb3IgZXZlbnQgYW5kIHdpbGwgYmUgCisgICAgICAgICAgICBhbiBPTVhfQ09NTUFORFRZUEUgZm9yIGEgY29tbWFuZCBjb21wbGV0ZSBldmVudCBhbmQgT01YX0lOREVYVFlQRSBmb3IgYSBPTVhfUG9ydFNldHRpbmdzQ2hhbmdlZCBldmVudC4KKyAgICAgICAgIEBwYXJhbSBuRGF0YTIKKyAgICAgICAgICAgIG5EYXRhMiB3aWxsIGhvbGQgZnVydGhlciBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBldmVudC4gQ2FuIGJlIE9NWF9TVEFURVRZUEUgZm9yCisgICAgICAgICAgICBhIE9NWF9Db21tYW5kU3RhdGVTZXQgY29tbWFuZCBvciBwb3J0IGluZGV4IGZvciBhIE9NWF9Qb3J0U2V0dGluZ3NDaGFuZ2VkIGV2ZW50LgorICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSBpcyAwIGlmIG5vdCB1c2VkLiApCisgICAgICAgIEBwYXJhbSBwRXZlbnREYXRhCisgICAgICAgICAgICBQb2ludGVyIHRvIGFkZGl0aW9uYWwgZXZlbnQtc3BlY2lmaWMgZGF0YSAoc2VlIHNwZWMgZm9yIG1lYW5pbmcpLgorICAgICAgKi8KKworICAgT01YX0VSUk9SVFlQRSAoKkV2ZW50SGFuZGxlcikoCisgICAgICAgIE9NWF9JTiBPTVhfSEFORExFVFlQRSBoQ29tcG9uZW50LAorICAgICAgICBPTVhfSU4gT01YX1BUUiBwQXBwRGF0YSwKKyAgICAgICAgT01YX0lOIE9NWF9FVkVOVFRZUEUgZUV2ZW50LAorICAgICAgICBPTVhfSU4gT01YX1UzMiBuRGF0YTEsCisgICAgICAgIE9NWF9JTiBPTVhfVTMyIG5EYXRhMiwKKyAgICAgICAgT01YX0lOIE9NWF9QVFIgcEV2ZW50RGF0YSk7CisKKyAgICAvKiogVGhlIEVtcHR5QnVmZmVyRG9uZSBtZXRob2QgaXMgdXNlZCB0byByZXR1cm4gZW1wdGllZCBidWZmZXJzIGZyb20gYW4KKyAgICAgICAgaW5wdXQgcG9ydCBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbiBmb3IgcmV1c2UuICBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbCAKKyAgICAgICAgc28gdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgYXR0ZW1wdCB0byByZWZpbGwgdGhlIGJ1ZmZlcnMgZHVyaW5nIHRoaXMKKyAgICAgICAgY2FsbCwgYnV0IHNob3VsZCBxdWV1ZSB0aGVtIGFuZCByZWZpbGwgdGhlbSBpbiBhbm90aGVyIHRocmVhZC4gIFRoZXJlCisgICAgICAgIGlzIG5vIGVycm9yIHJldHVybiwgc28gdGhlIGFwcGxpY2F0aW9uIHNoYWxsIGhhbmRsZSBhbnkgZXJyb3JzIGdlbmVyYXRlZAorICAgICAgICBpbnRlcm5hbGx5LiAgCisgICAgICAgIAorICAgICAgICBUaGUgYXBwbGljYXRpb24gc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gNSBtc2VjLgorICAgICAgICAKKyAgICAgICAgQHBhcmFtIGhDb21wb25lbnQKKyAgICAgICAgICAgIGhhbmRsZSBvZiB0aGUgY29tcG9uZW50IHRvIGFjY2Vzcy4gIFRoaXMgaXMgdGhlIGNvbXBvbmVudAorICAgICAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBHZXRIYW5kbGUgZnVuY3Rpb24uCisgICAgICAgIEBwYXJhbSBwQXBwRGF0YQorICAgICAgICAgICAgcG9pbnRlciB0byBhbiBhcHBsaWNhdGlvbiBkZWZpbmVkIHZhbHVlIHRoYXQgd2FzIHByb3ZpZGVkIGluIHRoZSAKKyAgICAgICAgICAgIHBBcHBEYXRhIHBhcmFtZXRlciB0byB0aGUgT01YX0dldEhhbmRsZSBtZXRob2QgZm9yIHRoZSBjb21wb25lbnQuCisgICAgICAgICAgICBUaGlzIGFwcGxpY2F0aW9uIGRlZmluZWQgdmFsdWUgaXMgcHJvdmlkZWQgc28gdGhhdCB0aGUgYXBwbGljYXRpb24gCisgICAgICAgICAgICBjYW4gaGF2ZSBhIGNvbXBvbmVudCBzcGVjaWZpYyBjb250ZXh0IHdoZW4gcmVjZWl2aW5nIHRoZSBjYWxsYmFjay4KKyAgICAgICAgQHBhcmFtIHBCdWZmZXIKKyAgICAgICAgICAgIHBvaW50ZXIgdG8gYW4gT01YX0JVRkZFUkhFQURFUlRZUEUgc3RydWN0dXJlIGFsbG9jYXRlZCB3aXRoIFVzZUJ1ZmZlcgorICAgICAgICAgICAgb3IgQWxsb2NhdGVCdWZmZXIgaW5kaWNhdGluZyB0aGUgYnVmZmVyIHRoYXQgd2FzIGVtcHRpZWQuCisgICAgICAgIEBpbmdyb3VwIGJ1ZgorICAgICAqLworICAgIE9NWF9FUlJPUlRZUEUgKCpFbXB0eUJ1ZmZlckRvbmUpKAorICAgICAgICBPTVhfSU4gT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgT01YX0lOIE9NWF9QVFIgcEFwcERhdGEsCisgICAgICAgIE9NWF9JTiBPTVhfQlVGRkVSSEVBREVSVFlQRSogcEJ1ZmZlcik7CisKKyAgICAvKiogVGhlIEZpbGxCdWZmZXJEb25lIG1ldGhvZCBpcyB1c2VkIHRvIHJldHVybiBmaWxsZWQgYnVmZmVycyBmcm9tIGFuCisgICAgICAgIG91dHB1dCBwb3J0IGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uIGZvciBlbXB0eWluZyBhbmQgdGhlbiByZXVzZS4gIAorICAgICAgICBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbCBzbyB0aGUgYXBwbGljYXRpb24gc2hvdWxkIG5vdCBhdHRlbXB0IHRvIAorICAgICAgICBlbXB0eSB0aGUgYnVmZmVycyBkdXJpbmcgdGhpcyBjYWxsLCBidXQgc2hvdWxkIHF1ZXVlIHRoZSBidWZmZXJzIAorICAgICAgICBhbmQgZW1wdHkgdGhlbSBpbiBhbm90aGVyIHRocmVhZC4gIFRoZXJlIGlzIG5vIGVycm9yIHJldHVybiwgc28gCisgICAgICAgIHRoZSBhcHBsaWNhdGlvbiBzaGFsbCBoYW5kbGUgYW55IGVycm9ycyBnZW5lcmF0ZWQgaW50ZXJuYWxseS4gIFRoZSAKKyAgICAgICAgYXBwbGljYXRpb24gc2hhbGwgYWxzbyB1cGRhdGUgdGhlIGJ1ZmZlciBoZWFkZXIgdG8gaW5kaWNhdGUgdGhlCisgICAgICAgIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW50byB0aGUgYnVmZmVyLiAgCisKKyAgICAgICAgVGhlIGFwcGxpY2F0aW9uIHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAgICAgCisgICAgICAgIEBwYXJhbSBoQ29tcG9uZW50CisgICAgICAgICAgICBoYW5kbGUgb2YgdGhlIGNvbXBvbmVudCB0byBhY2Nlc3MuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgICAgICBAcGFyYW0gcEFwcERhdGEKKyAgICAgICAgICAgIHBvaW50ZXIgdG8gYW4gYXBwbGljYXRpb24gZGVmaW5lZCB2YWx1ZSB0aGF0IHdhcyBwcm92aWRlZCBpbiB0aGUgCisgICAgICAgICAgICBwQXBwRGF0YSBwYXJhbWV0ZXIgdG8gdGhlIE9NWF9HZXRIYW5kbGUgbWV0aG9kIGZvciB0aGUgY29tcG9uZW50LgorICAgICAgICAgICAgVGhpcyBhcHBsaWNhdGlvbiBkZWZpbmVkIHZhbHVlIGlzIHByb3ZpZGVkIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIAorICAgICAgICAgICAgY2FuIGhhdmUgYSBjb21wb25lbnQgc3BlY2lmaWMgY29udGV4dCB3aGVuIHJlY2VpdmluZyB0aGUgY2FsbGJhY2suCisgICAgICAgIEBwYXJhbSBwQnVmZmVyCisgICAgICAgICAgICBwb2ludGVyIHRvIGFuIE9NWF9CVUZGRVJIRUFERVJUWVBFIHN0cnVjdHVyZSBhbGxvY2F0ZWQgd2l0aCBVc2VCdWZmZXIKKyAgICAgICAgICAgIG9yIEFsbG9jYXRlQnVmZmVyIGluZGljYXRpbmcgdGhlIGJ1ZmZlciB0aGF0IHdhcyBmaWxsZWQuCisgICAgICAgIEBpbmdyb3VwIGJ1ZgorICAgICAqLworICAgIE9NWF9FUlJPUlRZUEUgKCpGaWxsQnVmZmVyRG9uZSkoCisgICAgICAgIE9NWF9PVVQgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCwKKyAgICAgICAgT01YX09VVCBPTVhfUFRSIHBBcHBEYXRhLAorICAgICAgICBPTVhfT1VUIE9NWF9CVUZGRVJIRUFERVJUWVBFKiBwQnVmZmVyKTsKKworfSBPTVhfQ0FMTEJBQ0tUWVBFOworCisvKiogVGhlIE9NWF9CVUZGRVJTVVBQTElFUlRZUEUgZW51bWVyYXRpb24gaXMgdXNlZCB0byBkaWN0YXRlIHBvcnQgc3VwcGxpZXIKKyAgICBwcmVmZXJlbmNlIHdoZW4gdHVubmVsaW5nIGJldHdlZW4gdHdvIHBvcnRzLgorICAgIEBpbmdyb3VwIHR1biBidWYKKyovCit0eXBlZGVmIGVudW0gT01YX0JVRkZFUlNVUFBMSUVSVFlQRQoreworICAgIE9NWF9CdWZmZXJTdXBwbHlVbnNwZWNpZmllZCA9IDB4MCwgLyoqPCBwb3J0IHN1cHBseWluZyB0aGUgYnVmZmVycyBpcyB1bnNwZWNpZmllZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkb24ndCBjYXJlICovCisgICAgT01YX0J1ZmZlclN1cHBseUlucHV0LCAgICAgICAgICAgICAvKio8IGlucHV0IHBvcnQgc3VwcGxpZXMgdGhlIGJ1ZmZlcnMgKi8KKyAgICBPTVhfQnVmZmVyU3VwcGx5T3V0cHV0LCAgICAgICAgICAgIC8qKjwgb3V0cHV0IHBvcnQgc3VwcGxpZXMgdGhlIGJ1ZmZlcnMgKi8KKyAgICBPTVhfQnVmZmVyU3VwcGx5S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9CdWZmZXJTdXBwbHlWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9CdWZmZXJTdXBwbHlNYXggPSAweDdGRkZGRkZGCit9IE9NWF9CVUZGRVJTVVBQTElFUlRZUEU7CisKKworLyoqIGJ1ZmZlciBzdXBwbGllciBwYXJhbWV0ZXIgCisgKiBAaW5ncm91cCB0dW4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX0JVRkZFUlNVUFBMSUVSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9CVUZGRVJTVVBQTElFUlRZUEUgZUJ1ZmZlclN1cHBsaWVyOyAvKio8IGJ1ZmZlciBzdXBwbGllciAqLworfSBPTVhfUEFSQU1fQlVGRkVSU1VQUExJRVJUWVBFOworCisKKy8qKjwgaW5kaWNhdGVzIHRoYXQgYnVmZmVycyByZWNlaXZlZCBieSBhbiBpbnB1dCBwb3J0IG9mIGEgdHVubmVsIAorICAgICBtYXkgbm90IG1vZGlmeSB0aGUgZGF0YSBpbiB0aGUgYnVmZmVycyAKKyAgICAgQGluZ3JvdXAgdHVuCisgKi8KKyNkZWZpbmUgT01YX1BPUlRUVU5ORUxGTEFHX1JFQURPTkxZIDB4MDAwMDAwMDEgCisKKworLyoqIFRoZSBPTVhfVFVOTkVMU0VUVVBUWVBFIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHBhc3MgZGF0YSBmcm9tIGFuIG91dHB1dAorICAgIHBvcnQgdG8gYW4gaW5wdXQgcG9ydCBhcyBwYXJ0IHRoZSB0d28gQ29tcG9uZW50VHVubmVsUmVxdWVzdCBjYWxscworICAgIHJlc3VsdGluZyBmcm9tIGEgT01YX1NldHVwVHVubmVsIGNhbGwgZnJvbSB0aGUgSUwgQ2xpZW50LiAKKyAgICBAaW5ncm91cCB0dW4KKyAqLyAgIAordHlwZWRlZiBzdHJ1Y3QgT01YX1RVTk5FTFNFVFVQVFlQRQoreworICAgIE9NWF9VMzIgblR1bm5lbEZsYWdzOyAgICAgICAgICAgICAvKio8IGJpdCBmbGFncyBmb3IgdHVubmVsaW5nICovCisgICAgT01YX0JVRkZFUlNVUFBMSUVSVFlQRSBlU3VwcGxpZXI7IC8qKjwgc3VwcGxpZXIgcHJlZmVyZW5jZSAqLworfSBPTVhfVFVOTkVMU0VUVVBUWVBFOyAKKworLyogT01YIENvbXBvbmVudCBoZWFkZXJzIGlzIGluY2x1ZGVkIHRvIGVuYWJsZSB0aGUgY29yZSB0byB1c2UKKyAgIG1hY3JvcyBmb3IgZnVuY3Rpb25zIGludG8gdGhlIGNvbXBvbmVudCBmb3IgT01YIHJlbGVhc2UgMS4wLiAgCisgICBEZXZlbG9wZXJzIHNob3VsZCBub3QgYWNjZXNzIGFueSBzdHJ1Y3R1cmVzIG9yIGRhdGEgZnJvbSB3aXRoaW4KKyAgIHRoZSBjb21wb25lbnQgaGVhZGVyIGRpcmVjdGx5ICovCisvKiBUTyBCRSBSRU1PVkVEIC0gI2luY2x1ZGUgPE9NWF9Db21wb25lbnQuaD4gKi8KKworLyoqIEdldENvbXBvbmVudFZlcnNpb24gd2lsbCByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBvbmVudC4gIAorICAgIFRoaXMgaXMgYSBibG9ja2luZyBjYWxsLiAgVGhpcyBtYWNybyB3aWxsIGdvIGRpcmVjdGx5IGZyb20gdGhlCisgICAgYXBwbGljYXRpb24gdG8gdGhlIGNvbXBvbmVudCAodmlhIGEgY29yZSBtYWNybykuICBUaGUKKyAgICBjb21wb25lbnQgd2lsbCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICBAcGFyYW0gW2luXSBoQ29tcG9uZW50CisgICAgICAgIGhhbmRsZSBvZiBjb21wb25lbnQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZAorICAgIEBwYXJhbSBbb3V0XSBwQ29tcG9uZW50TmFtZQorICAgICAgICBwb2ludGVyIHRvIGFuIGVtcHR5IHN0cmluZyBvZiBsZW5ndGggMTI4IGJ5dGVzLiAgVGhlIGNvbXBvbmVudCAKKyAgICAgICAgd2lsbCB3cml0ZSBpdHMgbmFtZSBpbnRvIHRoaXMgc3RyaW5nLiAgVGhlIG5hbWUgd2lsbCBiZSAKKyAgICAgICAgdGVybWluYXRlZCBieSBhIHNpbmdsZSB6ZXJvIGJ5dGUuICBUaGUgbmFtZSBvZiBhIGNvbXBvbmVudCB3aWxsIAorICAgICAgICBiZSAxMjcgYnl0ZXMgb3IgbGVzcyB0byBsZWF2ZSByb29tIGZvciB0aGUgdHJhaWxpbmcgemVybyBieXRlLiAgCisgICAgICAgIEFuIGV4YW1wbGUgb2YgYSB2YWxpZCBjb21wb25lbnQgbmFtZSBpcyAiT01YLkFCQy5DaGFubmVsTWl4ZXJcMCIuCisgICAgQHBhcmFtIFtvdXRdIHBDb21wb25lbnRWZXJzaW9uCisgICAgICAgIHBvaW50ZXIgdG8gYW4gT01YIFZlcnNpb24gc3RydWN0dXJlIHRoYXQgdGhlIGNvbXBvbmVudCB3aWxsIGZpbGwgCisgICAgICAgIGluLiAgVGhlIGNvbXBvbmVudCB3aWxsIGZpbGwgaW4gYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgCisgICAgICAgIGNvbXBvbmVudCB2ZXJzaW9uLiAgTk9URTogdGhlIGNvbXBvbmVudCB2ZXJzaW9uIGlzIE5PVCB0aGUgc2FtZSAKKyAgICAgICAgYXMgdGhlIE9NWCBTcGVjaWZpY2F0aW9uIHZlcnNpb24gKGZvdW5kIGluIGFsbCBzdHJ1Y3R1cmVzKS4gIFRoZSAKKyAgICAgICAgY29tcG9uZW50IHZlcnNpb24gaXMgZGVmaW5lZCBieSB0aGUgdmVuZG9yIG9mIHRoZSBjb21wb25lbnQgYW5kIAorICAgICAgICBpdHMgdmFsdWUgaXMgZW50aXJlbHkgdXAgdG8gdGhlIGNvbXBvbmVudCB2ZW5kb3IuCisgICAgQHBhcmFtIFtvdXRdIHBTcGVjVmVyc2lvbgorICAgICAgICBwb2ludGVyIHRvIGFuIE9NWCBWZXJzaW9uIHN0cnVjdHVyZSB0aGF0IHRoZSBjb21wb25lbnQgd2lsbCBmaWxsIAorICAgICAgICBpbi4gIFRoZSBTcGVjVmVyc2lvbiBpcyB0aGUgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiB0aGF0IHRoZSAKKyAgICAgICAgY29tcG9uZW50IHdhcyBidWlsdCBhZ2FpbnN0LiAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIHZhbHVlIG1heSBvciAKKyAgICAgICAgbWF5IG5vdCBtYXRjaCB0aGUgc3RydWN0dXJlJ3MgdmVyc2lvbi4gIEZvciBleGFtcGxlLCBpZiB0aGUgCisgICAgICAgIGNvbXBvbmVudCB3YXMgYnVpbHQgYWdhaW5zdCB0aGUgMi4wIHNwZWNpZmljYXRpb24sIGJ1dCB0aGUgCisgICAgICAgIGFwcGxpY2F0aW9uICh3aGljaCBjcmVhdGVzIHRoZSBzdHJ1Y3R1cmUgaXMgYnVpbHQgYWdhaW5zdCB0aGUgCisgICAgICAgIDEuMCBzcGVjaWZpY2F0aW9uIHRoZSB2ZXJzaW9ucyB3b3VsZCBiZSBkaWZmZXJlbnQuCisgICAgQHBhcmFtIFtvdXRdIHBDb21wb25lbnRVVUlECisgICAgICAgIHBvaW50ZXIgdG8gdGhlIFVVSUQgb2YgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBieSAKKyAgICAgICAgdGhlIGNvbXBvbmVudC4gIFRoZSBVVUlEIGlzIGEgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBpcyBzZXQgYXQgCisgICAgICAgIFJVTiB0aW1lIGZvciB0aGUgY29tcG9uZW50IGFuZCBpcyB1bmlxdWUgdG8gZWFjaCBpbnN0YW50aW9uIG9mIAorICAgICAgICB0aGUgY29tcG9uZW50LgorICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgIE9NWF9FcnJvck5vbmUuICBPdGhlcndpc2UgdGhlIGFwcHJvcHJpYXRlIE9NWCBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorICAgIEBpbmdyb3VwIGNvbXAKKyAqLworI2RlZmluZSBPTVhfR2V0Q29tcG9uZW50VmVyc2lvbiggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50TmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50VmVyc2lvbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwU3BlY1ZlcnNpb24sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50VVVJRCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5HZXRDb21wb25lbnRWZXJzaW9uKCAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50TmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50VmVyc2lvbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwU3BlY1ZlcnNpb24sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50VVVJRCkgICAgICAgICAgICAgICAgIC8qIE1hY3JvIEVuZCAqLworCisKKy8qKiBTZW5kIGEgY29tbWFuZCB0byB0aGUgY29tcG9uZW50LiAgVGhpcyBjYWxsIGlzIGEgbm9uLWJsb2NraW5nIGNhbGwuCisgICAgVGhlIGNvbXBvbmVudCBzaG91bGQgY2hlY2sgdGhlIHBhcmFtZXRlcnMgYW5kIHRoZW4gcXVldWUgdGhlIGNvbW1hbmQKKyAgICB0byB0aGUgY29tcG9uZW50IHRocmVhZCB0byBiZSBleGVjdXRlZC4gIFRoZSBjb21wb25lbnQgdGhyZWFkIHNoYWxsIAorICAgIHNlbmQgdGhlIEV2ZW50SGFuZGxlcigpIGNhbGxiYWNrIGF0IHRoZSBjb25jbHVzaW9uIG9mIHRoZSBjb21tYW5kLiAKKyAgICBUaGlzIG1hY3JvIHdpbGwgZ28gZGlyZWN0bHkgZnJvbSB0aGUgYXBwbGljYXRpb24gdG8gdGhlIGNvbXBvbmVudCAodmlhCisgICAgYSBjb3JlIG1hY3JvKS4gIFRoZSBjb21wb25lbnQgd2lsbCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAKKyAgICBXaGVuIHRoZSBjb21tYW5kIGlzICJPTVhfQ29tbWFuZFN0YXRlU2V0IiB0aGUgY29tcG9uZW50IHdpbGwgcXVldWUgYQorICAgIHN0YXRlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBzdGF0ZSBpZGVuZmllZCBpbiBuUGFyYW0uCisgICAgCisgICAgV2hlbiB0aGUgY29tbWFuZCBpcyAiT01YX0NvbW1hbmRGbHVzaCIsIHRvIGZsdXNoIGEgcG9ydCdzIGJ1ZmZlciBxdWV1ZXMsCisgICAgdGhlIGNvbW1hbmQgd2lsbCBmb3JjZSB0aGUgY29tcG9uZW50IHRvIHJldHVybiBhbGwgYnVmZmVycyBOT1QgQ1VSUkVOVExZIAorICAgIEJFSU5HIFBST0NFU1NFRCB0byB0aGUgYXBwbGljYXRpb24sIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgYnVmZmVycyAKKyAgICB3ZXJlIHJlY2VpdmVkLgorICAgIAorICAgIFdoZW4gdGhlIGNvbW1hbmQgaXMgIk9NWF9Db21tYW5kUG9ydERpc2FibGUiIG9yIAorICAgICJPTVhfQ29tbWFuZFBvcnRFbmFibGUiLCB0aGUgY29tcG9uZW50J3MgcG9ydCAoZ2l2ZW4gYnkgdGhlIHZhbHVlIG9mCisgICAgblBhcmFtKSB3aWxsIGJlIHN0b3BwZWQgb3IgcmVzdGFydGVkLiAKKyAgICAKKyAgICBXaGVuIHRoZSBjb21tYW5kICJPTVhfQ29tbWFuZE1hcmtCdWZmZXIiIGlzIHVzZWQgdG8gbWFyayBhIGJ1ZmZlciwgdGhlCisgICAgcENtZERhdGEgd2lsbCBwb2ludCB0byBhIE9NWF9NQVJLVFlQRSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgY29tcG9uZW50CisgICAgaGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gZXhhbWluZSB0aGUgYnVmZmVyIGNoYWluIGZvciB0aGUgbWFyay4gIG5QYXJhbTEKKyAgICBjb250YWlucyB0aGUgaW5kZXggb2YgdGhlIHBvcnQgb24gd2hpY2ggdGhlIGJ1ZmZlciBtYXJrIGlzIGFwcGxpZWQuCisKKyAgICBTcGVjaWZpY2F0aW9uIHRleHQgZm9yIG1vcmUgZGV0YWlscy4gCisgICAgCisgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICBoYW5kbGUgb2YgY29tcG9uZW50IHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmQKKyAgICBAcGFyYW0gW2luXSBDbWQKKyAgICAgICAgQ29tbWFuZCBmb3IgdGhlIGNvbXBvbmVudCB0byBleGVjdXRlCisgICAgQHBhcmFtIFtpbl0gblBhcmFtCisgICAgICAgIFBhcmFtZXRlciBmb3IgdGhlIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQuICBXaGVuIENtZCBoYXMgdGhlIHZhbHVlIAorICAgICAgICBPTVhfQ29tbWFuZFN0YXRlU2V0LCB2YWx1ZSBpcyBhIG1lbWJlciBvZiBPTVhfU1RBVEVUWVBFLiAgV2hlbiBDbWQgaGFzIAorICAgICAgICB0aGUgdmFsdWUgT01YX0NvbW1hbmRGbHVzaCwgdmFsdWUgb2YgblBhcmFtIGluZGljYXRlcyB3aGljaCBwb3J0KHMpIAorICAgICAgICB0byBmbHVzaC4gLTEgaXMgdXNlZCB0byBmbHVzaCBhbGwgcG9ydHMgYSBzaW5nbGUgcG9ydCBpbmRleCB3aWxsIAorICAgICAgICBvbmx5IGZsdXNoIHRoYXQgcG9ydC4gIFdoZW4gQ21kIGhhcyB0aGUgdmFsdWUgIk9NWF9Db21tYW5kUG9ydERpc2FibGUiCisgICAgICAgIG9yICJPTVhfQ29tbWFuZFBvcnRFbmFibGUiLCB0aGUgY29tcG9uZW50J3MgcG9ydCBpcyBnaXZlbiBieSAKKyAgICAgICAgdGhlIHZhbHVlIG9mIG5QYXJhbS4gIFdoZW4gQ21kIGhhcyB0aGUgdmFsdWUgIk9NWF9Db21tYW5kTWFya0J1ZmZlciIKKyAgICAgICAgdGhlIGNvbXBvbmVudHMgcG90IGlzIGdpdmVuIGJ5IHRoZSB2YWx1ZSBvZiBuUGFyYW0uCisgICAgQHBhcmFtIFtpbl0gcENtZERhdGEKKyAgICAgICAgUGFyYW1ldGVyIHBvaW50aW5nIHRvIHRoZSBPTVhfTUFSS1RZUEUgc3RydWN0dXJlIHdoZW4gQ21kIGhhcyB0aGUgdmFsdWUKKyAgICAgICAgIk9NWF9Db21tYW5kTWFya0J1ZmZlciIuICAgICAKKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb21wCisgKi8KKyNkZWZpbmUgT01YX1NlbmRDb21tYW5kKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIENtZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIG5QYXJhbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIHBDbWREYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChPTVhfQ09NUE9ORU5UVFlQRSopaENvbXBvbmVudCktPlNlbmRDb21tYW5kKCAgICAgICAgIFwKKyAgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIENtZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIG5QYXJhbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIHBDbWREYXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFjcm8gRW5kICovCisKKworLyoqIFRoZSBPTVhfR2V0UGFyYW1ldGVyIG1hY3JvIHdpbGwgZ2V0IG9uZSBvZiB0aGUgY3VycmVudCBwYXJhbWV0ZXIgCisgICAgc2V0dGluZ3MgZnJvbSB0aGUgY29tcG9uZW50LiAgVGhpcyBtYWNybyBjYW5ub3Qgb25seSBiZSBpbnZva2VkIHdoZW4gCisgICAgdGhlIGNvbXBvbmVudCBpcyBpbiB0aGUgT01YX1N0YXRlSW52YWxpZCBzdGF0ZS4gIFRoZSBuUGFyYW1JbmRleAorICAgIHBhcmFtZXRlciBpcyB1c2VkIHRvIGluZGljYXRlIHdoaWNoIHN0cnVjdHVyZSBpcyBiZWluZyByZXF1ZXN0ZWQgZnJvbQorICAgIHRoZSBjb21wb25lbnQuICBUaGUgYXBwbGljYXRpb24gc2hhbGwgYWxsb2NhdGUgdGhlIGNvcnJlY3Qgc3RydWN0dXJlIAorICAgIGFuZCBzaGFsbCBmaWxsIGluIHRoZSBzdHJ1Y3R1cmUgc2l6ZSBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbiBiZWZvcmUgCisgICAgaW52b2tpbmcgdGhpcyBtYWNyby4gIFdoZW4gdGhlIHBhcmFtZXRlciBhcHBsaWVzIHRvIGEgcG9ydCwgdGhlCisgICAgY2FsbGVyIHNoYWxsIGZpbGwgaW4gdGhlIGFwcHJvcHJpYXRlIG5Qb3J0SW5kZXggdmFsdWUgaW5kaWNhdGluZyB0aGUKKyAgICBwb3J0IG9uIHdoaWNoIHRoZSBwYXJhbWV0ZXIgYXBwbGllcy4gSWYgdGhlIGNvbXBvbmVudCBoYXMgbm90IGhhZCAKKyAgICBhbnkgc2V0dGluZ3MgY2hhbmdlZCwgdGhlbiB0aGUgY29tcG9uZW50IHNob3VsZCByZXR1cm4gYSBzZXQgb2YgCisgICAgdmFsaWQgREVGQVVMVCAgcGFyYW1ldGVycyBmb3IgdGhlIGNvbXBvbmVudC4gIFRoaXMgaXMgYSBibG9ja2luZyAKKyAgICBjYWxsLiAgCisgICAgCisgICAgVGhlIGNvbXBvbmVudCBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiAyMCBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbaW5dIG5QYXJhbUluZGV4CisgICAgICAgIEluZGV4IG9mIHRoZSBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVkLiAgVGhpcyB2YWx1ZSBpcyBmcm9tIHRoZQorICAgICAgICBPTVhfSU5ERVhUWVBFIGVudW1lcmF0aW9uLgorICAgIEBwYXJhbSBbaW4sb3V0XSBwQ29tcG9uZW50UGFyYW1ldGVyU3RydWN0dXJlCisgICAgICAgIFBvaW50ZXIgdG8gYXBwbGljYXRpb24gYWxsb2NhdGVkIHN0cnVjdHVyZSB0byBiZSBmaWxsZWQgYnkgdGhlIAorICAgICAgICBjb21wb25lbnQuCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcAorICovCisjZGVmaW5lIE9NWF9HZXRQYXJhbWV0ZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5QYXJhbUluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBDb21wb25lbnRQYXJhbWV0ZXJTdHJ1Y3R1cmUpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5HZXRQYXJhbWV0ZXIoICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuUGFyYW1JbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50UGFyYW1ldGVyU3RydWN0dXJlKSAgICAvKiBNYWNybyBFbmQgKi8KKworCisvKiogVGhlIE9NWF9TZXRQYXJhbWV0ZXIgbWFjcm8gd2lsbCBzZW5kIGFuIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcgorICAgIHN0cnVjdHVyZSB0byBhIGNvbXBvbmVudC4gIEVhY2ggc3RydWN0dXJlIHNoYWxsIGJlIHNlbnQgb25lIGF0IGEgdGltZSwKKyAgICBpbiBhIHNlcGFyYXRlIGludm9jYXRpb24gb2YgdGhlIG1hY3JvLiAgVGhpcyBtYWNybyBjYW4gb25seSBiZQorICAgIGludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBPTVhfU3RhdGVMb2FkZWQgc3RhdGUsIG9yIHRoZQorICAgIHBvcnQgaXMgZGlzYWJsZWQgKHdoZW4gdGhlIHBhcmFtZXRlciBhcHBsaWVzIHRvIGEgcG9ydCkuIFRoZSAKKyAgICBuUGFyYW1JbmRleCBwYXJhbWV0ZXIgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBzdHJ1Y3R1cmUgaXMgYmVpbmcKKyAgICBwYXNzZWQgdG8gdGhlIGNvbXBvbmVudC4gIFRoZSBhcHBsaWNhdGlvbiBzaGFsbCBhbGxvY2F0ZSB0aGUgCisgICAgY29ycmVjdCBzdHJ1Y3R1cmUgYW5kIHNoYWxsIGZpbGwgaW4gdGhlIHN0cnVjdHVyZSBzaXplIGFuZCB2ZXJzaW9uIAorICAgIGluZm9ybWF0aW9uIChhcyB3ZWxsIGFzIHRoZSBhY3R1YWwgZGF0YSkgYmVmb3JlIGludm9raW5nIHRoaXMgbWFjcm8uCisgICAgVGhlIGFwcGxpY2F0aW9uIGlzIGZyZWUgdG8gZGlzcG9zZSBvZiB0aGlzIHN0cnVjdHVyZSBhZnRlciB0aGUgY2FsbAorICAgIGFzIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQgdG8gY29weSBhbnkgZGF0YSBpdCBzaGFsbCByZXRhaW4uICBUaGlzIAorICAgIGlzIGEgYmxvY2tpbmcgY2FsbC4gIAorICAgIAorICAgIFRoZSBjb21wb25lbnQgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gMjAgbXNlYy4KKyAgICAKKyAgICBAcGFyYW0gW2luXSBoQ29tcG9uZW50CisgICAgICAgIEhhbmRsZSBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2VkLiAgVGhpcyBpcyB0aGUgY29tcG9uZW50CisgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgT01YX0dldEhhbmRsZSBmdW5jdGlvbi4KKyAgICBAcGFyYW0gW2luXSBuSW5kZXgKKyAgICAgICAgSW5kZXggb2YgdGhlIHN0cnVjdHVyZSB0byBiZSBzZW50LiAgVGhpcyB2YWx1ZSBpcyBmcm9tIHRoZQorICAgICAgICBPTVhfSU5ERVhUWVBFIGVudW1lcmF0aW9uLgorICAgIEBwYXJhbSBbaW5dIHBDb21wb25lbnRQYXJhbWV0ZXJTdHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlciB0byBhcHBsaWNhdGlvbiBhbGxvY2F0ZWQgc3RydWN0dXJlIHRvIGJlIHVzZWQgZm9yCisgICAgICAgIGluaXRpYWxpemF0aW9uIGJ5IHRoZSBjb21wb25lbnQuCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcAorICovCisjZGVmaW5lIE9NWF9TZXRQYXJhbWV0ZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5QYXJhbUluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBDb21wb25lbnRQYXJhbWV0ZXJTdHJ1Y3R1cmUpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5TZXRQYXJhbWV0ZXIoICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuUGFyYW1JbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50UGFyYW1ldGVyU3RydWN0dXJlKSAgICAvKiBNYWNybyBFbmQgKi8KKworCisvKiogVGhlIE9NWF9HZXRDb25maWcgbWFjcm8gd2lsbCBnZXQgb25lIG9mIHRoZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZXMgCisgICAgZnJvbSBhIGNvbXBvbmVudC4gIFRoaXMgbWFjcm8gY2FuIGJlIGludm9rZWQgYW55dGltZSBhZnRlciB0aGUgCisgICAgY29tcG9uZW50IGhhcyBiZWVuIGxvYWRlZC4gIFRoZSBuUGFyYW1JbmRleCBjYWxsIHBhcmFtZXRlciBpcyB1c2VkIHRvIAorICAgIGluZGljYXRlIHdoaWNoIHN0cnVjdHVyZSBpcyBiZWluZyByZXF1ZXN0ZWQgZnJvbSB0aGUgY29tcG9uZW50LiAgVGhlIAorICAgIGFwcGxpY2F0aW9uIHNoYWxsIGFsbG9jYXRlIHRoZSBjb3JyZWN0IHN0cnVjdHVyZSBhbmQgc2hhbGwgZmlsbCBpbiB0aGUgCisgICAgc3RydWN0dXJlIHNpemUgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gYmVmb3JlIGludm9raW5nIHRoaXMgbWFjcm8uICAKKyAgICBJZiB0aGUgY29tcG9uZW50IGhhcyBub3QgaGFkIHRoaXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgc2VudCBiZWZvcmUsIAorICAgIHRoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgcmV0dXJuIGEgc2V0IG9mIHZhbGlkIERFRkFVTFQgdmFsdWVzIGZvciB0aGUgCisgICAgY29tcG9uZW50LiAgVGhpcyBpcyBhIGJsb2NraW5nIGNhbGwuICAKKyAgICAKKyAgICBUaGUgY29tcG9uZW50IHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAKKyAgICBAcGFyYW0gW2luXSBoQ29tcG9uZW50CisgICAgICAgIEhhbmRsZSBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2VkLiAgVGhpcyBpcyB0aGUgY29tcG9uZW50CisgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgT01YX0dldEhhbmRsZSBmdW5jdGlvbi4KKyAgICBAcGFyYW0gW2luXSBuSW5kZXgKKyAgICAgICAgSW5kZXggb2YgdGhlIHN0cnVjdHVyZSB0byBiZSBmaWxsZWQuICBUaGlzIHZhbHVlIGlzIGZyb20gdGhlCisgICAgICAgIE9NWF9JTkRFWFRZUEUgZW51bWVyYXRpb24uCisgICAgQHBhcmFtIFtpbixvdXRdIHBDb21wb25lbnRDb25maWdTdHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlciB0byBhcHBsaWNhdGlvbiBhbGxvY2F0ZWQgc3RydWN0dXJlIHRvIGJlIGZpbGxlZCBieSB0aGUgCisgICAgICAgIGNvbXBvbmVudC4KKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb21wCisqLyAgICAgICAgCisjZGVmaW5lIE9NWF9HZXRDb25maWcoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5Db25maWdJbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBDb21wb25lbnRDb25maWdTdHJ1Y3R1cmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5HZXRDb25maWcoICAgICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuQ29uZmlnSW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQ29tcG9uZW50Q29uZmlnU3RydWN0dXJlKSAgICAgICAvKiBNYWNybyBFbmQgKi8KKworCisvKiogVGhlIE9NWF9TZXRDb25maWcgbWFjcm8gd2lsbCBzZW5kIG9uZSBvZiB0aGUgY29uZmlndXJhdGlvbiAKKyAgICBzdHJ1Y3R1cmVzIHRvIGEgY29tcG9uZW50LiAgRWFjaCBzdHJ1Y3R1cmUgc2hhbGwgYmUgc2VudCBvbmUgYXQgYSB0aW1lLAorICAgIGVhY2ggaW4gYSBzZXBhcmF0ZSBpbnZvY2F0aW9uIG9mIHRoZSBtYWNyby4gIFRoaXMgbWFjcm8gY2FuIGJlIGludm9rZWQgCisgICAgYW55dGltZSBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGxvYWRlZC4gIFRoZSBhcHBsaWNhdGlvbiBzaGFsbCAKKyAgICBhbGxvY2F0ZSB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUgYW5kIHNoYWxsIGZpbGwgaW4gdGhlIHN0cnVjdHVyZSBzaXplIAorICAgIGFuZCB2ZXJzaW9uIGluZm9ybWF0aW9uIChhcyB3ZWxsIGFzIHRoZSBhY3R1YWwgZGF0YSkgYmVmb3JlIGludm9raW5nIAorICAgIHRoaXMgbWFjcm8uICBUaGUgYXBwbGljYXRpb24gaXMgZnJlZSB0byBkaXNwb3NlIG9mIHRoaXMgc3RydWN0dXJlIGFmdGVyIAorICAgIHRoZSBjYWxsIGFzIHRoZSBjb21wb25lbnQgaXMgcmVxdWlyZWQgdG8gY29weSBhbnkgZGF0YSBpdCBzaGFsbCByZXRhaW4uICAKKyAgICBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbC4gIAorICAgIAorICAgIFRoZSBjb21wb25lbnQgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gNSBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbaW5dIG5Db25maWdJbmRleAorICAgICAgICBJbmRleCBvZiB0aGUgc3RydWN0dXJlIHRvIGJlIHNlbnQuICBUaGlzIHZhbHVlIGlzIGZyb20gdGhlCisgICAgICAgIE9NWF9JTkRFWFRZUEUgZW51bWVyYXRpb24gYWJvdmUuCisgICAgQHBhcmFtIFtpbl0gcENvbXBvbmVudENvbmZpZ1N0cnVjdHVyZQorICAgICAgICBwb2ludGVyIHRvIGFwcGxpY2F0aW9uIGFsbG9jYXRlZCBzdHJ1Y3R1cmUgdG8gYmUgdXNlZCBmb3IKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gYnkgdGhlIGNvbXBvbmVudC4KKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb21wCisgKi8KKyNkZWZpbmUgT01YX1NldENvbmZpZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbkNvbmZpZ0luZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcENvbXBvbmVudENvbmZpZ1N0cnVjdHVyZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChPTVhfQ09NUE9ORU5UVFlQRSopaENvbXBvbmVudCktPlNldENvbmZpZyggICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5Db25maWdJbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBDb21wb25lbnRDb25maWdTdHJ1Y3R1cmUpICAgICAgIC8qIE1hY3JvIEVuZCAqLworCisKKy8qKiBUaGUgT01YX0dldEV4dGVuc2lvbkluZGV4IG1hY3JvIHdpbGwgaW52b2tlIGEgY29tcG9uZW50IHRvIHRyYW5zbGF0ZSAKKyAgICBhIHZlbmRvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9yIHBhcmFtZXRlciBzdHJpbmcgaW50byBhbiBPTVggCisgICAgc3RydWN0dXJlIGluZGV4LiAgVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgZm9yIHRoZSB2ZW5kb3IgdG8gc3VwcG9ydCAKKyAgICB0aGlzIGNvbW1hbmQgZm9yIHRoZSBpbmRleGVzIGFscmVhZHkgZm91bmQgaW4gdGhlIE9NWF9JTkRFWFRZUEUgCisgICAgZW51bWVyYXRpb24gKHRoaXMgaXMgZG9uZSB0byBzYXZlIHNwYWNlIGluIHNtYWxsIGNvbXBvbmVudHMpLiAgVGhlIAorICAgIGNvbXBvbmVudCBzaGFsbCBzdXBwb3J0IGFsbCB2ZW5kb3Igc3VwcGxpZWQgZXh0ZW5zaW9uIGluZGV4ZXMgbm90IGZvdW5kCisgICAgaW4gdGhlIG1hc3RlciBPTVhfSU5ERVhUWVBFIGVudW1lcmF0aW9uLiAgVGhpcyBpcyBhIGJsb2NraW5nIGNhbGwuICAKKyAgICAKKyAgICBUaGUgY29tcG9uZW50IHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAKKyAgICBAcGFyYW0gW2luXSBoQ29tcG9uZW50CisgICAgICAgIEhhbmRsZSBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2VkLiAgVGhpcyBpcyB0aGUgY29tcG9uZW50CisgICAgICAgIGhhbmRsZSByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbaW5dIGNQYXJhbWV0ZXJOYW1lCisgICAgICAgIE9NWF9TVFJJTkcgdGhhdCBzaGFsbCBiZSBsZXNzIHRoYW4gMTI4IGNoYXJhY3RlcnMgbG9uZyBpbmNsdWRpbmcKKyAgICAgICAgdGhlIHRyYWlsaW5nIG51bGwgYnl0ZS4gIFRoaXMgaXMgdGhlIHN0cmluZyB0aGF0IHdpbGwgZ2V0IAorICAgICAgICB0cmFuc2xhdGVkIGJ5IHRoZSBjb21wb25lbnQgaW50byBhIGNvbmZpZ3VyYXRpb24gaW5kZXguCisgICAgQHBhcmFtIFtvdXRdIHBJbmRleFR5cGUKKyAgICAgICAgYSBwb2ludGVyIHRvIGEgT01YX0lOREVYVFlQRSB0byByZWNlaXZlIHRoZSBpbmRleCB2YWx1ZS4KKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb21wCisgKi8KKyNkZWZpbmUgT01YX0dldEV4dGVuc2lvbkluZGV4KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY1BhcmFtZXRlck5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcEluZGV4VHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKE9NWF9DT01QT05FTlRUWVBFKiloQ29tcG9uZW50KS0+R2V0RXh0ZW5zaW9uSW5kZXgoICAgIFwKKyAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY1BhcmFtZXRlck5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcEluZGV4VHlwZSkgICAgICAgICAgICAgICAgICAgICAvKiBNYWNybyBFbmQgKi8KKworCisvKiogVGhlIE9NWF9HZXRTdGF0ZSBtYWNybyB3aWxsIGludm9rZSB0aGUgY29tcG9uZW50IHRvIGdldCB0aGUgY3VycmVudCAKKyAgICBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGFuZCBwbGFjZSB0aGUgc3RhdGUgdmFsdWUgaW50byB0aGUgbG9jYXRpb24KKyAgICBwb2ludGVkIHRvIGJ5IHBTdGF0ZS4gIAorICAgIAorICAgIFRoZSBjb21wb25lbnQgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gNSBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbb3V0XSBwU3RhdGUKKyAgICAgICAgcG9pbnRlciB0byB0aGUgbG9jYXRpb24gdG8gcmVjZWl2ZSB0aGUgc3RhdGUuICBUaGUgdmFsdWUgcmV0dXJuZWQKKyAgICAgICAgaXMgb25lIG9mIHRoZSBPTVhfU1RBVEVUWVBFIG1lbWJlcnMgCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcAorICovCisjZGVmaW5lIE9NWF9HZXRTdGF0ZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBTdGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChPTVhfQ09NUE9ORU5UVFlQRSopaENvbXBvbmVudCktPkdldFN0YXRlKCAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBTdGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFjcm8gRW5kICovCisKKworLyoqIFRoZSBPTVhfVXNlQnVmZmVyIG1hY3JvIHdpbGwgcmVxdWVzdCB0aGF0IHRoZSBjb21wb25lbnQgdXNlCisgICAgYSBidWZmZXIgKGFuZCBhbGxvY2F0ZSBpdHMgb3duIGJ1ZmZlciBoZWFkZXIpIGFscmVhZHkgYWxsb2NhdGVkIAorICAgIGJ5IGFub3RoZXIgY29tcG9uZW50LCBvciBieSB0aGUgSUwgQ2xpZW50LiBUaGlzIGlzIGEgYmxvY2tpbmcgCisgICAgY2FsbC4KKyAgICAKKyAgICBUaGUgY29tcG9uZW50IHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDIwIG1zZWMuCisgICAgCisgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICBIYW5kbGUgb2YgdGhlIGNvbXBvbmVudCB0byBiZSBhY2Nlc3NlZC4gIFRoaXMgaXMgdGhlIGNvbXBvbmVudAorICAgICAgICBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gdGhlIE9NWF9HZXRIYW5kbGUgZnVuY3Rpb24uCisgICAgQHBhcmFtIFtvdXRdIHBwQnVmZmVyCisgICAgICAgIHBvaW50ZXIgdG8gYW4gT01YX0JVRkZFUkhFQURFUlRZUEUgc3RydWN0dXJlIHVzZWQgdG8gcmVjZWl2ZSB0aGUgCisgICAgICAgIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBoZWFkZXIKKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb21wIGJ1ZgorICovCisKKyNkZWZpbmUgT01YX1VzZUJ1ZmZlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcHBCdWZmZXJIZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgblBvcnRJbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcEFwcFByaXZhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgblNpemVCeXRlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcEJ1ZmZlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKE9NWF9DT01QT05FTlRUWVBFKiloQ29tcG9uZW50KS0+VXNlQnVmZmVyKCAgICAgICAgICAgIFwKKyAgICAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcHBCdWZmZXJIZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgblBvcnRJbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcEFwcFByaXZhdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgblNpemVCeXRlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgcEJ1ZmZlcikKKworCisvKiogVGhlIE9NWF9BbGxvY2F0ZUJ1ZmZlciBtYWNybyB3aWxsIHJlcXVlc3QgdGhhdCB0aGUgY29tcG9uZW50IGFsbG9jYXRlIAorICAgIGEgbmV3IGJ1ZmZlciBhbmQgYnVmZmVyIGhlYWRlci4gIFRoZSBjb21wb25lbnQgd2lsbCBhbGxvY2F0ZSB0aGUgCisgICAgYnVmZmVyIGFuZCB0aGUgYnVmZmVyIGhlYWRlciBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIAorICAgIGhlYWRlci4gIFRoaXMgaXMgYSBibG9ja2luZyBjYWxsLgorICAgIAorICAgIFRoZSBjb21wb25lbnQgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gNSBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbb3V0XSBwcEJ1ZmZlcgorICAgICAgICBwb2ludGVyIHRvIGFuIE9NWF9CVUZGRVJIRUFERVJUWVBFIHN0cnVjdHVyZSB1c2VkIHRvIHJlY2VpdmUgCisgICAgICAgIHRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaGVhZGVyCisgICAgQHBhcmFtIFtpbl0gblBvcnRJbmRleAorICAgICAgICBuUG9ydEluZGV4IGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBwb3J0IG9uIHRoZSBjb21wb25lbnQgdGhlIGJ1ZmZlciB3aWxsCisgICAgICAgIGJlIHVzZWQgd2l0aC4gIFRoZSBwb3J0IGNhbiBiZSBmb3VuZCBieSB1c2luZyB0aGUgblBvcnRJbmRleAorICAgICAgICB2YWx1ZSBhcyBhbiBpbmRleCBpbnRvIHRoZSBQb3J0IERlZmluaXRpb24gYXJyYXkgb2YgdGhlIGNvbXBvbmVudC4KKyAgICBAcGFyYW0gW2luXSBwQXBwUHJpdmF0ZQorICAgICAgICBwQXBwUHJpdmF0ZSBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHBBcHBQcml2YXRlIG1lbWJlciBvZiB0aGUgCisgICAgICAgIGJ1ZmZlciBoZWFkZXIgc3RydWN0dXJlLgorICAgIEBwYXJhbSBbaW5dIG5TaXplQnl0ZXMKKyAgICAgICAgc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIGFsbG9jYXRlLiAgVXNlZCB3aGVuIGJBbGxvY2F0ZU5ldyBpcyB0cnVlLgorICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgIE9NWF9FcnJvck5vbmUuICBPdGhlcndpc2UgdGhlIGFwcHJvcHJpYXRlIE9NWCBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorICAgIEBpbmdyb3VwIGNvbXAgYnVmCisgKi8gICAgCisjZGVmaW5lIE9NWF9BbGxvY2F0ZUJ1ZmZlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBwQnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5Qb3J0SW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBBcHBQcml2YXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5TaXplQnl0ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChPTVhfQ09NUE9ORU5UVFlQRSopaENvbXBvbmVudCktPkFsbG9jYXRlQnVmZmVyKCAgICAgICBcCisgICAgICAgIGhDb21wb25lbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBwQnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5Qb3J0SW5kZXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBBcHBQcml2YXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5TaXplQnl0ZXMpICAgICAgICAgICAgICAgICAgICAgLyogTWFjcm8gRW5kICovCisKKworLyoqIFRoZSBPTVhfRnJlZUJ1ZmZlciBtYWNybyB3aWxsIHJlbGVhc2UgYSBidWZmZXIgaGVhZGVyIGZyb20gdGhlIGNvbXBvbmVudAorICAgIHdoaWNoIHdhcyBhbGxvY2F0ZWQgdXNpbmcgZWl0aGVyIE9NWF9BbGxvY2F0ZUJ1ZmZlciBvciBPTVhfVXNlQnVmZmVyLiBJZiAgCisgICAgdGhlIGNvbXBvbmVudCBhbGxvY2F0ZWQgdGhlIGJ1ZmZlciAoc2VlIHRoZSBPTVhfVXNlQnVmZmVyIG1hY3JvKSB0aGVuIAorICAgIHRoZSBjb21wb25lbnQgc2hhbGwgZnJlZSB0aGUgYnVmZmVyIGFuZCBidWZmZXIgaGVhZGVyLiBUaGlzIGlzIGEgCisgICAgYmxvY2tpbmcgY2FsbC4gCisgICAgCisgICAgVGhlIGNvbXBvbmVudCBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiAyMCBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbaW5dIG5Qb3J0SW5kZXgKKyAgICAgICAgblBvcnRJbmRleCBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgcG9ydCBvbiB0aGUgY29tcG9uZW50IHRoZSBidWZmZXIgd2lsbAorICAgICAgICBiZSB1c2VkIHdpdGguCisgICAgQHBhcmFtIFtpbl0gcEJ1ZmZlcgorICAgICAgICBwb2ludGVyIHRvIGFuIE9NWF9CVUZGRVJIRUFERVJUWVBFIHN0cnVjdHVyZSBhbGxvY2F0ZWQgd2l0aCBVc2VCdWZmZXIKKyAgICAgICAgb3IgQWxsb2NhdGVCdWZmZXIuCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcCBidWYKKyAqLworI2RlZmluZSBPTVhfRnJlZUJ1ZmZlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuUG9ydEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5GcmVlQnVmZmVyKCAgICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuUG9ydEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1hY3JvIEVuZCAqLworCisKKy8qKiBUaGUgT01YX0VtcHR5VGhpc0J1ZmZlciBtYWNybyB3aWxsIHNlbmQgYSBidWZmZXIgZnVsbCBvZiBkYXRhIHRvIGFuIAorICAgIGlucHV0IHBvcnQgb2YgYSBjb21wb25lbnQuICBUaGUgYnVmZmVyIHdpbGwgYmUgZW1wdGllZCBieSB0aGUgY29tcG9uZW50CisgICAgYW5kIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiB2aWEgdGhlIEVtcHR5QnVmZmVyRG9uZSBjYWxsIGJhY2suCisgICAgVGhpcyBpcyBhIG5vbi1ibG9ja2luZyBjYWxsIGluIHRoYXQgdGhlIGNvbXBvbmVudCB3aWxsIHJlY29yZCB0aGUgYnVmZmVyCisgICAgYW5kIHJldHVybiBpbW1lZGlhdGVseSBhbmQgdGhlbiBlbXB0eSB0aGUgYnVmZmVyLCBsYXRlciwgYXQgdGhlIHByb3BlciAKKyAgICB0aW1lLiAgQXMgZXhwZWN0ZWQsIHRoaXMgbWFjcm8gbWF5IGJlIGludm9rZWQgb25seSB3aGlsZSB0aGUgY29tcG9uZW50IAorICAgIGlzIGluIHRoZSBPTVhfU3RhdGVFeGVjdXRpbmcuICBJZiBuUG9ydEluZGV4IGRvZXMgbm90IHNwZWNpZnkgYW4gaW5wdXQKKyAgICBwb3J0LCB0aGUgY29tcG9uZW50IHNoYWxsIHJldHVybiBhbiBlcnJvci4gIAorICAgIAorICAgIFRoZSBjb21wb25lbnQgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gNSBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLgorICAgIEBwYXJhbSBbaW5dIHBCdWZmZXIKKyAgICAgICAgcG9pbnRlciB0byBhbiBPTVhfQlVGRkVSSEVBREVSVFlQRSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIHdpdGggVXNlQnVmZmVyCisgICAgICAgIG9yIEFsbG9jYXRlQnVmZmVyLgorICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgIE9NWF9FcnJvck5vbmUuICBPdGhlcndpc2UgdGhlIGFwcHJvcHJpYXRlIE9NWCBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorICAgIEBpbmdyb3VwIGNvbXAgYnVmCisgKi8KKyNkZWZpbmUgT01YX0VtcHR5VGhpc0J1ZmZlciggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcEJ1ZmZlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKE9NWF9DT01QT05FTlRUWVBFKiloQ29tcG9uZW50KS0+RW1wdHlUaGlzQnVmZmVyKCAgICAgIFwKKyAgICAgICAgaENvbXBvbmVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcEJ1ZmZlcikgICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWNybyBFbmQgKi8KKworCisvKiogVGhlIE9NWF9GaWxsVGhpc0J1ZmZlciBtYWNybyB3aWxsIHNlbmQgYW4gZW1wdHkgYnVmZmVyIHRvIGFuIAorICAgIG91dHB1dCBwb3J0IG9mIGEgY29tcG9uZW50LiAgVGhlIGJ1ZmZlciB3aWxsIGJlIGZpbGxlZCBieSB0aGUgY29tcG9uZW50CisgICAgYW5kIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiB2aWEgdGhlIEZpbGxCdWZmZXJEb25lIGNhbGwgYmFjay4KKyAgICBUaGlzIGlzIGEgbm9uLWJsb2NraW5nIGNhbGwgaW4gdGhhdCB0aGUgY29tcG9uZW50IHdpbGwgcmVjb3JkIHRoZSBidWZmZXIKKyAgICBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5IGFuZCB0aGVuIGZpbGwgdGhlIGJ1ZmZlciwgbGF0ZXIsIGF0IHRoZSBwcm9wZXIgCisgICAgdGltZS4gIEFzIGV4cGVjdGVkLCB0aGlzIG1hY3JvIG1heSBiZSBpbnZva2VkIG9ubHkgd2hpbGUgdGhlIGNvbXBvbmVudCAKKyAgICBpcyBpbiB0aGUgT01YX0V4ZWN1dGluZ1N0YXRlLiAgSWYgblBvcnRJbmRleCBkb2VzIG5vdCBzcGVjaWZ5IGFuIG91dHB1dAorICAgIHBvcnQsIHRoZSBjb21wb25lbnQgc2hhbGwgcmV0dXJuIGFuIGVycm9yLiAgCisgICAgCisgICAgVGhlIGNvbXBvbmVudCBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiA1IG1zZWMuCisgICAgCisgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICBIYW5kbGUgb2YgdGhlIGNvbXBvbmVudCB0byBiZSBhY2Nlc3NlZC4gIFRoaXMgaXMgdGhlIGNvbXBvbmVudAorICAgICAgICBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gdGhlIE9NWF9HZXRIYW5kbGUgZnVuY3Rpb24uCisgICAgQHBhcmFtIFtpbl0gcEJ1ZmZlcgorICAgICAgICBwb2ludGVyIHRvIGFuIE9NWF9CVUZGRVJIRUFERVJUWVBFIHN0cnVjdHVyZSBhbGxvY2F0ZWQgd2l0aCBVc2VCdWZmZXIKKyAgICAgICAgb3IgQWxsb2NhdGVCdWZmZXIuCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcCBidWYKKyAqLworI2RlZmluZSBPTVhfRmlsbFRoaXNCdWZmZXIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5GaWxsVGhpc0J1ZmZlciggICAgICAgXAorICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwQnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1hY3JvIEVuZCAqLworCisKKworLyoqIFRoZSBPTVhfVXNlRUdMSW1hZ2UgbWFjcm8gd2lsbCByZXF1ZXN0IHRoYXQgdGhlIGNvbXBvbmVudCB1c2UKKyAgICBhIEVHTEltYWdlIHByb3ZpZGVkIGJ5IEVHTCAoYW5kIGFsbG9jYXRlIGl0cyBvd24gYnVmZmVyIGhlYWRlcikKKyAgICBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbC4KKyAgICAKKyAgICBUaGUgY29tcG9uZW50IHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDIwIG1zZWMuCisgICAgCisgICAgQHBhcmFtIFtpbl0gaENvbXBvbmVudAorICAgICAgICBIYW5kbGUgb2YgdGhlIGNvbXBvbmVudCB0byBiZSBhY2Nlc3NlZC4gIFRoaXMgaXMgdGhlIGNvbXBvbmVudAorICAgICAgICBoYW5kbGUgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gdGhlIE9NWF9HZXRIYW5kbGUgZnVuY3Rpb24uCisgICAgQHBhcmFtIFtvdXRdIHBwQnVmZmVyCisgICAgICAgIHBvaW50ZXIgdG8gYW4gT01YX0JVRkZFUkhFQURFUlRZUEUgc3RydWN0dXJlIHVzZWQgdG8gcmVjZWl2ZSB0aGUgCisgICAgICAgIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBoZWFkZXIuICBOb3RlIHRoYXQgdGhlIG1lbW9yeSBsb2NhdGlvbiB1c2VkCisgICAgICAgIGZvciB0aGlzIGJ1ZmZlciBpcyBOT1QgdmlzaWJsZSB0byB0aGUgSUwgQ2xpZW50LgorICAgIEBwYXJhbSBbaW5dIG5Qb3J0SW5kZXgKKyAgICAgICAgblBvcnRJbmRleCBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgcG9ydCBvbiB0aGUgY29tcG9uZW50IHRoZSBidWZmZXIgd2lsbAorICAgICAgICBiZSB1c2VkIHdpdGguICBUaGUgcG9ydCBjYW4gYmUgZm91bmQgYnkgdXNpbmcgdGhlIG5Qb3J0SW5kZXgKKyAgICAgICAgdmFsdWUgYXMgYW4gaW5kZXggaW50byB0aGUgUG9ydCBEZWZpbml0aW9uIGFycmF5IG9mIHRoZSBjb21wb25lbnQuCisgICAgQHBhcmFtIFtpbl0gcEFwcFByaXZhdGUKKyAgICAgICAgcEFwcFByaXZhdGUgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBwQXBwUHJpdmF0ZSBtZW1iZXIgb2YgdGhlIAorICAgICAgICBidWZmZXIgaGVhZGVyIHN0cnVjdHVyZS4KKyAgICBAcGFyYW0gW2luXSBlZ2xJbWFnZQorICAgICAgICBlZ2xJbWFnZSBjb250YWlucyB0aGUgaGFuZGxlIG9mIHRoZSBFR0xJbWFnZSB0byB1c2UgYXMgYSBidWZmZXIgb24gdGhlCisgICAgICAgIHNwZWNpZmllZCBwb3J0LiAgVGhlIGNvbXBvbmVudCBpcyBleHBlY3RlZCB0byB2YWxpZGF0ZSBwcm9wZXJ0aWVzIG9mIAorICAgICAgICB0aGUgRUdMSW1hZ2UgYWdhaW5zdCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgcG9ydCB0byBlbnN1cmUgdGhlIGNvbXBvbmVudAorICAgICAgICBjYW4gdXNlIHRoZSBFR0xJbWFnZSBhcyBhIGJ1ZmZlci4gICAgICAgICAgCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29tcCBidWYKKyAqLworI2RlZmluZSBPTVhfVXNlRUdMSW1hZ2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBwcEJ1ZmZlckhkciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBuUG9ydEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBwQXBwUHJpdmF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBlZ2xJbWFnZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoT01YX0NPTVBPTkVOVFRZUEUqKWhDb21wb25lbnQpLT5Vc2VFR0xJbWFnZSggICAgICAgICAgXAorICAgICAgICAgICBoQ29tcG9uZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBwcEJ1ZmZlckhkciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBuUG9ydEluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBwQXBwUHJpdmF0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBlZ2xJbWFnZSkKKworLyoqIFRoZSBPTVhfSW5pdCBtZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBPTVggY29yZS4gIEl0IHNoYWxsIGJlIHRoZQorICAgIGZpcnN0IGNhbGwgbWFkZSBpbnRvIE9NWCBhbmQgaXQgc2hvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgb25lIHRpbWUgd2l0aG91dAorICAgIGFuIGludGVydmllbmluZyBPTVhfRGVpbml0IGNhbGwuICAKKyAgICAKKyAgICBUaGUgY29yZSBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiAyMCBtc2VjLgorCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29yZQorICovCitPTVhfQVBJIE9NWF9FUlJPUlRZUEUgT01YX0FQSUVOVFJZIE9NWF9Jbml0KHZvaWQpOworCisKKy8qKiBUaGUgT01YX0RlaW5pdCBtZXRob2QgaXMgdXNlZCB0byBkZWluaXRpYWxpemUgdGhlIE9NWCBjb3JlLiAgSXQgc2hhbGwgYmUgCisgICAgdGhlIGxhc3QgY2FsbCBtYWRlIGludG8gT01YLiBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgY29yZSBkZXRlcm1pbmVzIHRoYXQgCisgICAgdGhhcmUgYXJlIGNvbXBvbmVudHMgbG9hZGVkIHdoZW4gdGhpcyBjYWxsIGlzIG1hZGUsIHRoZSBjb3JlIG1heSByZXR1cm4gCisgICAgd2l0aCBhbiBlcnJvciByYXRoZXIgdGhhbiB0cnkgdG8gdW5sb2FkIHRoZSBjb21wb25lbnRzLgorICAgICAgICAKKyAgICBUaGUgY29yZSBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiAyMCBtc2VjLgorICAgIAorICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgIE9NWF9FcnJvck5vbmUuICBPdGhlcndpc2UgdGhlIGFwcHJvcHJpYXRlIE9NWCBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorICAgIEBpbmdyb3VwIGNvcmUKKyAqLworT01YX0FQSSBPTVhfRVJST1JUWVBFIE9NWF9BUElFTlRSWSBPTVhfRGVpbml0KHZvaWQpOworCisKKy8qKiBUaGUgT01YX0NvbXBvbmVudE5hbWVFbnVtIG1ldGhvZCB3aWxsIGVudW1lcmF0ZSB0aHJvdWdoIGFsbCB0aGUgbmFtZXMgb2YKKyAgICByZWNvZ25pc2VkIHZhbGlkIGNvbXBvbmVudHMgaW4gdGhlIHN5c3RlbS4gVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZAorICAgIGFzIGEgbWVhbnMgdG8gZGV0ZWN0IGFsbCB0aGUgY29tcG9uZW50cyBpbiB0aGUgc3lzdGVtIHJ1bi10aW1lLiBUaGVyZSBpcworICAgIG5vIHN0cmljdCBvcmRlcmluZyB0byB0aGUgZW51bWVyYXRpb24gb3JkZXIgb2YgY29tcG9uZW50IG5hbWVzLCBhbHRob3VnaAorICAgIGVhY2ggbmFtZSB3aWxsIG9ubHkgYmUgZW51bWVyYXRlZCBvbmNlLiAgSWYgdGhlIE9NWCBjb3JlIHN1cHBvcnRzIHJ1bi10aW1lCisgICAgaW5zdGFsbGF0aW9uIG9mIG5ldyBjb21wb25lbnRzLCBpdCBpcyBvbmx5IHJlcXVyaWVkIHRvIGRldGVjdCBuZXdseQorICAgIGluc3RhbGxlZCBjb21wb25lbnRzIHdoZW4gdGhlIGZpcnN0IGNhbGwgdG8gZW51bWVyYXRlIGNvbXBvbmVudCBuYW1lcworICAgIGlzIG1hZGUgKGkuZS4gd2hlbiBuSW5kZXggaXMgMHgwKS4KKyAgICAKKyAgICBUaGUgY29yZSBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIGluIDIwIG1zZWMuCisgICAgCisgICAgQHBhcmFtIFtvdXRdIGNDb21wb25lbnROYW1lCisgICAgICAgIHBvaW50ZXIgdG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nIHdpdGggdGhlIGNvbXBvbmVudCBuYW1lLiAgVGhlCisgICAgICAgIG5hbWVzIG9mIHRoZSBjb21wb25lbnRzIGFyZSBzdHJpbmdzIGxlc3MgdGhhbiAxMjcgYnl0ZXMgaW4gbGVuZ3RoCisgICAgICAgIHBsdXMgdGhlIHRyYWlsaW5nIG51bGwgZm9yIGEgbWF4aW11bSBzaXplIG9mIDEyOCBieXRlcy4gIEFuIGV4YW1wbGUgCisgICAgICAgIG9mIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgaXMgIk9NWC5USS5BVURJTy5EU1AuTUlYRVJcMCIuICBOYW1lcyBhcmUgCisgICAgICAgIGFzc2lnbmVkIGJ5IHRoZSB2ZW5kb3IsIGJ1dCBzaGFsbCBzdGFydCB3aXRoICJPTVguIiBhbmQgdGhlbiBoYXZlIAorICAgICAgICB0aGUgVmVuZG9yIGRlc2lnbmF0aW9uIG5leHQuCisgICAgQHBhcmFtIFtpbl0gbk5hbWVMZW5ndGgKKyAgICAgICAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGNDb21wb25lbnROYW1lIHN0cmluZy4gIFdpdGggYWxsIAorICAgICAgICBjb21wb25lbnQgbmFtZSBzdHJpbmdzIHJlc3RyaWN0ZWQgdG8gbGVzcyB0aGFuIDEyOCBjaGFyYWN0ZXJzIAorICAgICAgICAoaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsKSBpdCBpcyByZWNvbWVuZGVkIHRoYXQgdGhlIGNhbGxlcgorICAgICAgICBwcm92aWRlIGEgaW5wdXQgc3RyaW5nIGZvciB0aGUgY0NvbXBvbmVudE5hbWUgb2YgMTI4IGNoYXJhY3RlcnMuCisgICAgQHBhcmFtIFtpbl0gbkluZGV4CisgICAgICAgIG51bWJlciBjb250YWluaW5nIHRoZSBlbnVtZXJhdGlvbiBpbmRleCBmb3IgdGhlIGNvbXBvbmVudC4gCisgICAgICAgIE11bHRpcGxlIGNhbGxzIHRvIE9NWF9Db21wb25lbnROYW1lRW51bSB3aXRoIGluY3JlYXNpbmcgdmFsdWVzCisgICAgICAgIG9mIG5JbmRleCB3aWxsIGVudW1lcmF0ZSB0aHJvdWdoIHRoZSBjb21wb25lbnQgbmFtZXMgaW4gdGhlCisgICAgICAgIHN5c3RlbSB1bnRpbCBPTVhfRXJyb3JOb01vcmUgaXMgcmV0dXJuZWQuICBUaGUgdmFsdWUgb2YgbkluZGV4CisgICAgICAgIGlzIDAgdG8gKE4tMSksIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiB2YWxpZCBpbnN0YWxsZWQgY29tcG9uZW50cworICAgICAgICBpbiB0aGUgc3lzdGVtLgorICAgIEByZXR1cm4gT01YX0VSUk9SVFlQRQorICAgICAgICBJZiB0aGUgY29tbWFuZCBzdWNjZXNzZnVsbHkgZXhlY3V0ZXMsIHRoZSByZXR1cm4gY29kZSB3aWxsIGJlCisgICAgICAgIE9NWF9FcnJvck5vbmUuICBXaGVuIHRoZSB2YWx1ZSBvZiBuSW5kZXggZXhjZWVkcyB0aGUgbnVtYmVyIG9mIAorICAgICAgICBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0gbWludXMgMSwgT01YX0Vycm9yTm9Nb3JlIHdpbGwgYmUKKyAgICAgICAgcmV0dXJuZWQuIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29yZQorICovCitPTVhfQVBJIE9NWF9FUlJPUlRZUEUgT01YX0FQSUVOVFJZIE9NWF9Db21wb25lbnROYW1lRW51bSgKKyAgICBPTVhfT1VUIE9NWF9TVFJJTkcgY0NvbXBvbmVudE5hbWUsCisgICAgT01YX0lOICBPTVhfVTMyIG5OYW1lTGVuZ3RoLAorICAgIE9NWF9JTiAgT01YX1UzMiBuSW5kZXgpOworCisKKy8qKiBUaGUgT01YX0dldEhhbmRsZSBtZXRob2Qgd2lsbCBsb2NhdGUgdGhlIGNvbXBvbmVudCBzcGVjaWZpZWQgYnkgdGhlCisgICAgY29tcG9uZW50IG5hbWUgZ2l2ZW4sIGxvYWQgdGhhdCBjb21wb25lbnQgaW50byBtZW1vcnkgYW5kIHRoZW4gaW52b2tlCisgICAgdGhlIGNvbXBvbmVudCdzIG1ldGhvZHMgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQuICAKKyAgICAKKyAgICBUaGUgY29yZSBzaG91bGQgcmV0dXJuIGZyb20gdGhpcyBjYWxsIHdpdGhpbiAyMCBtc2VjLgorICAgIAorICAgIEBwYXJhbSBbb3V0XSBwSGFuZGxlCisgICAgICAgIHBvaW50ZXIgdG8gYW4gT01YX0hBTkRMRVRZUEUgcG9pbnRlciB0byBiZSBmaWxsZWQgaW4gYnkgdGhpcyBtZXRob2QuCisgICAgQHBhcmFtIFtpbl0gY0NvbXBvbmVudE5hbWUKKyAgICAgICAgcG9pbnRlciB0byBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcgd2l0aCB0aGUgY29tcG9uZW50IG5hbWUuICBUaGUKKyAgICAgICAgbmFtZXMgb2YgdGhlIGNvbXBvbmVudHMgYXJlIHN0cmluZ3MgbGVzcyB0aGFuIDEyNyBieXRlcyBpbiBsZW5ndGgKKyAgICAgICAgcGx1cyB0aGUgdHJhaWxpbmcgbnVsbCBmb3IgYSBtYXhpbXVtIHNpemUgb2YgMTI4IGJ5dGVzLiAgQW4gZXhhbXBsZSAKKyAgICAgICAgb2YgYSB2YWxpZCBjb21wb25lbnQgbmFtZSBpcyAiT01YLlRJLkFVRElPLkRTUC5NSVhFUlwwIi4gIE5hbWVzIGFyZSAKKyAgICAgICAgYXNzaWduZWQgYnkgdGhlIHZlbmRvciwgYnV0IHNoYWxsIHN0YXJ0IHdpdGggIk9NWC4iIGFuZCB0aGVuIGhhdmUgCisgICAgICAgIHRoZSBWZW5kb3IgZGVzaWduYXRpb24gbmV4dC4KKyAgICBAcGFyYW0gW2luXSBwQXBwRGF0YQorICAgICAgICBwb2ludGVyIHRvIGFuIGFwcGxpY2F0aW9uIGRlZmluZWQgdmFsdWUgdGhhdCB3aWxsIGJlIHJldHVybmVkCisgICAgICAgIGR1cmluZyBjYWxsYmFja3Mgc28gdGhhdCB0aGUgYXBwbGljYXRpb24gY2FuIGlkZW50aWZ5IHRoZSBzb3VyY2UKKyAgICAgICAgb2YgdGhlIGNhbGxiYWNrLgorICAgIEBwYXJhbSBbaW5dIHBDYWxsQmFja3MKKyAgICAgICAgcG9pbnRlciB0byBhIE9NWF9DQUxMQkFDS1RZUEUgc3RydWN0dXJlIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICAgIGNvbXBvbmVudCB0byBpbml0aWFsaXplIGl0IHdpdGguICAKKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICBAaW5ncm91cCBjb3JlCisgKi8KK09NWF9BUEkgT01YX0VSUk9SVFlQRSBPTVhfQVBJRU5UUlkgT01YX0dldEhhbmRsZSgKKyAgICBPTVhfT1VUIE9NWF9IQU5ETEVUWVBFKiBwSGFuZGxlLCAKKyAgICBPTVhfSU4gIE9NWF9TVFJJTkcgY0NvbXBvbmVudE5hbWUsCisgICAgT01YX0lOICBPTVhfUFRSIHBBcHBEYXRhLAorICAgIE9NWF9JTiAgT01YX0NBTExCQUNLVFlQRSogcENhbGxCYWNrcyk7CisKKworLyoqIFRoZSBPTVhfRnJlZUhhbmRsZSBtZXRob2Qgd2lsbCBmcmVlIGEgaGFuZGxlIGFsbG9jYXRlZCBieSB0aGUgT01YX0dldEhhbmRsZSAKKyAgICBtZXRob2QuICBJZiB0aGUgY29tcG9uZW50IHJlZmVyZW5jZSBjb3VudCBnb2VzIHRvIHplcm8sIHRoZSBjb21wb25lbnQgd2lsbAorICAgIGJlIHVubG9hZGVkIGZyb20gbWVtb3J5LiAgCisgICAgCisgICAgVGhlIGNvcmUgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gMjAgbXNlYyB3aGVuIHRoZSBjb21wb25lbnQgaXMgCisgICAgaW4gdGhlIE9NWF9TdGF0ZUxvYWRlZCBzdGF0ZS4KKworICAgIEBwYXJhbSBbaW5dIGhDb21wb25lbnQKKyAgICAgICAgSGFuZGxlIG9mIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzZWQuICBUaGlzIGlzIHRoZSBjb21wb25lbnQKKyAgICAgICAgaGFuZGxlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBHZXRIYW5kbGUgZnVuY3Rpb24uCisgICAgQHJldHVybiBPTVhfRVJST1JUWVBFCisgICAgICAgIElmIHRoZSBjb21tYW5kIHN1Y2Nlc3NmdWxseSBleGVjdXRlcywgdGhlIHJldHVybiBjb2RlIHdpbGwgYmUKKyAgICAgICAgT01YX0Vycm9yTm9uZS4gIE90aGVyd2lzZSB0aGUgYXBwcm9wcmlhdGUgT01YIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgQGluZ3JvdXAgY29yZQorICovCitPTVhfQVBJIE9NWF9FUlJPUlRZUEUgT01YX0FQSUVOVFJZIE9NWF9GcmVlSGFuZGxlKAorICAgIE9NWF9JTiAgT01YX0hBTkRMRVRZUEUgaENvbXBvbmVudCk7CisKKworCisvKiogVGhlIE9NWF9TZXR1cFR1bm5lbCBtZXRob2Qgd2lsbCBoYW5kbGUgdGhlIG5lY2Vzc2FyeSBjYWxscyB0byB0aGUgY29tcG9uZW50cworICAgIHRvIHNldHVwIHRoZSBzcGVjaWZpZWQgdHVubmVsIHRoZSB0d28gY29tcG9uZW50cy4gIE5PVEU6IFRoaXMgaXMKKyAgICBhbiBhY3R1YWwgbWV0aG9kIChub3QgYSAjZGVmaW5lIG1hY3JvKS4gIFRoaXMgbWV0aG9kIHdpbGwgbWFrZSBjYWxscyBpbnRvCisgICAgdGhlIGNvbXBvbmVudCBDb21wb25lbnRUdW5uZWxSZXF1ZXN0IG1ldGhvZCB0byBkbyB0aGUgYWN0dWFsIHR1bm5lbCAKKyAgICBjb25uZWN0aW9uLiAgCisKKyAgICBUaGUgQ29tcG9uZW50VHVubmVsUmVxdWVzdCBtZXRob2Qgb24gYm90aCBjb21wb25lbnRzIHdpbGwgYmUgY2FsbGVkLiAKKyAgICBUaGlzIG1ldGhvZCBzaGFsbCBub3QgYmUgY2FsbGVkIHVubGVzcyB0aGUgY29tcG9uZW50IGlzIGluIHRoZSAKKyAgICBPTVhfU3RhdGVMb2FkZWQgc3RhdGUgZXhjZXB0IHdoZW4gdGhlIHBvcnRzIHVzZWQgZm9yIHRoZSB0dW5uZWwgYXJlCisgICAgZGlzYWJsZWQuIEluIHRoaXMgY2FzZSwgdGhlIGNvbXBvbmVudCBtYXkgYmUgaW4gdGhlIE9NWF9TdGF0ZUV4ZWN1dGluZywKKyAgICBPTVhfU3RhdGVQYXVzZSwgb3IgT01YX1N0YXRlSWRsZSBzdGF0ZXMuIAorCisgICAgVGhlIGNvcmUgc2hvdWxkIHJldHVybiBmcm9tIHRoaXMgY2FsbCB3aXRoaW4gMjAgbXNlYy4KKyAgICAKKyAgICBAcGFyYW0gW2luXSBoT3V0cHV0CisgICAgICAgIEhhbmRsZSBvZiB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2VkLiAgQWxzbyB0aGlzIGlzIHRoZSBoYW5kbGUKKyAgICAgICAgb2YgdGhlIGNvbXBvbmVudCB3aG9zZSBwb3J0LCBzcGVjaWZpZWQgaW4gdGhlIG5Qb3J0T3V0cHV0IHBhcmFtZXRlcgorICAgICAgICB3aWxsIGJlIHVzZWQgdGhlIHNvdXJjZSBmb3IgdGhlIHR1bm5lbC4gVGhpcyBpcyB0aGUgY29tcG9uZW50IGhhbmRsZQorICAgICAgICByZXR1cm5lZCBieSB0aGUgY2FsbCB0byB0aGUgT01YX0dldEhhbmRsZSBmdW5jdGlvbi4gIFRoZXJlIGlzIGEgCisgICAgICAgIHJlcXVpcmVtZW50IHRoYXQgaE91dHB1dCBiZSB0aGUgc291cmNlIGZvciB0aGUgZGF0YSB3aGVuCisgICAgICAgIHR1bmVsbGluZyAoaS5lLiBuUG9ydE91dHB1dCBpcyBhbiBvdXRwdXQgcG9ydCkuICBJZiAweDAsIHRoZSBjb21wb25lbnQKKyAgICAgICAgc3BlY2lmaWVkIGluIGhJbnB1dCB3aWxsIGhhdmUgaXQncyBwb3J0IHNwZWNpZmllZCBpbiBuUG9ydElucHV0CisgICAgICAgIHNldHVwIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGFwcGxpY2F0aW9uIC8gSUwgY2xpZW50LgorICAgIEBwYXJhbSBbaW5dIG5Qb3J0T3V0cHV0CisgICAgICAgIG5Qb3J0T3V0cHV0IGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBzb3VyY2UgcG9ydCBvbiBjb21wb25lbnQgdG8gYmUKKyAgICAgICAgdXNlZCBpbiB0aGUgdHVubmVsLiAKKyAgICBAcGFyYW0gW2luXSBoSW5wdXQKKyAgICAgICAgVGhpcyBpcyB0aGUgY29tcG9uZW50IHRvIHNldHVwIHRoZSB0dW5uZWwgd2l0aC4gVGhpcyBpcyB0aGUgaGFuZGxlCisgICAgICAgIG9mIHRoZSBjb21wb25lbnQgd2hvc2UgcG9ydCwgc3BlY2lmaWVkIGluIHRoZSBuUG9ydElucHV0IHBhcmFtZXRlcgorICAgICAgICB3aWxsIGJlIHVzZWQgdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgdHVubmVsLiBUaGlzIGlzIHRoZSBjb21wb25lbnQgaGFuZGxlCisgICAgICAgIHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBPTVhfR2V0SGFuZGxlIGZ1bmN0aW9uLiAgVGhlcmUgaXMgYSAKKyAgICAgICAgcmVxdWlyZW1lbnQgdGhhdCBoSW5wdXQgYmUgdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgZGF0YSB3aGVuCisgICAgICAgIHR1bmVsbGluZyAoaS5lLiBuUG9ydEludXQgaXMgYW4gaW5wdXQgcG9ydCkuICAgSWYgMHgwLCB0aGUgY29tcG9uZW50CisgICAgICAgIHNwZWNpZmllZCBpbiBoT3V0cHV0IHdpbGwgaGF2ZSBpdCdzIHBvcnQgc3BlY2lmaWVkIGluIG5Qb3J0UE91dHB1dAorICAgICAgICBzZXR1cCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbiAvIElMIGNsaWVudC4KKyAgICBAcGFyYW0gW2luXSBuUG9ydElucHV0CisgICAgICAgIG5Qb3J0SW5wdXQgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGRlc3RpbmF0aW9uIHBvcnQgb24gY29tcG9uZW50IHRvIGJlCisgICAgICAgIHVzZWQgaW4gdGhlIHR1bm5lbC4KKyAgICBAcmV0dXJuIE9NWF9FUlJPUlRZUEUKKyAgICAgICAgSWYgdGhlIGNvbW1hbmQgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVzLCB0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZQorICAgICAgICBPTVhfRXJyb3JOb25lLiAgT3RoZXJ3aXNlIHRoZSBhcHByb3ByaWF0ZSBPTVggZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgV2hlbiBPTVhfRXJyb3JOb3RJbXBsZW1lbnRlZCBpcyByZXR1cm5lZCwgb25lIG9yIGJvdGggY29tcG9uZW50cyBpcyAKKyAgICAgICAgYSBub24taW50ZXJvcCBjb21wb25lbnQgYW5kIGRvZXMgbm90IHN1cHBvcnQgdHVubmVsaW5nLgorICAgICAgICAKKyAgICAgICAgT24gZmFpbHVyZSwgdGhlIHBvcnRzIG9mIGJvdGggY29tcG9uZW50cyBhcmUgc2V0dXAgZm9yIGNvbW11bmljYXRpb24KKyAgICAgICAgd2l0aCB0aGUgYXBwbGljYXRpb24gLyBJTCBDbGllbnQuCisgICAgQGluZ3JvdXAgY29yZSB0dW4KKyAqLworT01YX0FQSSBPTVhfRVJST1JUWVBFIE9NWF9BUElFTlRSWSBPTVhfU2V0dXBUdW5uZWwoCisgICAgT01YX0lOICBPTVhfSEFORExFVFlQRSBoT3V0cHV0LAorICAgIE9NWF9JTiAgT01YX1UzMiBuUG9ydE91dHB1dCwKKyAgICBPTVhfSU4gIE9NWF9IQU5ETEVUWVBFIGhJbnB1dCwKKyAgICBPTVhfSU4gIE9NWF9VMzIgblBvcnRJbnB1dCk7CisgICAgCisvKiogQGluZ3JvdXAgY3AgKi8KK09NWF9BUEkgT01YX0VSUk9SVFlQRSAgIE9NWF9HZXRDb250ZW50UGlwZSgKKyAgICBPTVhfT1VUIE9NWF9IQU5ETEVUWVBFICpoUGlwZSwKKyAgICBPTVhfSU4gT01YX1NUUklORyBzelVSSSk7CisKKy8qKiBUaGUgT01YX0dldENvbXBvbmVudHNPZlJvbGUgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgdGhlIGdpdmVuCisgICAgcm9sZSBhbmQgKGlmIHRoZSBjb21wTmFtZXMgZmllbGQgaXMgbm9uLU5VTEwpIHRoZSBuYW1lcyBvZiB0aG9zZSBjb21wb25lbnRzLiBUaGUgY2FsbCB3aWxsIGZhaWwgaWYgCisgICAgYW4gaW5zdWZmaWNpZW50bHkgc2l6ZWQgYXJyYXkgb2YgbmFtZXMgaXMgc3VwcGxpZWQuIFRvIGVuc3VyZSB0aGUgYXJyYXkgaXMgc3VmZmljaWVudGx5IHNpemVkIHRoZQorICAgIGNsaWVudCBzaG91bGQ6CisgICAgICAgICogZmlyc3QgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGNvbXBOYW1lcyBmaWVsZCBOVUxMIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudCBuYW1lcworICAgICAgICAqIHNlY29uZCBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgY29tcE5hbWVzIGZpZWxkIHBvaW50aW5nIHRvIGFuIGFycmF5IG9mIG5hbWVzIGFsbG9jYXRlZCAKKyAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciByZXR1cm5lZCBieSB0aGUgZmlyc3QgY2FsbC4KKworICAgIFRoZSBjb3JlIHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKyAgICAKKyAgICBAcGFyYW0gW2luXSByb2xlCisgICAgICAgIFRoaXMgaXMgZ2VuZXJpYyBzdGFuZGFyZCBjb21wb25lbnQgbmFtZSBjb25zaXN0aW5nIG9ubHkgb2YgY29tcG9uZW50IGNsYXNzIAorICAgICAgICBuYW1lIGFuZCB0aGUgdHlwZSB3aXRoaW4gdGhhdCBjbGFzcyAoZS5nLiAnYXVkaW9fZGVjb2Rlci5hYWMnKS4KKyAgICBAcGFyYW0gW2lub3V0XSBwTnVtQ29tcHMKKyAgICAgICAgVGhpcyBpcyB1c2VkIGJvdGggYXMgaW5wdXQgYW5kIG91dHB1dC4gCisgCisgICAgICAgIElmIGNvbXBOYW1lcyBpcyBOVUxMLCB0aGUgaW5wdXQgaXMgaWdub3JlZCBhbmQgdGhlIG91dHB1dCBzcGVjaWZpZXMgaG93IG1hbnkgY29tcG9uZW50cyBzdXBwb3J0CisgICAgICAgIHRoZSBnaXZlbiByb2xlLgorICAgICAKKyAgICAgICAgSWYgY29tcE5hbWVzIGlzIG5vdCBOVUxMLCBvbiBpbnB1dCBpdCBib3VuZHMgdGhlIHNpemUgb2YgdGhlIGlucHV0IHN0cnVjdHVyZSBhbmQgCisgICAgICAgIG9uIG91dHB1dCwgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyBzdHJpbmcgbmFtZXMgbGlzdGVkIHdpdGhpbiB0aGUgY29tcE5hbWVzIHBhcmFtZXRlci4KKyAgICBAcGFyYW0gW2lub3V0XSBjb21wTmFtZXMKKyAgICAgICAgSWYgTlVMTCB0aGlzIGZpZWxkIGlzIGlnbm9yZWQuIElmIG5vbi1OVUxMIHRoaXMgcG9pbnRzIHRvIGFuIGFycmF5IG9mIDEyOC1ieXRlIHN0cmluZ3Mgd2hpY2ggYWNjZXB0cyAKKyAgICAgICAgYSBsaXN0IG9mIHRoZSBuYW1lcyBvZiBhbGwgcGh5c2ljYWwgY29tcG9uZW50cyB0aGF0IGltcGxlbWVudCB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGNvbXBvbmVudCBuYW1lLiAKKyAgICAgICAgRWFjaCBuYW1lIGlzIE5VTEwgdGVybWluYXRlZC4gbnVtQ29tcHMgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgbmFtZXMuCisgICAgQGluZ3JvdXAgY29yZQorICovCitPTVhfQVBJIE9NWF9FUlJPUlRZUEUgT01YX0dldENvbXBvbmVudHNPZlJvbGUgKCAKKwlPTVhfSU4gICAgICBPTVhfU1RSSU5HIHJvbGUsCisgICAgT01YX0lOT1VUICAgT01YX1UzMiAqcE51bUNvbXBzLAorICAgIE9NWF9JTk9VVCAgIE9NWF9VOCAgKipjb21wTmFtZXMpOworCisvKiogVGhlIE9NWF9HZXRSb2xlc09mQ29tcG9uZW50IG1ldGhvZCB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9mIHJvbGVzIHN1cHBvcnRlZCBieSB0aGUgZ2l2ZW4KKyAgICBjb21wb25lbnQgYW5kIChpZiB0aGUgcm9sZXMgZmllbGQgaXMgbm9uLU5VTEwpIHRoZSBuYW1lcyBvZiB0aG9zZSByb2xlcy4gVGhlIGNhbGwgd2lsbCBmYWlsIGlmIAorICAgIGFuIGluc3VmZmljaWVudGx5IHNpemVkIGFycmF5IG9mIG5hbWVzIGlzIHN1cHBsaWVkLiBUbyBlbnN1cmUgdGhlIGFycmF5IGlzIHN1ZmZpY2llbnRseSBzaXplZCB0aGUKKyAgICBjbGllbnQgc2hvdWxkOgorICAgICAgICAqIGZpcnN0IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSByb2xlcyBmaWVsZCBOVUxMIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHJvbGUgbmFtZXMKKyAgICAgICAgKiBzZWNvbmQgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIHJvbGVzIGZpZWxkIHBvaW50aW5nIHRvIGFuIGFycmF5IG9mIG5hbWVzIGFsbG9jYXRlZCAKKyAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciByZXR1cm5lZCBieSB0aGUgZmlyc3QgY2FsbC4KKworICAgIFRoZSBjb3JlIHNob3VsZCByZXR1cm4gZnJvbSB0aGlzIGNhbGwgd2l0aGluIDUgbXNlYy4KKworICAgIEBwYXJhbSBbaW5dIGNvbXBOYW1lCisgICAgICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBiZWluZyBxdWVyaWVkIGFib3V0LgorICAgIEBwYXJhbSBbaW5vdXRdIHBOdW1Sb2xlcworICAgICAgICBUaGlzIGlzIHVzZWQgYm90aCBhcyBpbnB1dCBhbmQgb3V0cHV0LiAKKyAKKyAgICAgICAgSWYgcm9sZXMgaXMgTlVMTCwgdGhlIGlucHV0IGlzIGlnbm9yZWQgYW5kIHRoZSBvdXRwdXQgc3BlY2lmaWVzIGhvdyBtYW55IHJvbGVzIHRoZSBjb21wb25lbnQgc3VwcG9ydHMuCisgICAgIAorICAgICAgICBJZiBjb21wTmFtZXMgaXMgbm90IE5VTEwsIG9uIGlucHV0IGl0IGJvdW5kcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgc3RydWN0dXJlIGFuZCAKKyAgICAgICAgb24gb3V0cHV0LCBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiByb2xlcyBzdHJpbmcgbmFtZXMgbGlzdGVkIHdpdGhpbiB0aGUgcm9sZXMgcGFyYW1ldGVyLgorICAgIEBwYXJhbSBbb3V0XSByb2xlcworICAgICAgICBJZiBOVUxMIHRoaXMgZmllbGQgaXMgaWdub3JlZC4gSWYgbm9uLU5VTEwgdGhpcyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgMTI4LWJ5dGUgc3RyaW5ncyAKKyAgICAgICAgd2hpY2ggYWNjZXB0cyBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIGFsbCBzdGFuZGFyZCBjb21wb25lbnRzIHJvbGVzIGltcGxlbWVudGVkIG9uIHRoZSAKKyAgICAgICAgc3BlY2lmaWVkIGNvbXBvbmVudCBuYW1lLiBudW1Db21wcyBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBuYW1lcy4KKyAgICBAaW5ncm91cCBjb3JlCisgKi8KK09NWF9BUEkgT01YX0VSUk9SVFlQRSBPTVhfR2V0Um9sZXNPZkNvbXBvbmVudCAoIAorCU9NWF9JTiAgICAgIE9NWF9TVFJJTkcgY29tcE5hbWUsIAorICAgIE9NWF9JTk9VVCAgIE9NWF9VMzIgKnBOdW1Sb2xlcywKKyAgICBPTVhfT1VUICAgICBPTVhfVTggKipyb2xlcyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKyNlbmRpZgorLyogRmlsZSBFT0YgKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9JVkNvbW1vbi5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9JVkNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOGJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0lWQ29tbW9uLmgKQEAgLTAsMCArMSw5MzcgQEAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weXJpZ2h0IChDKSAxOTk4LTIwMDkgUGFja2V0VmlkZW8KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucworICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAwOCBUaGUgS2hyb25vcyBHcm91cCBJbmMuIAorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QKKyAqIHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIAorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuIAorICoKKyAqLworCisvKiogCisgKiBAZmlsZSBPTVhfSVZDb21tb24uaCAtIE9wZW5NYXggSUwgdmVyc2lvbiAxLjEuMgorICogIFRoZSBzdHJ1Y3R1cmVzIG5lZWRlZCBieSBWaWRlbyBhbmQgSW1hZ2UgY29tcG9uZW50cyB0byBleGNoYW5nZQorICogIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSB3aXRoIHRoZSBjb21wb25lbnRzLgorICovCisjaWZuZGVmIE9NWF9JVkNvbW1vbl9oCisjZGVmaW5lIE9NWF9JVkNvbW1vbl9oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworLyoqCisgKiBFYWNoIE9NWCBoZWFkZXIgbXVzdCBpbmNsdWRlIGFsbCByZXF1aXJlZCBoZWFkZXIgZmlsZXMgdG8gYWxsb3cgdGhlIGhlYWRlcgorICogdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgaGVhZGVyCisgKiBmaWxlIHRvIGNvbXBpbGUgc3VjY2Vzc2Z1bGx5IAorICovCisKKyNpbmNsdWRlIDxPTVhfQ29yZS5oPgorCisvKiogQGRlZmdyb3VwIGl2IE9wZW5NQVggSUwgSW1hZ2luZyBhbmQgVmlkZW8gRG9tYWluCisgKiBDb21tb24gc3RydWN0dXJlcyBmb3IgT3Blbk1BWCBJTCBJbWFnaW5nIGFuZCBWaWRlbyBkb21haW5zCisgKiBAeworICovCisKKworLyoqIAorICogRW51bWVyYXRpb24gZGVmaW5pbmcgcG9zc2libGUgdW5jb21wcmVzc2VkIGltYWdlL3ZpZGVvIGZvcm1hdHMuIAorICoKKyAqIEVOVU1TOgorICogIFVudXNlZCAgICAgICAgICAgICAgICAgOiBQbGFjZWhvbGRlciB2YWx1ZSB3aGVuIGZvcm1hdCBpcyBOL0EKKyAqICBNb25vY2hyb21lICAgICAgICAgICAgIDogYmxhY2sgYW5kIHdoaXRlCisgKiAgOGJpdFJHQjMzMiAgICAgICAgICAgICA6IFJlZCA3OjUsIEdyZWVuIDQ6MiwgQmx1ZSAxOjAKKyAqICAxMmJpdFJHQjQ0NCAgICAgICAgICAgIDogUmVkIDExOjgsIEdyZWVuIDc6NCwgQmx1ZSAzOjAKKyAqICAxNmJpdEFSR0I0NDQ0ICAgICAgICAgIDogQWxwaGEgMTU6MTIsIFJlZCAxMTo4LCBHcmVlbiA3OjQsIEJsdWUgMzowCisgKiAgMTZiaXRBUkdCMTU1NSAgICAgICAgICA6IEFscGhhIDE1LCBSZWQgMTQ6MTAsIEdyZWVuIDk6NSwgQmx1ZSA0OjAKKyAqICAxNmJpdFJHQjU2NSAgICAgICAgICAgIDogUmVkIDE1OjExLCBHcmVlbiAxMDo1LCBCbHVlIDQ6MAorICogIDE2Yml0QkdSNTY1ICAgICAgICAgICAgOiBCbHVlIDE1OjExLCBHcmVlbiAxMDo1LCBSZWQgNDowCisgKiAgMThiaXRSR0I2NjYgICAgICAgICAgICA6IFJlZCAxNzoxMiwgR3JlZW4gMTE6NiwgQmx1ZSA1OjAKKyAqICAxOGJpdEFSR0IxNjY1ICAgICAgICAgIDogQWxwaGEgMTcsIFJlZCAxNjoxMSwgR3JlZW4gMTA6NSwgQmx1ZSA0OjAKKyAqICAxOWJpdEFSR0IxNjY2ICAgICAgICAgIDogQWxwaGEgMTgsIFJlZCAxNzoxMiwgR3JlZW4gMTE6NiwgQmx1ZSA1OjAKKyAqICAyNGJpdFJHQjg4OCAgICAgICAgICAgIDogUmVkIDI0OjE2LCBHcmVlbiAxNTo4LCBCbHVlIDc6MAorICogIDI0Yml0QkdSODg4ICAgICAgICAgICAgOiBCbHVlIDI0OjE2LCBHcmVlbiAxNTo4LCBSZWQgNzowCisgKiAgMjRiaXRBUkdCMTg4NyAgICAgICAgICA6IEFscGhhIDIzLCBSZWQgMjI6MTUsIEdyZWVuIDE0OjcsIEJsdWUgNjowCisgKiAgMjViaXRBUkdCMTg4OCAgICAgICAgICA6IEFscGhhIDI0LCBSZWQgMjM6MTYsIEdyZWVuIDE1OjgsIEJsdWUgNzowCisgKiAgMzJiaXRCR1JBODg4OCAgICAgICAgICA6IEJsdWUgMzE6MjQsIEdyZWVuIDIzOjE2LCBSZWQgMTU6OCwgQWxwaGEgNzowCisgKiAgMzJiaXRBUkdCODg4OCAgICAgICAgICA6IEFscGhhIDMxOjI0LCBSZWQgMjM6MTYsIEdyZWVuIDE1OjgsIEJsdWUgNzowCisgKiAgWVVWNDExUGxhbmFyICAgICAgICAgICA6IFUsWSBhcmUgc3Vic2FtcGxlZCBieSBhIGZhY3RvciBvZiA0IGhvcml6b250YWxseQorICogIFlVVjQxMVBhY2tlZFBsYW5hciAgICAgOiBwYWNrZWQgcGVyIHBheWxvYWQgaW4gcGxhbmFyIHNsaWNlcworICogIFlVVjQyMFBsYW5hciAgICAgICAgICAgOiBUaHJlZSBhcnJheXMgWSxVLFYuCisgKiAgWVVWNDIwUGFja2VkUGxhbmFyICAgICA6IHBhY2tlZCBwZXIgcGF5bG9hZCBpbiBwbGFuYXIgc2xpY2VzCisgKiAgWVVWNDIwU2VtaVBsYW5hciAgICAgICA6IFR3byBhcnJheXMsIG9uZSBpcyBhbGwgWSwgdGhlIG90aGVyIGlzIFUgYW5kIFYKKyAqICBZVVY0MjJQbGFuYXIgICAgICAgICAgIDogVGhyZWUgYXJyYXlzIFksVSxWLgorICogIFlVVjQyMlBhY2tlZFBsYW5hciAgICAgOiBwYWNrZWQgcGVyIHBheWxvYWQgaW4gcGxhbmFyIHNsaWNlcworICogIFlVVjQyMlNlbWlQbGFuYXIgICAgICAgOiBUd28gYXJyYXlzLCBvbmUgaXMgYWxsIFksIHRoZSBvdGhlciBpcyBVIGFuZCBWCisgKiAgWUNiWUNyICAgICAgICAgICAgICAgICA6IE9yZ2FuaXplZCBhcyAxNmJpdCBZVVlWIChpLmUuIFlDYllDcikKKyAqICBZQ3JZQ2IgICAgICAgICAgICAgICAgIDogT3JnYW5pemVkIGFzIDE2Yml0IFlWWVUgKGkuZS4gWUNyWUNiKQorICogIENiWUNyWSAgICAgICAgICAgICAgICAgOiBPcmdhbml6ZWQgYXMgMTZiaXQgVVlWWSAoaS5lLiBDYllDclkpCisgKiAgQ3JZQ2JZICAgICAgICAgICAgICAgICA6IE9yZ2FuaXplZCBhcyAxNmJpdCBWWVVZIChpLmUuIENyWUNiWSkKKyAqICBZVVY0NDRJbnRlcmxlYXZlZCAgICAgIDogRWFjaCBwaXhlbCBjb250YWlucyBlcXVhbCBwYXJ0cyBZVVYKKyAqICBSYXdCYXllcjhiaXQgICAgICAgICAgIDogU01JQSBjYW1lcmEgb3V0cHV0IGZvcm1hdAorICogIFJhd0JheWVyMTBiaXQgICAgICAgICAgOiBTTUlBIGNhbWVyYSBvdXRwdXQgZm9ybWF0CisgKiAgUmF3QmF5ZXI4Yml0Y29tcHJlc3NlZCA6IFNNSUEgY2FtZXJhIG91dHB1dCBmb3JtYXQKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9DT0xPUl9GT1JNQVRUWVBFIHsKKyAgICBPTVhfQ09MT1JfRm9ybWF0VW51c2VkLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRNb25vY2hyb21lLAorICAgIE9NWF9DT0xPUl9Gb3JtYXQ4Yml0UkdCMzMyLAorICAgIE9NWF9DT0xPUl9Gb3JtYXQxMmJpdFJHQjQ0NCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MTZiaXRBUkdCNDQ0NCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MTZiaXRBUkdCMTU1NSwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MTZiaXRSR0I1NjUsCisgICAgT01YX0NPTE9SX0Zvcm1hdDE2Yml0QkdSNTY1LAorICAgIE9NWF9DT0xPUl9Gb3JtYXQxOGJpdFJHQjY2NiwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MThiaXRBUkdCMTY2NSwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MTliaXRBUkdCMTY2NiwgCisgICAgT01YX0NPTE9SX0Zvcm1hdDI0Yml0UkdCODg4LAorICAgIE9NWF9DT0xPUl9Gb3JtYXQyNGJpdEJHUjg4OCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MjRiaXRBUkdCMTg4NywKKyAgICBPTVhfQ09MT1JfRm9ybWF0MjViaXRBUkdCMTg4OCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MzJiaXRCR1JBODg4OCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0MzJiaXRBUkdCODg4OCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0WVVWNDExUGxhbmFyLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRZVVY0MTFQYWNrZWRQbGFuYXIsCisgICAgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBsYW5hciwKKyAgICBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwUGFja2VkUGxhbmFyLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRZVVY0MjBTZW1pUGxhbmFyLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRZVVY0MjJQbGFuYXIsCisgICAgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMlBhY2tlZFBsYW5hciwKKyAgICBPTVhfQ09MT1JfRm9ybWF0WVVWNDIyU2VtaVBsYW5hciwKKyAgICBPTVhfQ09MT1JfRm9ybWF0WUNiWUNyLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRZQ3JZQ2IsCisgICAgT01YX0NPTE9SX0Zvcm1hdENiWUNyWSwKKyAgICBPTVhfQ09MT1JfRm9ybWF0Q3JZQ2JZLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRZVVY0NDRJbnRlcmxlYXZlZCwKKyAgICBPTVhfQ09MT1JfRm9ybWF0UmF3QmF5ZXI4Yml0LAorICAgIE9NWF9DT0xPUl9Gb3JtYXRSYXdCYXllcjEwYml0LAorICAgIE9NWF9DT0xPUl9Gb3JtYXRSYXdCYXllcjhiaXRjb21wcmVzc2VkLAorICAgIE9NWF9DT0xPUl9Gb3JtYXRMMiwgCisgICAgT01YX0NPTE9SX0Zvcm1hdEw0LCAKKyAgICBPTVhfQ09MT1JfRm9ybWF0TDgsIAorICAgIE9NWF9DT0xPUl9Gb3JtYXRMMTYsIAorICAgIE9NWF9DT0xPUl9Gb3JtYXRMMjQsIAorICAgIE9NWF9DT0xPUl9Gb3JtYXRMMzIsCisgICAgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBhY2tlZFNlbWlQbGFuYXIsCisgICAgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMlBhY2tlZFNlbWlQbGFuYXIsCisgICAgT01YX0NPTE9SX0Zvcm1hdDE4Qml0QkdSNjY2LAorICAgIE9NWF9DT0xPUl9Gb3JtYXQyNEJpdEFSR0I2NjY2LAorICAgIE9NWF9DT0xPUl9Gb3JtYXQyNEJpdEFCR1I2NjY2LAorICAgIE9NWF9DT0xPUl9Gb3JtYXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0NPTE9SX0Zvcm1hdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0NPTE9SX0Zvcm1hdE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0NPTE9SX0ZPUk1BVFRZUEU7CisKKworLyoqIAorICogRGVmaW5lcyB0aGUgbWF0cml4IGZvciBjb252ZXJzaW9uIGZyb20gUkdCIHRvIFlVViBvciB2aWNlIHZlcnNhLgorICogaUNvbG9yTWF0cml4IHNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBmaXhlZCBwb2ludCB2YWx1ZXMgCisgKiB1c2VkIGluIGNvbnZlcnRpbmcgYmV0d2VlbiBmb3JtYXRzLgorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0NPTE9SQ09OVkVSU0lPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mbyAqLyAKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgLyoqPCBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3QgYXBwbGllcyB0byAqLworICAgIE9NWF9TMzIgeENvbG9yTWF0cml4WzNdWzNdOyAvKio8IFN0b3JlZCBpbiBzaWduZWQgUTE2IGZvcm1hdCAqLworICAgIE9NWF9TMzIgeENvbG9yT2Zmc2V0WzRdOyAgICAvKio8IFN0b3JlZCBpbiBzaWduZWQgUTE2IGZvcm1hdCAqLworfU9NWF9DT05GSUdfQ09MT1JDT05WRVJTSU9OVFlQRTsKKworCisvKiogCisgKiBTdHJ1Y3R1cmUgZGVmaW5pbmcgcGVyY2VudCB0byBzY2FsZSBlYWNoIGZyYW1lIGRpbWVuc2lvbi4gIEZvciBleGFtcGxlOiAgCisgKiBUbyBtYWtlIHRoZSB3aWR0aCA1MCUgbGFyZ2VyLCB1c2UgZldpZHRoID0gMS41IGFuZCB0byBtYWtlIHRoZSB3aWR0aAorICogMS8yIHRoZSBvcmlnaW5hbCBzaXplLCB1c2UgZldpZHRoID0gMC41CisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfU0NBTEVGQUNUT1JUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgIC8qKjwgU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mbyAqLyAKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIC8qKjwgUG9ydCB0aGF0IHRoaXMgc3RydWN0IGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfUzMyIHhXaWR0aDsgICAgICAgICAgIC8qKjwgRml4ZWQgcG9pbnQgdmFsdWUgc3RvcmVkIGFzIFExNiAqLworICAgIE9NWF9TMzIgeEhlaWdodDsgICAgICAgICAgLyoqPCBGaXhlZCBwb2ludCB2YWx1ZSBzdG9yZWQgYXMgUTE2ICovCit9T01YX0NPTkZJR19TQ0FMRUZBQ1RPUlRZUEU7CisKKworLyoqIAorICogRW51bWVyYXRpb24gb2YgcG9zc2libGUgaW1hZ2UgZmlsdGVyIHR5cGVzIAorICovCit0eXBlZGVmIGVudW0gT01YX0lNQUdFRklMVEVSVFlQRSB7CisgICAgT01YX0ltYWdlRmlsdGVyTm9uZSwKKyAgICBPTVhfSW1hZ2VGaWx0ZXJOb2lzZSwKKyAgICBPTVhfSW1hZ2VGaWx0ZXJFbWJvc3MsCisgICAgT01YX0ltYWdlRmlsdGVyTmVnYXRpdmUsCisgICAgT01YX0ltYWdlRmlsdGVyU2tldGNoLAorICAgIE9NWF9JbWFnZUZpbHRlck9pbFBhaW50LAorICAgIE9NWF9JbWFnZUZpbHRlckhhdGNoLAorICAgIE9NWF9JbWFnZUZpbHRlckdwZW4sCisgICAgT01YX0ltYWdlRmlsdGVyQW50aWFsaWFzLCAKKyAgICBPTVhfSW1hZ2VGaWx0ZXJEZVJpbmcsICAgICAgIAorICAgIE9NWF9JbWFnZUZpbHRlclNvbGFyaXplLAorICAgIE9NWF9JbWFnZUZpbHRlcktocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfSW1hZ2VGaWx0ZXJWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9JbWFnZUZpbHRlck1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0lNQUdFRklMVEVSVFlQRTsKKworCisvKiogCisgKiBJbWFnZSBmaWx0ZXIgY29uZmlndXJhdGlvbiAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgCisgKiAgblZlcnNpb24gICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvIAorICogIGVJbWFnZUZpbHRlciA6IEltYWdlIGZpbHRlciB0eXBlIGVudW1lcmF0aW9uICAgICAgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfSU1BR0VGSUxURVJUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0lNQUdFRklMVEVSVFlQRSBlSW1hZ2VGaWx0ZXI7Cit9IE9NWF9DT05GSUdfSU1BR0VGSUxURVJUWVBFOworCisKKy8qKiAKKyAqIEN1c3RvbWl6ZWQgVSBhbmQgViBmb3IgY29sb3IgZW5oYW5jZW1lbnQgCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gCisgKiAgblBvcnRJbmRleCAgICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIGJDb2xvckVuaGFuY2VtZW50IDogRW5hYmxlL2Rpc2FibGUgY29sb3IgZW5oYW5jZW1lbnQKKyAqICBuQ3VzdG9taXplZFUgICAgICA6IFByYWN0aWNhbCB2YWx1ZXM6IDE2LTI0MCwgcmFuZ2U6IDAtMjU1LCB2YWx1ZSBzZXQgZm9yIAorICogICAgICAgICAgICAgICAgICAgICAgVSBjb21wb25lbnQKKyAqICBuQ3VzdG9taXplZFYgICAgICA6IFByYWN0aWNhbCB2YWx1ZXM6IDE2LTI0MCwgcmFuZ2U6IDAtMjU1LCB2YWx1ZSBzZXQgZm9yIAorICogICAgICAgICAgICAgICAgICAgICAgViBjb21wb25lbnQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19DT0xPUkVOSEFOQ0VNRU5UVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfQk9PTCBiQ29sb3JFbmhhbmNlbWVudDsKKyAgICBPTVhfVTggbkN1c3RvbWl6ZWRVOworICAgIE9NWF9VOCBuQ3VzdG9taXplZFY7Cit9IE9NWF9DT05GSUdfQ09MT1JFTkhBTkNFTUVOVFRZUEU7CisKKworLyoqIAorICogRGVmaW5lIGNvbG9yIGtleSBhbmQgY29sb3Iga2V5IG1hc2sgCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIG5BUkdCQ29sb3IgOiAzMmJpdCBBbHBoYSwgUmVkLCBHcmVlbiwgQmx1ZSBDb2xvcgorICogIG5BUkdCTWFzayAgOiAzMmJpdCBNYXNrIGZvciBBbHBoYSwgUmVkLCBHcmVlbiwgQmx1ZSBjaGFubmVscworICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0NPTE9SS0VZVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgbkFSR0JDb2xvcjsKKyAgICBPTVhfVTMyIG5BUkdCTWFzazsKK30gT01YX0NPTkZJR19DT0xPUktFWVRZUEU7CisKKworLyoqIAorICogTGlzdCBvZiBjb2xvciBibGVuZCB0eXBlcyBmb3IgcHJlL3Bvc3QgcHJvY2Vzc2luZyAKKyAqCisgKiBFTlVNUzoKKyAqICBOb25lICAgICAgICAgIDogTm8gY29sb3IgYmxlbmRpbmcgcHJlc2VudAorICogIEFscGhhQ29uc3RhbnQgOiBGdW5jdGlvbiBpcyAoYWxwaGFfY29uc3RhbnQgKiBzcmMpICsgCisgKiAgICAgICAgICAgICAgICAgICgxIC0gYWxwaGFfY29uc3RhbnQpICogZHN0KQorICogIEFscGhhUGVyUGl4ZWwgOiBGdW5jdGlvbiBpcyAoYWxwaGEgKiBzcmMpICsgKDEgLSBhbHBoYSkgKiBkc3QpCisgKiAgQWx0ZXJuYXRlICAgICA6IEZ1bmN0aW9uIGlzIGFsdGVybmF0aW5nIHBpeGVscyBmcm9tIHNyYyBhbmQgZHN0CisgKiAgQW5kICAgICAgICAgICA6IEZ1bmN0aW9uIGlzIChzcmMgJiBkc3QpCisgKiAgT3IgICAgICAgICAgICA6IEZ1bmN0aW9uIGlzIChzcmMgfCBkc3QpCisgKiAgSW52ZXJ0ICAgICAgICA6IEZ1bmN0aW9uIGlzIH5zcmMKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9DT0xPUkJMRU5EVFlQRSB7CisgICAgT01YX0NvbG9yQmxlbmROb25lLAorICAgIE9NWF9Db2xvckJsZW5kQWxwaGFDb25zdGFudCwKKyAgICBPTVhfQ29sb3JCbGVuZEFscGhhUGVyUGl4ZWwsCisgICAgT01YX0NvbG9yQmxlbmRBbHRlcm5hdGUsCisgICAgT01YX0NvbG9yQmxlbmRBbmQsCisgICAgT01YX0NvbG9yQmxlbmRPciwKKyAgICBPTVhfQ29sb3JCbGVuZEludmVydCwKKyAgICBPTVhfQ29sb3JCbGVuZEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfQ29sb3JCbGVuZFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0NvbG9yQmxlbmRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9DT0xPUkJMRU5EVFlQRTsKKworCisvKiogCisgKiBDb2xvciBibGVuZCBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgblZlcnNpb24gICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICAgICAgICAgICAgICAgIAorICogIG5Qb3J0SW5kZXggICAgICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gICAgICAgICAgICAgICAgICAgCisgKiAgblJHQkFscGhhQ29uc3RhbnQgOiBDb25zdGFudCBnbG9iYWwgYWxwaGEgdmFsdWVzIHdoZW4gZ2xvYmFsIGFscGhhIGlzIHVzZWQKKyAqICBlQ29sb3JCbGVuZCAgICAgICA6IENvbG9yIGJsZW5kIHR5cGUgZW51bWVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfQ09MT1JCTEVORFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5SR0JBbHBoYUNvbnN0YW50OworICAgIE9NWF9DT0xPUkJMRU5EVFlQRSAgZUNvbG9yQmxlbmQ7Cit9IE9NWF9DT05GSUdfQ09MT1JCTEVORFRZUEU7CisKKworLyoqIAorICogSG9sZCBmcmFtZSBkaW1lbnNpb24KKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICAgICAgCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gICAgIAorICogIG5XaWR0aCAgICAgOiBGcmFtZSB3aWR0aCBpbiBwaXhlbHMgICAgICAgICAgICAgICAgIAorICogIG5IZWlnaHQgICAgOiBGcmFtZSBoZWlnaHQgaW4gcGl4ZWxzICAgICAgICAgICAgICAgIAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfRlJBTUVTSVpFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgbldpZHRoOworICAgIE9NWF9VMzIgbkhlaWdodDsKK30gT01YX0ZSQU1FU0laRVRZUEU7CisKKworLyoqCisgKiBSb3RhdGlvbiBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAgICAgCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuUm90YXRpb24gIDogKy8tIGludGVnZXIgcm90YXRpb24gdmFsdWUgICAgICAgICAgICAgICAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19ST1RBVElPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfUzMyIG5Sb3RhdGlvbjsgCit9IE9NWF9DT05GSUdfUk9UQVRJT05UWVBFOworCisKKy8qKiAKKyAqIFBvc3NpYmxlIG1pcnJvcmluZyBkaXJlY3Rpb25zIGZvciBwcmUvcG9zdCBwcm9jZXNzaW5nIAorICoKKyAqIEVOVU1TOgorICogIE5vbmUgICAgICAgOiBObyBtaXJyb3JpbmcgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgVmVydGljYWwgICA6IFZlcnRpY2FsIG1pcnJvcmluZywgZmxpcCBvbiBYIGF4aXMgICAKKyAqICBIb3Jpem9udGFsIDogSG9yaXpvbnRhbCBtaXJyb3JpbmcsIGZsaXAgb24gWSBheGlzICAKKyAqICBCb3RoICAgICAgIDogQm90aCB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBtaXJyb3JpbmcKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9NSVJST1JUWVBFIHsKKyAgICBPTVhfTWlycm9yTm9uZSA9IDAsCisgICAgT01YX01pcnJvclZlcnRpY2FsLAorICAgIE9NWF9NaXJyb3JIb3Jpem9udGFsLAorICAgIE9NWF9NaXJyb3JCb3RoLCAKKyAgICBPTVhfTWlycm9yS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9NaXJyb3JWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9NaXJyb3JNYXggPSAweDdGRkZGRkZGICAgCit9IE9NWF9NSVJST1JUWVBFOworCisKKy8qKiAKKyAqIE1pcnJvcmluZyBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAgCisgKiAgZU1pcnJvciAgICA6IE1pcnJvciB0eXBlIGVudW1lcmF0aW9uICAgICAgICAgICAgICAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19NSVJST1JUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgCisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9NSVJST1JUWVBFICBlTWlycm9yOworfSBPTVhfQ09ORklHX01JUlJPUlRZUEU7CisKKworLyoqIAorICogUG9zaXRpb24gaW5mb3JtYXRpb24gb25seSAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICAgICAgICAgICAgICAgCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuWCAgICAgICAgIDogWCBjb29yZGluYXRlIGZvciB0aGUgcG9pbnQgICAgICAgICAgICAgICAgICAgICAKKyAqICBuWSAgICAgICAgIDogWSBjb29yZGluYXRlIGZvciB0aGUgcG9pbnQgCisgKi8gICAgICAgICAgICAgICAgICAgICAgCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX1BPSU5UVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9TMzIgblg7CisgICAgT01YX1MzMiBuWTsKK30gT01YX0NPTkZJR19QT0lOVFRZUEU7CisKKworLyoqIAorICogRnJhbWUgc2l6ZSBwbHVzIHBvc2l0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAgICAgICAgICAgIAorICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICAgICAgCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICAgIAorICogIG5MZWZ0ICAgICAgOiBYIENvb3JkaW5hdGUgb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlCisgKiAgblRvcCAgICAgICA6IFkgQ29vcmRpbmF0ZSBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGUKKyAqICBuV2lkdGggICAgIDogV2lkdGggb2YgdGhlIHJlY3RhbmdsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICogIG5IZWlnaHQgICAgOiBIZWlnaHQgb2YgdGhlIHJlY3RhbmdsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfUkVDVFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAKKyAgICBPTVhfUzMyIG5MZWZ0OyAKKyAgICBPTVhfUzMyIG5Ub3A7CisgICAgT01YX1UzMiBuV2lkdGg7CisgICAgT01YX1UzMiBuSGVpZ2h0OworfSBPTVhfQ09ORklHX1JFQ1RUWVBFOworCisKKy8qKiAKKyAqIERlYmxvY2tpbmcgc3RhdGU7IGl0IGlzIHJlcXVpcmVkIHRvIGJlIHNldCB1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvZGVjIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICAgICAgCisgKiAgblZlcnNpb24gICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBiRGVibG9ja2luZyA6IEVuYWJsZS9kaXNhYmxlIGRlYmxvY2tpbmcgbW9kZSAgICAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1BBUkFNX0RFQkxPQ0tJTkdUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0JPT0wgYkRlYmxvY2tpbmc7Cit9IE9NWF9QQVJBTV9ERUJMT0NLSU5HVFlQRTsKKworCisvKiogCisgKiBTdGFiaWxpemF0aW9uIHN0YXRlIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAgCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gICAgCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICAgCisgKiAgYlN0YWIgICAgICA6IEVuYWJsZS9kaXNhYmxlIGZyYW1lIHN0YWJpbGl6YXRpb24gc3RhdGUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19GUkFNRVNUQUJUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0JPT0wgYlN0YWI7Cit9IE9NWF9DT05GSUdfRlJBTUVTVEFCVFlQRTsKKworCisvKiogCisgKiBXaGl0ZSBCYWxhbmNlIGNvbnRyb2wgdHlwZSAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBTdW5MaWdodCA6IFJlZmVyZW5jZWQgaW4gSlNSLTIzNAorICogIEZsYXNoICAgIDogT3B0aW1hbCBmb3IgZGV2aWNlJ3MgaW50ZWdyYXRlZCBmbGFzaAorICovCit0eXBlZGVmIGVudW0gT01YX1dISVRFQkFMQ09OVFJPTFRZUEUgeworICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xPZmYgPSAwLAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xBdXRvLAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xTdW5MaWdodCwKKyAgICBPTVhfV2hpdGVCYWxDb250cm9sQ2xvdWR5LAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xTaGFkZSwKKyAgICBPTVhfV2hpdGVCYWxDb250cm9sVHVuZ3N0ZW4sCisgICAgT01YX1doaXRlQmFsQ29udHJvbEZsdW9yZXNjZW50LAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xJbmNhbmRlc2NlbnQsCisgICAgT01YX1doaXRlQmFsQ29udHJvbEZsYXNoLAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xIb3Jpem9uLAorICAgIE9NWF9XaGl0ZUJhbENvbnRyb2xLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1doaXRlQmFsQ29udHJvbFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1doaXRlQmFsQ29udHJvbE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1dISVRFQkFMQ09OVFJPTFRZUEU7CisKKworLyoqIAorICogV2hpdGUgQmFsYW5jZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAgICAgICAKKyAqICBuVmVyc2lvbiAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAgICAgICAgICAgICAgICAgCisgKiAgZVdoaXRlQmFsQ29udHJvbCA6IFdoaXRlIGJhbGFuY2UgZW51bWVyYXRpb24gICAgICAgICAgICAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19XSElURUJBTENPTlRST0xUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1dISVRFQkFMQ09OVFJPTFRZUEUgZVdoaXRlQmFsQ29udHJvbDsKK30gT01YX0NPTkZJR19XSElURUJBTENPTlRST0xUWVBFOworCisKKy8qKiAKKyAqIEV4cG9zdXJlIGNvbnRyb2wgdHlwZSAKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9FWFBPU1VSRUNPTlRST0xUWVBFIHsKKyAgICBPTVhfRXhwb3N1cmVDb250cm9sT2ZmID0gMCwKKyAgICBPTVhfRXhwb3N1cmVDb250cm9sQXV0bywKKyAgICBPTVhfRXhwb3N1cmVDb250cm9sTmlnaHQsCisgICAgT01YX0V4cG9zdXJlQ29udHJvbEJhY2tMaWdodCwKKyAgICBPTVhfRXhwb3N1cmVDb250cm9sU3BvdExpZ2h0LAorICAgIE9NWF9FeHBvc3VyZUNvbnRyb2xTcG9ydHMsCisgICAgT01YX0V4cG9zdXJlQ29udHJvbFNub3csCisgICAgT01YX0V4cG9zdXJlQ29udHJvbEJlYWNoLAorICAgIE9NWF9FeHBvc3VyZUNvbnRyb2xMYXJnZUFwZXJ0dXJlLAorICAgIE9NWF9FeHBvc3VyZUNvbnRyb2xTbWFsbEFwcGVydHVyZSwKKyAgICBPTVhfRXhwb3N1cmVDb250cm9sS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9FeHBvc3VyZUNvbnRyb2xWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9FeHBvc3VyZUNvbnRyb2xNYXggPSAweDdGRkZGRkZGCit9IE9NWF9FWFBPU1VSRUNPTlRST0xUWVBFOworCisKKy8qKiAKKyAqIFdoaXRlIEJhbGFuY2UgY29udHJvbCBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAKKyAqICBuVmVyc2lvbiAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAgICAgICAgICAgICAgICAKKyAqICBlRXhwb3N1cmVDb250cm9sIDogRXhwb3N1cmUgY29udHJvbCBlbnVtZXJhdGlvbiAgICAgICAgIAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0VYUE9TVVJFQ09OVFJPTFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfRVhQT1NVUkVDT05UUk9MVFlQRSBlRXhwb3N1cmVDb250cm9sOworfSBPTVhfQ09ORklHX0VYUE9TVVJFQ09OVFJPTFRZUEU7CisKKworLyoqIAorICogRGVmaW5lcyBzZW5zb3Igc3VwcG9ydGVkIG1vZGUuIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAgIAorICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvIAorICogIG5GcmFtZVJhdGUgOiBTaW5nbGUgc2hvdCBtb2RlIGlzIGluZGljYXRlZCBieSBhIDAgICAgIAorICogIGJPbmVTaG90ICAgOiBFbmFibGUgZm9yIHNpbmdsZSBzaG90LCBkaXNhYmxlIGZvciBzdHJlYW1pbmcKKyAqICBzRnJhbWVTaXplIDogRnJhbWVzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9QQVJBTV9TRU5TT1JNT0RFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgbkZyYW1lUmF0ZTsKKyAgICBPTVhfQk9PTCBiT25lU2hvdDsKKyAgICBPTVhfRlJBTUVTSVpFVFlQRSBzRnJhbWVTaXplOworfSBPTVhfUEFSQU1fU0VOU09STU9ERVRZUEU7CisKKworLyoqIAorICogRGVmaW5lcyBjb250cmFzdCBsZXZlbCAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gICAgICAgICAgICAgICAgCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICAgICAgICAgICAgICAgICAKKyAqICBuQ29udHJhc3QgIDogVmFsdWVzIGFsbG93ZWQgZm9yIGNvbnRyYXN0IC0xMDAgdG8gMTAwLCB6ZXJvIG1lYW5zIG5vIGNoYW5nZQorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0NPTlRSQVNUVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9TMzIgbkNvbnRyYXN0OworfSBPTVhfQ09ORklHX0NPTlRSQVNUVFlQRTsKKworCisvKiogCisgKiBEZWZpbmVzIGJyaWdodG5lc3MgbGV2ZWwgCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAgCisgKiAgblZlcnNpb24gICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gCisgKiAgbkJyaWdodG5lc3MgOiAwLTEwMCUgICAgICAgIAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0JSSUdIVE5FU1NUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1UzMiBuQnJpZ2h0bmVzczsKK30gT01YX0NPTkZJR19CUklHSFRORVNTVFlQRTsKKworCisvKiogCisgKiBEZWZpbmVzIGJhY2tsaWdodCBsZXZlbCBjb25maWd1cmF0aW9uIGZvciBhIHZpZGVvIHNpbmssIGUuZy4gTENEIHBhbmVsIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAKKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuQmFja2xpZ2h0IDogVmFsdWVzIGFsbG93ZWQgZm9yIGJhY2tsaWdodCAwLTEwMCUKKyAqICBuVGltZW91dCAgIDogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZWZvcmUgYmFja2xpZ2h0IGF1dG9tYXRpY2FsbHkgdHVybnMgCisgKiAgICAgICAgICAgICAgIG9mZi4gIEEgdmFsdWUgb2YgMHgwIGRpc2FibGVzIGJhY2tpZ2h0IHRpbWVvdXQgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfQkFDS0xJR0hUVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgbkJhY2tsaWdodDsKKyAgICBPTVhfVTMyIG5UaW1lb3V0OworfSBPTVhfQ09ORklHX0JBQ0tMSUdIVFRZUEU7CisKKworLyoqIAorICogRGVmaW5lcyBzZXR0aW5nIGZvciBHYW1tYSAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgbkdhbW1hICAgICA6IFZhbHVlcyBhbGxvd2VkIGZvciBnYW1tYSAtMTAwIHRvIDEwMCwgemVybyBtZWFucyBubyBjaGFuZ2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19HQU1NQVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfUzMyIG5HYW1tYTsKK30gT01YX0NPTkZJR19HQU1NQVRZUEU7CisKKworLyoqIAorICogRGVmaW5lIGZvciBzZXR0aW5nIHNhdHVyYXRpb24gCisgKiAKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uCisgKiAgblBvcnRJbmRleCAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIG5TYXR1cmF0aW9uIDogVmFsdWVzIGFsbG93ZWQgZm9yIHNhdHVyYXRpb24gLTEwMCB0byAxMDAsIHplcm8gbWVhbnMgCisgKiAgICAgICAgICAgICAgICBubyBjaGFuZ2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19TQVRVUkFUSU9OVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9TMzIgblNhdHVyYXRpb247Cit9IE9NWF9DT05GSUdfU0FUVVJBVElPTlRZUEU7CisKKworLyoqIAorICogRGVmaW5lIGZvciBzZXR0aW5nIExpZ2h0bmVzcyAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuTGlnaHRuZXNzIDogVmFsdWVzIGFsbG93ZWQgZm9yIGxpZ2h0bmVzcyAtMTAwIHRvIDEwMCwgemVybyBtZWFucyBubyAKKyAqICAgICAgICAgICAgICAgY2hhbmdlCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfTElHSFRORVNTVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9TMzIgbkxpZ2h0bmVzczsKK30gT01YX0NPTkZJR19MSUdIVE5FU1NUWVBFOworCisKKy8qKiAKKyAqIFBsYW5lIGJsZW5kIGNvbmZpZ3VyYXRpb24gCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggOiBJbmRleCBvZiBpbnB1dCBwb3J0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGxhbmUuCisgKiAgbkRlcHRoICAgICA6IERlcHRoIG9mIHRoZSBwbGFuZSBpbiByZWxhdGlvbiB0byB0aGUgc2NyZWVuLiBIaWdoZXIgCisgKiAgICAgICAgICAgICAgIG51bWJlcmVkIGRlcHRocyBhcmUgImJlaGluZCIgbG93ZXIgbnVtYmVyIGRlcHRocy4gIAorICogICAgICAgICAgICAgICBUaGlzIG51bWJlciBkZWZhdWx0cyB0byB0aGUgUG9ydCBJbmRleCBudW1iZXIuCisgKiAgbkFscGhhICAgICA6IFRyYW5zcGFyZW5jeSBibGVuZGluZyBjb21wb25lbnQgZm9yIHRoZSBlbnRpcmUgcGxhbmUuICAKKyAqICAgICAgICAgICAgICAgU2VlIGJsZW5kaW5nIG1vZGVzIGZvciBtb3JlIGRldGFpbC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19QTEFORUJMRU5EVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgbkRlcHRoOworICAgIE9NWF9VMzIgbkFscGhhOworfSBPTVhfQ09ORklHX1BMQU5FQkxFTkRUWVBFOworCisKKy8qKiAKKyAqIERlZmluZSBpbnRlcmxhY2UgdHlwZQorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAKKyAqICBuVmVyc2lvbiAgICAgICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggICAgICAgICAgICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgYkVuYWJsZSAgICAgICAgICAgICAgIDogRW5hYmxlIGNvbnRyb2wgdmFyaWFibGUgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VlIGJlbG93KQorICogIG5JbnRlcmxlYXZlUG9ydEluZGV4ICA6IEluZGV4IG9mIGlucHV0IG9yIG91dHB1dCBwb3J0IGFzc29jaWF0ZWQgd2l0aCAgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGludGVybGVhdmVkIHBsYW5lLiAKKyAqICBwUGxhbmFyUG9ydEluZGV4ZXNbNF0gOiBJbmRleCBvZiBpbnB1dCBvciBvdXRwdXQgcGxhbmFyIHBvcnRzLgorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUEFSQU1fSU5URVJMRUFWRVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfQk9PTCBiRW5hYmxlOworICAgIE9NWF9VMzIgbkludGVybGVhdmVQb3J0SW5kZXg7Cit9IE9NWF9QQVJBTV9JTlRFUkxFQVZFVFlQRTsKKworCisvKiogCisgKiBEZWZpbmVzIHRoZSBwaWN0dXJlIGVmZmVjdCB1c2VkIGZvciBhbiBpbnB1dCBwaWN0dXJlIAorICovCit0eXBlZGVmIGVudW0gT01YX1RSQU5TSVRJT05FRkZFQ1RUWVBFIHsKKyAgICBPTVhfRWZmZWN0Tm9uZSwKKyAgICBPTVhfRWZmZWN0RmFkZUZyb21CbGFjaywKKyAgICBPTVhfRWZmZWN0RmFkZVRvQmxhY2ssCisgICAgT01YX0VmZmVjdFVuc3BlY2lmaWVkVGhyb3VnaENvbnN0YW50Q29sb3IsCisgICAgT01YX0VmZmVjdERpc3NvbHZlLAorICAgIE9NWF9FZmZlY3RXaXBlLAorICAgIE9NWF9FZmZlY3RVbnNwZWNpZmllZE1peE9mVHdvU2NlbmVzLAorICAgIE9NWF9FZmZlY3RLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0VmZmVjdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0VmZmVjdE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1RSQU5TSVRJT05FRkZFQ1RUWVBFOworCisKKy8qKiAKKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGNvbmZpZ3VyZSBjdXJyZW50IHRyYW5zaXRpb24gZWZmZWN0IAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gCisgKiBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqIGVFZmZlY3QgICAgOiBFZmZlY3QgdG8gZW5hYmxlCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfVFJBTlNJVElPTkVGRkVDVFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVFJBTlNJVElPTkVGRkVDVFRZUEUgZUVmZmVjdDsKK30gT01YX0NPTkZJR19UUkFOU0lUSU9ORUZGRUNUVFlQRTsKKworCisvKiogCisgKiBEZWZpbmVzIHBvc3NpYmxlIGRhdGEgdW5pdCB0eXBlcyBmb3IgZW5jb2RlZCB2aWRlbyBkYXRhLiBUaGUgZGF0YSB1bml0IAorICogdHlwZXMgYXJlIHVzZWQgYm90aCBmb3IgZW5jb2RlZCB2aWRlbyBpbnB1dCBmb3IgcGxheWJhY2sgYXMgd2VsbCBhcworICogZW5jb2RlZCB2aWRlbyBvdXRwdXQgZnJvbSByZWNvcmRpbmcuIAorICovCit0eXBlZGVmIGVudW0gT01YX0RBVEFVTklUVFlQRSB7CisgICAgT01YX0RhdGFVbml0Q29kZWRQaWN0dXJlLAorICAgIE9NWF9EYXRhVW5pdFZpZGVvU2VnbWVudCwKKyAgICBPTVhfRGF0YVVuaXRTZXZlcmFsU2VnbWVudHMsCisgICAgT01YX0RhdGFVbml0QXJiaXRyYXJ5U3RyZWFtU2VjdGlvbiwKKyAgICBPTVhfRGF0YVVuaXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0RhdGFVbml0VmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfRGF0YVVuaXRNYXggPSAweDdGRkZGRkZGCit9IE9NWF9EQVRBVU5JVFRZUEU7CisKKworLyoqIAorICogRGVmaW5lcyBwb3NzaWJsZSBlbmNhcHN1bGF0aW9uIHR5cGVzIGZvciBjb2RlZCB2aWRlbyBkYXRhIHVuaXQuIFRoZSAKKyAqIGVuY2Fwc3VsYXRpb24gaW5mb3JtYXRpb24gaXMgdXNlZCBib3RoIGZvciBlbmNvZGVkIHZpZGVvIGlucHV0IGZvciAKKyAqIHBsYXliYWNrIGFzIHdlbGwgYXMgZW5jb2RlZCB2aWRlbyBvdXRwdXQgZnJvbSByZWNvcmRpbmcuIAorICovCit0eXBlZGVmIGVudW0gT01YX0RBVEFVTklURU5DQVBTVUxBVElPTlRZUEUgeworICAgIE9NWF9EYXRhRW5jYXBzdWxhdGlvbkVsZW1lbnRhcnlTdHJlYW0sCisgICAgT01YX0RhdGFFbmNhcHN1bGF0aW9uR2VuZXJpY1BheWxvYWQsCisgICAgT01YX0RhdGFFbmNhcHN1bGF0aW9uUnRwUGF5bG9hZCwKKyAgICBPTVhfRGF0YUVuY2Fwc3VsYXRpb25LaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0RhdGFFbmNhcHN1bGF0aW9uVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfRGF0YUVuY2Fwc3VsYXRpb25NYXggPSAweDdGRkZGRkZGCit9IE9NWF9EQVRBVU5JVEVOQ0FQU1VMQVRJT05UWVBFOworCisKKy8qKiAKKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgdHlwZSBvZiBiZWluZyBkZWNvZGVkL2VuY29kZWQgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9QQVJBTV9EQVRBVU5JVFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgLyoqPCBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLyAKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIC8qKjwgUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gKi8KKyAgICBPTVhfREFUQVVOSVRUWVBFIGVVbml0VHlwZTsKKyAgICBPTVhfREFUQVVOSVRFTkNBUFNVTEFUSU9OVFlQRSBlRW5jYXBzdWxhdGlvblR5cGU7Cit9IE9NWF9QQVJBTV9EQVRBVU5JVFRZUEU7CisKKworLyoqCisgKiBEZWZpbmVzIGRpdGhlciB0eXBlcyAKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9ESVRIRVJUWVBFIHsKKyAgICBPTVhfRGl0aGVyTm9uZSwKKyAgICBPTVhfRGl0aGVyT3JkZXJlZCwKKyAgICBPTVhfRGl0aGVyRXJyb3JEaWZmdXNpb24sCisgICAgT01YX0RpdGhlck90aGVyLAorICAgIE9NWF9EaXRoZXJLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0RpdGhlclZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0RpdGhlck1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0RJVEhFUlRZUEU7CisKKworLyoqIAorICogU3RydWN0dXJlIHVzZWQgdG8gY29uZmlndXJlIGN1cnJlbnQgdHlwZSBvZiBkaXRoZXJpbmcgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfRElUSEVSVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgLyoqPCBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9ESVRIRVJUWVBFIGVEaXRoZXI7ICAgLyoqPCBUeXBlIG9mIGRpdGhlcmluZyB0byB1c2UgKi8KK30gT01YX0NPTkZJR19ESVRIRVJUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX0NBUFRVUkVNT0RFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgLyoqPCBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9CT09MIGJDb250aW51b3VzOyAgIC8qKjwgSWYgdHJ1ZSB0aGVuIGlnbm9yZSBmcmFtZSByYXRlIGFuZCBlbWl0IGNhcHR1cmUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBkYXRhIGFzIGZhc3QgYXMgcG9zc2libGUgKG90aGVyd2lzZSBvYmV5IHBvcnQncyBmcmFtZSByYXRlKS4gKi8KKyAgICBPTVhfQk9PTCBiRnJhbWVMaW1pdGVkOyAvKio8IElmIHRydWUgdGhlbiB0ZXJtaW5hdGUgY2FwdHVyZSBhZnRlciB0aGUgcG9ydCBlbWl0cyB0aGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBzcGVjaWZpZWQgbnVtYmVyIG9mIGZyYW1lcyAob3RoZXJ3aXNlIHRoZSBwb3J0IGRvZXMgbm90IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdGVybWluYXRlIHRoZSBjYXB0dXJlIHVudGlsIGluc3RydWN0ZWQgdG8gZG8gc28gYnkgdGhlIGNsaWVudCkuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgRXZlbiBpZiBzZXQsIHRoZSBjbGllbnQgbWF5IG1hbnVhbGx5IHRlcm1pbmF0ZSB0aGUgY2FwdHVyZSBwcmlvciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHRvIHJlYWNoaW5nIHRoZSBsaW1pdC4gKi8KKyAgICBPTVhfVTMyIG5GcmFtZUxpbWl0OyAgICAgIC8qKjwgTGltaXQgb24gbnVtYmVyIG9mIGZyYW1lcyBlbWl0dGVkIGR1cmluZyBhIGNhcHR1cmUgKG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsaWQgaWYgYkZyYW1lTGltaXRlZCBpcyBzZXQpLiAqLworfSBPTVhfQ09ORklHX0NBUFRVUkVNT0RFVFlQRTsKKwordHlwZWRlZiBlbnVtIE9NWF9NRVRFUklOR1RZUEUgeworIAorICAgIE9NWF9NZXRlcmluZ01vZGVBdmVyYWdlLCAgICAgLyoqPCBDZW50ZXItd2VpZ2h0ZWQgYXZlcmFnZSBtZXRlcmluZy4gKi8KKyAgICBPTVhfTWV0ZXJpbmdNb2RlU3BvdCwgIAkgICAgICAvKio8IFNwb3QgKHBhcnRpYWwpIG1ldGVyaW5nLiAqLworICAgIE9NWF9NZXRlcmluZ01vZGVNYXRyaXgsICAgICAgLyoqPCBNYXRyaXggb3IgZXZhbHVhdGl2ZSBtZXRlcmluZy4gKi8KKyAKKyAgICBPTVhfTWV0ZXJpbmdLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX01ldGVyaW5nVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfRVZNb2RlTWF4ID0gMHg3ZmZmZmZmZgorfSBPTVhfTUVURVJJTkdUWVBFOworIAordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19FWFBPU1VSRVZBTFVFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9NRVRFUklOR1RZUEUgZU1ldGVyaW5nOworICAgIE9NWF9TMzIgeEVWQ29tcGVuc2F0aW9uOyAgICAgIC8qKjwgRml4ZWQgcG9pbnQgdmFsdWUgc3RvcmVkIGFzIFExNiAqLworICAgIE9NWF9VMzIgbkFwZXJ0dXJlRk51bWJlcjsgICAgIC8qKjwgZS5nLiBuQXBlcnR1cmVGTnVtYmVyID0gMiBpbXBsaWVzICJmLzIiIC0gUTE2IGZvcm1hdCAqLworICAgIE9NWF9CT09MIGJBdXRvQXBlcnR1cmU7CQkvKio8IFdoZXRoZXIgYXBlcnR1cmUgbnVtYmVyIGlzIGRlZmluZWQgYXV0b21hdGljYWxseSAqLworICAgIE9NWF9VMzIgblNodXR0ZXJTcGVlZE1zZWM7ICAgIC8qKjwgU2h1dHRlcnNwZWVkIGluIG1pbGxpc2Vjb25kcyAqLyAKKyAgICBPTVhfQk9PTCBiQXV0b1NodXR0ZXJTcGVlZDsJLyoqPCBXaGV0aGVyIHNodXR0ZXIgc3BlZWQgaXMgZGVmaW5lZCBhdXRvbWF0aWNhbGx5ICovIAorICAgIE9NWF9VMzIgblNlbnNpdGl2aXR5OyAgICAgICAgIC8qKjwgZS5nLiBuU2Vuc2l0aXZpdHkgPSAxMDAgaW1wbGllcyAiSVNPIDEwMCIgKi8KKyAgICBPTVhfQk9PTCBiQXV0b1NlbnNpdGl2aXR5OwkvKio8IFdoZXRoZXIgc2Vuc2l0aXZpdHkgaXMgZGVmaW5lZCBhdXRvbWF0aWNhbGx5ICovCit9IE9NWF9DT05GSUdfRVhQT1NVUkVWQUxVRVRZUEU7CisKKy8qKiAKKyAqIEZvY3VzIHJlZ2lvbiBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4ICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIGJDZW50ZXIgICAgICAgICA6IFVzZSBjZW50ZXIgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJMZWZ0ICAgICAgICAgICA6IFVzZSBsZWZ0IHJlZ2lvbiBhcyBmb2N1cyByZWdpb24gb2YgaW50ZXJlc3QKKyAqICBiUmlnaHQgICAgICAgICAgOiBVc2UgcmlnaHQgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJUb3AgICAgICAgICAgICA6IFVzZSB0b3AgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJCb3R0b20gICAgICAgICA6IFVzZSBib3R0b20gcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJUb3BMZWZ0ICAgICAgICA6IFVzZSB0b3AgbGVmdCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYlRvcFJpZ2h0ICAgICAgIDogVXNlIHRvcCByaWdodCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYkJvdHRvbUxlZnQgICAgIDogVXNlIGJvdHRvbSBsZWZ0IHJlZ2lvbiBhcyBmb2N1cyByZWdpb24gb2YgaW50ZXJlc3QKKyAqICBiQm90dG9tUmlnaHQgICAgOiBVc2UgYm90dG9tIHJpZ2h0IHJlZ2lvbiBhcyBmb2N1cyByZWdpb24gb2YgaW50ZXJlc3QKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19GT0NVU1JFR0lPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfQk9PTCBiQ2VudGVyOworICAgIE9NWF9CT09MIGJMZWZ0OworICAgIE9NWF9CT09MIGJSaWdodDsKKyAgICBPTVhfQk9PTCBiVG9wOworICAgIE9NWF9CT09MIGJCb3R0b207CisgICAgT01YX0JPT0wgYlRvcExlZnQ7CisgICAgT01YX0JPT0wgYlRvcFJpZ2h0OworICAgIE9NWF9CT09MIGJCb3R0b21MZWZ0OworICAgIE9NWF9CT09MIGJCb3R0b21SaWdodDsKK30gT01YX0NPTkZJR19GT0NVU1JFR0lPTlRZUEU7CisKKy8qKiAKKyAqIEZvY3VzIFN0YXR1cyB0eXBlIAorICovCit0eXBlZGVmIGVudW0gT01YX0ZPQ1VTU1RBVFVTVFlQRSB7CisgICAgT01YX0ZvY3VzU3RhdHVzT2ZmID0gMCwKKyAgICBPTVhfRm9jdXNTdGF0dXNSZXF1ZXN0LAorICAgIE9NWF9Gb2N1c1N0YXR1c1JlYWNoZWQsCisgICAgT01YX0ZvY3VzU3RhdHVzVW5hYmxlVG9SZWFjaCwKKyAgICBPTVhfRm9jdXNTdGF0dXNMb3N0LAorICAgIE9NWF9Gb2N1c1N0YXR1c0tocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfRm9jdXNTdGF0dXNWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9Gb2N1c1N0YXR1c01heCA9IDB4N0ZGRkZGRkYKK30gT01YX0ZPQ1VTU1RBVFVTVFlQRTsKKworLyoqIAorICogRm9jdXMgc3RhdHVzIGNvbmZpZ3VyYXRpb24gCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uCisgKiAgblBvcnRJbmRleCAgICAgICAgICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgZUZvY3VzU3RhdHVzICAgICAgICA6IFNwZWNpZmllcyB0aGUgZm9jdXMgc3RhdHVzCisgKiAgYkNlbnRlclN0YXR1cyAgICAgICA6IFVzZSBjZW50ZXIgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJMZWZ0U3RhdHVzICAgICAgICAgOiBVc2UgbGVmdCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYlJpZ2h0U3RhdHVzICAgICAgICA6IFVzZSByaWdodCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYlRvcFN0YXR1cyAgICAgICAgICA6IFVzZSB0b3AgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICogIGJCb3R0b21TdGF0dXMgICAgICAgOiBVc2UgYm90dG9tIHJlZ2lvbiBhcyBmb2N1cyByZWdpb24gb2YgaW50ZXJlc3QKKyAqICBiVG9wTGVmdFN0YXR1cyAgICAgIDogVXNlIHRvcCBsZWZ0IHJlZ2lvbiBhcyBmb2N1cyByZWdpb24gb2YgaW50ZXJlc3QKKyAqICBiVG9wUmlnaHRTdGF0dXMgICAgIDogVXNlIHRvcCByaWdodCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYkJvdHRvbUxlZnRTdGF0dXMgICA6IFVzZSBib3R0b20gbGVmdCByZWdpb24gYXMgZm9jdXMgcmVnaW9uIG9mIGludGVyZXN0CisgKiAgYkJvdHRvbVJpZ2h0U3RhdHVzICA6IFVzZSBib3R0b20gcmlnaHQgcmVnaW9uIGFzIGZvY3VzIHJlZ2lvbiBvZiBpbnRlcmVzdAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfUEFSQU1fRk9DVVNTVEFUVVNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0ZPQ1VTU1RBVFVTVFlQRSBlRm9jdXNTdGF0dXM7CisgICAgT01YX0JPT0wgYkNlbnRlclN0YXR1czsKKyAgICBPTVhfQk9PTCBiTGVmdFN0YXR1czsKKyAgICBPTVhfQk9PTCBiUmlnaHRTdGF0dXM7CisgICAgT01YX0JPT0wgYlRvcFN0YXR1czsKKyAgICBPTVhfQk9PTCBiQm90dG9tU3RhdHVzOworICAgIE9NWF9CT09MIGJUb3BMZWZ0U3RhdHVzOworICAgIE9NWF9CT09MIGJUb3BSaWdodFN0YXR1czsKKyAgICBPTVhfQk9PTCBiQm90dG9tTGVmdFN0YXR1czsKKyAgICBPTVhfQk9PTCBiQm90dG9tUmlnaHRTdGF0dXM7Cit9IE9NWF9QQVJBTV9GT0NVU1NUQVRVU1RZUEU7CisKKy8qKiBAfSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisjZW5kaWYKKy8qIEZpbGUgRU9GICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0ltYWdlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0ltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlMzllYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfSW1hZ2UuaApAQCAtMCwwICsxLDM0NSBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBQYWNrZXRWaWRlbworICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlcgorICogZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCisgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDA4IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4gCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdAorICogdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gCisgKi8KKworLyoqIAorICogQGZpbGUgT01YX0ltYWdlLmggLSBPcGVuTWF4IElMIHZlcnNpb24gMS4xLjIKKyAqIFRoZSBzdHJ1Y3R1cmVzIG5lZWRlZCBieSBJbWFnZSBjb21wb25lbnRzIHRvIGV4Y2hhbmdlIHBhcmFtZXRlcnMgYW5kIAorICogY29uZmlndXJhdGlvbiBkYXRhIHdpdGggdGhlIGNvbXBvbmVudHMuCisgKi8KKyNpZm5kZWYgT01YX0ltYWdlX2gKKyNkZWZpbmUgT01YX0ltYWdlX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisKKy8qKgorICogRWFjaCBPTVggaGVhZGVyIG11c3QgaW5jbHVkZSBhbGwgcmVxdWlyZWQgaGVhZGVyIGZpbGVzIHRvIGFsbG93IHRoZSAKKyAqIGhlYWRlciB0byBjb21waWxlIHdpdGhvdXQgZXJyb3JzLiAgVGhlIGluY2x1ZGVzIGJlbG93IGFyZSByZXF1aXJlZCAgCisgKiBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworCisjaW5jbHVkZSA8T01YX0lWQ29tbW9uLmg+CisKKy8qKiBAZGVmZ3JvdXAgaW1hZ2luZyBPcGVuTUFYIElMIEltYWdpbmcgRG9tYWluCisgKiBAaW5ncm91cCBpdgorICogU3RydWN0dXJlcyBmb3IgT3Blbk1BWCBJTCBJbWFnaW5nIGRvbWFpbgorICogQHsKKyAqLworCisvKiogCisgKiBFbnVtZXJhdGlvbiB1c2VkIHRvIGRlZmluZSB0aGUgcG9zc2libGUgaW1hZ2UgY29tcHJlc3Npb24gY29kaW5nLiAKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9JTUFHRV9DT0RJTkdUWVBFIHsKKyAgICBPTVhfSU1BR0VfQ29kaW5nVW51c2VkLCAgICAgIC8qKjwgVmFsdWUgd2hlbiBmb3JtYXQgaXMgTi9BICovCisgICAgT01YX0lNQUdFX0NvZGluZ0F1dG9EZXRlY3QsICAvKio8IEF1dG8gZGV0ZWN0aW9uIG9mIGltYWdlIGZvcm1hdCAqLworICAgIE9NWF9JTUFHRV9Db2RpbmdKUEVHLCAgICAgICAgLyoqPCBKUEVHL0pGSUYgaW1hZ2UgZm9ybWF0ICovCisgICAgT01YX0lNQUdFX0NvZGluZ0pQRUcySywgICAgICAvKio8IEpQRUcgMjAwMCBpbWFnZSBmb3JtYXQgKi8KKyAgICBPTVhfSU1BR0VfQ29kaW5nRVhJRiwgICAgICAgIC8qKjwgRVhJRiBpbWFnZSBmb3JtYXQgKi8KKyAgICBPTVhfSU1BR0VfQ29kaW5nVElGRiwgICAgICAgIC8qKjwgVElGRiBpbWFnZSBmb3JtYXQgKi8KKyAgICBPTVhfSU1BR0VfQ29kaW5nR0lGLCAgICAgICAgIC8qKjwgR3JhcGhpY3MgaW1hZ2UgZm9ybWF0ICovCisgICAgT01YX0lNQUdFX0NvZGluZ1BORywgICAgICAgICAvKio8IFBORyBpbWFnZSBmb3JtYXQgKi8KKyAgICBPTVhfSU1BR0VfQ29kaW5nTFpXLCAgICAgICAgIC8qKjwgTFpXIGltYWdlIGZvcm1hdCAqLworICAgIE9NWF9JTUFHRV9Db2RpbmdCTVAsICAgICAgICAgLyoqPCBXaW5kb3dzIEJpdG1hcCBmb3JtYXQgKi8KKyAgICBPTVhfSU1BR0VfQ29kaW5nS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9JTUFHRV9Db2RpbmdWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9JTUFHRV9Db2RpbmdNYXggPSAweDdGRkZGRkZGCit9IE9NWF9JTUFHRV9DT0RJTkdUWVBFOworCisKKy8qKgorICogRGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBkZWZpbmUgYW4gaW1hZ2UgcGF0aC4gVGhlIG51bWJlciBvZiBpbWFnZSBwYXRocyAKKyAqIGZvciBpbnB1dCBhbmQgb3V0cHV0IHdpbGwgdmFyeSBieSB0eXBlIG9mIHRoZSBpbWFnZSBjb21wb25lbnQuICAKKyAqIAorICogIElucHV0IChha2EgU291cmNlKSA6IFplcm8gSW5wdXRzLCBvbmUgT3V0cHV0LAorICogIFNwbGl0dGVyICAgICAgICAgICA6IE9uZSBJbnB1dCwgMiBvciBtb3JlIE91dHB1dHMsCisgKiAgUHJvY2Vzc2luZyBFbGVtZW50IDogT25lIElucHV0LCBvbmUgb3V0cHV0LAorICogIE1peGVyICAgICAgICAgICAgICA6IDIgb3IgbW9yZSBpbnB1dHMsIG9uZSBvdXRwdXQsCisgKiAgT3V0cHV0IChha2EgU2luaykgIDogT25lIElucHV0LCB6ZXJvIG91dHB1dHMuCisgKiAKKyAqIFRoZSBQb3J0RGVmaW5pdGlvbiBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBkZWZpbmUgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzIAorICogbmVjZXNzYXJ5IGZvciB0aGUgY29tcGxpYW50IGNvbXBvbmVudCB0byBzZXR1cCBhbiBpbnB1dCBvciBhbiBvdXRwdXQgIAorICogaW1hZ2UgcGF0aC4gIElmIGFkZGl0aW9uYWwgdmVuZG9yIHNwZWNpZmljIGRhdGEgaXMgcmVxdWlyZWQsIGl0IHNob3VsZCAgCisgKiBiZSB0cmFuc21pdHRlZCB0byB0aGUgY29tcG9uZW50IHVzaW5nIHRoZSBDdXN0b21Db21tYW5kIGZ1bmN0aW9uLiAgIAorICogQ29tcGxpYW50IGNvbXBvbmVudHMgd2lsbCBwcmVwb3B1bGF0ZSB0aGlzIHN0cnVjdHVyZSB3aXRoIG9wdGltYWwgIAorICogdmFsdWVzIGR1cmluZyB0aGUgT01YX0dldFBhcmFtZXRlcigpIGNvbW1hbmQuCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgY01JTUVUeXBlICAgICAgICAgICAgIDogTUlNRSB0eXBlIG9mIGRhdGEgZm9yIHRoZSBwb3J0CisgKiAgcE5hdGl2ZVJlbmRlciAgICAgICAgIDogUGxhdGZvcm0gc3BlY2lmaWMgcmVmZXJlbmNlIGZvciBhIGRpc3BsYXkgaWYgYSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jLCBvdGhlcndpc2UgdGhpcyBmaWVsZCBpcyAwCisgKiAgbkZyYW1lV2lkdGggICAgICAgICAgIDogV2lkdGggb2YgZnJhbWUgdG8gYmUgdXNlZCBvbiBwb3J0IGlmIAorICogICAgICAgICAgICAgICAgICAgICAgICAgIHVuY29tcHJlc3NlZCBmb3JtYXQgaXMgdXNlZC4gIFVzZSAwIGZvciAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duLCBkb24ndCBjYXJlIG9yIHZhcmlhYmxlCisgKiAgbkZyYW1lSGVpZ2h0ICAgICAgICAgIDogSGVpZ2h0IG9mIGZyYW1lIHRvIGJlIHVzZWQgb24gcG9ydCBpZiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQgZm9ybWF0IGlzIHVzZWQuIFVzZSAwIGZvciAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duLCBkb24ndCBjYXJlIG9yIHZhcmlhYmxlCisgKiAgblN0cmlkZSAgICAgICAgICAgICAgIDogTnVtYmVyIG9mIGJ5dGVzIHBlciBzcGFuIG9mIGFuIGltYWdlIChpLmUuIAorICogICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdldCBmcm9tCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhbiBOIHRvIHNwYW4gTisxLCB3aGVyZSBuZWdhdGl2ZSBzdHJpZGUgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGVzIHRoZSBpbWFnZSBpcyBib3R0b20gdXAKKyAqICBuU2xpY2VIZWlnaHQgICAgICAgICAgOiBIZWlnaHQgdXNlZCB3aGVuIGVuY29kaW5nIGluIHNsaWNlcworICogIGJGbGFnRXJyb3JDb25jZWFsbWVudCA6IFR1cm5zIG9uIGVycm9yIGNvbmNlYWxtZW50IGlmIGl0IGlzIHN1cHBvcnRlZCBieSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgT01YIGNvbXBvbmVudAorICogIGVDb21wcmVzc2lvbkZvcm1hdCAgICA6IENvbXByZXNzaW9uIGZvcm1hdCB1c2VkIGluIHRoaXMgaW5zdGFuY2Ugb2YgIAorICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb25lbnQuIFdoZW4gT01YX0lNQUdFX0NvZGluZ1VudXNlZCBpcyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIGVDb2xvckZvcm1hdCBpcyB2YWxpZAorICogIGVDb2xvckZvcm1hdCAgICAgICAgICA6IERlY29tcHJlc3NlZCBmb3JtYXQgdXNlZCBieSB0aGlzIGNvbXBvbmVudAorICogIHBOYXRpdmVXaW5kb3cgICAgICAgICA6IFBsYXRmb3JtIHNwZWNpZmljIHJlZmVyZW5jZSBmb3IgYSB3aW5kb3cgb2JqZWN0IGlmIGEgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBzaW5rICwgb3RoZXJ3aXNlIHRoaXMgZmllbGQgaXMgMHgwLiAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0lNQUdFX1BPUlRERUZJTklUSU9OVFlQRSB7CisgICAgT01YX1NUUklORyBjTUlNRVR5cGU7CisgICAgT01YX05BVElWRV9ERVZJQ0VUWVBFIHBOYXRpdmVSZW5kZXI7CisgICAgT01YX1UzMiBuRnJhbWVXaWR0aDsgCisgICAgT01YX1UzMiBuRnJhbWVIZWlnaHQ7CisgICAgT01YX1MzMiBuU3RyaWRlOyAgICAgCisgICAgT01YX1UzMiBuU2xpY2VIZWlnaHQ7CisgICAgT01YX0JPT0wgYkZsYWdFcnJvckNvbmNlYWxtZW50OworICAgIE9NWF9JTUFHRV9DT0RJTkdUWVBFIGVDb21wcmVzc2lvbkZvcm1hdDsKKyAgICBPTVhfQ09MT1JfRk9STUFUVFlQRSBlQ29sb3JGb3JtYXQ7CisgICAgT01YX05BVElWRV9XSU5ET1dUWVBFIHBOYXRpdmVXaW5kb3c7Cit9IE9NWF9JTUFHRV9QT1JUREVGSU5JVElPTlRZUEU7CisKKworLyoqICAKKyAqIFBvcnQgZm9ybWF0IHBhcmFtZXRlci4gIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gZW51bWVyYXRlIHRoZSB2YXJpb3VzIAorICogZGF0YSBpbnB1dC9vdXRwdXQgZm9ybWF0IHN1cHBvcnRlZCBieSB0aGUgcG9ydC4KKyAqIAorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICAgICAgICA6IEluZGljYXRlcyB3aGljaCBwb3J0IHRvIHNldAorICogIG5JbmRleCAgICAgICAgICAgICA6IEluZGljYXRlcyB0aGUgZW51bWVyYXRpb24gaW5kZXggZm9yIHRoZSBmb3JtYXQgZnJvbSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAweDAgdG8gTi0xCisgKiAgZUNvbXByZXNzaW9uRm9ybWF0IDogQ29tcHJlc3Npb24gZm9ybWF0IHVzZWQgaW4gdGhpcyBpbnN0YW5jZSBvZiB0aGUgCisgKiAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LiBXaGVuIE9NWF9JTUFHRV9Db2RpbmdVbnVzZWQgaXMgc3BlY2lmaWVkLCAKKyAqICAgICAgICAgICAgICAgICAgICAgICBlQ29sb3JGb3JtYXQgaXMgdmFsaWQKKyAqICBlQ29sb3JGb3JtYXQgICAgICAgOiBEZWNvbXByZXNzZWQgZm9ybWF0IHVzZWQgYnkgdGhpcyBjb21wb25lbnQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0lNQUdFX1BBUkFNX1BPUlRGT1JNQVRUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1UzMiBuSW5kZXg7CisgICAgT01YX0lNQUdFX0NPRElOR1RZUEUgZUNvbXByZXNzaW9uRm9ybWF0OworICAgIE9NWF9DT0xPUl9GT1JNQVRUWVBFIGVDb2xvckZvcm1hdDsKK30gT01YX0lNQUdFX1BBUkFNX1BPUlRGT1JNQVRUWVBFOworCisKKy8qKiAKKyAqIEZsYXNoIGNvbnRyb2wgdHlwZSAKKyAqCisgKiBFTlVNUworICogIFRvcmNoIDogRmxhc2ggZm9yY2VkIGNvbnN0YW50bHkgb24KKyAqLwordHlwZWRlZiBlbnVtIE9NWF9JTUFHRV9GTEFTSENPTlRST0xUWVBFIHsKKyAgICBPTVhfSU1BR0VfRmxhc2hDb250cm9sT24gPSAwLAorICAgIE9NWF9JTUFHRV9GbGFzaENvbnRyb2xPZmYsCisgICAgT01YX0lNQUdFX0ZsYXNoQ29udHJvbEF1dG8sCisgICAgT01YX0lNQUdFX0ZsYXNoQ29udHJvbFJlZEV5ZVJlZHVjdGlvbiwKKyAgICBPTVhfSU1BR0VfRmxhc2hDb250cm9sRmlsbGluLAorICAgIE9NWF9JTUFHRV9GbGFzaENvbnRyb2xUb3JjaCwKKyAgICBPTVhfSU1BR0VfRmxhc2hDb250cm9sS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9JTUFHRV9GbGFzaENvbnRyb2xWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9JTUFHRV9GbGFzaENvbnRyb2xNYXggPSAweDdGRkZGRkZGCit9IE9NWF9JTUFHRV9GTEFTSENPTlRST0xUWVBFOworCisKKy8qKiAKKyAqIEZsYXNoIGNvbnRyb2wgY29uZmlndXJhdGlvbiAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4ICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBlRmxhc2hDb250cm9sIDogRmxhc2ggY29udHJvbCB0eXBlCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9JTUFHRV9QQVJBTV9GTEFTSENPTlRST0xUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0lNQUdFX0ZMQVNIQ09OVFJPTFRZUEUgZUZsYXNoQ29udHJvbDsKK30gT01YX0lNQUdFX1BBUkFNX0ZMQVNIQ09OVFJPTFRZUEU7CisKKworLyoqIAorICogRm9jdXMgY29udHJvbCB0eXBlIAorICovCit0eXBlZGVmIGVudW0gT01YX0lNQUdFX0ZPQ1VTQ09OVFJPTFRZUEUgeworICAgIE9NWF9JTUFHRV9Gb2N1c0NvbnRyb2xPbiA9IDAsCisgICAgT01YX0lNQUdFX0ZvY3VzQ29udHJvbE9mZiwKKyAgICBPTVhfSU1BR0VfRm9jdXNDb250cm9sQXV0bywKKyAgICBPTVhfSU1BR0VfRm9jdXNDb250cm9sQXV0b0xvY2ssCisgICAgT01YX0lNQUdFX0ZvY3VzQ29udHJvbEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfSU1BR0VfRm9jdXNDb250cm9sVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfSU1BR0VfRm9jdXNDb250cm9sTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfSU1BR0VfRk9DVVNDT05UUk9MVFlQRTsKKworIAorLyoqIAorICogRm9jdXMgY29udHJvbCBjb25maWd1cmF0aW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4ICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIGVGb2N1c0NvbnRyb2wgICA6IEZvY3VzIGNvbnRyb2wKKyAqICBuRm9jdXNTdGVwcyAgICAgOiBGb2N1cyBjYW4gdGFrZSBvbiB2YWx1ZXMgZnJvbSAwIG1tIHRvIGluZmluaXR5LiAKKyAqICAgICAgICAgICAgICAgICAgICBJbnRlcmVzdCBpcyBvbmx5IGluIG51bWJlciBvZiBzdGVwcyBvdmVyIHRoaXMgcmFuZ2UuCisgKiAgbkZvY3VzU3RlcEluZGV4IDogQ3VycmVudCBmb2N1cyBzdGVwIGluZGV4CisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9JTUFHRV9DT05GSUdfRk9DVVNDT05UUk9MVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9JTUFHRV9GT0NVU0NPTlRST0xUWVBFIGVGb2N1c0NvbnRyb2w7CisgICAgT01YX1UzMiBuRm9jdXNTdGVwczsKKyAgICBPTVhfVTMyIG5Gb2N1c1N0ZXBJbmRleDsKK30gT01YX0lNQUdFX0NPTkZJR19GT0NVU0NPTlRST0xUWVBFOworCisKKy8qKiAKKyAqIFEgRmFjdG9yIGZvciBKUEVHIGNvbXByZXNzaW9uLCB3aGljaCBjb250cm9scyB0aGUgdHJhZGVvZmYgYmV0d2VlbiBpbWFnZQorICogcXVhbGl0eSBhbmQgc2l6ZS4gIFEgRmFjdG9yIHByb3ZpZGVzIGEgbW9yZSBzaW1wbGUgbWVhbnMgb2YgY29udHJvbGxpbmcKKyAqIEpQRUcgY29tcHJlc3Npb24gcXVhbGl0eSwgd2l0aG91dCBkaXJlY3RseSBwcm9ncmFtbWluZyBRdWFudGl6YXRpb24KKyAqIHRhYmxlcyBmb3IgY2hyb21hIGFuZCBsdW1hIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgICAgICAgICAKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAKKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8gCisgKiAgblFGYWN0b3IgICA6IEpQRUcgUSBmYWN0b3IgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIDEtMTAwLiBBIGZhY3RvciBvZiAxIAorICogICAgICAgICAgICAgICBwcm9kdWNlcyB0aGUgc21hbGxlc3QsIHdvcnN0IHF1YWxpdHkgaW1hZ2VzLCBhbmQgYSBmYWN0b3IgCisgKiAgICAgICAgICAgICAgIG9mIDEwMCBwcm9kdWNlcyB0aGUgbGFyZ2VzdCwgYmVzdCBxdWFsaXR5IGltYWdlcy4gIEEgCisgKiAgICAgICAgICAgICAgIHR5cGljYWwgZGVmYXVsdCBpcyA3NSBmb3Igc21hbGwgZ29vZCBxdWFsaXR5IGltYWdlcyAgICAgICAgICAgICAgIAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfSU1BR0VfUEFSQU1fUUZBQ1RPUlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgIAorICAgIE9NWF9VMzIgblFGYWN0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfSBPTVhfSU1BR0VfUEFSQU1fUUZBQ1RPUlRZUEU7CisKKy8qKiAKKyAqIFF1YW50aXphdGlvbiB0YWJsZSB0eXBlIAorICovCisKK3R5cGVkZWYgZW51bSBPTVhfSU1BR0VfUVVBTlRJWkFUSU9OVEFCTEVUWVBFIHsKKyAgICBPTVhfSU1BR0VfUXVhbnRpemF0aW9uVGFibGVMdW1hID0gMCwKKyAgICBPTVhfSU1BR0VfUXVhbnRpemF0aW9uVGFibGVDaHJvbWEsCisgICAgT01YX0lNQUdFX1F1YW50aXphdGlvblRhYmxlQ2hyb21hQ2IsCisgICAgT01YX0lNQUdFX1F1YW50aXphdGlvblRhYmxlQ2hyb21hQ3IsCisgICAgT01YX0lNQUdFX1F1YW50aXphdGlvblRhYmxlS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9JTUFHRV9RdWFudGl6YXRpb25UYWJsZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0lNQUdFX1F1YW50aXphdGlvblRhYmxlTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfSU1BR0VfUVVBTlRJWkFUSU9OVEFCTEVUWVBFOworCisvKiogCisgKiBKUEVHIHF1YW50aXphdGlvbiB0YWJsZXMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIERDVCBjb21wcmVzc2lvbiBmb3IKKyAqIFlVViBkYXRhLCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBzcGVjaWZ5aW5nIFEgZmFjdG9yLCBwcm92aWRpbmcgZXhhY3QgCisgKiBjb250cm9sIG9mIGNvbXByZXNzaW9uIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggICAgICAgICAgICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBlUXVhbnRpemF0aW9uVGFibGUgICAgICA6IFF1YW50aXphdGlvbiB0YWJsZSB0eXBlCisgKiAgblF1YW50aXphdGlvbk1hdHJpeFs2NF0gOiBKUEVHIHF1YW50aXphdGlvbiB0YWJsZSBvZiBjb2VmZmljaWVudHMgc3RvcmVkIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gaW5jcmVhc2luZyBjb2x1bW5zIHRoZW4gYnkgcm93cyBvZiBkYXRhIChpLmUuIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93IDEsIC4uLiByb3cgOCkuIFF1YW50aXphdGlvbiB2YWx1ZXMgYXJlIGluIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJhbmdlIDAtMjU1IGFuZCBzdG9yZWQgaW4gbGluZWFyIG9yZGVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiB0aGUgY29tcG9uZW50IHdpbGwgemlnLXphZyB0aGUgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl6YXRpb24gdGFibGUgZGF0YSBpZiByZXF1aXJlZCBpbnRlcm5hbGx5KSAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0lNQUdFX1BBUkFNX1FVQU5USVpBVElPTlRBQkxFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9JTUFHRV9RVUFOVElaQVRJT05UQUJMRVRZUEUgZVF1YW50aXphdGlvblRhYmxlOworICAgIE9NWF9VOCBuUXVhbnRpemF0aW9uTWF0cml4WzY0XTsKK30gT01YX0lNQUdFX1BBUkFNX1FVQU5USVpBVElPTlRBQkxFVFlQRTsKKworCisvKiogCisgKiBIdWZmbWFuIHRhYmxlIHR5cGUsIHRoZSBzYW1lIEh1ZmZtYW4gdGFibGUgaXMgYXBwbGllZCBmb3IgY2hyb21hIGFuZCAKKyAqIGx1bWEgY29tcG9uZW50IAorICovCit0eXBlZGVmIGVudW0gT01YX0lNQUdFX0hVRkZNQU5UQUJMRVRZUEUgeworICAgIE9NWF9JTUFHRV9IdWZmbWFuVGFibGVBQyA9IDAsCisgICAgT01YX0lNQUdFX0h1ZmZtYW5UYWJsZURDLAorICAgIE9NWF9JTUFHRV9IdWZmbWFuVGFibGVBQ0x1bWEsCisgICAgT01YX0lNQUdFX0h1ZmZtYW5UYWJsZUFDQ2hyb21hLAorICAgIE9NWF9JTUFHRV9IdWZmbWFuVGFibGVEQ0x1bWEsCisgICAgT01YX0lNQUdFX0h1ZmZtYW5UYWJsZURDQ2hyb21hLAorICAgIE9NWF9JTUFHRV9IdWZmbWFuVGFibGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX0lNQUdFX0h1ZmZtYW5UYWJsZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX0lNQUdFX0h1ZmZtYW5UYWJsZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX0lNQUdFX0hVRkZNQU5UQUJMRVRZUEU7CisKKy8qKiAKKyAqIEpQRUcgSHVmZm1hbiB0YWJsZSAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICAgICAgICAgICAgICAgICAgICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBlSHVmZm1hblRhYmxlICAgICAgICAgICAgICAgICAgICA6IEh1ZmZtYW4gdGFibGUgdHlwZQorICogIG5OdW1iZXJPZkh1ZmZtYW5Db2RlT2ZMZW5ndGhbMTZdIDogMC0xNiwgbnVtYmVyIG9mIEh1ZmZtYW4gY29kZXMgb2YgZWFjaCAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIGxlbmd0aAorICogIG5IdWZmbWFuVGFibGVbMjU2XSAgICAgICAgICAgICAgIDogMC0yNTUsIHRoZSBzaXplIHVzZWQgZm9yIEFDIGFuZCBEQyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1ZmZtYW5UYWJsZSBhcmUgMTYgYW5kIDE2MiAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0lNQUdFX1BBUkFNX0hVRkZNQU5UVEFCTEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX0lNQUdFX0hVRkZNQU5UQUJMRVRZUEUgZUh1ZmZtYW5UYWJsZTsKKyAgICBPTVhfVTggbk51bWJlck9mSHVmZm1hbkNvZGVPZkxlbmd0aFsxNl07CisgICAgT01YX1U4IG5IdWZmbWFuVGFibGVbMjU2XTsKK31PTVhfSU1BR0VfUEFSQU1fSFVGRk1BTlRUQUJMRVRZUEU7CisKKy8qKiBAfSAqLworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworI2VuZGlmCisvKiBGaWxlIEVPRiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9JbmRleC5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9JbmRleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYjhkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX0luZGV4LmgKQEAgLTAsMCArMSwyNzUgQEAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weXJpZ2h0IChDKSAxOTk4LTIwMDkgUGFja2V0VmlkZW8KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucworICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4gCisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdAorICogdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiAKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gCisgKgorICovCisKKy8qKiBAZmlsZSBPTVhfSW5kZXguaCAtIE9wZW5NYXggSUwgdmVyc2lvbiAxLjEuMgorICogIFRoZSBPTVhfSW5kZXggaGVhZGVyIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGZvciBib3RoIGFwcGxpY2F0aW9ucworICogIGFuZCBjb21wb25lbnRzIC4KKyAqLworCisKKyNpZm5kZWYgT01YX0luZGV4X2gKKyNkZWZpbmUgT01YX0luZGV4X2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisKKy8qIEVhY2ggT01YIGhlYWRlciBtdXN0IGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqICBoZWFkZXIgdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQKKyAqICBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworI2luY2x1ZGUgPE9NWF9UeXBlcy5oPgorCisKKy8qKiBUaGUgT01YX0lOREVYVFlQRSBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIHNlbGVjdCBhIHN0cnVjdHVyZSB3aGVuIGVpdGhlcgorICogIGdldHRpbmcgb3Igc2V0dGluZyBwYXJhbWV0ZXJzIGFuZC9vciBjb25maWd1cmF0aW9uIGRhdGEuICBFYWNoIGVudHJ5IGluIAorICogIHRoaXMgZW51bWVyYXRpb24gbWFwcyB0byBhbiBPTVggc3BlY2lmaWVkIHN0cnVjdHVyZS4gIFdoZW4gdGhlIAorICogIE9NWF9HZXRQYXJhbWV0ZXIsIE9NWF9TZXRQYXJhbWV0ZXIsIE9NWF9HZXRDb25maWcgb3IgT01YX1NldENvbmZpZyBtZXRob2RzCisgKiAgYXJlIHVzZWQsIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHdpbGwgYWx3YXlzIGJlIGFuIGVudHJ5IGZyb20gdGhpcyBlbnVtZXJhdGlvbgorICogIGFuZCB0aGUgdGhpcmQgZW50cnkgd2lsbCBiZSB0aGUgc3RydWN0dXJlIHNob3duIGluIHRoZSBjb21tZW50cyBmb3IgdGhlIGVudHJ5LgorICogIEZvciBleGFtcGxlLCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaW5pdGlhbGl6aW5nIGEgY3JvcHBpbmcgZnVuY3Rpb24sIHRoZSAKKyAqICBPTVhfU2V0Q29uZmlnIGNvbW1hbmQgd291bGQgaGF2ZSBPTVhfSW5kZXhDb25maWdDb21tb25JbnB1dENyb3AgYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXIgCisgKiAgYW5kIHdvdWxkIHNlbmQgYSBwb2ludGVyIHRvIGFuIGluaXRpYWxpemVkIE9NWF9SRUNUVFlQRSBzdHJ1Y3R1cmUgYXMgdGhlIAorICogIHRoaXJkIHBhcmFtZXRlci4KKyAqICAKKyAqICBUaGUgZW51bWVyYXRpb24gZW50cmllcyBuYW1lZCB3aXRoIHRoZSBPTVhfQ29uZmlnIHByZWZpeCBhcmUgc2VudCB1c2luZworICogIHRoZSBPTVhfU2V0Q29uZmlnIGNvbW1hbmQgYW5kIHRoZSBlbnVtZXJhdGlvbiBlbnRyaWVzIG5hbWVkIHdpdGggdGhlCisgKiAgT01YX1BBUkFNXyBwcmVmaXggYXJlIHNlbnQgdXNpbmcgdGhlIE9NWF9TZXRQYXJhbWV0ZXIgY29tbWFuZC4KKyAqLwordHlwZWRlZiBlbnVtIE9NWF9JTkRFWFRZUEUgeworCisgICAgT01YX0luZGV4Q29tcG9uZW50U3RhcnRVbnVzZWQgPSAweDAxMDAwMDAwLAorICAgIE9NWF9JbmRleFBhcmFtUHJpb3JpdHlNZ210LCAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1BSSU9SSVRZTUdNVFRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvSW5pdCwgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QT1JUX1BBUkFNX1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUltYWdlSW5pdCwgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QT1JUX1BBUkFNX1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvSW5pdCwgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QT1JUX1BBUkFNX1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbU90aGVySW5pdCwgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QT1JUX1BBUkFNX1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbU51bUF2YWlsYWJsZVN0cmVhbXMsICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9VMzJUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BY3RpdmVTdHJlYW0sICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fVTMyVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtU3VzcGVuc2lvblBvbGljeSwgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1BBUkFNX1NVU1BFTlNJT05QT0xJQ1lUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1Db21wb25lbnRTdXNwZW5kZWQsICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fU1VTUEVOU0lPTlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDYXB0dXJpbmcsICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfQk9PTEVBTlRZUEUgKi8gCisgICAgT01YX0luZGV4Q29uZmlnQ2FwdHVyZU1vZGUsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0NBUFRVUkVNT0RFVFlQRSAqLyAKKyAgICBPTVhfSW5kZXhBdXRvUGF1c2VBZnRlckNhcHR1cmUsICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfQk9PTEVBTlRZUEUgKi8gCisgICAgT01YX0luZGV4UGFyYW1Db250ZW50VVJJLCAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fQ09OVEVOVFVSSVRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUN1c3RvbUNvbnRlbnRQaXBlLCAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9DT05URU5UUElQRVRZUEUgKi8gCisgICAgT01YX0luZGV4UGFyYW1EaXNhYmxlUmVzb3VyY2VDb25jZWFsbWVudCwgLyoqPCByZWZlcmVuY2U6IE9NWF9SRVNPVVJDRUNPTkNFQUxNRU5UVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ01ldGFkYXRhSXRlbUNvdW50LCAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19NRVRBREFUQUlURU1DT1VOVFRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb250YWluZXJOb2RlQ291bnQsICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfQ09OVEFJTkVSTk9ERUNPVU5UVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ01ldGFkYXRhSXRlbSwgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19NRVRBREFUQUlURU1UWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ291bnRlck5vZGVJRCwgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0NPTlRBSU5FUk5PREVJRFRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbU1ldGFkYXRhRmlsdGVyVHlwZSwgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9NRVRBREFUQUZJTFRFUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbU1ldGFkYXRhS2V5RmlsdGVyLCAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9NRVRBREFUQUZJTFRFUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdQcmlvcml0eU1nbXQsICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QUklPUklUWU1HTVRUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1TdGFuZGFyZENvbXBvbmVudFJvbGUsICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fQ09NUE9ORU5UUk9MRVRZUEUgKi8KKworICAgIE9NWF9JbmRleFBvcnRTdGFydFVudXNlZCA9IDB4MDIwMDAwMDAsCisgICAgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFICovCisgICAgT01YX0luZGV4UGFyYW1Db21wQnVmZmVyU3VwcGxpZXIsICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fQlVGRkVSU1VQUExJRVJUWVBFICovIAorICAgIE9NWF9JbmRleFJlc2VydmVkU3RhcnRVbnVzZWQgPSAweDAzMDAwMDAwLAorCisgICAgLyogQXVkaW8gcGFyYW1ldGVycyBhbmQgY29uZmlndXJhdGlvbnMgKi8KKyAgICBPTVhfSW5kZXhBdWRpb1N0YXJ0VW51c2VkID0gMHgwNDAwMDAwMCwKKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvUG9ydEZvcm1hdCwgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9QT1JURk9STUFUVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9QY20sICAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX1BDTU1PREVUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0FhYywgICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fQUFDUFJPRklMRVRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvUmEsICAgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9SQVRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvTXAzLCAgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9NUDNUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0FkcGNtLCAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fQURQQ01UWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0c3MjMsICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fRzcyM1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvRzcyOSwgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9HNzI5VFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9BbXIsICAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX0FNUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvV21hLCAgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9XTUFUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb1NiYywgICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fU0JDVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9NaWRpLCAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX01JRElUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0dzbV9GUiwgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fR1NNRlJUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb01pZGlMb2FkVXNlclNvdW5kLCAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fTUlESUxPQURVU0VSU09VTkRUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0c3MjYsICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fRzcyNlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvR3NtX0VGUiwgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9HU01FRlJUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb0dzbV9IUiwgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fR1NNSFJUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb1BkY19GUiwgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fUERDRlJUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb1BkY19FRlIsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fUERDRUZSVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9QZGNfSFIsICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX1BEQ0hSVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9UZG1hX0ZSLCAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX1RETUFGUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvVGRtYV9FRlIsICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9URE1BRUZSVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9RY2VscDgsICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX1FDRUxQOFRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUF1ZGlvUWNlbHAxMywgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19QQVJBTV9RQ0VMUDEzVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9FdnJjLCAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX0VWUkNUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1BdWRpb1NtdiwgICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fUEFSQU1fU01WVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtQXVkaW9Wb3JiaXMsICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX1BBUkFNX1ZPUkJJU1RZUEUgKi8KKworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvTWlkaUltbWVkaWF0ZUV2ZW50LCAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19NSURJSU1NRURJQVRFRVZFTlRUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQXVkaW9NaWRpQ29udHJvbCwgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX01JRElDT05UUk9MVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvTWlkaVNvdW5kQmFua1Byb2dyYW0sIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX01JRElTT1VOREJBTktQUk9HUkFNVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvTWlkaVN0YXR1cywgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19NSURJU1RBVFVTVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvTWlkaU1ldGFFdmVudCwgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19NSURJTUVUQUVWRU5UVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvTWlkaU1ldGFFdmVudERhdGEsICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19NSURJTUVUQUVWRU5UREFUQVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb1ZvbHVtZSwgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfVk9MVU1FVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvQmFsYW5jZSwgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19CQUxBTkNFVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvQ2hhbm5lbE11dGUsICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19DSEFOTkVMTVVURVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb011dGUsICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfTVVURVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb0xvdWRuZXNzLCAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfTE9VRE5FU1NUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQXVkaW9FY2hvQ2FuY2VsYXRpb24sICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX0VDSE9DQU5DRUxBVElPTlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb05vaXNlUmVkdWN0aW9uLCAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfTk9JU0VSRURVQ1RJT05UWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQXVkaW9CYXNzLCAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX0JBU1NUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQXVkaW9UcmVibGUsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX1RSRUJMRVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb1N0ZXJlb1dpZGVuaW5nLCAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfU1RFUkVPV0lERU5JTkdUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQXVkaW9DaG9ydXMsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQVVESU9fQ09ORklHX0NIT1JVU1RZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdBdWRpb0VxdWFsaXplciwgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9BVURJT19DT05GSUdfRVFVQUxJWkVSVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvUmV2ZXJiZXJhdGlvbiwgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19SRVZFUkJFUkFUSU9OVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0F1ZGlvQ2hhbm5lbFZvbHVtZSwgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0FVRElPX0NPTkZJR19DSEFOTkVMVk9MVU1FVFlQRSAqLworCisgICAgLyogSW1hZ2Ugc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgY29uZmlndXJhdGlvbnMgKi8KKyAgICBPTVhfSW5kZXhJbWFnZVN0YXJ0VW51c2VkID0gMHgwNTAwMDAwMCwKKyAgICBPTVhfSW5kZXhQYXJhbUltYWdlUG9ydEZvcm1hdCwgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9JTUFHRV9QQVJBTV9QT1JURk9STUFUVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtRmxhc2hDb250cm9sLCAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0lNQUdFX1BBUkFNX0ZMQVNIQ09OVFJPTFRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdGb2N1c0NvbnRyb2wsICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9JTUFHRV9DT05GSUdfRk9DVVNDT05UUk9MVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtUUZhY3RvciwgICAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0lNQUdFX1BBUkFNX1FGQUNUT1JUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1RdWFudGl6YXRpb25UYWJsZSwgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfSU1BR0VfUEFSQU1fUVVBTlRJWkFUSU9OVEFCTEVUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1IdWZmbWFuVGFibGUsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfSU1BR0VfUEFSQU1fSFVGRk1BTlRUQUJMRVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdGbGFzaENvbnRyb2wsICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9JTUFHRV9QQVJBTV9GTEFTSENPTlRST0xUWVBFICovCisKKyAgICAvKiBWaWRlbyBzcGVjaWZpYyBwYXJhbWV0ZXJzIGFuZCBjb25maWd1cmF0aW9ucyAqLworICAgIE9NWF9JbmRleFZpZGVvU3RhcnRVbnVzZWQgPSAweDA2MDAwMDAwLAorICAgIE9NWF9JbmRleFBhcmFtVmlkZW9Qb3J0Rm9ybWF0LCAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX1BPUlRGT1JNQVRUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1WaWRlb1F1YW50aXphdGlvbiwgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fUEFSQU1fUVVBTlRJWkFUSU9OVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9GYXN0VXBkYXRlLCAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX1ZJREVPRkFTVFVQREFURVRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvQml0cmF0ZSwgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9WSURFT19QQVJBTV9CSVRSQVRFVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9Nb3Rpb25WZWN0b3IsICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX01PVElPTlZFQ1RPUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvSW50cmFSZWZyZXNoLCAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9WSURFT19QQVJBTV9JTlRSQVJFRlJFU0hUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1WaWRlb0Vycm9yQ29ycmVjdGlvbiwgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fUEFSQU1fRVJST1JDT1JSRUNUSU9OVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9WQlNNQywgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX1ZCU01DVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9NcGVnMiwgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX01QRUcyVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9NcGVnNCwgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX01QRUc0VFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9XbXYsICAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX1dNVlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvUnYsICAgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9WSURFT19QQVJBTV9SVlRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvQXZjLCAgICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9WSURFT19QQVJBTV9BVkNUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1WaWRlb0gyNjMsICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fUEFSQU1fSDI2M1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvUHJvZmlsZUxldmVsUXVlcnlTdXBwb3J0ZWQsIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fUEFSQU1fUFJPRklMRUxFVkVMVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9Qcm9maWxlTGV2ZWxDdXJyZW50LCAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX1BST0ZJTEVMRVZFTFRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdWaWRlb0JpdHJhdGUsICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9WSURFT19DT05GSUdfQklUUkFURVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdWaWRlb0ZyYW1lcmF0ZSwgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfRlJBTUVSQVRFVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ1ZpZGVvSW50cmFWT1BSZWZyZXNoLCAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19JTlRSQVJFRlJFU0hWT1BUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnVmlkZW9JbnRyYU1CUmVmcmVzaCwgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX01BQ1JPQkxPQ0tFUlJPUk1BUFRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdWaWRlb01CRXJyb3JSZXBvcnRpbmcsICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfTUJFUlJPUlJFUE9SVElOR1RZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbVZpZGVvTWFjcm9ibG9ja3NQZXJGcmFtZSwgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9NQUNST0JMT0NLU1RZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdWaWRlb01hY3JvQmxvY2tFcnJvck1hcCwgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfTUFDUk9CTE9DS0VSUk9STUFQVFlQRSAqLworICAgIE9NWF9JbmRleFBhcmFtVmlkZW9TbGljZUZNTywgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1ZJREVPX1BBUkFNX0FWQ1NMSUNFRk1PICovCisgICAgT01YX0luZGV4Q29uZmlnVmlkZW9BVkNJbnRyYVBlcmlvZCwgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fQ09ORklHX0FWQ0lOVFJBUEVSSU9EICovCisgICAgT01YX0luZGV4Q29uZmlnVmlkZW9OYWxTaXplLCAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVklERU9fQ09ORklHX05BTFNJWkUgKi8KKworICAgIC8qIEltYWdlICYgVmlkZW8gY29tbW9uIENvbmZpZ3VyYXRpb25zICovCisgICAgT01YX0luZGV4Q29tbW9uU3RhcnRVbnVzZWQgPSAweDA3MDAwMDAwLAorICAgIE9NWF9JbmRleFBhcmFtQ29tbW9uRGVibG9ja2luZywgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1BBUkFNX0RFQkxPQ0tJTkdUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1Db21tb25TZW5zb3JNb2RlLCAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfUEFSQU1fU0VOU09STU9ERVRZUEUgKi8KKyAgICBPTVhfSW5kZXhQYXJhbUNvbW1vbkludGVybGVhdmUsICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9JTlRFUkxFQVZFVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkNvbG9yRm9ybWF0Q29udmVyc2lvbiwgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfQ09MT1JDT05WRVJTSU9OVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vblNjYWxlLCAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19TQ0FMRUZBQ1RPUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25JbWFnZUZpbHRlciwgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfSU1BR0VGSUxURVJUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uQ29sb3JFbmhhbmNlbWVudCwgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0NPTE9SRU5IQU5DRU1FTlRUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uQ29sb3JLZXksICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0NPTE9SS0VZVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkNvbG9yQmxlbmQsICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19DT0xPUkJMRU5EVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkZyYW1lU3RhYmlsaXNhdGlvbiwvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19GUkFNRVNUQUJUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uUm90YXRlLCAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX1JPVEFUSU9OVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbk1pcnJvciwgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19NSVJST1JUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uT3V0cHV0UG9zaXRpb24sICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX1BPSU5UVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbklucHV0Q3JvcCwgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19SRUNUVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbk91dHB1dENyb3AsICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19SRUNUVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkRpZ2l0YWxab29tLCAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19TQ0FMRUZBQ1RPUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25PcHRpY2FsWm9vbSwgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfU0NBTEVGQUNUT1JUWVBFKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25XaGl0ZUJhbGFuY2UsICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfV0hJVEVCQUxDT05UUk9MVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkV4cG9zdXJlLCAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19FWFBPU1VSRUNPTlRST0xUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uQ29udHJhc3QsICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0NPTlRSQVNUVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkJyaWdodG5lc3MsICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19CUklHSFRORVNTVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkJhY2tsaWdodCwgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19CQUNLTElHSFRUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uR2FtbWEsICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0dBTU1BVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vblNhdHVyYXRpb24sICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19TQVRVUkFUSU9OVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkxpZ2h0bmVzcywgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19MSUdIVE5FU1NUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uRXhjbHVzaW9uUmVjdCwgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX1JFQ1RUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnQ29tbW9uRGl0aGVyaW5nLCAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfQ09ORklHX0RJVEhFUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25QbGFuZUJsZW5kLCAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfUExBTkVCTEVORFRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25FeHBvc3VyZVZhbHVlLCAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfRVhQT1NVUkVWQUxVRVRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25PdXRwdXRTaXplLCAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9GUkFNRVNJWkVUWVBFICovCisgICAgT01YX0luZGV4UGFyYW1Db21tb25FeHRyYVF1YW50RGF0YSwgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfT1RIRVJfRVhUUkFEQVRBVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ0NvbW1vbkZvY3VzUmVnaW9uLCAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX0NPTkZJR19GT0NVU1JFR0lPTlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25Gb2N1c1N0YXR1cywgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9QQVJBTV9GT0NVU1NUQVRVU1RZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdDb21tb25UcmFuc2l0aW9uRWZmZWN0LCAgLyoqPCByZWZlcmVuY2U6IE9NWF9DT05GSUdfVFJBTlNJVElPTkVGRkVDVFRZUEUgKi8KKworICAgIC8qIFJlc2VydmVkIENvbmZpZ3VyYXRpb24gcmFuZ2UgKi8KKyAgICBPTVhfSW5kZXhPdGhlclN0YXJ0VW51c2VkID0gMHgwODAwMDAwMCwKKyAgICBPTVhfSW5kZXhQYXJhbU90aGVyUG9ydEZvcm1hdCwgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9PVEhFUl9QQVJBTV9QT1JURk9STUFUVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ090aGVyUG93ZXIsICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX09USEVSX0NPTkZJR19QT1dFUlRZUEUgKi8KKyAgICBPTVhfSW5kZXhDb25maWdPdGhlclN0YXRzLCAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2U6IE9NWF9PVEhFUl9DT05GSUdfU1RBVFNUWVBFICovCisKKworICAgIC8qIFJlc2VydmVkIFRpbWUgcmFuZ2UgKi8KKyAgICBPTVhfSW5kZXhUaW1lU3RhcnRVbnVzZWQgPSAweDA5MDAwMDAwLAorICAgIE9NWF9JbmRleENvbmZpZ1RpbWVTY2FsZSwgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX1NDQUxFVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ1RpbWVDbG9ja1N0YXRlLCAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX0NMT0NLU1RBVEVUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnVGltZUFjdGl2ZVJlZkNsb2NrLCAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVElNRV9DT05GSUdfQUNUSVZFUkVGQ0xPQ0tUWVBFICovCisgICAgT01YX0luZGV4Q29uZmlnVGltZUN1cnJlbnRNZWRpYVRpbWUsICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVElNRV9DT05GSUdfVElNRVNUQU1QVFlQRSAocmVhZCBvbmx5KSAqLworICAgIE9NWF9JbmRleENvbmZpZ1RpbWVDdXJyZW50V2FsbFRpbWUsICAgICAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX1RJTUVTVEFNUFRZUEUgKHJlYWQgb25seSkgKi8KKyAgICBPTVhfSW5kZXhDb25maWdUaW1lQ3VycmVudEF1ZGlvUmVmZXJlbmNlLCAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX1RJTUVTVEFNUFRZUEUgKHdyaXRlIG9ubHkpICovCisgICAgT01YX0luZGV4Q29uZmlnVGltZUN1cnJlbnRWaWRlb1JlZmVyZW5jZSwgLyoqPCByZWZlcmVuY2U6IE9NWF9USU1FX0NPTkZJR19USU1FU1RBTVBUWVBFICh3cml0ZSBvbmx5KSAqLworICAgIE9NWF9JbmRleENvbmZpZ1RpbWVNZWRpYVRpbWVSZXF1ZXN0LCAgICAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX01FRElBVElNRVJFUVVFU1RUWVBFICh3cml0ZSBvbmx5KSAqLworICAgIE9NWF9JbmRleENvbmZpZ1RpbWVDbGllbnRTdGFydFRpbWUsICAgICAvKio8cmVmZXJlbmNlOiAgT01YX1RJTUVfQ09ORklHX1RJTUVTVEFNUFRZUEUgKHdyaXRlIG9ubHkpICovCisgICAgT01YX0luZGV4Q29uZmlnVGltZVBvc2l0aW9uLCAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlOiBPTVhfVElNRV9DT05GSUdfVElNRVNUQU1QVFlQRSAqLworICAgIE9NWF9JbmRleENvbmZpZ1RpbWVTZWVrTW9kZSwgICAgICAgICAgICAvKio8IHJlZmVyZW5jZTogT01YX1RJTUVfQ09ORklHX1NFRUtNT0RFVFlQRSAqLworCisKKyAgICBPTVhfSW5kZXhLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgLyogVmVuZG9yIHNwZWNpZmljIGFyZWEgKi8KKyAgICBPTVhfSW5kZXhWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsCisgICAgLyogVmVuZG9yIHNwZWNpZmljIHN0cnVjdHVyZXMgc2hvdWxkIGJlIGluIHRoZSByYW5nZSBvZiAweDdGMDAwMDAwIAorICAgICAgIHRvIDB4N0ZGRkZGRkUuICBUaGlzIHJhbmdlIGlzIG5vdCBicm9rZW4gb3V0IGJ5IHZlbmRvciwgc28KKyAgICAgICBwcml2YXRlIGluZGV4ZXMgYXJlIG5vdCBndWFyYW50ZWVkIHVuaXF1ZSBhbmQgdGhlcmVmb3JlIHNob3VsZAorICAgICAgIG9ubHkgYmUgc2VudCB0byB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50LiAqLworCisgICAgT01YX0luZGV4TWF4ID0gMHg3RkZGRkZGRgorCit9IE9NWF9JTkRFWFRZUEU7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKyNlbmRpZgorLyogRmlsZSBFT0YgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfT3RoZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfT3RoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmJjZTgzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9PdGhlci5oCkBAIC0wLDAgKzEsMzU0IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvcHlyaWdodCAoQykgMTk5OC0yMDA5IFBhY2tldFZpZGVvCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyCisgKiBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKKyAqIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCBUaGUgS2hyb25vcyBHcm91cCBJbmMuIAorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QKKyAqIHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIAorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuIAorICoKKyAqLworCisvKiogQGZpbGUgT01YX090aGVyLmggLSBPcGVuTWF4IElMIHZlcnNpb24gMS4xLjIKKyAqICBUaGUgc3RydWN0dXJlcyBuZWVkZWQgYnkgT3RoZXIgY29tcG9uZW50cyB0byBleGNoYW5nZQorICogIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSB3aXRoIHRoZSBjb21wb25lbnRzLgorICovCisKKyNpZm5kZWYgT01YX090aGVyX2gKKyNkZWZpbmUgT01YX090aGVyX2gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisKKy8qIEVhY2ggT01YIGhlYWRlciBtdXN0IGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqICBoZWFkZXIgdG8gY29tcGlsZSB3aXRob3V0IGVycm9ycy4gIFRoZSBpbmNsdWRlcyBiZWxvdyBhcmUgcmVxdWlyZWQKKyAqICBmb3IgdGhpcyBoZWFkZXIgZmlsZSB0byBjb21waWxlIHN1Y2Nlc3NmdWxseSAKKyAqLworCisjaW5jbHVkZSA8T01YX0NvcmUuaD4KKworCisvKiogCisgKiBFbnVtZXJhdGlvbiBvZiBwb3NzaWJsZSBkYXRhIHR5cGVzIHdoaWNoIG1hdGNoIHRvIG11bHRpcGxlIGRvbWFpbnMgb3Igbm8KKyAqIGRvbWFpbiBhdCBhbGwuICBGb3IgdHlwZXMgd2hpY2ggYXJlIHZlbmRvciBzcGVjaWZpYywgYSB2YWx1ZSBhYm92ZQorICogT01YX09USEVSX1ZFTkRPUlRTVEFSVCBzaG91bGQgYmUgdXNlZC4KKyAqLwordHlwZWRlZiBlbnVtIE9NWF9PVEhFUl9GT1JNQVRUWVBFIHsKKyAgICBPTVhfT1RIRVJfRm9ybWF0VGltZSA9IDAsIC8qKjwgVHJhbnNtaXNzaW9uIG9mIHZhcmlvdXMgdGltZXN0YW1wcywgZWxhcHNlZCB0aW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBkZWx0YXMsIGV0YyAqLworICAgIE9NWF9PVEhFUl9Gb3JtYXRQb3dlciwgICAgLyoqPCBQZXJoYXBzIHVzZWQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBwb3dlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCwgc2V0dGluZyBjbG9ja3M/ICovCisgICAgT01YX09USEVSX0Zvcm1hdFN0YXRzLCAgICAvKio8IENvdWxkIGJlIHRoaW5ncyBzdWNoIGFzIGZyYW1lIHJhdGUsIGZyYW1lcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcHBlZCwgZXRjICovCisgICAgT01YX09USEVSX0Zvcm1hdEJpbmFyeSwgICAvKio8IEFyYml0cmFyeSBiaW5hcnkgZGF0YSAqLworICAgIE9NWF9PVEhFUl9Gb3JtYXRWZW5kb3JSZXNlcnZlZCA9IDEwMDAsIC8qKjwgU3RhcnRpbmcgdmFsdWUgZm9yIHZlbmRvciBzcGVjaWZpYyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMgKi8KKworICAgIE9NWF9PVEhFUl9Gb3JtYXRLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX09USEVSX0Zvcm1hdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX09USEVSX0Zvcm1hdE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX09USEVSX0ZPUk1BVFRZUEU7CisKKy8qKiAKKyAqIEVudW1lcmF0aW9uIG9mIHNlZWsgbW9kZXMuCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVElNRV9TRUVLTU9ERVRZUEUgeworICAgIE9NWF9USU1FX1NlZWtNb2RlRmFzdCA9IDAsIC8qKjwgUHJlZmVyIHNlZWtpbmcgdG8gYW4gYXBwcm94aW1hdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9mIHRoZSByZXF1ZXN0ZWQgc2VlayBwb3NpdGlvbiBvdmVyICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGFjdHVhbCBzZWVrIHBvc2l0aW9uIGlmIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVzdWx0cyBpbiBhIGZhc3RlciBzZWVrLiAqLworICAgIE9NWF9USU1FX1NlZWtNb2RlQWNjdXJhdGUsIC8qKjwgUHJlZmVyIHNlZWtpbmcgdG8gdGhlIGFjdHVhbCBzZWVrIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvc2l0aW9uIG92ZXIgYW4gYXBwcm94aW1hdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9mIHRoZSByZXF1ZXN0ZWQgc2VlayBwb3NpdGlvbiBldmVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWYgaXQgcmVzdWx0cyBpbiBhIHNsb3dlciBzZWVrLiAqLworICAgIE9NWF9USU1FX1NlZWtNb2RlS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9USU1FX1NlZWtNb2RlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfVElNRV9TZWVrTW9kZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1RJTUVfU0VFS01PREVUWVBFOworCisvKiBTdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBzZWVrbW9kZSBvZiB0aGUgY29tcG9uZW50ICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVElNRV9DT05GSUdfU0VFS01PREVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVElNRV9TRUVLTU9ERVRZUEUgZVR5cGU7ICAgIC8qKjwgVGhlIHNlZWsgbW9kZSAqLworfSBPTVhfVElNRV9DT05GSUdfU0VFS01PREVUWVBFOworCisvKiogU3RydWN0dXJlIHJlcHJlc2VudGluZyBhIHRpbWUgc3RhbXAgdXNlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlncyAKKyAqIG9uIHRoZSBDbG9jayBDb21wb25lbnQgKENDKToKKyAqIAorICogT01YX0luZGV4Q29uZmlnVGltZUN1cnJlbnRXYWxsVGltZTogcXVlcnkgb2YgdGhlIENDknMgY3VycmVudCB3YWxsICAKKyAqICAgICB0aW1lCisgKiBPTVhfSW5kZXhDb25maWdUaW1lQ3VycmVudE1lZGlhVGltZTogcXVlcnkgb2YgdGhlIENDknMgY3VycmVudCBtZWRpYQorICogICAgIHRpbWUKKyAqIE9NWF9JbmRleENvbmZpZ1RpbWVDdXJyZW50QXVkaW9SZWZlcmVuY2UgYW5kICAKKyAqIE9NWF9JbmRleENvbmZpZ1RpbWVDdXJyZW50VmlkZW9SZWZlcmVuY2U6IGF1ZGlvL3ZpZGVvIHJlZmVyZW5jZSAKKyAqICAgICBjbG9jayBzZW5kaW5nIFNDIGl0cyByZWZlcmVuY2UgdGltZQorICogT01YX0luZGV4Q29uZmlnVGltZUNsaWVudFN0YXJ0VGltZTogYSBDbG9jayBDb21wb25lbnQgY2xpZW50IHNlbmRzIAorICogICAgIHRoaXMgc3RydWN0dXJlIHRvIHRoZSBDbG9jayBDb21wb25lbnQgdmlhIGEgU2V0Q29uZmlnIG9uIGl0cyAKKyAqICAgICBjbGllbnQgcG9ydCB3aGVuIGl0IHJlY2VpdmVzIGEgYnVmZmVyIHdpdGgKKyAqICAgICBPTVhfQlVGRkVSRkxBR19TVEFSVFRJTUUgc2V0LiBJdCBtdXN0IHVzZSB0aGUgdGltZXN0YW1wCisgKiAgICAgc3BlY2lmaWVkIGJ5IHRoYXQgYnVmZmVyIGZvciBuU3RhcnRUaW1lc3RhbXAuIAorICoKKyAqIEl0knMgYWxzbyB1c2VkIHdpdGggdGhlIGZvbGxvd2luZyBjb25maWcgb24gY29tcG9uZW50cyBpbiBnZW5lcmFsOgorICoKKyAqIE9NWF9JbmRleENvbmZpZ1RpbWVQb3NpdGlvbjogSUwgY2xpZW50IHF1ZXJ5aW5nIGNvbXBvbmVudCBwb3NpdGlvbiAKKyAqIChHZXRDb25maWcpIG9yIGNvbW1hbmRpbmcgYSBjb21wb25lbnQgdG8gc2VlayB0byB0aGUgZ2l2ZW4gbG9jYXRpb24KKyAqIChTZXRDb25maWcpCisgKi8JCit0eXBlZGVmIHN0cnVjdCBPTVhfVElNRV9DT05GSUdfVElNRVNUQU1QVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgLyoqPCBwb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0byAqLworICAgIE9NWF9USUNLUyBuVGltZXN0YW1wOyAgCSAgICAgLyoqPCB0aW1lc3RhbXAgLiovIAorfSBPTVhfVElNRV9DT05GSUdfVElNRVNUQU1QVFlQRTsgIAorCisvKiogRW51bWVyYXRpb24gb2YgcG9zc2libGUgcmVmZXJlbmNlIGNsb2NrcyB0byB0aGUgbWVkaWEgdGltZS4gKi8KK3R5cGVkZWYgZW51bSBPTVhfVElNRV9VUERBVEVUWVBFIHsKKyAgICAgIE9NWF9USU1FX1VwZGF0ZVJlcXVlc3RGdWxmaWxsbWVudCwgICAgLyoqPCBVcGRhdGUgaXMgdGhlIGZ1bGZpbGxtZW50IG9mIGEgbWVkaWEgdGltZSByZXF1ZXN0LiAqLworICAgICAgT01YX1RJTUVfVXBkYXRlU2NhbGVDaGFuZ2VkLAkgICAgICAgIC8qKjwgVXBkYXRlIHdhcyBnZW5lcmF0ZWQgYmVjYXVzZSB0aGUgc2NhbGUgY2hhZ25lZC4gKi8KKyAgICAgIE9NWF9USU1FX1VwZGF0ZUNsb2NrU3RhdGVDaGFuZ2VkLCAgICAgLyoqPCBVcGRhdGUgd2FzIGdlbmVyYXRlZCBiZWNhdXNlIHRoZSBjbG9jayBzdGF0ZSBjaGFuZ2VkLiAqLworICAgICAgT01YX1RJTUVfVXBkYXRlS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgICAgT01YX1RJTUVfVXBkYXRlVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICAgIE9NWF9USU1FX1VwZGF0ZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1RJTUVfVVBEQVRFVFlQRTsKKworLyoqIEVudW1lcmF0aW9uIG9mIHBvc3NpYmxlIHJlZmVyZW5jZSBjbG9ja3MgdG8gdGhlIG1lZGlhIHRpbWUuICovCit0eXBlZGVmIGVudW0gT01YX1RJTUVfUkVGQ0xPQ0tUWVBFIHsKKyAgICAgIE9NWF9USU1FX1JlZkNsb2NrTm9uZSwgICAgLyoqPCBVc2Ugbm8gcmVmZXJlbmNlcy4gKi8KKyAgICAgIE9NWF9USU1FX1JlZkNsb2NrQXVkaW8sCS8qKjwgVXNlIHJlZmVyZW5jZXMgc2VudCB0aHJvdWdoIE9NWF9JbmRleENvbmZpZ1RpbWVDdXJyZW50QXVkaW9SZWZlcmVuY2UgKi8KKyAgICAgIE9NWF9USU1FX1JlZkNsb2NrVmlkZW8sICAgLyoqPCBVc2UgcmVmZXJlbmNlcyBzZW50IHRocm91Z2ggT01YX0luZGV4Q29uZmlnVGltZUN1cnJlbnRWaWRlb1JlZmVyZW5jZSAqLworICAgICAgT01YX1RJTUVfUmVmQ2xvY2tLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgICBPTVhfVElNRV9SZWZDbG9ja1ZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgICBPTVhfVElNRV9SZWZDbG9ja01heCA9IDB4N0ZGRkZGRkYKK30gT01YX1RJTUVfUkVGQ0xPQ0tUWVBFOworCisvKiogRW51bWVyYXRpb24gb2YgY2xvY2sgc3RhdGVzLiAqLwordHlwZWRlZiBlbnVtIE9NWF9USU1FX0NMT0NLU1RBVEUgeworICAgICAgT01YX1RJTUVfQ2xvY2tTdGF0ZVJ1bm5pbmcsICAgICAgICAgICAgIC8qKjwgQ2xvY2sgcnVubmluZy4gKi8KKyAgICAgIE9NWF9USU1FX0Nsb2NrU3RhdGVXYWl0aW5nRm9yU3RhcnRUaW1lLCAvKio8IENsb2NrIHdhaXRpbmcgdW50aWwgdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJlc2NyaWJlZCBjbGllbnRzIGVtaXQgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHN0YXJ0IHRpbWUuICovCisgICAgICBPTVhfVElNRV9DbG9ja1N0YXRlU3RvcHBlZCwgICAgICAgICAgICAgLyoqPCBDbG9jayBzdG9wcGVkLiAqLworICAgICAgT01YX1RJTUVfQ2xvY2tTdGF0ZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICAgIE9NWF9USU1FX0Nsb2NrU3RhdGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgICAgT01YX1RJTUVfQ2xvY2tTdGF0ZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1RJTUVfQ0xPQ0tTVEFURTsKKworLyoqIFN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBtZWRpYSB0aW1lIHJlcXVlc3QgdG8gdGhlIGNsb2NrIGNvbXBvbmVudC4KKyAqCisgKiAgQSBjbGllbnQgY29tcG9uZW50IHNlbmRzIHRoaXMgc3RydWN0dXJlIHRvIHRoZSBDbG9jayBDb21wb25lbnQgdmlhIGEgU2V0Q29uZmlnCisgKiAgb24gaXRzIGNsaWVudCBwb3J0IHRvIHNwZWNpZnkgYSBtZWRpYSB0aW1lc3RhbXAgdGhlIENsb2NrIENvbXBvbmVudAorICogIHNob3VsZCBlbWl0LiAgVGhlIENsb2NrIENvbXBvbmVudCBzaG91bGQgZnVsZmlsbCB0aGUgcmVxdWVzdCBieSBzZW5kaW5nIGEKKyAqICBPTVhfVElNRV9NRURJQVRJTUVUWVBFIHdoZW4gaXRzIG1lZGlhIGNsb2NrIG1hdGNoZXMgdGhlIHJlcXVlc3RlZCAKKyAqICB0aW1lc3RhbXAuCisgKgorICogIFRoZSBjbGllbnQgbWF5IHJlcXVpcmUgYSBtZWRpYSB0aW1lIHJlcXVlc3QgYmUgZnVsZmlsbGVkIHNsaWdodGx5CisgKiAgZWFybGllciB0aGFuIHRoZSBtZWRpYSB0aW1lIHNwZWNpZmllZC4gSW4gdGhpcyBjYXNlIHRoZSBjbGllbnQgc3BlY2lmaWVzIAorICogIGFuIG9mZnNldCB3aGljaCBpcyBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHdhbGwgdGltZSBjb3JyZXNwb25kaW5nIAorICogIHRvIHRoZSByZXF1ZXN0ZWQgbWVkaWEgdGltZSBhbmQgdGhlIHdhbGwgdGltZSB3aGVuIGl0IHdpbGwgYmUgCisgKiAgZnVsZmlsbGVkLiAKKyAqCisgKiAgQSBjbGllbnQgY29tcG9uZW50IG1heSB1c2VzIHRoZXNlIHJlcXVlc3RzIGFuZCB0aGUgT01YX1RJTUVfTUVESUFUSU1FVFlQRSB0bworICogIHRpbWUgZXZlbnRzIGFjY29yZGluZyB0byB0aW1lc3RhbXBzLiBJZiBhIGNsaWVudCBtdXN0IHBlcmZvcm0gYW4gb3BlcmF0aW9uIE8gYXQKKyAqICBhIHRpbWUgVCAoZS5nLiBkZWxpdmVyIGEgdmlkZW8gZnJhbWUgYXQgaXRzIGNvcnJlc3BvbmRpbmcgdGltZXN0YW1wKSwgaXQgbWFrZXMgYSAKKyAqICBtZWRpYSB0aW1lIHJlcXVlc3QgYXQgVCAocGVyaGFwcyBzcGVjaWZ5aW5nIGFuIG9mZnNldCB0byBlbnN1cmUgdGhlIHJlcXVlc3QgZnVsZmlsbG1lbnQKKyAqICBpcyBhIGxpdHRsZSBlYXJseSkuIFdoZW4gdGhlIGNsb2NrIGNvbXBvbmVudCBwYXNzZXMgdGhlIHJlc3VsdGluZyBPTVhfVElNRV9NRURJQVRJTUVUWVBFCisgKiAgc3RydWN0dXJlIGJhY2sgdG8gdGhlIGNsaWVudCBjb21wb25lbnQsIHRoZSBjbGllbnQgbWF5IHBlcmZvcm0gb3BlcmF0aW9uIE8gKHBlcmhhcHMgaGF2aW5nCisgKiAgdG8gd2FpdCBhIHNsaWdodCBhbW91bnQgbW9yZSB0aW1lIGl0c2VsZiBhcyBzcGVjaWZpZWQgYnkgdGhlIHJldHVybiB2YWx1ZXMpLgorICovCisKK3R5cGVkZWYgc3RydWN0IE9NWF9USU1FX0NPTkZJR19NRURJQVRJTUVSRVFVRVNUVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzICovCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgIC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAvKio8IHBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvICovCisgICAgT01YX1BUUiBwQ2xpZW50UHJpdmF0ZTsgICAgIC8qKjwgQ2xpZW50IHByaXZhdGUgZGF0YSB0byBkaXNhYmlndWF0ZSB0aGlzIG1lZGlhIHRpbWUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgZnJvbSBvdGhlcnMgKGUuZy4gdGhlIG51bWJlciBvZiB0aGUgZnJhbWUgdG8gZGVsaXZlcikuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIER1cGxpY2F0ZWQgaW4gdGhlIG1lZGlhIHRpbWUgc3RydWN0dXJlIHRoYXQgZnVsZmlsbHMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdGhpcyByZXF1ZXN0LiBBIHZhbHVlIG9mIHplcm8gaXMgcmVzZXJ2ZWQgZm9yIHRpbWUgc2NhbGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdXBkYXRlcy4gKi8KKyAgICBPTVhfVElDS1Mgbk1lZGlhVGltZXN0YW1wOyAgLyoqPCBNZWRpYSB0aW1lc3RhbXAgcmVxdWVzdGVkLiovIAorICAgIE9NWF9USUNLUyBuT2Zmc2V0OyAgICAgICAgICAvKio8IEFtb3VudCBvZiB3YWxsIGNsb2NrIHRpbWUgYnkgd2hpY2ggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHJlcXVlc3Qgc2hvdWxkIGJlIGZ1bGZpbGxlZCBlYXJseSAqLworfSBPTVhfVElNRV9DT05GSUdfTUVESUFUSU1FUkVRVUVTVFRZUEU7CisKKy8qKjwgU3RydWN0dXJlIHNlbnQgZnJvbSB0aGUgY2xvY2sgY29tcG9uZW50IGNsaWVudCBlaXRoZXIgd2hlbiBmdWxmaWxsaW5nIAorICogICBhIG1lZGlhIHRpbWUgcmVxdWVzdCBvciB3aGVuIHRoZSB0aW1lIHNjYWxlIGhhcyBjaGFuZ2VkLiAKKyAqCisgKiAgIEluIHRoZSBmb3JtZXIgY2FzZSB0aGUgQ2xvY2sgQ29tcG9uZW50IGZpbGxzIHRoaXMgc3RydWN0dXJlIGFuZCB0aW1lcyBpdHMgZW1pc3Npb24gCisgKiAgIHRvIGEgY2xpZW50IGNvbXBvbmVudCAodmlhIHRoZSBjbGllbnQgcG9ydCkgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lZGlhIAorICogICB0aW1lIHJlcXVlc3Qgc2VudCBieSB0aGUgY2xpZW50LiBUaGUgQ2xvY2sgQ29tcG9uZW50IHNob3VsZCB0aW1lIHRoZSBlbWlzc2lvbiB0byBvY2N1cgorICogICB3aGVuIHRoZSByZXF1ZXN0ZWQgdGltZXN0YW1wIG1hdGNoZXMgdGhlIENsb2NrIENvbXBvbmVudCdzIG1lZGlhIHRpbWUgYnV0IGFsc28gdGhlIAorICogICBwcmVzY3JpYmVkIG9mZnNldCBlYXJseS4gCisgKgorICogICBVcG9uIHNjYWxlIGNoYW5nZXMgdGhlIGNsb2NrIGNvbXBvbmVudCBjbGVhcnMgdGhlIG5DbGllbnRQcml2YXRlIGRhdGEsIHNlbmRzIHRoZSBjdXJyZW50CisgKiAgIG1lZGlhIHRpbWUgYW5kIHNldHMgdGhlIG5TY2FsZSB0byB0aGUgbmV3IHNjYWxlIHZpYSB0aGUgY2xpZW50IHBvcnQuIEl0IGVtaXRzIGEgCisgKiAgIE9NWF9USU1FX01FRElBVElNRVRZUEUgdG8gYWxsIGNsaWVudHMgaW5kZXBlbmRlbnQgb2YgYW55IHJlcXVlc3RzLiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIAorICogICBhbHRlciBwcm9jZXNzaW5nIHRvIGFjY29tb2RhdGUgc2NhbGluZy4gRm9yIGluc3RhbmNlIGEgdmlkZW8gY29tcG9uZW50IG1pZ2h0IHNraXAgaW50ZXItZnJhbWVzIAorICogICBpbiB0aGUgY2FzZSBvZiBleHRyZW1lIGZhc3Rmb3J3YXJkLiBMaWtld2lzZSBhbiBhdWRpbyBjb21wb25lbnQgbWlnaHQgYWRkIG9yIHJlbW92ZSBzYW1wbGVzIAorICogICBmcm9tIGFuIGF1ZGlvIGZyYW1lIHRvIHNjYWxlIGF1ZGlvIGRhdGEuIAorICoKKyAqICAgSXQgaXMgZXhwZWN0ZWQgdGhhdCBzb21lIGNsb2NrIGNvbXBvbmVudHMgbWF5IG5vdCBiZSBhYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdHMKKyAqICAgYXQgZXhhY3RseSB0aGUgcHJlc2NyaWJlZCB0aW1lLiBUaGlzIGlzIGFjY2VwdGFibGUgc28gbG9uZyBhcyB0aGUgcmVxdWVzdCBpcyAKKyAqICAgZnVsZmlsbGVkIGF0IGxlYXN0IGFzIGVhcmx5IGFzIGRlc2NyaWJlZCBhbmQgbm90IGxhdGVyLiBUaGlzIHN0cnVjdHVyZSBwcm92aWRlcyAKKyAqICAgZmllbGRzIHRoZSBjbGllbnQgbWF5IHVzZSB0byB3YWl0IGZvciB0aGUgcmVtYWluaW5nIHRpbWUuCisgKgorICogICBUaGUgY2xpZW50IG1heSB1c2UgZWl0aGVyIHRoZSBuT2Zmc2V0IG9yIG5XYWxsVGltZUF0TWVkaWEgZmllbGRzIHRvIGRldGVybWluZSB0aGUgCisgKiAgIHdhbGwgdGltZSB1bnRpbCB0aGUgbk1lZGlhVGltZXN0YW1wIGFjdHVhbGx5IG9jY3Vycy4gSW4gdGhlIGxhdHRlciBjYXNlIHRoZQorICogICBjbGllbnQgY2FuIGdldCBhIG1vcmUgYWNjdXJhdGUgdmFsdWUgZm9yIG9mZnNldCBieSBnZXR0aW5nIHRoZSBjdXJyZW50IHdhbGwKKyAqICAgZnJvbSB0aGUgY2xvYyBjb21wb25lbnQgYW5kIHN1YnRyYWN0aW5nIGl0IGZyb20gbldhbGxUaW1lQXRNZWRpYS4gCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgT01YX1RJTUVfTUVESUFUSU1FVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuQ2xpZW50UHJpdmF0ZTsgICAgICAgICAvKio8IENsaWVudCBwcml2YXRlIGRhdGEgdG8gZGlzYWJpZ3VhdGUgdGhpcyBtZWRpYSB0aW1lIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBmcm9tIG90aGVycy4gQ29waWVkIGZyb20gdGhlIG1lZGlhIHRpbWUgcmVxdWVzdC4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEEgdmFsdWUgb2YgemVybyBpcyByZXNlcnZlZCBmb3IgdGltZSBzY2FsZSB1cGRhdGVzLiAqLworICAgIE9NWF9USU1FX1VQREFURVRZUEUgZVVwZGF0ZVR5cGU7IC8qKjwgUmVhc29uIGZvciB0aGUgdXBkYXRlICovCisgICAgT01YX1RJQ0tTIG5NZWRpYVRpbWVzdGFtcDsgICAgICAvKio8IE1lZGlhIHRpbWUgcmVxdWVzdGVkLiBJZiBubyBtZWRpYSB0aW1lIHdhcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcmVxdWVzdGVkIHRoZW4gdGhpcyBpcyB0aGUgY3VycmVudCBtZWRpYSB0aW1lLiAqLyAKKyAgICBPTVhfVElDS1Mgbk9mZnNldDsgICAgICAgICAgICAgIC8qKjwgQW1vdW50IG9mIHdhbGwgY2xvY2sgdGltZSBieSB3aGljaCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHJlcXVlc3Qgd2FzIGFjdHVhbGx5IGZ1bGZpbGxlZCBlYXJseSAqLworCisgICAgT01YX1RJQ0tTIG5XYWxsVGltZUF0TWVkaWFUaW1lOyAvKio8IFdhbGwgdGltZSBjb3JyZXNwb25kaW5nIHRvIG5NZWRpYVRpbWVTdGFtcC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgQSBjbGllbnQgbWF5IGNvbXBhcmUgdGhpcyB2YWx1ZSB0byBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIG1lZGlhIHRpbWUgb2J0YWluZWQgZnJvbSB0aGUgQ2xvY2sgQ29tcG9uZW50IHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICB0aGUgd2FsbCB0aW1lIHVudGlsIHRoZSBtZWRpYSB0aW1lc3RhbXAgaXMgcmVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIGN1cnJlbnQuICovCisgICAgT01YX1MzMiB4U2NhbGU7ICAgICAgICAgICAgICAgICAvKio8IEN1cnJlbnQgbWVkaWEgdGltZSBzY2FsZSBpbiBRMTYgZm9ybWF0LiAqLworICAgIE9NWF9USU1FX0NMT0NLU1RBVEUgZVN0YXRlOyAgICAgLyogU2Vla2luZyBDaGFuZ2UuIEFkZGVkIDcvMTIuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgU3RhdGUgb2YgdGhlIG1lZGlhIHRpbWUuICovCit9IE9NWF9USU1FX01FRElBVElNRVRZUEU7ICAKKworLyoqIFN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgbWVkaWEgdGltZSBzY2FsZSBmYWN0b3IuIEFwcGxpY2FibGUgb25seSB0byBjbG9jayAKKyAqICBjb21wb25lbnQsIG90aGVyIGNvbXBvbmVudHMgc2VlIHNjYWxlIGNoYW5nZXMgdmlhIE9NWF9USU1FX01FRElBVElNRVRZUEUgYnVmZmVycyBzZW50IHZpYQorICogIHRoZSBjbG9jayBjb21wb25lbnQgY2xpZW50IHBvcnRzLiBVcG9uIHJlY2lldmluZyB0aGlzIGNvbmZpZyB0aGUgY2xvY2sgY29tcG9uZW50IGNoYW5nZXMgCisgKiAgdGhlIHJhdGUgYnkgd2hpY2ggdGhlIG1lZGlhIHRpbWUgaW5jcmVhc2VzIG9yIGRlY3JlYXNlcyBlZmZlY3RpdmVseSBpbXBsZW1lbnRpbmcgdHJpY2sgbW9kZXMuIAorICovIAordHlwZWRlZiBzdHJ1Y3QgT01YX1RJTUVfQ09ORklHX1NDQUxFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1MzMiB4U2NhbGU7ICAgICAgICAgICAgICAgICAvKio8IFRoaXMgaXMgYSB2YWx1ZSBpbiBRMTYgZm9ybWF0IHdoaWNoIGlzIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzY2FsaW5nIHRoZSBtZWRpYSB0aW1lICovCit9IE9NWF9USU1FX0NPTkZJR19TQ0FMRVRZUEU7CisgCisvKiogQml0cyB1c2VkIHRvIGlkZW50aWZ5IGEgY2xvY2sgcG9ydC4gVXNlZCBpbiBPTVhfVElNRV9DT05GSUdfQ0xPQ0tTVEFURVRZUEWScyBuV2FpdE1hc2sgZmllbGQgKi8KKyNkZWZpbmUgT01YX0NMT0NLUE9SVDAgMHgwMDAwMDAwMQorI2RlZmluZSBPTVhfQ0xPQ0tQT1JUMSAweDAwMDAwMDAyCisjZGVmaW5lIE9NWF9DTE9DS1BPUlQyIDB4MDAwMDAwMDQKKyNkZWZpbmUgT01YX0NMT0NLUE9SVDMgMHgwMDAwMDAwOAorI2RlZmluZSBPTVhfQ0xPQ0tQT1JUNCAweDAwMDAwMDEwCisjZGVmaW5lIE9NWF9DTE9DS1BPUlQ1IDB4MDAwMDAwMjAKKyNkZWZpbmUgT01YX0NMT0NLUE9SVDYgMHgwMDAwMDA0MAorI2RlZmluZSBPTVhfQ0xPQ0tQT1JUNyAweDAwMDAwMDgwCisKKy8qKiBTdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IG1vZGUgb2YgdGhlIG1lZGlhIGNsb2NrLiAKKyAqICBJTCBDbGllbnQgdXNlcyB0aGlzIGNvbmZpZyB0byBjaGFuZ2Ugb3IgcXVlcnkgdGhlIG1vZGUgb2YgdGhlIAorICogIG1lZGlhIGNsb2NrIG9mIHRoZSBjbG9jayBjb21wb25lbnQuIEFwcGxpY2FibGUgb25seSB0byBjbG9jaworICogIGNvbXBvbmVudC4gCisgKiAgCisgKiAgT24gYSBTZXRDb25maWcgaWYgZVN0YXRlIGlzIE9NWF9USU1FX0Nsb2NrU3RhdGVSdW5uaW5nIG1lZGlhIHRpbWUKKyAqICBzdGFydHMgaW1tZWRpYXRlbHkgYXQgdGhlIHByZXNjcmliZWQgc3RhcnQgdGltZS4gSWYKKyAqICBPTVhfVElNRV9DbG9ja1N0YXRlV2FpdGluZ0ZvclN0YXJ0VGltZSB0aGUgQ2xvY2sgQ29tcG9uZW50IGlnbm9yZXMKKyAqICB0aGUgZ2l2ZW4gblN0YXJ0VGltZSBhbmQgd2FpdHMgZm9yIGFsbCBjbGllbnRzIHNwZWNpZmllZCBpbiB0aGUgCisgKiAgbldhaXRNYXNrIHRvIHNlbmQgc3RhcnR0aW1lcyAodmlhIAorICogIE9NWF9JbmRleENvbmZpZ1RpbWVDbGllbnRTdGFydFRpbWUpLiBUaGUgQ2xvY2sgQ29tcG9uZW50IHRoZW4gc3RhcnRzIAorICogIHRoZSBtZWRpYSBjbG9jayB1c2luZyB0aGUgZWFybGllc3Qgc3RhcnQgdGltZSBzdXBwbGllZC4gKi8gICAgCit0eXBlZGVmIHN0cnVjdCBPTVhfVElNRV9DT05GSUdfQ0xPQ0tTVEFURVRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAvKio8IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgaW5mb3JtYXRpb24gKi8KKyAgICBPTVhfVElNRV9DTE9DS1NUQVRFIGVTdGF0ZTsgLyoqPCBTdGF0ZSBvZiB0aGUgbWVkaWEgdGltZS4gKi8KKyAgICBPTVhfVElDS1MgblN0YXJ0VGltZTsgICAgICAgLyoqPCBTdGFydCB0aW1lIG9mIHRoZSBtZWRpYSB0aW1lLiAqLworICAgIE9NWF9USUNLUyBuT2Zmc2V0OyAgICAgICAgICAvKio8IFRpbWUgdG8gb2Zmc2V0IHRoZSBtZWRpYSB0aW1lIGJ5IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoZS5nLiBwcmVyb2xsKS4gTWVkaWEgdGltZSB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlcG9ydGVkIHRvIGJlIG5PZmZzZXQgdGlja3MgZWFybGllci4gICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBPTVhfVTMyIG5XYWl0TWFzazsgICAgICAgICAgLyoqPCBNYXNrIG9mIE9NWF9DTE9DS1BPUlQgdmFsdWVzLiAqLworfSBPTVhfVElNRV9DT05GSUdfQ0xPQ0tTVEFURVRZUEU7CisKKy8qKiBTdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRoZSByZWZlcmVuY2UgY2xvY2sgY3VycmVudGx5IGJlaW5nIHVzZWQgdG8KKyAqICBjb21wdXRlIG1lZGlhIHRpbWUuIElMIGNsaWVudCB1c2VzIHRoaXMgY29uZmlnIHRvIGNoYW5nZSBvciBxdWVyeSB0aGUgCisgKiAgY2xvY2sgY29tcG9uZW50J3MgYWN0aXZlIHJlZmVyZW5jZSBjbG9jayAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1RJTUVfQ09ORklHX0FDVElWRVJFRkNMT0NLVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgICAgICAgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1RJTUVfUkVGQ0xPQ0tUWVBFIGVDbG9jazsgICAvKio8IFJlZmVyZW5jZSBjbG9jayB1c2VkIHRvIGNvbXB1dGUgbWVkaWEgdGltZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIAorfSBPTVhfVElNRV9DT05GSUdfQUNUSVZFUkVGQ0xPQ0tUWVBFOworCisvKiogRGVzY3JpcHRvciBmb3Igc2V0dGluZyBzcGVjaWZpY3Mgb2YgcG93ZXIgdHlwZS4KKyAqICBOb3RlOiB0aGlzIHN0cnVjdHVyZSBpcyBsaXN0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX09USEVSX0NPTkZJR19QT1dFUlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgLyoqPCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMgKi8KKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IC8qKjwgT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAqLworICAgIE9NWF9CT09MIGJFbmFibGVQTTsgICAgICAgLyoqPCBGbGFnIHRvIGVuYWJsZSBQb3dlciBNYW5hZ2VtZW50ICovCit9IE9NWF9PVEhFUl9DT05GSUdfUE9XRVJUWVBFOworCisKKy8qKiBEZXNjcmlwdG9yIGZvciBzZXR0aW5nIHNwZWNpZmljcyBvZiBzdGF0cyB0eXBlLgorICogIE5vdGU6IHRoaXMgc3RydWN0dXJlIGlzIGxpc3RlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuICovCit0eXBlZGVmIHN0cnVjdCBPTVhfT1RIRVJfQ09ORklHX1NUQVRTVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgLyogd2hhdCBnb2VzIGhlcmUgKi8KK30gT01YX09USEVSX0NPTkZJR19TVEFUU1RZUEU7CisKKworLyoqCisgKiBUaGUgUG9ydERlZmluaXRpb24gc3RydWN0dXJlIGlzIHVzZWQgdG8gZGVmaW5lIGFsbCBvZiB0aGUgcGFyYW1ldGVycyAKKyAqIG5lY2Vzc2FyeSBmb3IgdGhlIGNvbXBsaWFudCBjb21wb25lbnQgdG8gc2V0dXAgYW4gaW5wdXQgb3IgYW4gb3V0cHV0IG90aGVyIAorICogcGF0aC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX09USEVSX1BPUlRERUZJTklUSU9OVFlQRSB7CisgICAgT01YX09USEVSX0ZPUk1BVFRZUEUgZUZvcm1hdDsgIC8qKjwgVHlwZSBvZiBkYXRhIGV4cGVjdGVkIGZvciB0aGlzIGNoYW5uZWwgKi8KK30gT01YX09USEVSX1BPUlRERUZJTklUSU9OVFlQRTsKKworLyoqICBQb3J0IGZvcm1hdCBwYXJhbWV0ZXIuICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGVudW1lcmF0ZQorICAqICB0aGUgdmFyaW91cyBkYXRhIGlucHV0L291dHB1dCBmb3JtYXQgc3VwcG9ydGVkIGJ5IHRoZSBwb3J0LgorICAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX09USEVSX1BBUkFNX1BPUlRGT1JNQVRUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAvKio8IHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcyAqLworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsgLyoqPCBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uICovCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAvKio8IEluZGljYXRlcyB3aGljaCBwb3J0IHRvIHNldCAqLworICAgIE9NWF9VMzIgbkluZGV4OyAvKio8IEluZGljYXRlcyB0aGUgZW51bWVyYXRpb24gaW5kZXggZm9yIHRoZSBmb3JtYXQgZnJvbSAweDAgdG8gTi0xICovCisgICAgT01YX09USEVSX0ZPUk1BVFRZUEUgZUZvcm1hdDsgLyoqPCBUeXBlIG9mIGRhdGEgZXhwZWN0ZWQgZm9yIHRoaXMgY2hhbm5lbCAqLworfSBPTVhfT1RIRVJfUEFSQU1fUE9SVEZPUk1BVFRZUEU7IAorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisjZW5kaWYKKy8qIEZpbGUgRU9GICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX1R5cGVzLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX1R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmZDRiYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heC9PTVhfVHlwZXMuaApAQCAtMCwwICsxLDM2NSBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBQYWNrZXRWaWRlbworICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlcgorICogZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCisgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggVGhlIEtocm9ub3MgR3JvdXAgSW5jLiAKKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0CisgKiB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAKKyAqIAorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAKKyAqCisgKi8KKworLyoqIE9NWF9UeXBlcy5oIC0gT3Blbk1heCBJTCB2ZXJzaW9uIDEuMS4yCisgKiAgVGhlIE9NWF9UeXBlcyBoZWFkZXIgZmlsZSBjb250YWlucyB0aGUgcHJpbWl0aXZlIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSAKKyAqICB0aGUgY29yZSwgdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgY29tcG9uZW50LiAgVGhpcyBmaWxlIG1heSBuZWVkIHRvIGJlCisgKiAgbW9kaWZpZWQgdG8gYmUgdXNlZCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgImNoYXIiIHNldCB0byA4IGJpdHMsIAorICogICJzaG9ydCIgc2V0IHRvIDE2IGJpdHMgYW5kICJsb25nIiBzZXQgdG8gMzIgYml0cy4KKyAqLworCisjaWZuZGVmIE9NWF9UeXBlc19oCisjZGVmaW5lIE9NWF9UeXBlc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworLyoqIFRoZSBPTVhfQVBJIGFuZCBPTVhfQVBJRU5UUlkgYXJlIHBsYXRmb3JtIHNwZWNpZmljIGRlZmluaXRpb25zIHVzZWQKKyAqICB0byBkZWNsYXJlIE9NWCBmdW5jdGlvbiBwcm90b3R5cGVzLiAgVGhleSBhcmUgbW9kaWZpZWQgdG8gbWVldCB0aGUKKyAqICByZXF1aXJlbWVudHMgZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybSAqLworI2lmZGVmIF9fU1lNQklBTjMyX18gICAKKyMgICBpZmRlZiBfX09NWF9FWFBPUlRTCisjICAgICAgIGRlZmluZSBPTVhfQVBJIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyAgIGVsc2UKKyMgICAgICAgaWZkZWYgX1dJTjMyCisjICAgICAgICAgICBkZWZpbmUgT01YX0FQSSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgCisjICAgICAgIGVsc2UKKyMgICAgICAgICAgIGRlZmluZSBPTVhfQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgICBlbmRpZgorIyAgIGVuZGlmCisjZWxzZQorIyAgIGlmZGVmIF9XSU4zMgorIyAgICAgIGlmZGVmIF9fT01YX0VYUE9SVFMKKyMgICAgICAgICAgZGVmaW5lIE9NWF9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZWxzZQorLy8jICAgICAgICAgIGRlZmluZSBPTVhfQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBPTVhfQVBJCisjICAgICAgZW5kaWYKKyMgICBlbHNlCisjICAgICAgaWZkZWYgX19PTVhfRVhQT1JUUworIyAgICAgICAgICBkZWZpbmUgT01YX0FQSQorIyAgICAgIGVsc2UKKyMgICAgICAgICAgZGVmaW5lIE9NWF9BUEkgZXh0ZXJuCisjICAgICAgZW5kaWYKKyMgICBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgT01YX0FQSUVOVFJZCisjZGVmaW5lIE9NWF9BUElFTlRSWSAKKyNlbmRpZiAKKworLyoqIE9NWF9JTiBpcyB1c2VkIHRvIGlkZW50aWZ5IGlucHV0cyB0byBhbiBPTVggZnVuY3Rpb24uICBUaGlzIGRlc2lnbmF0aW9uIAorICAgIHdpbGwgYWxzbyBiZSB1c2VkIGluIHRoZSBjYXNlIG9mIGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHBhcmFtZXRlciAKKyAgICB0aGF0IGlzIHVzZWQgYXMgYW4gb3V0cHV0LiAqLworI2lmbmRlZiBPTVhfSU4KKyNkZWZpbmUgT01YX0lOCisjZW5kaWYKKworLyoqIE9NWF9PVVQgaXMgdXNlZCB0byBpZGVudGlmeSBvdXRwdXRzIGZyb20gYW4gT01YIGZ1bmN0aW9uLiAgVGhpcyAKKyAgICBkZXNpZ25hdGlvbiB3aWxsIGFsc28gYmUgdXNlZCBpbiB0aGUgY2FzZSBvZiBhIHBvaW50ZXIgdGhhdCBwb2ludHMgCisgICAgdG8gYSBwYXJhbWV0ZXIgdGhhdCBpcyB1c2VkIGFzIGFuIGlucHV0LiAqLworI2lmbmRlZiBPTVhfT1VUCisjZGVmaW5lIE9NWF9PVVQKKyNlbmRpZgorCisKKy8qKiBPTVhfSU5PVVQgaXMgdXNlZCB0byBpZGVudGlmeSBwYXJhbWV0ZXJzIHRoYXQgbWF5IGJlIGVpdGhlciBpbnB1dHMgb3IKKyAgICBvdXRwdXRzIGZyb20gYW4gT01YIGZ1bmN0aW9uIGF0IHRoZSBzYW1lIHRpbWUuICBUaGlzIGRlc2lnbmF0aW9uIHdpbGwgCisgICAgYWxzbyBiZSB1c2VkIGluIHRoZSBjYXNlIG9mIGEgcG9pbnRlciB0aGF0ICBwb2ludHMgdG8gYSBwYXJhbWV0ZXIgdGhhdCAKKyAgICBpcyB1c2VkIGJvdGggYXMgYW4gaW5wdXQgYW5kIGFuIG91dHB1dC4gKi8KKyNpZm5kZWYgT01YX0lOT1VUCisjZGVmaW5lIE9NWF9JTk9VVAorI2VuZGlmCisKKy8qKiBPTVhfQUxMIGlzIHVzZWQgdG8gYXMgYSB3aWxkY2FyZCB0byBzZWxlY3QgYWxsIGVudGl0aWVzIG9mIHRoZSBzYW1lIHR5cGUKKyAqICB3aGVuIHNwZWNpZnlpbmcgdGhlIGluZGV4LCBvciByZWZlcnJpbmcgdG8gYSBvYmplY3QgYnkgYW4gaW5kZXguICAoaS5lLgorICogIHVzZSBPTVhfQUxMIHRvIGluZGljYXRlIGFsbCBOIGNoYW5uZWxzKS4gV2hlbiB1c2VkIGFzIGEgcG9ydCBpbmRleAorICogIGZvciBhIGNvbmZpZyBvciBwYXJhbWV0ZXIgdGhpcyBPTVhfQUxMIGRlbm90ZXMgdGhhdCB0aGUgY29uZmlnIG9yCisgKiAgcGFyYW1ldGVyIGFwcGxpZXMgdG8gdGhlIGVudGlyZSBjb21wb25lbnQgbm90IGp1c3Qgb25lIHBvcnQuICovCisjZGVmaW5lIE9NWF9BTEwgMHhGRkZGRkZGRgorCisvKiogSW4gdGhlIGZvbGxvd2luZyB3ZSBkZWZpbmUgZ3JvdXBzIHRoYXQgaGVscCBidWlsZGluZyBkb3h5Z2VuIGRvY3VtZW50YXRpb24gKi8KKworLyoqIEBkZWZncm91cCBjb3JlIE9wZW5NQVggSUwgY29yZQorICogRnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgT01YIElMIGNvcmUKKyAqLworIAorIC8qKiBAZGVmZ3JvdXAgY29tcCBPcGVuTUFYIElMIGNvbXBvbmVudAorICogRnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgT01YIElMIGNvbXBvbmVudAorICovCisgCisvKiogQGRlZmdyb3VwIHJwbSBSZXNvdXJjZSBhbmQgUG9saWN5IE1hbmFnZW1lbnQgCisgKiBTdHJ1Y3R1cmVzIGZvciByZXNvdXJjZSBhbmQgcG9saWN5IG1hbmFnZW1lbnQgb2YgY29tcG9uZW50cworICovCisKKy8qKiBAZGVmZ3JvdXAgYnVmIEJ1ZmZlciBNYW5hZ2VtZW50CisgKiBCdWZmZXIgaGFuZGxpbmcgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzCisgKi8KKyAgCisvKiogQGRlZmdyb3VwIHR1biBUdW5uZWxpbmcKKyAqIEBpbmdyb3VwIGNvcmUgY29tcAorICogU3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIHRvIG1hbmFnZSB0dW5uZWxzIGFtb25nIGNvbXBvbmVudCBwb3J0cworICovCisgCisvKiogQGRlZmdyb3VwIGNwIENvbnRlbnQgUGlwZXMKKyAqICBAaW5ncm91cCBjb3JlCisgKi8KKyAKKyAvKiogQGRlZmdyb3VwIG1ldGFkYXRhIE1ldGFkYXRhIGhhbmRsaW5nCisgICogCisgICovIAorCisvKiogT01YX1U4IGlzIGFuIDggYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgYnl0ZSBhbGlnbmVkICovCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgT01YX1U4OworCisvKiogT01YX1M4IGlzIGFuIDggYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIGJ5dGUgYWxpZ25lZCAqLwordHlwZWRlZiBzaWduZWQgY2hhciBPTVhfUzg7CisKKy8qKiBPTVhfVTE2IGlzIGEgMTYgYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgMTYgYml0IHdvcmQgYWxpZ25lZCAqLwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBPTVhfVTE2OworCisvKiogT01YX1MxNiBpcyBhIDE2IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAxNiBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHNpZ25lZCBzaG9ydCBPTVhfUzE2OworCisvKiogT01YX1UzMiBpcyBhIDMyIGJpdCB1bnNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDMyIGJpdCB3b3JkIGFsaWduZWQgKi8KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBPTVhfVTMyOworCisvKiogT01YX1MzMiBpcyBhIDMyIGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAzMiBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHNpZ25lZCBsb25nIE9NWF9TMzI7CisKKworLyogVXNlcnMgd2l0aCBjb21waWxlcnMgdGhhdCBjYW5ub3QgYWNjZXB0IHRoZSAibG9uZyBsb25nIiBkZXNpZ25hdGlvbiBzaG91bGQKKyAgIGRlZmluZSB0aGUgT01YX1NLSVA2NEJJVCBtYWNyby4gIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoaXMgbWF5IGNhdXNlIAorICAgc29tZSBjb21wb25lbnRzIHRvIGZhaWwgdG8gY29tcGlsZSBpZiB0aGUgY29tcG9uZW50IHdhcyB3cml0dGVuIHRvIHJlcXVpcmUKKyAgIDY0IGJpdCBpbnRlZ3JhbCB0eXBlcy4gIEhvd2V2ZXIsIHRoZXNlIGNvbXBvbmVudHMgd291bGQgTk9UIGNvbXBpbGUgYW55d2F5CisgICBzaW5jZSB0aGUgY29tcGlsZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgd2F5IHRoZSBjb21wb25lbnQgd2FzIHdyaXR0ZW4uCisqLworI2lmbmRlZiBPTVhfU0tJUDY0QklUCisjaWZkZWYgX19TWU1CSUFOMzJfXworLyoqIE9NWF9VNjQgaXMgYSA2NCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBPTVhfVTY0OworCisvKiogT01YX1M2NCBpcyBhIDY0IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgT01YX1M2NDsKKworI2VsaWYgZGVmaW5lZChXSU4zMikKKworLyoqIE9NWF9VNjQgaXMgYSA2NCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovICAgCit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIE9NWF9VNjQ7CisKKy8qKiBPTVhfUzY0IGlzIGEgNjQgYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDY0IGJpdCB3b3JkIGFsaWduZWQgKi8KK3R5cGVkZWYgc2lnbmVkICAgX19pbnQ2NCAgT01YX1M2NDsKKworI2Vsc2UgLyogV0lOMzIgKi8KKworLyoqIE9NWF9VNjQgaXMgYSA2NCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBPTVhfVTY0OworCisvKiogT01YX1M2NCBpcyBhIDY0IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovCit0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgT01YX1M2NDsKKworI2VuZGlmIC8qIFdJTjMyICovCisjZW5kaWYKKworCisvKiogVGhlIE9NWF9CT09MIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byByZXByZXNlbnQgYSB0cnVlIG9yIGEgZmFsc2UgCisgICAgdmFsdWUgd2hlbiBwYXNzaW5nIHBhcmFtZXRlcnMgdG8gYW5kIGZyb20gdGhlIE9NWCBjb3JlIGFuZCBjb21wb25lbnRzLiAgVGhlCisgICAgT01YX0JPT0wgaXMgYSAzMiBiaXQgcXVhbnRpdHkgYW5kIGlzIGFsaWduZWQgb24gYSAzMiBiaXQgd29yZCBib3VuZGFyeS4KKyAqLwordHlwZWRlZiBlbnVtIE9NWF9CT09MIHsKKyAgICBPTVhfRkFMU0UgPSAwLAorICAgIE9NWF9UUlVFID0gIU9NWF9GQUxTRSwKKyAgICBPTVhfQk9PTF9NQVggPSAweDdGRkZGRkZGCit9IE9NWF9CT09MOyAKKyAKKy8qKiBUaGUgT01YX1BUUiB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyBwb2ludGVycyBiZXR3ZWVuIHRoZSBPTVgKKyAgICBhcHBsaWNhdGlvbnMgYW5kIHRoZSBPTVggQ29yZSBhbmQgY29tcG9uZW50cy4gIFRoaXMgaXMgYSAzMiBiaXQgcG9pbnRlciBhbmQKKyAgICBpcyBhbGlnbmVkIG9uIGEgMzIgYml0IGJvdW5kYXJ5LgorICovCit0eXBlZGVmIHZvaWQqIE9NWF9QVFI7CisKKy8qKiBUaGUgT01YX1NUUklORyB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyAiQyIgdHlwZSBzdHJpbmdzIGJldHdlZW4KKyAgICB0aGUgYXBwbGljYXRpb24gYW5kIHRoZSBjb3JlIGFuZCBjb21wb25lbnQuICBUaGUgT01YX1NUUklORyB0eXBlIGlzIGEgMzIgCisgICAgYml0IHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nLiAgVGhlICBwb2ludGVyIGlzIHdvcmQgYWxpZ25lZCBhbmQgCisgICAgdGhlIHN0cmluZyBpcyBieXRlIGFsaWduZWQuICAKKyAqLwordHlwZWRlZiBjaGFyKiBPTVhfU1RSSU5HOworCisvKiogVGhlIE9NWF9CWVRFIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBwYXNzIGFycmF5cyBvZiBieXRlcyBzdWNoIGFzCisgICAgYnVmZmVycyBiZXR3ZWVuIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIGNvbXBvbmVudCBhbmQgY29yZS4gIFRoZSBPTVhfQllURSAKKyAgICB0eXBlIGlzIGEgMzIgYml0IHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nLiAgVGhlICBwb2ludGVyIGlzIHdvcmQKKyAgICBhbGlnbmVkIGFuZCB0aGUgc3RyaW5nIGlzIGJ5dGUgYWxpZ25lZC4KKyAqLwordHlwZWRlZiB1bnNpZ25lZCBjaGFyKiBPTVhfQllURTsKKworLyoqIE9NWF9VVUlEVFlQRSBpcyBhIHZlcnkgbG9uZyB1bmlxdWUgaWRlbnRpZmllciB0byB1bmlxdWVseSBpZGVudGlmeQorICAgIGF0IHJ1bnRpbWUuICBUaGlzIGlkZW50aWZpZXIgc2hvdWxkIGJlIGdlbmVyYXRlZCBieSBhIGNvbXBvbmVudCBpbiBhIHdheQorICAgIHRoYXQgZ3VhcmFudGVlcyB0aGF0IGV2ZXJ5IGluc3RhbmNlIG9mIHRoZSBpZGVudGlmaWVyIHJ1bm5pbmcgb24gdGhlIHN5c3RlbQorICAgIGlzIHVuaXF1ZS4gKi8KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBPTVhfVVVJRFRZUEVbMTI4XTsKKworLyoqIFRoZSBPTVhfRElSVFlQRSBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIGluZGljYXRlIGlmIGEgcG9ydCBpcyBhbiBpbnB1dCBvcgorICAgIGFuIG91dHB1dCBwb3J0LiAgVGhpcyBlbnVtZXJhdGlvbiBpcyBjb21tb24gYWNyb3NzIGFsbCBjb21wb25lbnQgdHlwZXMuICAgIAorICovCit0eXBlZGVmIGVudW0gT01YX0RJUlRZUEUKK3sKKyAgICBPTVhfRGlySW5wdXQsICAgICAgICAgICAgICAvKio8IFBvcnQgaXMgYW4gaW5wdXQgcG9ydCAqLworICAgIE9NWF9EaXJPdXRwdXQsICAgICAgICAgICAgIC8qKjwgUG9ydCBpcyBhbiBvdXRwdXQgcG9ydCAqLworICAgIE9NWF9EaXJNYXggPSAweDdGRkZGRkZGCit9IE9NWF9ESVJUWVBFOworCisvKiogVGhlIE9NWF9FTkRJQU5UWVBFIGVudW1lcmF0aW9uIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGJpdCBvcmRlcmluZyAKKyAgICBmb3IgbnVtZXJpY2FsIGRhdGEgKGkuZS4gYmlnIGVuZGlhbiwgb3IgbGl0dGxlIGVuZGlhbikuICAgIAorICovCit0eXBlZGVmIGVudW0gT01YX0VORElBTlRZUEUKK3sKKyAgICBPTVhfRW5kaWFuQmlnLCAvKio8IGJpZyBlbmRpYW4gKi8KKyAgICBPTVhfRW5kaWFuTGl0dGxlLCAvKio8IGxpdHRsZSBlbmRpYW4gKi8KKyAgICBPTVhfRW5kaWFuTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfRU5ESUFOVFlQRTsKKworCisvKiogVGhlIE9NWF9OVU1FUklDQUxEQVRBVFlQRSBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIGluZGljYXRlIGlmIGRhdGEgCisgICAgaXMgc2lnbmVkIG9yIHVuc2lnbmVkCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfTlVNRVJJQ0FMREFUQVRZUEUKK3sKKyAgICBPTVhfTnVtZXJpY2FsRGF0YVNpZ25lZCwgLyoqPCBzaWduZWQgZGF0YSAqLworICAgIE9NWF9OdW1lcmljYWxEYXRhVW5zaWduZWQsIC8qKjwgdW5zaWduZWQgZGF0YSAqLworICAgIE9NWF9OdW1lcmNpYWxEYXRhTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfTlVNRVJJQ0FMREFUQVRZUEU7CisKKworLyoqIFVuc2lnbmVkIGJvdW5kZWQgdmFsdWUgdHlwZSAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0JVMzIgeworICAgIE9NWF9VMzIgblZhbHVlOyAvKio8IGFjdHVhbCB2YWx1ZSAqLworICAgIE9NWF9VMzIgbk1pbjsgICAvKio8IG1pbmltdW0gZm9yIHZhbHVlIChpLmUuIG5WYWx1ZSA+PSBuTWluKSAqLworICAgIE9NWF9VMzIgbk1heDsgICAvKio8IG1heGltdW0gZm9yIHZhbHVlIChpLmUuIG5WYWx1ZSA8PSBuTWF4KSAqLworfSBPTVhfQlUzMjsKKworCisvKiogU2lnbmVkIGJvdW5kZWQgdmFsdWUgdHlwZSAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX0JTMzIgeworICAgIE9NWF9TMzIgblZhbHVlOyAvKio8IGFjdHVhbCB2YWx1ZSAqLworICAgIE9NWF9TMzIgbk1pbjsgICAvKio8IG1pbmltdW0gZm9yIHZhbHVlIChpLmUuIG5WYWx1ZSA+PSBuTWluKSAqLworICAgIE9NWF9TMzIgbk1heDsgICAvKio8IG1heGltdW0gZm9yIHZhbHVlIChpLmUuIG5WYWx1ZSA8PSBuTWF4KSAqLworfSBPTVhfQlMzMjsKKworCisvKiogU3RydWN0dXJlIHJlcHJlc2VudGluZyBzb21lIHRpbWUgb3IgZHVyYXRpb24gaW4gbWljcm9zZWNvbmRzLiBUaGlzIHN0cnVjdHVyZQorICAqICBtdXN0IGJlIGludGVycHJldGVkIGFzIGEgc2lnbmVkIDY0IGJpdCB2YWx1ZS4gVGhlIHF1YW50aXR5IGlzIHNpZ25lZCB0byBhY2NvbW1vZGF0ZSAKKyAgKiAgbmVnYXRpdmUgZGVsdGFzIGFuZCBwcmVyb2xsIHNjZW5hcmlvcy4gVGhlIHF1YW50aXR5IGlzIHJlcHJlc2VudGVkIGluIG1pY3Jvc2Vjb25kcyAKKyAgKiAgdG8gYWNjb21vZGF0ZSBoaWdoIHJlc29sdXRpb24gdGltZXN0YW1wcyAoZS5nLiBEVkQgcHJlc2VudGF0aW9uIHRpbWVzdGFtcHMgYmFzZWQKKyAgKiAgb24gYSA5MGtIeiBjbG9jaykgYW5kIHRvIGFsbG93IG1vcmUgYWNjdXJhdGUgYW5kIHN5bmNocm9uaXplZCBkZWxpdmVyeSAoZS5nLiAKKyAgKiAgaW5kaXZpZHVhbCBhdWRpbyBzYW1wbGVzIGRlbGl2ZXJlZCBhdCAxOTIga0h6KS4gVGhlIHF1YW50aXR5IGlzIDY0IGJpdCB0byAKKyAgKiAgYWNjb21tb2RhdGUgYSBsYXJnZSBkeW5hbWljIHJhbmdlIChzaWduZWQgMzIgYml0IHZhbHVlcyB3b3VsZCBhbGxvdyBvbmx5IGZvciBwbHVzCisgICogIG9yIG1pbnVzIDM1IG1pbnV0ZXMpLgorICAqCisgICogIEltcGxlbWVudGF0aW9ucyB3aXRoIGxpbWl0ZWQgcHJlY2lzaW9uIG1heSBjb252ZXJ0IHRoZSBzaWduZWQgNjQgYml0IHZhbHVlIHRvIAorICAqICBhIHNpZ25lZCAzMiBiaXQgdmFsdWUgaW50ZXJuYWxseSBidXQgcmlzayBsb3NzIG9mIHByZWNpc2lvbi4gIAorICAqLworI2lmbmRlZiBPTVhfU0tJUDY0QklUCit0eXBlZGVmIE9NWF9TNjQgT01YX1RJQ0tTOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IE9NWF9USUNLUworeworICAgIE9NWF9VMzIgbkxvd1BhcnQ7ICAgIC8qKiBsb3cgYml0cyBvZiB0aGUgc2lnbmVkIDY0IGJpdCB0aWNrIHZhbHVlICovCisgICAgT01YX1UzMiBuSGlnaFBhcnQ7ICAgLyoqIGhpZ2ggYml0cyBvZiB0aGUgc2lnbmVkIDY0IGJpdCB0aWNrIHZhbHVlICovCit9IE9NWF9USUNLUzsKKyNlbmRpZgorI2RlZmluZSBPTVhfVElDS1NfUEVSX1NFQ09ORCAxMDAwMDAwCisKKy8qKiBEZWZpbmUgdGhlIHB1YmxpYyBpbnRlcmZhY2UgZm9yIHRoZSBPTVggSGFuZGxlLiAgVGhlIGNvcmUgd2lsbCBub3QgdXNlCisgICAgdGhpcyB2YWx1ZSBpbnRlcm5hbGx5LCBidXQgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBvbmx5IHVzZSB0aGlzIHZhbHVlLgorICovCit0eXBlZGVmIHZvaWQqIE9NWF9IQU5ETEVUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfTUFSS1RZUEUKK3sKKyAgICBPTVhfSEFORExFVFlQRSBoTWFya1RhcmdldENvbXBvbmVudDsgICAvKio8IFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYSBtYXJrIGV2ZW50IHVwb24gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIHRoZSBtYXJrLiAqLworICAgIE9NWF9QVFIgcE1hcmtEYXRhOyAgIC8qKjwgQXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSBhc3NvY2lhdGVkIHdpdGggCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFyayBzZW50IG9uIGEgbWFyayBldmVudCB0byBkaXNhbWJpZ3VhdGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG1hcmsgZnJvbSBvdGhlcnMuICovCit9IE9NWF9NQVJLVFlQRTsKKworCisvKiogT01YX05BVElWRV9ERVZJQ0VUWVBFIGlzIHVzZWQgdG8gbWFwIGEgT01YIHZpZGVvIHBvcnQgdG8gdGhlCisgKiAgcGxhdGZvcm0gJiBvcGVyYXRpbmcgc3BlY2lmaWMgb2JqZWN0IHVzZWQgdG8gcmVmZXJlbmNlIHRoZSBkaXNwbGF5IAorICogIG9yIGNhbiBiZSB1c2VkIGJ5IGEgYXVkaW8gcG9ydCBmb3IgbmF0aXZlIGF1ZGlvIHJlbmRlcmluZyAqLwordHlwZWRlZiB2b2lkKiBPTVhfTkFUSVZFX0RFVklDRVRZUEU7CisKKy8qKiBPTVhfTkFUSVZFX1dJTkRPV1RZUEUgaXMgdXNlZCB0byBtYXAgYSBPTVggdmlkZW8gcG9ydCB0byB0aGUKKyAqICBwbGF0Zm9ybSAmIG9wZXJhdGluZyBzcGVjaWZpYyBvYmplY3QgdXNlZCB0byByZWZlcmVuY2UgdGhlIHdpbmRvdyAqLwordHlwZWRlZiB2b2lkKiBPTVhfTkFUSVZFX1dJTkRPV1RZUEU7CisKKy8qKiBUaGUgT01YX1ZFUlNJT05UWVBFIHVuaW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgdmVyc2lvbiBmb3IKKyAgICBhIHN0cnVjdHVyZSBvciBjb21wb25lbnQuICBGb3IgYSBjb21wb25lbnQsIHRoZSB2ZXJzaW9uIGlzIGVudGlyZWx5CisgICAgc3BlY2lmaWVkIGJ5IHRoZSBjb21wb25lbnQgdmVuZG9yLiAgQ29tcG9uZW50cyBkb2luZyB0aGUgc2FtZSBmdW5jdGlvbgorICAgIGZyb20gZGlmZmVyZW50IHZlbmRvcnMgbWF5IG9yIG1heSBub3QgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uLiAgRm9yIAorICAgIHN0cnVjdHVyZXMsIHRoZSB2ZXJzaW9uIHNoYWxsIGJlIHNldCBieSB0aGUgZW50aXR5IHRoYXQgYWxsb2NhdGVzIHRoZQorICAgIHN0cnVjdHVyZS4gIEZvciBzdHJ1Y3R1cmVzIHNwZWNpZmllZCBpbiB0aGUgT01YIDEuMSBzcGVjaWZpY2F0aW9uLCB0aGUKKyAgICB2YWx1ZSBvZiB0aGUgdmVyc2lvbiBzaGFsbCBiZSBzZXQgdG8gMS4xLjAuMCBpbiBhbGwgY2FzZXMuICBBY2Nlc3MgdG8gdGhlCisgICAgT01YX1ZFUlNJT05UWVBFIGNhbiBiZSBieSBhIHNpbmdsZSAzMiBiaXQgYWNjZXNzIChlLmcuIGJ5IG5WZXJzaW9uKSBvcgorICAgIGJ5IGFjY2Vzc2luZyBvbmUgb2YgdGhlIHN0cnVjdHVyZSBlbGVtZW50cyB0bywgZm9yIGV4YW1wbGUsIGNoZWNrIG9ubHkKKyAgICB0aGUgTWFqb3IgcmV2aXNpb24uCisgKi8KK3R5cGVkZWYgdW5pb24gT01YX1ZFUlNJT05UWVBFCit7CisgICAgc3RydWN0CisgICAgeworICAgICAgICBPTVhfVTggblZlcnNpb25NYWpvcjsgICAvKio8IE1ham9yIHZlcnNpb24gYWNjZXNzb3IgZWxlbWVudCAqLworICAgICAgICBPTVhfVTggblZlcnNpb25NaW5vcjsgICAvKio8IE1pbm9yIHZlcnNpb24gYWNjZXNzb3IgZWxlbWVudCAqLworICAgICAgICBPTVhfVTggblJldmlzaW9uOyAgICAgICAvKio8IFJldmlzaW9uIHZlcnNpb24gYWNjZXNzb3IgZWxlbWVudCAqLworICAgICAgICBPTVhfVTggblN0ZXA7ICAgICAgICAgICAvKio8IFN0ZXAgdmVyc2lvbiBhY2Nlc3NvciBlbGVtZW50ICovCisgICAgfSBzOworICAgIE9NWF9VMzIgblZlcnNpb247ICAgICAgICAgICAvKio8IDMyIGJpdCB2YWx1ZSB0byBtYWtlIGFjY2Vzc2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gZWFzaWx5IGRvbmUgaW4gYSBzaW5nbGUgd29yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBjb3B5L2NvbXBhcmUgb3BlcmF0aW9uICovCit9IE9NWF9WRVJTSU9OVFlQRTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworI2VuZGlmCisvKiBGaWxlIEVPRiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9WaWRlby5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4L09NWF9WaWRlby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MzhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgvT01YX1ZpZGVvLmgKQEAgLTAsMCArMSwxMDc3IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvcHlyaWdodCAoQykgMTk5OC0yMDA5IFBhY2tldFZpZGVvCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyCisgKiBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKKyAqIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDggVGhlIEtocm9ub3MgR3JvdXAgSW5jLiAKKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0CisgKiB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiAKKyAqIAorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAKKyAqCisgKi8KKworLyoqIAorICogIEBmaWxlIE9NWF9WaWRlby5oIC0gT3Blbk1heCBJTCB2ZXJzaW9uIDEuMS4yCisgKiAgVGhlIHN0cnVjdHVyZXMgaXMgbmVlZGVkIGJ5IFZpZGVvIGNvbXBvbmVudHMgdG8gZXhjaGFuZ2UgcGFyYW1ldGVycyAKKyAqICBhbmQgY29uZmlndXJhdGlvbiBkYXRhIHdpdGggT01YIGNvbXBvbmVudHMuCisgKi8KKyNpZm5kZWYgT01YX1ZpZGVvX2gKKyNkZWZpbmUgT01YX1ZpZGVvX2gKKworLyoqIEBkZWZncm91cCB2aWRlbyBPcGVuTUFYIElMIFZpZGVvIERvbWFpbgorICogQGluZ3JvdXAgaXYKKyAqIFN0cnVjdHVyZXMgZm9yIE9wZW5NQVggSUwgVmlkZW8gZG9tYWluCisgKiBAeworICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworCisvKioKKyAqIEVhY2ggT01YIGhlYWRlciBtdXN0IGluY2x1ZGUgYWxsIHJlcXVpcmVkIGhlYWRlciBmaWxlcyB0byBhbGxvdyB0aGUKKyAqIGhlYWRlciB0byBjb21waWxlIHdpdGhvdXQgZXJyb3JzLiAgVGhlIGluY2x1ZGVzIGJlbG93IGFyZSByZXF1aXJlZAorICogZm9yIHRoaXMgaGVhZGVyIGZpbGUgdG8gY29tcGlsZSBzdWNjZXNzZnVsbHkgCisgKi8KKworI2luY2x1ZGUgPE9NWF9JVkNvbW1vbi5oPgorCisKKy8qKgorICogRW51bWVyYXRpb24gdXNlZCB0byBkZWZpbmUgdGhlIHBvc3NpYmxlIHZpZGVvIGNvbXByZXNzaW9uIGNvZGluZ3MuICAKKyAqIE5PVEU6ICBUaGlzIGVzc2VudGlhbGx5IHJlZmVycyB0byBmaWxlIGV4dGVuc2lvbnMuIElmIHRoZSBjb2RpbmcgaXMgCisgKiAgICAgICAgYmVpbmcgdXNlZCB0byBzcGVjaWZ5IHRoZSBFTkNPREUgdHlwZSwgdGhlbiBhZGRpdGlvbmFsIHdvcmsgCisgKiAgICAgICAgbXVzdCBiZSBkb25lIHRvIGNvbmZpZ3VyZSB0aGUgZXhhY3QgZmxhdm9yIG9mIHRoZSBjb21wcmVzc2lvbiAKKyAqICAgICAgICB0byBiZSB1c2VkLiAgRm9yIGRlY29kZSBjYXNlcyB3aGVyZSB0aGUgdXNlciBhcHBsaWNhdGlvbiBjYW4gCisgKiAgICAgICAgbm90IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBNUEVHLTQgYW5kIEguMjY0IGJpdCBzdHJlYW1zLCBpdCBpcyAKKyAqICAgICAgICB1cCB0byB0aGUgY29kZWMgdG8gaGFuZGxlIHRoaXMuCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fQ09ESU5HVFlQRSB7CisgICAgT01YX1ZJREVPX0NvZGluZ1VudXNlZCwgICAgIC8qKjwgVmFsdWUgd2hlbiBjb2RpbmcgaXMgTi9BICovCisgICAgT01YX1ZJREVPX0NvZGluZ0F1dG9EZXRlY3QsIC8qKjwgQXV0b2RldGVjdGlvbiBvZiBjb2RpbmcgdHlwZSAqLworICAgIE9NWF9WSURFT19Db2RpbmdNUEVHMiwgICAgICAvKio8IEFLQTogSC4yNjIgKi8KKyAgICBPTVhfVklERU9fQ29kaW5nSDI2MywgICAgICAgLyoqPCBILjI2MyAqLworICAgIE9NWF9WSURFT19Db2RpbmdNUEVHNCwgICAgICAvKio8IE1QRUctNCAqLworICAgIE9NWF9WSURFT19Db2RpbmdXTVYsICAgICAgICAvKio8IGFsbCB2ZXJzaW9ucyBvZiBXaW5kb3dzIE1lZGlhIFZpZGVvICovCisgICAgT01YX1ZJREVPX0NvZGluZ1JWLCAgICAgICAgIC8qKjwgYWxsIHZlcnNpb25zIG9mIFJlYWwgVmlkZW8gKi8KKyAgICBPTVhfVklERU9fQ29kaW5nQVZDLCAgICAgICAgLyoqPCBILjI2NC9BVkMgKi8KKyAgICBPTVhfVklERU9fQ29kaW5nTUpQRUcsICAgICAgLyoqPCBNb3Rpb24gSlBFRyAqLworICAgIE9NWF9WSURFT19Db2RpbmdLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX0NvZGluZ1ZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX0NvZGluZ01heCA9IDB4N0ZGRkZGRkYKK30gT01YX1ZJREVPX0NPRElOR1RZUEU7CisKKworLyoqCisgKiBEYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGRlZmluZSBhIHZpZGVvIHBhdGguICBUaGUgbnVtYmVyIG9mIFZpZGVvIHBhdGhzIGZvciAKKyAqIGlucHV0IGFuZCBvdXRwdXQgd2lsbCB2YXJ5IGJ5IHR5cGUgb2YgdGhlIFZpZGVvIGNvbXBvbmVudC4gIAorICogCisgKiAgICBJbnB1dCAoYWthIFNvdXJjZSkgOiB6ZXJvIElucHV0cywgb25lIE91dHB1dCwKKyAqICAgIFNwbGl0dGVyICAgICAgICAgICA6IG9uZSBJbnB1dCwgMiBvciBtb3JlIE91dHB1dHMsCisgKiAgICBQcm9jZXNzaW5nIEVsZW1lbnQgOiBvbmUgSW5wdXQsIG9uZSBvdXRwdXQsCisgKiAgICBNaXhlciAgICAgICAgICAgICAgOiAyIG9yIG1vcmUgaW5wdXRzLCBvbmUgb3V0cHV0LAorICogICAgT3V0cHV0IChha2EgU2luaykgIDogb25lIElucHV0LCB6ZXJvIG91dHB1dHMuCisgKiAKKyAqIFRoZSBQb3J0RGVmaW5pdGlvbiBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBkZWZpbmUgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzIAorICogbmVjZXNzYXJ5IGZvciB0aGUgY29tcGxpYW50IGNvbXBvbmVudCB0byBzZXR1cCBhbiBpbnB1dCBvciBhbiBvdXRwdXQgdmlkZW8gCisgKiBwYXRoLiAgSWYgYWRkaXRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgZGF0YSBpcyByZXF1aXJlZCwgaXQgc2hvdWxkIGJlIAorICogdHJhbnNtaXR0ZWQgdG8gdGhlIGNvbXBvbmVudCB1c2luZyB0aGUgQ3VzdG9tQ29tbWFuZCBmdW5jdGlvbi4gIENvbXBsaWFudCAKKyAqIGNvbXBvbmVudHMgd2lsbCBwcmVwb3B1bGF0ZSB0aGlzIHN0cnVjdHVyZSB3aXRoIG9wdGltYWwgdmFsdWVzIGR1cmluZyB0aGUgCisgKiBHZXREZWZhdWx0SW5pdFBhcmFtcyBjb21tYW5kLgorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIGNNSU1FVHlwZSAgICAgICAgICAgICA6IE1JTUUgdHlwZSBvZiBkYXRhIGZvciB0aGUgcG9ydAorICogIHBOYXRpdmVSZW5kZXIgICAgICAgICA6IFBsYXRmb3JtIHNwZWNpZmljIHJlZmVyZW5jZSBmb3IgYSBkaXNwbGF5IGlmIGEgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3luYywgb3RoZXJ3aXNlIHRoaXMgZmllbGQgaXMgMAorICogIG5GcmFtZVdpZHRoICAgICAgICAgICA6IFdpZHRoIG9mIGZyYW1lIHRvIGJlIHVzZWQgb24gY2hhbm5lbCBpZiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQgZm9ybWF0IGlzIHVzZWQuICBVc2UgMCBmb3IgdW5rbm93biwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBkb24ndCBjYXJlIG9yIHZhcmlhYmxlCisgKiAgbkZyYW1lSGVpZ2h0ICAgICAgICAgIDogSGVpZ2h0IG9mIGZyYW1lIHRvIGJlIHVzZWQgb24gY2hhbm5lbCBpZiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQgZm9ybWF0IGlzIHVzZWQuIFVzZSAwIGZvciB1bmtub3duLAorICogICAgICAgICAgICAgICAgICAgICAgICAgIGRvbid0IGNhcmUgb3IgdmFyaWFibGUKKyAqICBuU3RyaWRlICAgICAgICAgICAgICAgOiBOdW1iZXIgb2YgYnl0ZXMgcGVyIHNwYW4gb2YgYW4gaW1hZ2UgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gZ2V0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBzcGFuIE4gdG8gc3BhbiBOKzEsIHdoZXJlIG5lZ2F0aXZlIHN0cmlkZQorICogICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB0aGUgaW1hZ2UgaXMgYm90dG9tIHVwCisgKiAgblNsaWNlSGVpZ2h0ICAgICAgICAgIDogSGVpZ2h0IHVzZWQgd2hlbiBlbmNvZGluZyBpbiBzbGljZXMKKyAqICBuQml0cmF0ZSAgICAgICAgICAgICAgOiBCaXQgcmF0ZSBvZiBmcmFtZSB0byBiZSB1c2VkIG9uIGNoYW5uZWwgaWYgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZCBmb3JtYXQgaXMgdXNlZC4gVXNlIDAgZm9yIHVua25vd24sIAorICogICAgICAgICAgICAgICAgICAgICAgICAgIGRvbid0IGNhcmUgb3IgdmFyaWFibGUKKyAqICB4RnJhbWVyYXRlICAgICAgICAgICAgOiBGcmFtZSByYXRlIHRvIGJlIHVzZWQgb24gY2hhbm5lbCBpZiB1bmNvbXByZXNzZWQgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGlzIHVzZWQuIFVzZSAwIGZvciB1bmtub3duLCBkb24ndCBjYXJlIG9yIAorICogICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLiAgVW5pdHMgYXJlIFExNiBmcmFtZXMgcGVyIHNlY29uZC4KKyAqICBiRmxhZ0Vycm9yQ29uY2VhbG1lbnQgOiBUdXJucyBvbiBlcnJvciBjb25jZWFsbWVudCBpZiBpdCBpcyBzdXBwb3J0ZWQgYnkgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE9NWCBjb21wb25lbnQKKyAqICBlQ29tcHJlc3Npb25Gb3JtYXQgICAgOiBDb21wcmVzc2lvbiBmb3JtYXQgdXNlZCBpbiB0aGlzIGluc3RhbmNlIG9mIHRoZSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuIFdoZW4gT01YX1ZJREVPX0NvZGluZ1VudXNlZCBpcyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIGVDb2xvckZvcm1hdCBpcyB1c2VkCisgKiAgZUNvbG9yRm9ybWF0IDogRGVjb21wcmVzc2VkIGZvcm1hdCB1c2VkIGJ5IHRoaXMgY29tcG9uZW50CisgKiAgcE5hdGl2ZVdpbmRvdyA6IFBsYXRmb3JtIHNwZWNpZmljIHJlZmVyZW5jZSBmb3IgYSB3aW5kb3cgb2JqZWN0IGlmIGEgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBzaW5rICwgb3RoZXJ3aXNlIHRoaXMgZmllbGQgaXMgMHgwLiAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BPUlRERUZJTklUSU9OVFlQRSB7CisgICAgT01YX1NUUklORyBjTUlNRVR5cGU7CisgICAgT01YX05BVElWRV9ERVZJQ0VUWVBFIHBOYXRpdmVSZW5kZXI7CisgICAgT01YX1UzMiBuRnJhbWVXaWR0aDsKKyAgICBPTVhfVTMyIG5GcmFtZUhlaWdodDsKKyAgICBPTVhfUzMyIG5TdHJpZGU7CisgICAgT01YX1UzMiBuU2xpY2VIZWlnaHQ7CisgICAgT01YX1UzMiBuQml0cmF0ZTsKKyAgICBPTVhfVTMyIHhGcmFtZXJhdGU7CisgICAgT01YX0JPT0wgYkZsYWdFcnJvckNvbmNlYWxtZW50OworICAgIE9NWF9WSURFT19DT0RJTkdUWVBFIGVDb21wcmVzc2lvbkZvcm1hdDsKKyAgICBPTVhfQ09MT1JfRk9STUFUVFlQRSBlQ29sb3JGb3JtYXQ7CisgICAgT01YX05BVElWRV9XSU5ET1dUWVBFIHBOYXRpdmVXaW5kb3c7Cit9IE9NWF9WSURFT19QT1JUREVGSU5JVElPTlRZUEU7CisKKy8qKiAgCisgKiBQb3J0IGZvcm1hdCBwYXJhbWV0ZXIuICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGVudW1lcmF0ZSB0aGUgdmFyaW91cyAKKyAqIGRhdGEgaW5wdXQvb3V0cHV0IGZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhlIHBvcnQuCisgKiAKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4ICAgICAgICAgOiBJbmRpY2F0ZXMgd2hpY2ggcG9ydCB0byBzZXQKKyAqICBuSW5kZXggICAgICAgICAgICAgOiBJbmRpY2F0ZXMgdGhlIGVudW1lcmF0aW9uIGluZGV4IGZvciB0aGUgZm9ybWF0IGZyb20gCisgKiAgICAgICAgICAgICAgICAgICAgICAgMHgwIHRvIE4tMQorICogIGVDb21wcmVzc2lvbkZvcm1hdCA6IENvbXByZXNzaW9uIGZvcm1hdCB1c2VkIGluIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC4gV2hlbiBPTVhfVklERU9fQ29kaW5nVW51c2VkIGlzIHNwZWNpZmllZCwgCisgKiAgICAgICAgICAgICAgICAgICAgICAgZUNvbG9yRm9ybWF0IGlzIHVzZWQgCisgKiAgZUNvbG9yRm9ybWF0ICAgICAgIDogRGVjb21wcmVzc2VkIGZvcm1hdCB1c2VkIGJ5IHRoaXMgY29tcG9uZW50CisgKiAgeEZyYW1lUmF0ZSAgICAgICAgIDogSW5kaWNhdGVzIHRoZSB2aWRlbyBmcmFtZSByYXRlIGluIFExNiBmb3JtYXQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX1BPUlRGT1JNQVRUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1UzMiBuSW5kZXg7CisgICAgT01YX1ZJREVPX0NPRElOR1RZUEUgZUNvbXByZXNzaW9uRm9ybWF0OyAKKyAgICBPTVhfQ09MT1JfRk9STUFUVFlQRSBlQ29sb3JGb3JtYXQ7CisgICAgT01YX1UzMiB4RnJhbWVyYXRlOworfSBPTVhfVklERU9fUEFSQU1fUE9SVEZPUk1BVFRZUEU7CisKKworLyoqCisgKiBUaGlzIGlzIGEgc3RydWN0dXJlIGZvciBjb25maWd1cmluZyB2aWRlbyBjb21wcmVzc2lvbiBxdWFudGl6YXRpb24gCisgKiBwYXJhbWV0ZXIgdmFsdWVzLiAgQ29kZWNzIG1heSBzdXBwb3J0IGRpZmZlcmVudCBRUCB2YWx1ZXMgZm9yIGRpZmZlcmVudAorICogZnJhbWUgdHlwZXMuCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm8KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuUXBJICAgICAgIDogUVAgdmFsdWUgdG8gdXNlIGZvciBpbmRleCBmcmFtZXMKKyAqICBuUXBQICAgICAgIDogUVAgdmFsdWUgdG8gdXNlIGZvciBQIGZyYW1lcworICogIG5RcEIgICAgICAgOiBRUCB2YWx1ZXMgdG8gdXNlIGZvciBiaWRpcmVjdGlvbmFsIGZyYW1lcyAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX1FVQU5USVpBVElPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5RcEk7CisgICAgT01YX1UzMiBuUXBQOworICAgIE9NWF9VMzIgblFwQjsKK30gT01YX1ZJREVPX1BBUkFNX1FVQU5USVpBVElPTlRZUEU7CisKKworLyoqIAorICogU3RydWN0dXJlIGZvciBjb25maWd1cmF0aW9uIG9mIHZpZGVvIGZhc3QgdXBkYXRlIHBhcmFtZXRlcnMuIAorICogIAorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm8gCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgYkVuYWJsZVZGVSA6IEVuYWJsZS9EaXNhYmxlIHZpZGVvIGZhc3QgdXBkYXRlCisgKiAgbkZpcnN0R09CICA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBtYWNyb2Jsb2NrIHJvdworICogIG5GaXJzdE1CICAgOiBzcGVjaWZpZXMgdGhlIGZpcnN0IE1CIHJlbGF0aXZlIHRvIHRoZSBzcGVjaWZpZWQgZmlyc3QgR09CCisgKiAgbk51bU1CcyAgICA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIE1CcyB0byBiZSByZWZyZXNoZWQgZnJvbSBuRmlyc3RHT0IgCisgKiAgICAgICAgICAgICAgIGFuZCBuRmlyc3RNQgorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fVklERU9GQVNUVVBEQVRFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgICAgICAgICAgICAKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgCisgICAgT01YX0JPT0wgYkVuYWJsZVZGVTsgICAgICAKKyAgICBPTVhfVTMyIG5GaXJzdEdPQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgT01YX1UzMiBuRmlyc3RNQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgT01YX1UzMiBuTnVtTUJzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gT01YX1ZJREVPX1BBUkFNX1ZJREVPRkFTVFVQREFURVRZUEU7CisKKworLyoqIAorICogRW51bWVyYXRpb24gb2YgcG9zc2libGUgYml0cmF0ZSBjb250cm9sIHR5cGVzIAorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX0NPTlRST0xSQVRFVFlQRSB7CisgICAgT01YX1ZpZGVvX0NvbnRyb2xSYXRlRGlzYWJsZSwKKyAgICBPTVhfVmlkZW9fQ29udHJvbFJhdGVWYXJpYWJsZSwKKyAgICBPTVhfVmlkZW9fQ29udHJvbFJhdGVDb25zdGFudCwKKyAgICBPTVhfVmlkZW9fQ29udHJvbFJhdGVWYXJpYWJsZVNraXBGcmFtZXMsCisgICAgT01YX1ZpZGVvX0NvbnRyb2xSYXRlQ29uc3RhbnRTa2lwRnJhbWVzLAorICAgIE9NWF9WaWRlb19Db250cm9sUmF0ZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfVmlkZW9fQ29udHJvbFJhdGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WaWRlb19Db250cm9sUmF0ZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1ZJREVPX0NPTlRST0xSQVRFVFlQRTsKKworCisvKiogCisgKiBTdHJ1Y3R1cmUgZm9yIGNvbmZpZ3VyaW5nIGJpdHJhdGUgbW9kZSBvZiBhIGNvZGVjLiAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdCBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgIDogT01YIHNwZWMgdmVyc2lvbiBpbmZvCisgKiAgblBvcnRJbmRleCAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3QgYXBwbGllcyB0bworICogIGVDb250cm9sUmF0ZSAgIDogQ29udHJvbCByYXRlIHR5cGUgZW51bQorICogIG5UYXJnZXRCaXRyYXRlIDogVGFyZ2V0IGJpdHJhdGUgdG8gZW5jb2RlIHdpdGgKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX0JJVFJBVEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgICAgICAgICAgIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgICAgICAgICAgICAKKyAgICBPTVhfVklERU9fQ09OVFJPTFJBVEVUWVBFIGVDb250cm9sUmF0ZTsgCisgICAgT01YX1UzMiBuVGFyZ2V0Qml0cmF0ZTsgICAgICAgICAgICAgICAgIAorfSBPTVhfVklERU9fUEFSQU1fQklUUkFURVRZUEU7CisKKworLyoqIAorICogRW51bWVyYXRpb24gb2YgcG9zc2libGUgbW90aW9uIHZlY3RvciAoTVYpIHR5cGVzIAorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX01PVElPTlZFQ1RPUlRZUEUgeworICAgIE9NWF9WaWRlb19Nb3Rpb25WZWN0b3JQaXhlbCwKKyAgICBPTVhfVmlkZW9fTW90aW9uVmVjdG9ySGFsZlBlbCwKKyAgICBPTVhfVmlkZW9fTW90aW9uVmVjdG9yUXVhcnRlclBlbCwKKyAgICBPTVhfVmlkZW9fTW90aW9uVmVjdG9yRWlnaHRoUGVsLAorICAgIE9NWF9WaWRlb19Nb3Rpb25WZWN0b3JLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZpZGVvX01vdGlvblZlY3RvclZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZpZGVvX01vdGlvblZlY3Rvck1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1ZJREVPX01PVElPTlZFQ1RPUlRZUEU7CisKKworLyoqCisgKiBTdHJ1Y3R1cmUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBudW1iZXIgb2YgbW90aW9uIHZlY3RvcnMgdXNlZCBhcyB3ZWxsCisgKiBhcyB0aGVpciBhY2N1cmFjeS4KKyAqIAorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdCBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICAgOiBPTVggc3BlYyB2ZXJzaW9uIGluZm8KKyAqICBuUG9ydEluZGV4ICAgICAgIDogcG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBlQWNjdXJhY3kgICAgICAgIDogRW51bWVyYXRlZCBNViBhY2N1cmFjeQorICogIGJVbnJlc3RyaWN0ZWRNVnMgOiBBbGxvdyB1bnJlc3RyaWN0ZWQgTVZzCisgKiAgYkZvdXJNViAgICAgICAgICA6IEFsbG93IHVzZSBvZiA0IE1WcworICogIHNYU2VhcmNoUmFuZ2UgICAgOiBTZWFyY2ggcmFuZ2UgaW4gaG9yaXpvbnRhbCBkaXJlY3Rpb24gZm9yIE1WcworICogIHNZU2VhcmNoUmFuZ2UgICAgOiBTZWFyY2ggcmFuZ2UgaW4gdmVydGljYWwgZGlyZWN0aW9uIGZvciBNVnMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX01PVElPTlZFQ1RPUlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVklERU9fTU9USU9OVkVDVE9SVFlQRSBlQWNjdXJhY3k7CisgICAgT01YX0JPT0wgYlVucmVzdHJpY3RlZE1WczsKKyAgICBPTVhfQk9PTCBiRm91ck1WOworICAgIE9NWF9TMzIgc1hTZWFyY2hSYW5nZTsKKyAgICBPTVhfUzMyIHNZU2VhcmNoUmFuZ2U7Cit9IE9NWF9WSURFT19QQVJBTV9NT1RJT05WRUNUT1JUWVBFOworCisKKy8qKiAKKyAqIEVudW1lcmF0aW9uIG9mIHBvc3NpYmxlIG1ldGhvZHMgdG8gdXNlIGZvciBJbnRyYSBSZWZyZXNoIAorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX0lOVFJBUkVGUkVTSFRZUEUgeworICAgIE9NWF9WSURFT19JbnRyYVJlZnJlc2hDeWNsaWMsCisgICAgT01YX1ZJREVPX0ludHJhUmVmcmVzaEFkYXB0aXZlLAorICAgIE9NWF9WSURFT19JbnRyYVJlZnJlc2hCb3RoLAorICAgIE9NWF9WSURFT19JbnRyYVJlZnJlc2hLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX0ludHJhUmVmcmVzaFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX0ludHJhUmVmcmVzaE1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1ZJREVPX0lOVFJBUkVGUkVTSFRZUEU7CisKKworLyoqCisgKiBTdHJ1Y3R1cmUgZm9yIGNvbmZpZ3VyaW5nIGludHJhIHJlZnJlc2ggbW9kZSAKKyAqIAorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgZVJlZnJlc2hNb2RlIDogQ3ljbGljLCBBZGFwdGl2ZSwgb3IgQm90aAorICogIG5BaXJNQnMgICAgICA6IE51bWJlciBvZiBpbnRyYSBtYWNyb2Jsb2NrcyB0byByZWZyZXNoIGluIGEgZnJhbWUgd2hlbiAKKyAqICAgICAgICAgICAgICAgICBBSVIgaXMgZW5hYmxlZAorICogIG5BaXJSZWYgICAgICA6IE51bWJlciBvZiB0aW1lcyBhIG1vdGlvbiBtYXJrZWQgbWFjcm9ibG9jayBoYXMgdG8gYmUgIAorICogICAgICAgICAgICAgICAgIGludHJhIGNvZGVkCisgKiAgbkNpck1CcyAgICAgIDogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIG1hY3JvYmxvY2tzIHRvIGJlIGNvZGVkIGFzICJpbnRyYSIgIAorICogICAgICAgICAgICAgICAgIHdoZW4gQ0lSIGlzIGVuYWJsZWQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX0lOVFJBUkVGUkVTSFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVklERU9fSU5UUkFSRUZSRVNIVFlQRSBlUmVmcmVzaE1vZGU7CisgICAgT01YX1UzMiBuQWlyTUJzOworICAgIE9NWF9VMzIgbkFpclJlZjsKKyAgICBPTVhfVTMyIG5DaXJNQnM7Cit9IE9NWF9WSURFT19QQVJBTV9JTlRSQVJFRlJFU0hUWVBFOworCisKKy8qKgorICogU3RydWN0dXJlIGZvciBlbmFibGluZyB2YXJpb3VzIGVycm9yIGNvcnJlY3Rpb24gbWV0aG9kcyBmb3IgdmlkZW8gCisgKiBjb21wcmVzc2lvbi4KKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICAgICAgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgICAgICAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAKKyAqICBuUG9ydEluZGV4ICAgICAgICAgICAgICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvIAorICogIGJFbmFibGVIRUMgICAgICAgICAgICAgIDogRW5hYmxlL2Rpc2FibGUgaGVhZGVyIGV4dGVuc2lvbiBjb2RlcyAoSEVDKQorICogIGJFbmFibGVSZXN5bmMgICAgICAgICAgIDogRW5hYmxlL2Rpc2FibGUgcmVzeW5jaHJvbml6YXRpb24gbWFya2VycworICogIG5SZXN5bmNoTWFya2VyU3BhY2luZyAgIDogUmVzeW5jaCBtYXJrZXJzIGludGVydmFsIChpbiBiaXRzKSB0byBiZSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZWQgaW4gdGhlIHN0cmVhbSAKKyAqICBiRW5hYmxlRGF0YVBhcnRpdGlvbmluZyA6IEVuYWJsZS9kaXNhYmxlIGRhdGEgcGFydGl0aW9uaW5nIAorICogIGJFbmFibGVSVkxDICAgICAgICAgICAgIDogRW5hYmxlL2Rpc2FibGUgcmV2ZXJzaWJsZSB2YXJpYWJsZSBsZW5ndGggCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RpbmcKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX0VSUk9SQ09SUkVDVElPTlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfQk9PTCBiRW5hYmxlSEVDOworICAgIE9NWF9CT09MIGJFbmFibGVSZXN5bmM7CisgICAgT01YX1UzMiAgblJlc3luY2hNYXJrZXJTcGFjaW5nOworICAgIE9NWF9CT09MIGJFbmFibGVEYXRhUGFydGl0aW9uaW5nOworICAgIE9NWF9CT09MIGJFbmFibGVSVkxDOworfSBPTVhfVklERU9fUEFSQU1fRVJST1JDT1JSRUNUSU9OVFlQRTsKKworCisvKiogCisgKiBDb25maWd1cmF0aW9uIG9mIHZhcmlhYmxlIGJsb2NrLXNpemUgbW90aW9uIGNvbXBlbnNhdGlvbiAoVkJTTUMpIAorICogCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgYjE2eDE2ICAgICA6IEVuYWJsZSBpbnRlciBibG9jayBzZWFyY2ggMTZ4MTYKKyAqICBiMTZ4OCAgICAgIDogRW5hYmxlIGludGVyIGJsb2NrIHNlYXJjaCAxNng4CisgKiAgYjh4MTYgICAgICA6IEVuYWJsZSBpbnRlciBibG9jayBzZWFyY2ggOHgxNgorICogIGI4eDggICAgICAgOiBFbmFibGUgaW50ZXIgYmxvY2sgc2VhcmNoIDh4OAorICogIGI4eDQgICAgICAgOiBFbmFibGUgaW50ZXIgYmxvY2sgc2VhcmNoIDh4NAorICogIGI0eDggICAgICAgOiBFbmFibGUgaW50ZXIgYmxvY2sgc2VhcmNoIDR4OAorICogIGI0eDQgICAgICAgOiBFbmFibGUgaW50ZXIgYmxvY2sgc2VhcmNoIDR4NAorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fVkJTTUNUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247IAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgCisgICAgT01YX0JPT0wgYjE2eDE2OyAKKyAgICBPTVhfQk9PTCBiMTZ4ODsgCisgICAgT01YX0JPT0wgYjh4MTY7CisgICAgT01YX0JPT0wgYjh4ODsKKyAgICBPTVhfQk9PTCBiOHg0OworICAgIE9NWF9CT09MIGI0eDg7CisgICAgT01YX0JPT0wgYjR4NDsKK30gT01YX1ZJREVPX1BBUkFNX1ZCU01DVFlQRTsKKworCisvKiogCisgKiBILjI2MyBwcm9maWxlIHR5cGVzLCBlYWNoIHByb2ZpbGUgaW5kaWNhdGVzIHN1cHBvcnQgZm9yIHZhcmlvdXMgCisgKiBwZXJmb3JtYW5jZSBib3VuZHMgYW5kIGRpZmZlcmVudCBhbm5leGVzLgorICoKKyAqIEVOVU1TOgorICogIEJhc2VsaW5lICAgICAgICAgICA6IEJhc2VsaW5lIFByb2ZpbGU6IEguMjYzIChWMSksIG5vIG9wdGlvbmFsIG1vZGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICogIEgzMjAgQ29kaW5nICAgICAgICA6IEguMzIwIENvZGluZyBFZmZpY2llbmN5IEJhY2t3YXJkIENvbXBhdGliaWxpdHkgCisgKiAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZTogSC4yNjMrIChWMiksIGluY2x1ZGVzIGFubmV4ZXMgSSwgSiwgTC40CisgKiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFQKKyAqICBCYWNrd2FyZENvbXBhdGlibGUgOiBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IFByb2ZpbGU6IEguMjYzIChWMSksIAorICogICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGFubmV4IEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqICBJU1dWMiAgICAgICAgICAgICAgOiBJbnRlcmFjdGl2ZSBTdHJlYW1pbmcgV2lyZWxlc3MgUHJvZmlsZTogSC4yNjMrIAorICogICAgICAgICAgICAgICAgICAgICAgIChWMiksIGluY2x1ZGVzIGFubmV4ZXMgSSwgSiwgSyBhbmQgVCAgICAgICAgICAgICAgICAgCisgKiAgSVNXVjMgICAgICAgICAgICAgIDogSW50ZXJhY3RpdmUgU3RyZWFtaW5nIFdpcmVsZXNzIFByb2ZpbGU6IEguMjYzKysgIAorICogICAgICAgICAgICAgICAgICAgICAgIChWMyksIGluY2x1ZGVzIHByb2ZpbGUgMyBhbmQgYW5uZXhlcyBWIGFuZCBXLjYuMy44ICAgCisgKiAgSGlnaENvbXByZXNzaW9uICAgIDogQ29udmVyc2F0aW9uYWwgSGlnaCBDb21wcmVzc2lvbiBQcm9maWxlOiBILjI2MysrICAKKyAqICAgICAgICAgICAgICAgICAgICAgICAoVjMpLCBpbmNsdWRlcyBwcm9maWxlcyAxICYgMiBhbmQgYW5uZXhlcyBEIGFuZCBVICAgCisgKiAgSW50ZXJuZXQgICAgICAgICAgIDogQ29udmVyc2F0aW9uYWwgSW50ZXJuZXQgUHJvZmlsZTogSC4yNjMrKyAoVjMpLCAgCisgKiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgcHJvZmlsZSA1IGFuZCBhbm5leCBLICAgICAgICAgICAgICAgICAgICAgICAKKyAqICBJbnRlcmxhY2UgICAgICAgICAgOiBDb252ZXJzYXRpb25hbCBJbnRlcmxhY2UgUHJvZmlsZTogSC4yNjMrKyAoVjMpLCAgCisgKiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgcHJvZmlsZSA1IGFuZCBhbm5leCBXLjYuMy4xMSAgICAgICAgICAgICAgIAorICogIEhpZ2hMYXRlbmN5ICAgICAgICA6IEhpZ2ggTGF0ZW5jeSBQcm9maWxlOiBILjI2MysrIChWMyksIGluY2x1ZGVzICAKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlIDYgYW5kIGFubmV4ZXMgTy4xIGFuZCBQLjUgICAgICAgICAgICAgICAgICAgICAgIAorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX0gyNjNQUk9GSUxFVFlQRSB7CisgICAgT01YX1ZJREVPX0gyNjNQcm9maWxlQmFzZWxpbmUgICAgICAgICAgICA9IDB4MDEsICAgICAgICAKKyAgICBPTVhfVklERU9fSDI2M1Byb2ZpbGVIMzIwQ29kaW5nICAgICAgICAgID0gMHgwMiwgICAgICAgICAgCisgICAgT01YX1ZJREVPX0gyNjNQcm9maWxlQmFja3dhcmRDb21wYXRpYmxlICA9IDB4MDQsICAKKyAgICBPTVhfVklERU9fSDI2M1Byb2ZpbGVJU1dWMiAgICAgICAgICAgICAgID0gMHgwOCwgICAgICAgICAgICAgICAKKyAgICBPTVhfVklERU9fSDI2M1Byb2ZpbGVJU1dWMyAgICAgICAgICAgICAgID0gMHgxMCwgICAgICAgICAgICAgICAKKyAgICBPTVhfVklERU9fSDI2M1Byb2ZpbGVIaWdoQ29tcHJlc3Npb24gICAgID0gMHgyMCwgICAgIAorICAgIE9NWF9WSURFT19IMjYzUHJvZmlsZUludGVybmV0ICAgICAgICAgICAgPSAweDQwLCAgICAgICAgICAgIAorICAgIE9NWF9WSURFT19IMjYzUHJvZmlsZUludGVybGFjZSAgICAgICAgICAgPSAweDgwLCAgICAgICAgICAgCisgICAgT01YX1ZJREVPX0gyNjNQcm9maWxlSGlnaExhdGVuY3kgICAgICAgICA9IDB4MTAwLCAgICAgICAgIAorICAgIE9NWF9WSURFT19IMjYzUHJvZmlsZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfVklERU9fSDI2M1Byb2ZpbGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19IMjYzUHJvZmlsZU1heCAgICAgICAgICAgICAgICAgPSAweDdGRkZGRkZGICAKK30gT01YX1ZJREVPX0gyNjNQUk9GSUxFVFlQRTsKKworCisvKiogCisgKiBILjI2MyBsZXZlbCB0eXBlcywgZWFjaCBsZXZlbCBpbmRpY2F0ZXMgc3VwcG9ydCBmb3IgdmFyaW91cyBmcmFtZSBzaXplcywgCisgKiBiaXQgcmF0ZXMsIGRlY29kZXIgZnJhbWUgcmF0ZXMuCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fSDI2M0xFVkVMVFlQRSB7CisgICAgT01YX1ZJREVPX0gyNjNMZXZlbDEwICA9IDB4MDEsICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsMjAgID0gMHgwMiwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsMzAgID0gMHgwNCwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsNDAgID0gMHgwOCwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsNDUgID0gMHgxMCwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsNTAgID0gMHgyMCwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsNjAgID0gMHg0MCwgICAgICAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsNzAgID0gMHg4MCwgCisgICAgT01YX1ZJREVPX0gyNjNMZXZlbEtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfVklERU9fSDI2M0xldmVsVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfVklERU9fSDI2M0xldmVsTWF4ID0gMHg3RkZGRkZGRiAgCit9IE9NWF9WSURFT19IMjYzTEVWRUxUWVBFOworCisKKy8qKiAKKyAqIFNwZWNpZmllcyB0aGUgcGljdHVyZSB0eXBlLiBUaGVzZSB2YWx1ZXMgc2hvdWxkIGJlIE9SJ2QgdG8gc2lnbmFsIGFsbCAKKyAqIHBpY3R1cmVzIHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkLgorICoKKyAqIEVOVU1TOgorICogIEdlbmVyaWMgUGljdHVyZSBUeXBlczogICAgICAgICAgSSwgUCBhbmQgQgorICogIEguMjYzIFNwZWNpZmljIFBpY3R1cmUgVHlwZXM6ICAgU0kgYW5kIFNQCisgKiAgSC4yNjQgU3BlY2lmaWMgUGljdHVyZSBUeXBlczogICBFSSBhbmQgRVAKKyAqICBNUEVHLTQgU3BlY2lmaWMgUGljdHVyZSBUeXBlczogIFMKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9WSURFT19QSUNUVVJFVFlQRSB7CisgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlSSAgID0gMHgwMSwKKyAgICBPTVhfVklERU9fUGljdHVyZVR5cGVQICAgPSAweDAyLAorICAgIE9NWF9WSURFT19QaWN0dXJlVHlwZUIgICA9IDB4MDQsCisgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlU0kgID0gMHgwOCwKKyAgICBPTVhfVklERU9fUGljdHVyZVR5cGVTUCAgPSAweDEwLAorICAgIE9NWF9WSURFT19QaWN0dXJlVHlwZUVJICA9IDB4MTEsCisgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlRVAgID0gMHgxMiwKKyAgICBPTVhfVklERU9fUGljdHVyZVR5cGVTICAgPSAweDE0LAorICAgIE9NWF9WSURFT19QaWN0dXJlVHlwZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfVklERU9fUGljdHVyZVR5cGVWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19QaWN0dXJlVHlwZU1heCA9IDB4N0ZGRkZGRkYKK30gT01YX1ZJREVPX1BJQ1RVUkVUWVBFOworCisKKy8qKiAKKyAqIEguMjYzIFBhcmFtcyAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICAgICAgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgICAgICAgICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uIAorICogIG5Qb3J0SW5kZXggICAgICAgICAgICAgICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgblBGcmFtZXMgICAgICAgICAgICAgICAgIDogTnVtYmVyIG9mIFAgZnJhbWVzIGJldHdlZW4gZWFjaCBJIGZyYW1lCisgKiAgbkJGcmFtZXMgICAgICAgICAgICAgICAgIDogTnVtYmVyIG9mIEIgZnJhbWVzIGJldHdlZW4gZWFjaCBJIGZyYW1lCisgKiAgZVByb2ZpbGUgICAgICAgICAgICAgICAgIDogSC4yNjMgcHJvZmlsZShzKSB0byB1c2UKKyAqICBlTGV2ZWwgICAgICAgICAgICAgICAgICAgOiBILjI2MyBsZXZlbChzKSB0byB1c2UKKyAqICBiUExVU1BUWVBFQWxsb3dlZCAgICAgICAgOiBJbmRpY2F0aW5nIHRoYXQgaXQgaXMgYWxsb3dlZCB0byB1c2UgUExVU1BUWVBFIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjaWZpZWQgaW4gdGhlIDE5OTggdmVyc2lvbiBvZiBILjI2MykgdG8gCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGUgY3VzdG9tIHBpY3R1cmUgc2l6ZXMgb3IgY2xvY2sgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmNpZXMgCisgKiAgbkFsbG93ZWRQaWN0dXJlVHlwZXMgICAgIDogU3BlY2lmaWVzIHRoZSBwaWN0dXJlIHR5cGVzIGFsbG93ZWQgaW4gdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHN0cmVhbQorICogIGJGb3JjZVJvdW5kaW5nVHlwZVRvWmVybyA6IHZhbHVlIG9mIHRoZSBSVFlQRSBiaXQgKGJpdCA2IG9mIE1QUFRZUEUpIGlzIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBjb25zdHJhaW5lZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gY2hhbmdlIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgUlRZUEUgYml0IGZvciBlYWNoIHJlZmVyZW5jZSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWN0dXJlIGluIGVycm9yLWZyZWUgY29tbXVuaWNhdGlvbgorICogIG5QaWN0dXJlSGVhZGVyUmVwZXRpdGlvbiA6IFNwZWNpZmllcyB0aGUgZnJlcXVlbmN5IG9mIHBpY3R1cmUgaGVhZGVyIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGV0aXRpb24KKyAqICBuR09CSGVhZGVySW50ZXJ2YWwgICAgICAgOiBTcGVjaWZpZXMgdGhlIGludGVydmFsIG9mIG5vbi1lbXB0eSBHT0IgIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgaW4gdW5pdHMgb2YgR09CcworICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fSDI2M1RZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5QRnJhbWVzOworICAgIE9NWF9VMzIgbkJGcmFtZXM7CisgICAgT01YX1ZJREVPX0gyNjNQUk9GSUxFVFlQRSBlUHJvZmlsZTsKKwlPTVhfVklERU9fSDI2M0xFVkVMVFlQRSBlTGV2ZWw7CisgICAgT01YX0JPT0wgYlBMVVNQVFlQRUFsbG93ZWQ7CisgICAgT01YX1UzMiBuQWxsb3dlZFBpY3R1cmVUeXBlczsKKyAgICBPTVhfQk9PTCBiRm9yY2VSb3VuZGluZ1R5cGVUb1plcm87CisgICAgT01YX1UzMiBuUGljdHVyZUhlYWRlclJlcGV0aXRpb247CisgICAgT01YX1UzMiBuR09CSGVhZGVySW50ZXJ2YWw7Cit9IE9NWF9WSURFT19QQVJBTV9IMjYzVFlQRTsKKworCisvKiogCisgKiBNUEVHLTIgcHJvZmlsZSB0eXBlcywgZWFjaCBwcm9maWxlIGluZGljYXRlcyBzdXBwb3J0IGZvciB2YXJpb3VzIAorICogcGVyZm9ybWFuY2UgYm91bmRzIGFuZCBkaWZmZXJlbnQgYW5uZXhlcy4KKyAqLwordHlwZWRlZiBlbnVtIE9NWF9WSURFT19NUEVHMlBST0ZJTEVUWVBFIHsKKyAgICBPTVhfVklERU9fTVBFRzJQcm9maWxlU2ltcGxlID0gMCwgIC8qKjwgU2ltcGxlIFByb2ZpbGUgKi8KKyAgICBPTVhfVklERU9fTVBFRzJQcm9maWxlTWFpbiwgICAgICAgIC8qKjwgTWFpbiBQcm9maWxlICovCisgICAgT01YX1ZJREVPX01QRUcyUHJvZmlsZTQyMiwgICAgICAgICAvKio8IDQ6MjoyIFByb2ZpbGUgKi8KKyAgICBPTVhfVklERU9fTVBFRzJQcm9maWxlU05SLCAgICAgICAgIC8qKjwgU05SIFByb2ZpbGUgKi8KKyAgICBPTVhfVklERU9fTVBFRzJQcm9maWxlU3BhdGlhbCwgICAgIC8qKjwgU3BhdGlhbCBQcm9maWxlICovCisgICAgT01YX1ZJREVPX01QRUcyUHJvZmlsZUhpZ2gsICAgICAgICAvKio8IEhpZ2ggUHJvZmlsZSAqLworICAgIE9NWF9WSURFT19NUEVHMlByb2ZpbGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX01QRUcyUHJvZmlsZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX01QRUcyUHJvZmlsZU1heCA9IDB4N0ZGRkZGRkYgIAorfSBPTVhfVklERU9fTVBFRzJQUk9GSUxFVFlQRTsKKworCisvKiogCisgKiBNUEVHLTIgbGV2ZWwgdHlwZXMsIGVhY2ggbGV2ZWwgaW5kaWNhdGVzIHN1cHBvcnQgZm9yIHZhcmlvdXMgZnJhbWUgCisgKiBzaXplcywgYml0IHJhdGVzLCBkZWNvZGVyIGZyYW1lIHJhdGVzLiAgTm8gbmVlZCAKKyAqLwordHlwZWRlZiBlbnVtIE9NWF9WSURFT19NUEVHMkxFVkVMVFlQRSB7CisgICAgT01YX1ZJREVPX01QRUcyTGV2ZWxMTCA9IDAsICAvKio8IExvdyBMZXZlbCAqLyAKKyAgICBPTVhfVklERU9fTVBFRzJMZXZlbE1MLCAgICAgIC8qKjwgTWFpbiBMZXZlbCAqLyAKKyAgICBPTVhfVklERU9fTVBFRzJMZXZlbEgxNCwgICAgIC8qKjwgSGlnaCAxNDQwICovIAorICAgIE9NWF9WSURFT19NUEVHMkxldmVsSEwsICAgICAgLyoqPCBIaWdoIExldmVsICovICAgCisgICAgT01YX1ZJREVPX01QRUcyTGV2ZWxLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX01QRUcyTGV2ZWxWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19NUEVHMkxldmVsTWF4ID0gMHg3RkZGRkZGRiAgCit9IE9NWF9WSURFT19NUEVHMkxFVkVMVFlQRTsKKworCisvKiogCisgKiBNUEVHLTIgcGFyYW1zIAorICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIG5QRnJhbWVzICAgOiBOdW1iZXIgb2YgUCBmcmFtZXMgYmV0d2VlbiBlYWNoIEkgZnJhbWUKKyAqICBuQkZyYW1lcyAgIDogTnVtYmVyIG9mIEIgZnJhbWVzIGJldHdlZW4gZWFjaCBJIGZyYW1lCisgKiAgZVByb2ZpbGUgICA6IE1QRUctMiBwcm9maWxlKHMpIHRvIHVzZQorICogIGVMZXZlbCAgICAgOiBNUEVHLTIgbGV2ZWxzKHMpIHRvIHVzZQorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fTVBFRzJUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAKKyAgICBPTVhfVTMyIG5QRnJhbWVzOyAgICAgICAgCisgICAgT01YX1UzMiBuQkZyYW1lczsgICAgICAgIAorICAgIE9NWF9WSURFT19NUEVHMlBST0ZJTEVUWVBFIGVQcm9maWxlOworCU9NWF9WSURFT19NUEVHMkxFVkVMVFlQRSBlTGV2ZWw7ICAgCit9IE9NWF9WSURFT19QQVJBTV9NUEVHMlRZUEU7CisKKworLyoqIAorICogTVBFRy00IHByb2ZpbGUgdHlwZXMsIGVhY2ggcHJvZmlsZSBpbmRpY2F0ZXMgc3VwcG9ydCBmb3IgdmFyaW91cyAKKyAqIHBlcmZvcm1hbmNlIGJvdW5kcyBhbmQgZGlmZmVyZW50IGFubmV4ZXMuCisgKiAKKyAqIEVOVU1TOgorICogIC0gU2ltcGxlIFByb2ZpbGUsIExldmVscyAxLTMKKyAqICAtIFNpbXBsZSBTY2FsYWJsZSBQcm9maWxlLCBMZXZlbHMgMS0yCisgKiAgLSBDb3JlIFByb2ZpbGUsIExldmVscyAxLTIKKyAqICAtIE1haW4gUHJvZmlsZSwgTGV2ZWxzIDItNAorICogIC0gTi1iaXQgUHJvZmlsZSwgTGV2ZWwgMgorICogIC0gU2NhbGFibGUgVGV4dHVyZSBQcm9maWxlLCBMZXZlbCAxCisgKiAgLSBTaW1wbGUgRmFjZSBBbmltYXRpb24gUHJvZmlsZSwgTGV2ZWxzIDEtMgorICogIC0gU2ltcGxlIEZhY2UgYW5kIEJvZHkgQW5pbWF0aW9uIChGQkEpIFByb2ZpbGUsIExldmVscyAxLTIKKyAqICAtIEJhc2ljIEFuaW1hdGVkIFRleHR1cmUgUHJvZmlsZSwgTGV2ZWxzIDEtMgorICogIC0gSHlicmlkIFByb2ZpbGUsIExldmVscyAxLTIKKyAqICAtIEFkdmFuY2VkIFJlYWwgVGltZSBTaW1wbGUgUHJvZmlsZXMsIExldmVscyAxLTQKKyAqICAtIENvcmUgU2NhbGFibGUgUHJvZmlsZSwgTGV2ZWxzIDEtMworICogIC0gQWR2YW5jZWQgQ29kaW5nIEVmZmljaWVuY3kgUHJvZmlsZSwgTGV2ZWxzIDEtNAorICogIC0gQWR2YW5jZWQgQ29yZSBQcm9maWxlLCBMZXZlbHMgMS0yCisgKiAgLSBBZHZhbmNlZCBTY2FsYWJsZSBUZXh0dXJlLCBMZXZlbHMgMi0zCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fTVBFRzRQUk9GSUxFVFlQRSB7CisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZVNpbXBsZSAgICAgICAgICAgPSAweDAxLCAgICAgICAgCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZVNpbXBsZVNjYWxhYmxlICAgPSAweDAyLCAgICAKKyAgICBPTVhfVklERU9fTVBFRzRQcm9maWxlQ29yZSAgICAgICAgICAgICA9IDB4MDQsICAgICAgICAgICAgICAKKyAgICBPTVhfVklERU9fTVBFRzRQcm9maWxlTWFpbiAgICAgICAgICAgICA9IDB4MDgsICAgICAgICAgICAgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVOYml0ICAgICAgICAgICAgID0gMHgxMCwgICAgICAgICAgICAgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVTY2FsYWJsZVRleHR1cmUgID0gMHgyMCwgICAKKyAgICBPTVhfVklERU9fTVBFRzRQcm9maWxlU2ltcGxlRmFjZSAgICAgICA9IDB4NDAsICAgICAgICAKKyAgICBPTVhfVklERU9fTVBFRzRQcm9maWxlU2ltcGxlRkJBICAgICAgICA9IDB4ODAsICAgICAgICAgCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZUJhc2ljQW5pbWF0ZWQgICAgPSAweDEwMCwgICAgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVIeWJyaWQgICAgICAgICAgID0gMHgyMDAsICAgICAgICAgICAgCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZUFkdmFuY2VkUmVhbFRpbWUgPSAweDQwMCwgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVDb3JlU2NhbGFibGUgICAgID0gMHg4MDAsICAgICAgCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZUFkdmFuY2VkQ29kaW5nICAgPSAweDEwMDAsICAgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVBZHZhbmNlZENvcmUgICAgID0gMHgyMDAwLCAgICAgIAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVBZHZhbmNlZFNjYWxhYmxlID0gMHg0MDAwLAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVBZHZhbmNlZFNpbXBsZSAgID0gMHg4MDAwLAorICAgIE9NWF9WSURFT19NUEVHNFByb2ZpbGVLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX01QRUc0UHJvZmlsZU1heCAgICAgICAgICAgICAgPSAweDdGRkZGRkZGICAKK30gT01YX1ZJREVPX01QRUc0UFJPRklMRVRZUEU7CisKKworLyoqIAorICogTVBFRy00IGxldmVsIHR5cGVzLCBlYWNoIGxldmVsIGluZGljYXRlcyBzdXBwb3J0IGZvciB2YXJpb3VzIGZyYW1lIAorICogc2l6ZXMsIGJpdCByYXRlcywgZGVjb2RlciBmcmFtZSByYXRlcy4gIE5vIG5lZWQgCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fTVBFRzRMRVZFTFRZUEUgeworICAgIE9NWF9WSURFT19NUEVHNExldmVsMCAgPSAweDAxLCAgIC8qKjwgTGV2ZWwgMCAqLyAgIAorICAgIE9NWF9WSURFT19NUEVHNExldmVsMGIgPSAweDAyLCAgIC8qKjwgTGV2ZWwgMGIgKi8gICAKKyAgICBPTVhfVklERU9fTVBFRzRMZXZlbDEgID0gMHgwNCwgICAvKio8IExldmVsIDEgKi8gCisgICAgT01YX1ZJREVPX01QRUc0TGV2ZWwyICA9IDB4MDgsICAgLyoqPCBMZXZlbCAyICovIAorICAgIE9NWF9WSURFT19NUEVHNExldmVsMyAgPSAweDEwLCAgIC8qKjwgTGV2ZWwgMyAqLyAKKyAgICBPTVhfVklERU9fTVBFRzRMZXZlbDQgID0gMHgyMCwgICAvKio8IExldmVsIDQgKi8gIAorICAgIE9NWF9WSURFT19NUEVHNExldmVsNGEgPSAweDQwLCAgIC8qKjwgTGV2ZWwgNGEgKi8gIAorICAgIE9NWF9WSURFT19NUEVHNExldmVsNSAgPSAweDgwLCAgIC8qKjwgTGV2ZWwgNSAqLyAgCisgICAgT01YX1ZJREVPX01QRUc0TGV2ZWxLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX01QRUc0TGV2ZWxWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19NUEVHNExldmVsTWF4ID0gMHg3RkZGRkZGRiAgCit9IE9NWF9WSURFT19NUEVHNExFVkVMVFlQRTsKKworCisvKiogCisgKiBNUEVHLTQgY29uZmlndXJhdGlvbi4gIFRoaXMgc3RydWN0dXJlIGhhbmRsZXMgY29uZmlndXJhdGlvbiBvcHRpb25zCisgKiB3aGljaCBhcmUgc3BlY2lmaWMgdG8gTVBFRzQgYWxnb3JpdGhtcworICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICAgICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uCisgKiAgblBvcnRJbmRleCAgICAgICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIG5TbGljZUhlYWRlclNwYWNpbmcgIDogTnVtYmVyIG9mIG1hY3JvYmxvY2tzIGJldHdlZW4gc2xpY2UgaGVhZGVyIChIMjYzKyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIEFubmV4IEspLiBQdXQgemVybyBpZiBub3QgdXNlZAorICogIGJTVkggICAgICAgICAgICAgICAgIDogRW5hYmxlIFNob3J0IFZpZGVvIEhlYWRlciBtb2RlCisgKiAgYkdvdiAgICAgICAgICAgICAgICAgOiBGbGFnIHRvIGVuYWJsZSBHT1YKKyAqICBuUEZyYW1lcyAgICAgICAgICAgICA6IE51bWJlciBvZiBQIGZyYW1lcyBiZXR3ZWVuIGVhY2ggSSBmcmFtZSAoYWxzbyBjYWxsZWQgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBHT1YgcGVyaW9kKQorICogIG5CRnJhbWVzICAgICAgICAgICAgIDogTnVtYmVyIG9mIEIgZnJhbWVzIGJldHdlZW4gZWFjaCBJIGZyYW1lCisgKiAgbklEQ1ZMQ1RocmVzaG9sZCAgICAgOiBWYWx1ZSBvZiBpbnRyYSBEQyBWTEMgdGhyZXNob2xkCisgKiAgYkFDUHJlZCAgICAgICAgICAgICAgOiBGbGFnIHRvIHVzZSBhYyBwcmVkaWN0aW9uCisgKiAgbk1heFBhY2tldFNpemUgICAgICAgOiBNYXhpbXVtIHNpemUgb2YgcGFja2V0IGluIGJ5dGVzLgorICogIG5UaW1lSW5jUmVzICAgICAgICAgIDogVXNlZCB0byBwYXNzIFZPUCB0aW1lIGluY3JlbWVudCByZXNvbHV0aW9uIGZvciBNUEVHNC4gCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnByZXRlZCBhcyBkZXNjcmliZWQgaW4gTVBFRzQgc3RhbmRhcmQuCisgKiAgZVByb2ZpbGUgICAgICAgICAgICAgOiBNUEVHLTQgcHJvZmlsZShzKSB0byB1c2UuCisgKiAgZUxldmVsICAgICAgICAgICAgICAgOiBNUEVHLTQgbGV2ZWwocykgdG8gdXNlLgorICogIG5BbGxvd2VkUGljdHVyZVR5cGVzIDogU3BlY2lmaWVzIHRoZSBwaWN0dXJlIHR5cGVzIGFsbG93ZWQgaW4gdGhlIGJpdHN0cmVhbQorICogIG5IZWFkZXJFeHRlbnNpb24gICAgIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgdmlkZW8gcGFja2V0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzIHdpdGhpbiBhIFZPUAorICogIGJSZXZlcnNpYmxlVkxDICAgICAgIDogU3BlY2lmaWVzIHdoZXRoZXIgcmV2ZXJzaWJsZSB2YXJpYWJsZSBsZW5ndGggY29kaW5nIAorICogICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gdXNlCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9WSURFT19QQVJBTV9NUEVHNFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5TbGljZUhlYWRlclNwYWNpbmc7CisgICAgT01YX0JPT0wgYlNWSDsKKyAgICBPTVhfQk9PTCBiR292OworICAgIE9NWF9VMzIgblBGcmFtZXM7CisgICAgT01YX1UzMiBuQkZyYW1lczsKKyAgICBPTVhfVTMyIG5JRENWTENUaHJlc2hvbGQ7CisgICAgT01YX0JPT0wgYkFDUHJlZDsKKyAgICBPTVhfVTMyIG5NYXhQYWNrZXRTaXplOworICAgIE9NWF9VMzIgblRpbWVJbmNSZXM7CisgICAgT01YX1ZJREVPX01QRUc0UFJPRklMRVRZUEUgZVByb2ZpbGU7CisgICAgT01YX1ZJREVPX01QRUc0TEVWRUxUWVBFIGVMZXZlbDsKKyAgICBPTVhfVTMyIG5BbGxvd2VkUGljdHVyZVR5cGVzOworICAgIE9NWF9VMzIgbkhlYWRlckV4dGVuc2lvbjsKKyAgICBPTVhfQk9PTCBiUmV2ZXJzaWJsZVZMQzsKK30gT01YX1ZJREVPX1BBUkFNX01QRUc0VFlQRTsKKworCisvKiogCisgKiBXTVYgVmVyc2lvbnMgCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fV01WRk9STUFUVFlQRSB7CisgICAgT01YX1ZJREVPX1dNVkZvcm1hdFVudXNlZCA9IDB4MDEsICAgLyoqPCBGb3JtYXQgdW51c2VkIG9yIHVua25vd24gKi8KKyAgICBPTVhfVklERU9fV01WRm9ybWF0NyAgICAgID0gMHgwMiwgICAvKio8IFdpbmRvd3MgTWVkaWEgVmlkZW8gZm9ybWF0IDcgKi8KKyAgICBPTVhfVklERU9fV01WRm9ybWF0OCAgICAgID0gMHgwNCwgICAvKio8IFdpbmRvd3MgTWVkaWEgVmlkZW8gZm9ybWF0IDggKi8KKyAgICBPTVhfVklERU9fV01WRm9ybWF0OSAgICAgID0gMHgwOCwgICAvKio8IFdpbmRvd3MgTWVkaWEgVmlkZW8gZm9ybWF0IDkgKi8KKyAgICBPTVhfVklERU9fV01GRm9ybWF0S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9WSURFT19XTUZGb3JtYXRWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19XTVZGb3JtYXRNYXggICAgPSAweDdGRkZGRkZGCit9IE9NWF9WSURFT19XTVZGT1JNQVRUWVBFOworCisKKy8qKiAKKyAqIFdNViBQYXJhbXMgCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICA6IFNpemUgb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcworICogIG5WZXJzaW9uICAgOiBPTVggc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGluZm9ybWF0aW9uCisgKiAgblBvcnRJbmRleCA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgZUZvcm1hdCAgICA6IFZlcnNpb24gb2YgV01WIHN0cmVhbSAvIGRhdGEKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX1dNVlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7IAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1ZJREVPX1dNVkZPUk1BVFRZUEUgZUZvcm1hdDsKK30gT01YX1ZJREVPX1BBUkFNX1dNVlRZUEU7CisKKworLyoqIAorICogUmVhbCBWaWRlbyBWZXJzaW9uIAorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX1JWRk9STUFUVFlQRSB7CisgICAgT01YX1ZJREVPX1JWRm9ybWF0VW51c2VkID0gMCwgLyoqPCBGb3JtYXQgdW51c2VkIG9yIHVua25vd24gKi8KKyAgICBPTVhfVklERU9fUlZGb3JtYXQ4LCAgICAgICAgICAvKio8IFJlYWwgVmlkZW8gZm9ybWF0IDggKi8KKyAgICBPTVhfVklERU9fUlZGb3JtYXQ5LCAgICAgICAgICAvKio8IFJlYWwgVmlkZW8gZm9ybWF0IDkgKi8KKyAgICBPTVhfVklERU9fUlZGb3JtYXRHMiwgICAgICAgICAvKio8IFJlYWwgVmlkZW8gRm9ybWF0IEcyICovCisgICAgT01YX1ZJREVPX1JWRm9ybWF0S2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9WSURFT19SVkZvcm1hdFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX1JWRm9ybWF0TWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfVklERU9fUlZGT1JNQVRUWVBFOworCisKKy8qKiAKKyAqIFJlYWwgVmlkZW8gUGFyYW1zIAorICoKKyAqIFNUVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbiAKKyAqICBuUG9ydEluZGV4ICAgICAgICAgOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIGVGb3JtYXQgICAgICAgICAgICA6IFZlcnNpb24gb2YgUlYgc3RyZWFtIC8gZGF0YQorICogIG5CaXRzUGVyUGl4ZWwgICAgICA6IEJpdHMgcGVyIHBpeGVsIGNvZGVkIGluIHRoZSBmcmFtZQorICogIG5QYWRkZWRXaWR0aCAgICAgICA6IFBhZGRlZCB3aWR0aCBpbiBwaXhlbCBvZiBhIHZpZGVvIGZyYW1lCisgKiAgblBhZGRlZEhlaWdodCAgICAgIDogUGFkZGVkIEhlaWdodCBpbiBwaXhlbHMgb2YgYSB2aWRlbyBmcmFtZQorICogIG5GcmFtZVJhdGUgICAgICAgICA6IFJhdGUgb2YgdmlkZW8gaW4gZnJhbWVzIHBlciBzZWNvbmQKKyAqICBuQml0c3RyZWFtRmxhZ3MgICAgOiBGbGFncyB3aGljaCBpbnRlcm5hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYml0c3RyZWFtCisgKiAgbkJpdHN0cmVhbVZlcnNpb24gIDogQml0c3RyZWFtIHZlcnNpb24KKyAqICBuTWF4RW5jb2RlRnJhbWVTaXplOiBNYXggZW5jb2RlZCBmcmFtZSBzaXplCisgKiAgYkVuYWJsZVBvc3RGaWx0ZXIgIDogVHVybiBvbi9vZmYgcG9zdCBmaWx0ZXIKKyAqICBiRW5hYmxlVGVtcG9yYWxJbnRlcnBvbGF0aW9uIDogVHVybiBvbi9vZmYgdGVtcG9yYWwgaW50ZXJwb2xhdGlvbgorICogIGJFbmFibGVMYXRlbmN5TW9kZSA6IFdoZW4gZW5hYmxlZCwgdGhlIGRlY29kZXIgZG9lcyBub3QgZGlzcGxheSBhIGRlY29kZWQgCisgKiAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgdW50aWwgaXQgaGFzIGRldGVjdGVkIHRoYXQgbm8gZW5oYW5jZW1lbnQgbGF5ZXIgCisgKiAgCQkJCQkgZnJhbWVzIG9yIGRlcGVuZGVudCBCIGZyYW1lcyB3aWxsIGJlIGNvbWluZy4gVGhpcyAKKyAqICAJCQkJCSBkZXRlY3Rpb24gdXN1YWxseSBvY2N1cnMgd2hlbiBhIHN1YnNlcXVlbnQgbm9uLUIgCisgKiAgCQkJCQkgZnJhbWUgaXMgZW5jb3VudGVyZWQgCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9WSURFT19QQVJBTV9SVlRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVklERU9fUlZGT1JNQVRUWVBFIGVGb3JtYXQ7CisgICAgT01YX1UxNiBuQml0c1BlclBpeGVsOworICAgIE9NWF9VMTYgblBhZGRlZFdpZHRoOworICAgIE9NWF9VMTYgblBhZGRlZEhlaWdodDsKKyAgICBPTVhfVTMyIG5GcmFtZVJhdGU7CisgICAgT01YX1UzMiBuQml0c3RyZWFtRmxhZ3M7CisgICAgT01YX1UzMiBuQml0c3RyZWFtVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5NYXhFbmNvZGVGcmFtZVNpemU7CisgICAgT01YX0JPT0wgYkVuYWJsZVBvc3RGaWx0ZXI7CisgICAgT01YX0JPT0wgYkVuYWJsZVRlbXBvcmFsSW50ZXJwb2xhdGlvbjsKKyAgICBPTVhfQk9PTCBiRW5hYmxlTGF0ZW5jeU1vZGU7Cit9IE9NWF9WSURFT19QQVJBTV9SVlRZUEU7CisKKworLyoqIAorICogQVZDIHByb2ZpbGUgdHlwZXMsIGVhY2ggcHJvZmlsZSBpbmRpY2F0ZXMgc3VwcG9ydCBmb3IgdmFyaW91cyAKKyAqIHBlcmZvcm1hbmNlIGJvdW5kcyBhbmQgZGlmZmVyZW50IGFubmV4ZXMuCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fQVZDUFJPRklMRVRZUEUgeworICAgIE9NWF9WSURFT19BVkNQcm9maWxlQmFzZWxpbmUgPSAweDAxLCAgIC8qKjwgQmFzZWxpbmUgcHJvZmlsZSAqLworICAgIE9NWF9WSURFT19BVkNQcm9maWxlTWFpbiAgICAgPSAweDAyLCAgIC8qKjwgTWFpbiBwcm9maWxlICovCisgICAgT01YX1ZJREVPX0FWQ1Byb2ZpbGVFeHRlbmRlZCA9IDB4MDQsICAgLyoqPCBFeHRlbmRlZCBwcm9maWxlICovCisgICAgT01YX1ZJREVPX0FWQ1Byb2ZpbGVIaWdoICAgICA9IDB4MDgsICAgLyoqPCBIaWdoIHByb2ZpbGUgKi8KKyAgICBPTVhfVklERU9fQVZDUHJvZmlsZUhpZ2gxMCAgID0gMHgxMCwgICAvKio8IEhpZ2ggMTAgcHJvZmlsZSAqLworICAgIE9NWF9WSURFT19BVkNQcm9maWxlSGlnaDQyMiAgPSAweDIwLCAgIC8qKjwgSGlnaCA0OjI6MiBwcm9maWxlICovCisgICAgT01YX1ZJREVPX0FWQ1Byb2ZpbGVIaWdoNDQ0ICA9IDB4NDAsICAgLyoqPCBIaWdoIDQ6NDo0IHByb2ZpbGUgKi8KKyAgICBPTVhfVklERU9fQVZDUHJvZmlsZUtocm9ub3NFeHRlbnNpb25zID0gMHg2RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIEtocm9ub3MgU3RhbmRhcmQgRXh0ZW5zaW9ucyAqLyAKKyAgICBPTVhfVklERU9fQVZDUHJvZmlsZVZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX0FWQ1Byb2ZpbGVNYXggICAgICA9IDB4N0ZGRkZGRkYgIAorfSBPTVhfVklERU9fQVZDUFJPRklMRVRZUEU7CisKKworLyoqIAorICogQVZDIGxldmVsIHR5cGVzLCBlYWNoIGxldmVsIGluZGljYXRlcyBzdXBwb3J0IGZvciB2YXJpb3VzIGZyYW1lIHNpemVzLCAKKyAqIGJpdCByYXRlcywgZGVjb2RlciBmcmFtZSByYXRlcy4gIE5vIG5lZWQgCisgKi8KK3R5cGVkZWYgZW51bSBPTVhfVklERU9fQVZDTEVWRUxUWVBFIHsKKyAgICBPTVhfVklERU9fQVZDTGV2ZWwxICAgPSAweDAxLCAgICAgLyoqPCBMZXZlbCAxICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsMWIgID0gMHgwMiwgICAgIC8qKjwgTGV2ZWwgMWIgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWwxMSAgPSAweDA0LCAgICAgLyoqPCBMZXZlbCAxLjEgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWwxMiAgPSAweDA4LCAgICAgLyoqPCBMZXZlbCAxLjIgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWwxMyAgPSAweDEwLCAgICAgLyoqPCBMZXZlbCAxLjMgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWwyICAgPSAweDIwLCAgICAgLyoqPCBMZXZlbCAyICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsMjEgID0gMHg0MCwgICAgIC8qKjwgTGV2ZWwgMi4xICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsMjIgID0gMHg4MCwgICAgIC8qKjwgTGV2ZWwgMi4yICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsMyAgID0gMHgxMDAsICAgIC8qKjwgTGV2ZWwgMyAqLworICAgIE9NWF9WSURFT19BVkNMZXZlbDMxICA9IDB4MjAwLCAgICAvKio8IExldmVsIDMuMSAqLworICAgIE9NWF9WSURFT19BVkNMZXZlbDMyICA9IDB4NDAwLCAgICAvKio8IExldmVsIDMuMiAqLworICAgIE9NWF9WSURFT19BVkNMZXZlbDQgICA9IDB4ODAwLCAgICAvKio8IExldmVsIDQgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWw0MSAgPSAweDEwMDAsICAgLyoqPCBMZXZlbCA0LjEgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWw0MiAgPSAweDIwMDAsICAgLyoqPCBMZXZlbCA0LjIgKi8KKyAgICBPTVhfVklERU9fQVZDTGV2ZWw1ICAgPSAweDQwMDAsICAgLyoqPCBMZXZlbCA1ICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsNTEgID0gMHg4MDAwLCAgIC8qKjwgTGV2ZWwgNS4xICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9WSURFT19BVkNMZXZlbFZlbmRvclN0YXJ0VW51c2VkID0gMHg3RjAwMDAwMCwgLyoqPCBSZXNlcnZlZCByZWdpb24gZm9yIGludHJvZHVjaW5nIFZlbmRvciBFeHRlbnNpb25zICovCisgICAgT01YX1ZJREVPX0FWQ0xldmVsTWF4ID0gMHg3RkZGRkZGRiAgCit9IE9NWF9WSURFT19BVkNMRVZFTFRZUEU7CisKKworLyoqIAorICogQVZDIGxvb3AgZmlsdGVyIG1vZGVzIAorICoKKyAqIE9NWF9WSURFT19BVkNMb29wRmlsdGVyRW5hYmxlICAgICAgICAgICAgICAgOiBFbmFibGUKKyAqIE9NWF9WSURFT19BVkNMb29wRmlsdGVyRGlzYWJsZSAgICAgICAgICAgICAgOiBEaXNhYmxlCisgKiBPTVhfVklERU9fQVZDTG9vcEZpbHRlckRpc2FibGVTbGljZUJvdW5kYXJ5IDogRGlzYWJsZWQgb24gc2xpY2UgYm91bmRhcmllcworICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX0FWQ0xPT1BGSUxURVJUWVBFIHsKKyAgICBPTVhfVklERU9fQVZDTG9vcEZpbHRlckVuYWJsZSA9IDAsCisgICAgT01YX1ZJREVPX0FWQ0xvb3BGaWx0ZXJEaXNhYmxlLAorICAgIE9NWF9WSURFT19BVkNMb29wRmlsdGVyRGlzYWJsZVNsaWNlQm91bmRhcnksCisgICAgT01YX1ZJREVPX0FWQ0xvb3BGaWx0ZXJLaHJvbm9zRXh0ZW5zaW9ucyA9IDB4NkYwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBLaHJvbm9zIFN0YW5kYXJkIEV4dGVuc2lvbnMgKi8gCisgICAgT01YX1ZJREVPX0FWQ0xvb3BGaWx0ZXJWZW5kb3JTdGFydFVudXNlZCA9IDB4N0YwMDAwMDAsIC8qKjwgUmVzZXJ2ZWQgcmVnaW9uIGZvciBpbnRyb2R1Y2luZyBWZW5kb3IgRXh0ZW5zaW9ucyAqLworICAgIE9NWF9WSURFT19BVkNMb29wRmlsdGVyTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfVklERU9fQVZDTE9PUEZJTFRFUlRZUEU7CisKKworLyoqIAorICogQVZDIHBhcmFtcyAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICAgICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4ICAgICAgICAgICAgICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuU2xpY2VIZWFkZXJTcGFjaW5nICAgICAgIDogTnVtYmVyIG9mIG1hY3JvYmxvY2tzIGJldHdlZW4gc2xpY2UgaGVhZGVyLCBwdXQgIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvIGlmIG5vdCB1c2VkCisgKiAgblBGcmFtZXMgICAgICAgICAgICAgICAgICA6IE51bWJlciBvZiBQIGZyYW1lcyBiZXR3ZWVuIGVhY2ggSSBmcmFtZQorICogIG5CRnJhbWVzICAgICAgICAgICAgICAgICAgOiBOdW1iZXIgb2YgQiBmcmFtZXMgYmV0d2VlbiBlYWNoIEkgZnJhbWUKKyAqICBiVXNlSGFkYW1hcmQgICAgICAgICAgICAgIDogRW5hYmxlL2Rpc2FibGUgSGFkYW1hcmQgdHJhbnNmb3JtCisgKiAgblJlZkZyYW1lcyAgICAgICAgICAgICAgICA6IE1heCBudW1iZXIgb2YgcmVmZXJlbmNlIGZyYW1lcyB0byB1c2UgZm9yIGludGVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbiBzZWFyY2ggKDEtMTYpCisgKiAgblJlZklkeFRyYWlsaW5nICAgICAgICAgICA6IFBpYyBwYXJhbSBzZXQgcmVmIGZyYW1lIGluZGV4IChpbmRleCBpbnRvIHJlZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSBidWZmZXIgb2YgdHJhaWxpbmcgZnJhbWVzIGxpc3QpLCBCIGZyYW1lCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQKKyAqICBuUmVmSWR4Rm9yd2FyZCAgICAgICAgICAgIDogUGljIHBhcmFtIHNldCByZWYgZnJhbWUgaW5kZXggKGluZGV4IGludG8gcmVmCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lIGJ1ZmZlciBvZiBmb3J3YXJkIGZyYW1lcyBsaXN0KSwgQiBmcmFtZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0CisgKiAgYkVuYWJsZVVFUCAgICAgICAgICAgICAgICA6IEVuYWJsZS9kaXNhYmxlIHVuZXF1YWwgZXJyb3IgcHJvdGVjdGlvbi4gVGhpcyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb25seSB2YWxpZCBvZiBkYXRhIHBhcnRpdGlvbmluZyBpcyBlbmFibGVkLgorICogIGJFbmFibGVGTU8gICAgICAgICAgICAgICAgOiBFbmFibGUvZGlzYWJsZSBmbGV4aWJsZSBtYWNyb2Jsb2NrIG9yZGVyaW5nCisgKiAgYkVuYWJsZUFTTyAgICAgICAgICAgICAgICA6IEVuYWJsZS9kaXNhYmxlIGFyYml0cmFyeSBzbGljZSBvcmRlcmluZworICogIGJFbmFibGVSUyAgICAgICAgICAgICAgICAgOiBFbmFibGUvZGlzYWJsZSBzZW5kaW5nIG9mIHJlZHVuZGFudCBzbGljZXMKKyAqICBlUHJvZmlsZSAgICAgICAgICAgICAgICAgIDogQVZDIHByb2ZpbGUocykgdG8gdXNlCisgKiAgZUxldmVsICAgICAgICAgICAgICAgICAgICA6IEFWQyBsZXZlbChzKSB0byB1c2UKKyAqICBuQWxsb3dlZFBpY3R1cmVUeXBlcyAgICAgIDogU3BlY2lmaWVzIHRoZSBwaWN0dXJlIHR5cGVzIGFsbG93ZWQgaW4gdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW0KKyAqICBiRnJhbWVNQnNPbmx5ICAgICAgICAgICAgIDogc3BlY2lmaWVzIHRoYXQgZXZlcnkgY29kZWQgcGljdHVyZSBvZiB0aGUgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVkIHZpZGVvIHNlcXVlbmNlIGlzIGEgY29kZWQgZnJhbWUgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgb25seSBmcmFtZSBtYWNyb2Jsb2NrcworICogIGJNQkFGRiAgICAgICAgICAgICAgICAgICAgOiBFbmFibGUvZGlzYWJsZSBzd2l0Y2hpbmcgYmV0d2VlbiBmcmFtZSBhbmQgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIG1hY3JvYmxvY2tzIHdpdGhpbiBhIHBpY3R1cmUKKyAqICBiRW50cm9weUNvZGluZ0NBQkFDICAgICAgIDogRW50cm9weSBkZWNvZGluZyBtZXRob2QgdG8gYmUgYXBwbGllZCBmb3IgdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXggZWxlbWVudHMgZm9yIHdoaWNoIHR3byBkZXNjcmlwdG9ycyBhcHBlYXIgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzeW50YXggdGFibGVzCisgKiAgYldlaWdodGVkUFByZWRpY3Rpb24gICAgICA6IEVuYWJsZS9kaXNhYmxlIHdlaWdodGVkIHByZWRpY3Rpb24gc2hhbGwgbm90IAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBhcHBsaWVkIHRvIFAgYW5kIFNQIHNsaWNlcworICogIG5XZWlnaHRlZEJpcHJlZGljaXRvbk1vZGUgOiBEZWZhdWx0IHdlaWdodGVkIHByZWRpY3Rpb24gaXMgYXBwbGllZCB0byBCIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZXMgCisgKiAgYmNvbnN0SXByZWQgICAgICAgICAgICAgICA6IEVuYWJsZS9kaXNhYmxlIGludHJhIHByZWRpY3Rpb24KKyAqICBiRGlyZWN0OHg4SW5mZXJlbmNlICAgICAgIDogU3BlY2lmaWVzIHRoZSBtZXRob2QgdXNlZCBpbiB0aGUgZGVyaXZhdGlvbiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyBmb3IgbHVtYSBtb3Rpb24gdmVjdG9ycyBmb3IgQl9Ta2lwLCAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQl9EaXJlY3RfMTZ4MTYgYW5kIEJfRGlyZWN0Xzh4OCBhcyBzcGVjaWZpZWQgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHN1YmNsYXVzZSA4LjQuMS4yIG9mIHRoZSBBVkMgc3BlYyAKKyAqICBiRGlyZWN0U3BhdGlhbFRlbXBvcmFsICAgIDogRmxhZyBpbmRpY2F0aW5nIHNwYXRpYWwgb3IgdGVtcG9yYWwgZGlyZWN0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgdXNlZCBpbiBCIHNsaWNlIGNvZGluZyAocmVsYXRlZCB0byAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYkRpcmVjdDh4OEluZmVyZW5jZSkgLiBTcGF0aWFsIGRpcmVjdCBtb2RlIGlzIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIGNvbW1vbiBhbmQgc2hvdWxkIGJlIHRoZSBkZWZhdWx0LgorICogIG5DYWJhY0luaXRJZHggICAgICAgICAgICAgOiBJbmRleCB1c2VkIHRvIGluaXQgQ0FCQUMgY29udGV4dHMKKyAqICBlTG9vcEZpbHRlck1vZGUgICAgICAgICAgIDogRW5hYmxlL2Rpc2FibGUgbG9vcCBmaWx0ZXIKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX1BBUkFNX0FWQ1RZUEUgeworICAgIE9NWF9VMzIgblNpemU7ICAgICAgICAgICAgICAgICAKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgCisgICAgT01YX1UzMiBuUG9ydEluZGV4OyAgICAgICAgICAgIAorICAgIE9NWF9VMzIgblNsaWNlSGVhZGVyU3BhY2luZzsgIAorICAgIE9NWF9VMzIgblBGcmFtZXM7ICAgICAKKyAgICBPTVhfVTMyIG5CRnJhbWVzOyAgICAgCisgICAgT01YX0JPT0wgYlVzZUhhZGFtYXJkOworICAgIE9NWF9VMzIgblJlZkZyYW1lczsgIAorCU9NWF9VMzIgblJlZklkeDEwQWN0aXZlTWludXMxOworCU9NWF9VMzIgblJlZklkeDExQWN0aXZlTWludXMxOworICAgIE9NWF9CT09MIGJFbmFibGVVRVA7ICAKKyAgICBPTVhfQk9PTCBiRW5hYmxlRk1POyAgCisgICAgT01YX0JPT0wgYkVuYWJsZUFTTzsgIAorICAgIE9NWF9CT09MIGJFbmFibGVSUzsgICAKKyAgICBPTVhfVklERU9fQVZDUFJPRklMRVRZUEUgZVByb2ZpbGU7CisJT01YX1ZJREVPX0FWQ0xFVkVMVFlQRSBlTGV2ZWw7IAorICAgIE9NWF9VMzIgbkFsbG93ZWRQaWN0dXJlVHlwZXM7ICAKKwlPTVhfQk9PTCBiRnJhbWVNQnNPbmx5OyAgICAgICAgCQkJCQkJCQkJCisgICAgT01YX0JPT0wgYk1CQUZGOyAgICAgICAgICAgICAgIAorICAgIE9NWF9CT09MIGJFbnRyb3B5Q29kaW5nQ0FCQUM7ICAKKyAgICBPTVhfQk9PTCBiV2VpZ2h0ZWRQUHJlZGljdGlvbjsgCisgICAgT01YX1UzMiBuV2VpZ2h0ZWRCaXByZWRpY2l0b25Nb2RlOyAKKyAgICBPTVhfQk9PTCBiY29uc3RJcHJlZCA7CisgICAgT01YX0JPT0wgYkRpcmVjdDh4OEluZmVyZW5jZTsgIAorCU9NWF9CT09MIGJEaXJlY3RTcGF0aWFsVGVtcG9yYWw7CisJT01YX1UzMiBuQ2FiYWNJbml0SWRjOworCU9NWF9WSURFT19BVkNMT09QRklMVEVSVFlQRSBlTG9vcEZpbHRlck1vZGU7Cit9IE9NWF9WSURFT19QQVJBTV9BVkNUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fUFJPRklMRUxFVkVMVFlQRSB7CisgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgCisgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247ICAgICAgCisgICBPTVhfVTMyIG5Qb3J0SW5kZXg7ICAgICAgICAgICAgCisgICBPTVhfVTMyIGVQcm9maWxlOyAgICAgIC8qKjwgdHlwZSBpcyBPTVhfVklERU9fQVZDUFJPRklMRVRZUEUsIE9NWF9WSURFT19IMjYzUFJPRklMRVRZUEUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgT01YX1ZJREVPX01QRUc0UFJPRklMRVRZUEUgZGVwZW5kaW5nIG9uIGNvbnRleHQgKi8KKyAgIE9NWF9VMzIgZUxldmVsOyAgICAgICAgLyoqPCB0eXBlIGlzIE9NWF9WSURFT19BVkNMRVZFTFRZUEUsIE9NWF9WSURFT19IMjYzTEVWRUxUWVBFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIE9NWF9WSURFT19NUEVHNFBST0ZJTEVUWVBFIGRlcGVuZGluZyBvbiBjb250ZXh0ICovCisgICBPTVhfVTMyIG5Qcm9maWxlSW5kZXg7IC8qKjwgVXNlZCB0byBxdWVyeSBmb3IgaW5kaXZpZHVhbCBwcm9maWxlIHN1cHBvcnQgaW5mb3JtYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgb25seSBmb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT01YX0luZGV4UGFyYW1WaWRlb1Byb2ZpbGVMZXZlbFF1ZXJ5U3VwcG9ydGVkIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbGwgb3RoZXIgaW5kaWNlcyB0aGlzIHBhcmFtZXRlciBpcyB0byBiZSBpZ25vcmVkLiAqLworfSBPTVhfVklERU9fUEFSQU1fUFJPRklMRUxFVkVMVFlQRTsKKworLyoqIAorICogU3RydWN0dXJlIGZvciBkeW5hbWljYWxseSBjb25maWd1cmluZyBiaXRyYXRlIG1vZGUgb2YgYSBjb2RlYy4gCisgKgorICogU1RSVUNUIE1FTUJFUlM6CisgKiAgblNpemUgICAgICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3QgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgICAgICA6IE9NWCBzcGVjIHZlcnNpb24gaW5mbworICogIG5Qb3J0SW5kZXggICAgIDogUG9ydCB0aGF0IHRoaXMgc3RydWN0IGFwcGxpZXMgdG8KKyAqICBuRW5jb2RlQml0cmF0ZSA6IFRhcmdldCBhdmVyYWdlIGJpdHJhdGUgdG8gYmUgZ2VuZXJhdGVkIGluIGJwcworICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fQ09ORklHX0JJVFJBVEVUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOyAgICAgICAgICAgICAgIAorICAgIE9NWF9VMzIgblBvcnRJbmRleDsgICAgICAgICAgICAgICAgICAgICAKKyAgICBPTVhfVTMyIG5FbmNvZGVCaXRyYXRlOyAgICAgICAgICAgICAgICAgCit9IE9NWF9WSURFT19DT05GSUdfQklUUkFURVRZUEU7CisKKy8qKiAKKyAqIERlZmluZXMgRW5jb2RlciBGcmFtZSBSYXRlIHNldHRpbmcKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgICAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICAgICAgICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24gCisgKiAgblBvcnRJbmRleCAgICAgICA6IFBvcnQgdGhhdCB0aGlzIHN0cnVjdHVyZSBhcHBsaWVzIHRvCisgKiAgeEVuY29kZUZyYW1lcmF0ZSA6IEVuY29kaW5nIGZyYW1lcmF0ZSByZXByZXNlbnRlZCBpbiBRMTYgZm9ybWF0CisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfRlJBTUVSQVRFVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9VMzIgeEVuY29kZUZyYW1lcmF0ZTsgLyogUTE2IGZvcm1hdCAqLworfSBPTVhfQ09ORklHX0ZSQU1FUkFURVRZUEU7CisKK3R5cGVkZWYgc3RydWN0IE9NWF9DT05GSUdfSU5UUkFSRUZSRVNIVk9QVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9CT09MIEludHJhUmVmcmVzaFZPUDsKK30gT01YX0NPTkZJR19JTlRSQVJFRlJFU0hWT1BUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfQ09ORklHX01BQ1JPQkxPQ0tFUlJPUk1BUFRZUEUgeworICAgIE9NWF9VMzIgblNpemU7CisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5FcnJNYXBTaXplOyAgICAgICAgICAgLyogU2l6ZSBvZiB0aGUgRXJyb3IgTWFwIGluIGJ5dGVzICovCisgICAgT01YX1U4ICBFcnJNYXBbMV07ICAgICAgICAgICAgIC8qIEVycm9yIG1hcCBoaW50ICovCit9IE9NWF9DT05GSUdfTUFDUk9CTE9DS0VSUk9STUFQVFlQRTsKKwordHlwZWRlZiBzdHJ1Y3QgT01YX0NPTkZJR19NQkVSUk9SUkVQT1JUSU5HVFlQRSB7CisgICAgT01YX1UzMiBuU2l6ZTsKKyAgICBPTVhfVkVSU0lPTlRZUEUgblZlcnNpb247CisgICAgT01YX1UzMiBuUG9ydEluZGV4OworICAgIE9NWF9CT09MIGJFbmFibGVkOworfSBPTVhfQ09ORklHX01CRVJST1JSRVBPUlRJTkdUWVBFOworCit0eXBlZGVmIHN0cnVjdCBPTVhfUEFSQU1fTUFDUk9CTE9DS1NUWVBFIHsKKyAgICBPTVhfVTMyIG5TaXplOworICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1UzMiBuTWFjcm9ibG9ja3M7Cit9IE9NWF9QQVJBTV9NQUNST0JMT0NLU1RZUEU7CisKKy8qKiAKKyAqIEFWQyBTbGljZSBNb2RlIG1vZGVzIAorICoKKyAqIE9NWF9WSURFT19TTElDRU1PREVfQVZDRGVmYXVsdCAgIDogTm9ybWFsIGZyYW1lIGVuY29kaW5nLCBvbmUgc2xpY2UgcGVyIGZyYW1lCisgKiBPTVhfVklERU9fU0xJQ0VNT0RFX0FWQ01CU2xpY2UgICA6IE5BTCBtb2RlLCBudW1iZXIgb2YgTUJzIHBlciBmcmFtZQorICogT01YX1ZJREVPX1NMSUNFTU9ERV9BVkNCeXRlU2xpY2UgOiBOQUwgbW9kZSwgbnVtYmVyIG9mIGJ5dGVzIHBlciBmcmFtZQorICovCit0eXBlZGVmIGVudW0gT01YX1ZJREVPX0FWQ1NMSUNFTU9ERVRZUEUgeworICAgIE9NWF9WSURFT19TTElDRU1PREVfQVZDRGVmYXVsdCA9IDAsCisgICAgT01YX1ZJREVPX1NMSUNFTU9ERV9BVkNNQlNsaWNlLAorICAgIE9NWF9WSURFT19TTElDRU1PREVfQVZDQnl0ZVNsaWNlLAorICAgIE9NWF9WSURFT19TTElDRU1PREVfQVZDS2hyb25vc0V4dGVuc2lvbnMgPSAweDZGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgS2hyb25vcyBTdGFuZGFyZCBFeHRlbnNpb25zICovIAorICAgIE9NWF9WSURFT19TTElDRU1PREVfQVZDVmVuZG9yU3RhcnRVbnVzZWQgPSAweDdGMDAwMDAwLCAvKio8IFJlc2VydmVkIHJlZ2lvbiBmb3IgaW50cm9kdWNpbmcgVmVuZG9yIEV4dGVuc2lvbnMgKi8KKyAgICBPTVhfVklERU9fU0xJQ0VNT0RFX0FWQ0xldmVsTWF4ID0gMHg3RkZGRkZGRgorfSBPTVhfVklERU9fQVZDU0xJQ0VNT0RFVFlQRTsKKworLyoqIAorICogQVZDIEZNTyBTbGljZSBNb2RlIFBhcmFtcyAKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuTnVtU2xpY2VHcm91cHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzbGljZSBncm91cHMKKyAqICBuU2xpY2VHcm91cE1hcFR5cGUgOiBTcGVjaWZpZXMgdGhlIHR5cGUgb2Ygc2xpY2UgZ3JvdXBzCisgKiAgZVNsaWNlTW9kZSA6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzbGljZQorICovCit0eXBlZGVmIHN0cnVjdCBPTVhfVklERU9fUEFSQU1fQVZDU0xJQ0VGTU8geworICAgIE9NWF9VMzIgblNpemU7IAorICAgIE9NWF9WRVJTSU9OVFlQRSBuVmVyc2lvbjsKKyAgICBPTVhfVTMyIG5Qb3J0SW5kZXg7CisgICAgT01YX1U4IG5OdW1TbGljZUdyb3VwczsKKyAgICBPTVhfVTggblNsaWNlR3JvdXBNYXBUeXBlOworICAgIE9NWF9WSURFT19BVkNTTElDRU1PREVUWVBFIGVTbGljZU1vZGU7Cit9IE9NWF9WSURFT19QQVJBTV9BVkNTTElDRUZNTzsKKworLyoqIAorICogQVZDIElEUiBQZXJpb2QgQ29uZmlncworICoKKyAqIFNUUlVDVCBNRU1CRVJTOgorICogIG5TaXplICAgICAgOiBTaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMKKyAqICBuVmVyc2lvbiAgIDogT01YIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpbmZvcm1hdGlvbgorICogIG5Qb3J0SW5kZXggOiBQb3J0IHRoYXQgdGhpcyBzdHJ1Y3R1cmUgYXBwbGllcyB0bworICogIG5JRFJQZXJpb2QgOiBTcGVjaWZpZXMgcGVyaW9kaWNpdHkgb2YgSURSIGZyYW1lcworICogIG5QRnJhbWVzIDogU3BlY2lmaWVzIGludGVybmFsIG9mIGNvZGluZyBJbnRyYSBmcmFtZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgT01YX1ZJREVPX0NPTkZJR19BVkNJTlRSQVBFUklPRCB7CisgICAgT01YX1UzMiBuU2l6ZTsgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5JRFJQZXJpb2Q7CisgICAgT01YX1UzMiBuUEZyYW1lczsKK30gT01YX1ZJREVPX0NPTkZJR19BVkNJTlRSQVBFUklPRDsKKworLyoqIAorICogQVZDIE5BTCBTaXplIENvbmZpZ3MKKyAqCisgKiBTVFJVQ1QgTUVNQkVSUzoKKyAqICBuU2l6ZSAgICAgIDogU2l6ZSBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzCisgKiAgblZlcnNpb24gICA6IE9NWCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqICBuUG9ydEluZGV4IDogUG9ydCB0aGF0IHRoaXMgc3RydWN0dXJlIGFwcGxpZXMgdG8KKyAqICBuTmFsdUJ5dGVzIDogU3BlY2lmaWVzIHRoZSBOQUwgdW5pdCBzaXplCisgKi8KK3R5cGVkZWYgc3RydWN0IE9NWF9WSURFT19DT05GSUdfTkFMU0laRSB7CisgICAgT01YX1UzMiBuU2l6ZTsgCisgICAgT01YX1ZFUlNJT05UWVBFIG5WZXJzaW9uOworICAgIE9NWF9VMzIgblBvcnRJbmRleDsKKyAgICBPTVhfVTMyIG5OYWx1Qnl0ZXM7Cit9IE9NWF9WSURFT19DT05GSUdfTkFMU0laRTsKKworLyoqIEB9ICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKyNlbmRpZgorLyogRmlsZSBFT0YgKi8KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9JbnB1dERpc3BhdGNoZXIuaCBiL2luY2x1ZGUvdWkvSW5wdXREaXNwYXRjaGVyLmgKaW5kZXggMzU5OTE2My4uNDk1NWQ0NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91aS9JbnB1dERpc3BhdGNoZXIuaAorKysgYi9pbmNsdWRlL3VpL0lucHV0RGlzcGF0Y2hlci5oCkBAIC0xODMsNiArMTgzLDcgQEAKICAgICAgICAgVFlQRV9JTlBVVF9NRVRIT0RfRElBTE9HPSBGSVJTVF9TWVNURU1fV0lORE9XKzEyLAogICAgICAgICBUWVBFX1dBTExQQVBFUiAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMTMsCiAgICAgICAgIFRZUEVfU1RBVFVTX0JBUl9QQU5FTCAgID0gRklSU1RfU1lTVEVNX1dJTkRPVysxNCwKKyAgICAgICAgVFlQRV9TRUNVUkVfU1lTVEVNX09WRVJMQVkgPSBGSVJTVF9TWVNURU1fV0lORE9XKzE1LAogICAgICAgICBMQVNUX1NZU1RFTV9XSU5ET1cgICAgICA9IDI5OTksCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9JbnB1dFJlYWRlci5oIGIvaW5jbHVkZS91aS9JbnB1dFJlYWRlci5oCmluZGV4IGMxNWUzODIuLjkyM2NkYmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvSW5wdXRSZWFkZXIuaAorKysgYi9pbmNsdWRlL3VpL0lucHV0UmVhZGVyLmgKQEAgLTU3MSwzMSArNTcxLDM2IEBACiAKICAgICAvLyBJbW11dGFibGUgY2FsaWJyYXRpb24gcGFyYW1ldGVycyBpbiBwYXJzZWQgZm9ybS4KICAgICBzdHJ1Y3QgQ2FsaWJyYXRpb24gewotICAgICAgICAvLyBUb3VjaCBBcmVhCi0gICAgICAgIGVudW0gVG91Y2hBcmVhQ2FsaWJyYXRpb24gewotICAgICAgICAgICAgVE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9ERUZBVUxULAotICAgICAgICAgICAgVE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9OT05FLAotICAgICAgICAgICAgVE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9HRU9NRVRSSUMsCi0gICAgICAgICAgICBUT1VDSF9BUkVBX0NBTElCUkFUSU9OX1BSRVNTVVJFLAorICAgICAgICAvLyBUb3VjaCBTaXplCisgICAgICAgIGVudW0gVG91Y2hTaXplQ2FsaWJyYXRpb24geworICAgICAgICAgICAgVE9VQ0hfU0laRV9DQUxJQlJBVElPTl9ERUZBVUxULAorICAgICAgICAgICAgVE9VQ0hfU0laRV9DQUxJQlJBVElPTl9OT05FLAorICAgICAgICAgICAgVE9VQ0hfU0laRV9DQUxJQlJBVElPTl9HRU9NRVRSSUMsCisgICAgICAgICAgICBUT1VDSF9TSVpFX0NBTElCUkFUSU9OX1BSRVNTVVJFLAogICAgICAgICB9OwogCi0gICAgICAgIFRvdWNoQXJlYUNhbGlicmF0aW9uIHRvdWNoQXJlYUNhbGlicmF0aW9uOworICAgICAgICBUb3VjaFNpemVDYWxpYnJhdGlvbiB0b3VjaFNpemVDYWxpYnJhdGlvbjsKIAotICAgICAgICAvLyBUb29sIEFyZWEKLSAgICAgICAgZW51bSBUb29sQXJlYUNhbGlicmF0aW9uIHsKLSAgICAgICAgICAgIFRPT0xfQVJFQV9DQUxJQlJBVElPTl9ERUZBVUxULAotICAgICAgICAgICAgVE9PTF9BUkVBX0NBTElCUkFUSU9OX05PTkUsCi0gICAgICAgICAgICBUT09MX0FSRUFfQ0FMSUJSQVRJT05fR0VPTUVUUklDLAotICAgICAgICAgICAgVE9PTF9BUkVBX0NBTElCUkFUSU9OX0xJTkVBUiwKKyAgICAgICAgLy8gVG9vbCBTaXplCisgICAgICAgIGVudW0gVG9vbFNpemVDYWxpYnJhdGlvbiB7CisgICAgICAgICAgICBUT09MX1NJWkVfQ0FMSUJSQVRJT05fREVGQVVMVCwKKyAgICAgICAgICAgIFRPT0xfU0laRV9DQUxJQlJBVElPTl9OT05FLAorICAgICAgICAgICAgVE9PTF9TSVpFX0NBTElCUkFUSU9OX0dFT01FVFJJQywKKyAgICAgICAgICAgIFRPT0xfU0laRV9DQUxJQlJBVElPTl9MSU5FQVIsCisgICAgICAgICAgICBUT09MX1NJWkVfQ0FMSUJSQVRJT05fQVJFQSwKICAgICAgICAgfTsKIAotICAgICAgICBUb29sQXJlYUNhbGlicmF0aW9uIHRvb2xBcmVhQ2FsaWJyYXRpb247Ci0gICAgICAgIGJvb2wgaGF2ZVRvb2xBcmVhTGluZWFyU2NhbGU7Ci0gICAgICAgIGZsb2F0IHRvb2xBcmVhTGluZWFyU2NhbGU7Ci0gICAgICAgIGJvb2wgaGF2ZVRvb2xBcmVhTGluZWFyQmlhczsKLSAgICAgICAgZmxvYXQgdG9vbEFyZWFMaW5lYXJCaWFzOwotICAgICAgICBib29sIGhhdmVUb29sQXJlYUlzU3VtbWVkOwotICAgICAgICBpbnQzMl90IHRvb2xBcmVhSXNTdW1tZWQ7CisgICAgICAgIFRvb2xTaXplQ2FsaWJyYXRpb24gdG9vbFNpemVDYWxpYnJhdGlvbjsKKyAgICAgICAgYm9vbCBoYXZlVG9vbFNpemVMaW5lYXJTY2FsZTsKKyAgICAgICAgZmxvYXQgdG9vbFNpemVMaW5lYXJTY2FsZTsKKyAgICAgICAgYm9vbCBoYXZlVG9vbFNpemVMaW5lYXJCaWFzOworICAgICAgICBmbG9hdCB0b29sU2l6ZUxpbmVhckJpYXM7CisgICAgICAgIGJvb2wgaGF2ZVRvb2xTaXplQXJlYVNjYWxlOworICAgICAgICBmbG9hdCB0b29sU2l6ZUFyZWFTY2FsZTsKKyAgICAgICAgYm9vbCBoYXZlVG9vbFNpemVBcmVhQmlhczsKKyAgICAgICAgZmxvYXQgdG9vbFNpemVBcmVhQmlhczsKKyAgICAgICAgYm9vbCBoYXZlVG9vbFNpemVJc1N1bW1lZDsKKyAgICAgICAgaW50MzJfdCB0b29sU2l6ZUlzU3VtbWVkOwogCiAgICAgICAgIC8vIFByZXNzdXJlCiAgICAgICAgIGVudW0gUHJlc3N1cmVDYWxpYnJhdGlvbiB7CkBAIC02NzEsOCArNjc2LDEwIEBACiAKICAgICAgICAgZmxvYXQgZ2VvbWV0cmljU2NhbGU7CiAKLSAgICAgICAgZmxvYXQgdG9vbEFyZWFMaW5lYXJTY2FsZTsKLSAgICAgICAgZmxvYXQgdG9vbEFyZWFMaW5lYXJCaWFzOworICAgICAgICBmbG9hdCB0b29sU2l6ZUxpbmVhclNjYWxlOworICAgICAgICBmbG9hdCB0b29sU2l6ZUxpbmVhckJpYXM7CisgICAgICAgIGZsb2F0IHRvb2xTaXplQXJlYVNjYWxlOworICAgICAgICBmbG9hdCB0b29sU2l6ZUFyZWFCaWFzOwogCiAgICAgICAgIGZsb2F0IHByZXNzdXJlU2NhbGU7CiAKQEAgLTY5MSwxMSArNjk4LDExIEBACiAgICAgICAgICAgICBib29sIGhhdmVTaXplOwogICAgICAgICAgICAgSW5wdXREZXZpY2VJbmZvOjpNb3Rpb25SYW5nZSBzaXplOwogCi0gICAgICAgICAgICBib29sIGhhdmVUb3VjaEFyZWE7CisgICAgICAgICAgICBib29sIGhhdmVUb3VjaFNpemU7CiAgICAgICAgICAgICBJbnB1dERldmljZUluZm86Ok1vdGlvblJhbmdlIHRvdWNoTWFqb3I7CiAgICAgICAgICAgICBJbnB1dERldmljZUluZm86Ok1vdGlvblJhbmdlIHRvdWNoTWlub3I7CiAKLSAgICAgICAgICAgIGJvb2wgaGF2ZVRvb2xBcmVhOworICAgICAgICAgICAgYm9vbCBoYXZlVG9vbFNpemU7CiAgICAgICAgICAgICBJbnB1dERldmljZUluZm86Ok1vdGlvblJhbmdlIHRvb2xNYWpvcjsKICAgICAgICAgICAgIElucHV0RGV2aWNlSW5mbzo6TW90aW9uUmFuZ2UgdG9vbE1pbm9yOwogCmRpZmYgLS1naXQgYS9rZXlzdG9yZS9qYXZhL2FuZHJvaWQvc2VjdXJpdHkvU3lzdGVtS2V5U3RvcmUuamF2YSBiL2tleXN0b3JlL2phdmEvYW5kcm9pZC9zZWN1cml0eS9TeXN0ZW1LZXlTdG9yZS5qYXZhCmluZGV4IDEwOTMyMTkuLjQ3NzE4ZTYgMTAwNjQ0Ci0tLSBhL2tleXN0b3JlL2phdmEvYW5kcm9pZC9zZWN1cml0eS9TeXN0ZW1LZXlTdG9yZS5qYXZhCisrKyBiL2tleXN0b3JlL2phdmEvYW5kcm9pZC9zZWN1cml0eS9TeXN0ZW1LZXlTdG9yZS5qYXZhCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGtleUZpbGUpOwogICAgICAgICAgICAgZm9zLndyaXRlKHJldEtleSk7CiAgICAgICAgICAgICBmb3MuZmx1c2goKTsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKGZvcyk7CiAgICAgICAgICAgICBmb3MuY2xvc2UoKTsKICAgICAgICAgICAgIEZpbGVVdGlscy5zZXRQZXJtaXNzaW9ucyhrZXlGaWxlLmdldE5hbWUoKSwgKEZpbGVVdGlscy5TX0lSVVNSIHwgRmlsZVV0aWxzLlNfSVdVU1IpLAogICAgICAgICAgICAgICAgIC0xLCAtMSk7CmRpZmYgLS1naXQgYS9saWJzL3VpL0lucHV0RGlzcGF0Y2hlci5jcHAgYi9saWJzL3VpL0lucHV0RGlzcGF0Y2hlci5jcHAKaW5kZXggNmJhMTlkNy4uOTJkYWVlMSAxMDA2NDQKLS0tIGEvbGlicy91aS9JbnB1dERpc3BhdGNoZXIuY3BwCisrKyBiL2xpYnMvdWkvSW5wdXREaXNwYXRjaGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw4IEBACiAKIGJvb2wgSW5wdXRXaW5kb3c6OmlzVHJ1c3RlZE92ZXJsYXkoKSBjb25zdCB7CiAgICAgcmV0dXJuIGxheW91dFBhcmFtc1R5cGUgPT0gVFlQRV9JTlBVVF9NRVRIT0QKLSAgICAgICAgICAgIHx8IGxheW91dFBhcmFtc1R5cGUgPT0gVFlQRV9JTlBVVF9NRVRIT0RfRElBTE9HOworICAgICAgICAgICAgfHwgbGF5b3V0UGFyYW1zVHlwZSA9PSBUWVBFX0lOUFVUX01FVEhPRF9ESUFMT0cKKyAgICAgICAgICAgIHx8IGxheW91dFBhcmFtc1R5cGUgPT0gVFlQRV9TRUNVUkVfU1lTVEVNX09WRVJMQVk7CiB9CiAKIApAQCAtMTM1MCw3ICsxMzUxLDcgQEAKICAgICAgICAgdGFyZ2V0LmZsYWdzID0gMDsKICAgICAgICAgdGFyZ2V0LnhPZmZzZXQgPSAwOwogICAgICAgICB0YXJnZXQueU9mZnNldCA9IDA7Ci0gICAgICAgIHRhcmdldC53aW5kb3dUeXBlID0gSW5wdXRXaW5kb3c6OlRZUEVfU1lTVEVNX09WRVJMQVk7CisgICAgICAgIHRhcmdldC53aW5kb3dUeXBlID0gLTE7CiAgICAgfQogfQogCkBAIC0yNTM1LDkgKzI1MzYsOSBAQAogI2lmIERFQlVHX0ZPQ1VTCiAgICAgICAgICAgICAgICAgTE9HRCgiVG91Y2hlZCB3aW5kb3cgd2FzIHJlbW92ZWQ6ICVzIiwgdG91Y2hlZFdpbmRvdy5jaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgbVRvdWNoU3RhdGUud2luZG93cy5yZW1vdmVBdChpKTsKICAgICAgICAgICAgICAgICBzeW50aGVzaXplQ2FuY2VsYXRpb25FdmVudHNGb3JJbnB1dENoYW5uZWxMb2NrZWQodG91Y2hlZFdpbmRvdy5jaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRTdGF0ZTo6Q0FOQ0VMX1BPSU5URVJfRVZFTlRTLCAidG91Y2hlZCB3aW5kb3cgd2FzIHJlbW92ZWQiKTsKKyAgICAgICAgICAgICAgICBtVG91Y2hTdGF0ZS53aW5kb3dzLnJlbW92ZUF0KGkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXRSZWFkZXIuY3BwIGIvbGlicy91aS9JbnB1dFJlYWRlci5jcHAKaW5kZXggMDU2MGJiOC4uY2UwZDg4MCAxMDA2NDQKLS0tIGEvbGlicy91aS9JbnB1dFJlYWRlci5jcHAKKysrIGIvbGlicy91aS9JbnB1dFJlYWRlci5jcHAKQEAgLTEyNDYsMTQgKzEyNDYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy5zaXplKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb3VjaEFyZWEpIHsKKyAgICAgICAgaWYgKG1Mb2NrZWQub3JpZW50ZWRSYW5nZXMuaGF2ZVRvdWNoU2l6ZSkgewogICAgICAgICAgICAgaW5mby0+YWRkTW90aW9uUmFuZ2UoQUlOUFVUX01PVElPTl9SQU5HRV9UT1VDSF9NQUpPUiwKICAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy50b3VjaE1ham9yKTsKICAgICAgICAgICAgIGluZm8tPmFkZE1vdGlvblJhbmdlKEFJTlBVVF9NT1RJT05fUkFOR0VfVE9VQ0hfTUlOT1IsCiAgICAgICAgICAgICAgICAgICAgIG1Mb2NrZWQub3JpZW50ZWRSYW5nZXMudG91Y2hNaW5vcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobUxvY2tlZC5vcmllbnRlZFJhbmdlcy5oYXZlVG9vbEFyZWEpIHsKKyAgICAgICAgaWYgKG1Mb2NrZWQub3JpZW50ZWRSYW5nZXMuaGF2ZVRvb2xTaXplKSB7CiAgICAgICAgICAgICBpbmZvLT5hZGRNb3Rpb25SYW5nZShBSU5QVVRfTU9USU9OX1JBTkdFX1RPT0xfTUFKT1IsCiAgICAgICAgICAgICAgICAgICAgIG1Mb2NrZWQub3JpZW50ZWRSYW5nZXMudG9vbE1ham9yKTsKICAgICAgICAgICAgIGluZm8tPmFkZE1vdGlvblJhbmdlKEFJTlBVVF9NT1RJT05fUkFOR0VfVE9PTF9NSU5PUiwKQEAgLTEyNzcsOCArMTI3NywyMSBAQAogICAgICAgICBkdW1wUmF3QXhlcyhkdW1wKTsKICAgICAgICAgZHVtcENhbGlicmF0aW9uKGR1bXApOwogICAgICAgICBkdW1wU3VyZmFjZUxvY2tlZChkdW1wKTsKLSAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UMyAiWFByZWNpc2lvbjogJTAuM2ZcbiIsIG1Mb2NrZWQueFByZWNpc2lvbik7Ci0gICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDMgIllQcmVjaXNpb246ICUwLjNmXG4iLCBtTG9ja2VkLnlQcmVjaXNpb24pOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQzICJUcmFuc2xhdGlvbiBhbmQgU2NhbGluZyBGYWN0b3JzOiIpOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJYT3JpZ2luOiAlZFxuIiwgbUxvY2tlZC54T3JpZ2luKTsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAiWU9yaWdpbjogJWRcbiIsIG1Mb2NrZWQueU9yaWdpbik7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgIlhTY2FsZTogJTAuM2ZcbiIsIG1Mb2NrZWQueFNjYWxlKTsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAiWVNjYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC55U2NhbGUpOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJYUHJlY2lzaW9uOiAlMC4zZlxuIiwgbUxvY2tlZC54UHJlY2lzaW9uKTsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAiWVByZWNpc2lvbjogJTAuM2ZcbiIsIG1Mb2NrZWQueVByZWNpc2lvbik7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgIkdlb21ldHJpY1NjYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC5nZW9tZXRyaWNTY2FsZSk7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgIlRvb2xTaXplTGluZWFyU2NhbGU6ICUwLjNmXG4iLCBtTG9ja2VkLnRvb2xTaXplTGluZWFyU2NhbGUpOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJUb29sU2l6ZUxpbmVhckJpYXM6ICUwLjNmXG4iLCBtTG9ja2VkLnRvb2xTaXplTGluZWFyQmlhcyk7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgIlRvb2xTaXplQXJlYVNjYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC50b29sU2l6ZUFyZWFTY2FsZSk7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgIlRvb2xTaXplQXJlYUJpYXM6ICUwLjNmXG4iLCBtTG9ja2VkLnRvb2xTaXplQXJlYUJpYXMpOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJQcmVzc3VyZVNjYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC5wcmVzc3VyZVNjYWxlKTsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAiU2l6ZVNjYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC5zaXplU2NhbGUpOworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJPcmllbnRhdGlvblNDYWxlOiAlMC4zZlxuIiwgbUxvY2tlZC5vcmllbnRhdGlvblNjYWxlKTsKICAgICB9IC8vIHJlbGVhc2UgbG9jawogfQogCkBAIC0xMjk4LDggKzEzMTEsOCBAQAogCiAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy5oYXZlUHJlc3N1cmUgPSBmYWxzZTsKICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVTaXplID0gZmFsc2U7Ci0gICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy5oYXZlVG91Y2hBcmVhID0gZmFsc2U7Ci0gICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy5oYXZlVG9vbEFyZWEgPSBmYWxzZTsKKyAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb3VjaFNpemUgPSBmYWxzZTsKKyAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb29sU2l6ZSA9IGZhbHNlOwogICAgIG1Mb2NrZWQub3JpZW50ZWRSYW5nZXMuaGF2ZU9yaWVudGF0aW9uID0gZmFsc2U7CiB9CiAKQEAgLTE0MjgsOCArMTQ0MSw4IEBACiAgICAgICAgIGZsb2F0IGRpYWdvbmFsU2l6ZSA9IHB5dGhhZyh3aWR0aCwgaGVpZ2h0KTsKIAogICAgICAgICAvLyBUb3VjaE1ham9yIGFuZCBUb3VjaE1pbm9yIGZhY3RvcnMuCi0gICAgICAgIGlmIChtQ2FsaWJyYXRpb24udG91Y2hBcmVhQ2FsaWJyYXRpb24gIT0gQ2FsaWJyYXRpb246OlRPVUNIX0FSRUFfQ0FMSUJSQVRJT05fTk9ORSkgewotICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy5oYXZlVG91Y2hBcmVhID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi50b3VjaFNpemVDYWxpYnJhdGlvbiAhPSBDYWxpYnJhdGlvbjo6VE9VQ0hfU0laRV9DQUxJQlJBVElPTl9OT05FKSB7CisgICAgICAgICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb3VjaFNpemUgPSB0cnVlOwogICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy50b3VjaE1ham9yLm1pbiA9IDA7CiAgICAgICAgICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLnRvdWNoTWFqb3IubWF4ID0gZGlhZ29uYWxTaXplOwogICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy50b3VjaE1ham9yLmZsYXQgPSAwOwpAQCAtMTQzOCwyMyArMTQ1MSw0NiBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8gVG9vbE1ham9yIGFuZCBUb29sTWlub3IgZmFjdG9ycy4KLSAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi50b29sQXJlYUNhbGlicmF0aW9uICE9IENhbGlicmF0aW9uOjpUT09MX0FSRUFfQ0FMSUJSQVRJT05fTk9ORSkgewotICAgICAgICAgICAgbUxvY2tlZC50b29sQXJlYUxpbmVhclNjYWxlID0gMDsKLSAgICAgICAgICAgIG1Mb2NrZWQudG9vbEFyZWFMaW5lYXJCaWFzID0gMDsKLSAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24udG9vbEFyZWFDYWxpYnJhdGlvbiA9PSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX0xJTkVBUikgewotICAgICAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xBcmVhTGluZWFyU2NhbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC50b29sQXJlYUxpbmVhclNjYWxlID0gbUNhbGlicmF0aW9uLnRvb2xBcmVhTGluZWFyU2NhbGU7CisgICAgICAgIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJTY2FsZSA9IDA7CisgICAgICAgIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJCaWFzID0gMDsKKyAgICAgICAgbUxvY2tlZC50b29sU2l6ZUFyZWFTY2FsZSA9IDA7CisgICAgICAgIG1Mb2NrZWQudG9vbFNpemVBcmVhQmlhcyA9IDA7CisgICAgICAgIGlmIChtQ2FsaWJyYXRpb24udG9vbFNpemVDYWxpYnJhdGlvbiAhPSBDYWxpYnJhdGlvbjo6VE9PTF9TSVpFX0NBTElCUkFUSU9OX05PTkUpIHsKKyAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24udG9vbFNpemVDYWxpYnJhdGlvbiA9PSBDYWxpYnJhdGlvbjo6VE9PTF9TSVpFX0NBTElCUkFUSU9OX0xJTkVBUikgeworICAgICAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xTaXplTGluZWFyU2NhbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC50b29sU2l6ZUxpbmVhclNjYWxlID0gbUNhbGlicmF0aW9uLnRvb2xTaXplTGluZWFyU2NhbGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtUmF3QXhlcy50b29sTWFqb3IudmFsaWQgJiYgbVJhd0F4ZXMudG9vbE1ham9yLm1heFZhbHVlICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC50b29sQXJlYUxpbmVhclNjYWxlID0gZmxvYXQobWluKHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICBtTG9ja2VkLnRvb2xTaXplTGluZWFyU2NhbGUgPSBmbG9hdChtaW4od2lkdGgsIGhlaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBtUmF3QXhlcy50b29sTWFqb3IubWF4VmFsdWU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbEFyZWFMaW5lYXJCaWFzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Mb2NrZWQudG9vbEFyZWFMaW5lYXJCaWFzID0gbUNhbGlicmF0aW9uLnRvb2xBcmVhTGluZWFyQmlhczsKKyAgICAgICAgICAgICAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sU2l6ZUxpbmVhckJpYXMpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC50b29sU2l6ZUxpbmVhckJpYXMgPSBtQ2FsaWJyYXRpb24udG9vbFNpemVMaW5lYXJCaWFzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobUNhbGlicmF0aW9uLnRvb2xTaXplQ2FsaWJyYXRpb24gPT0KKyAgICAgICAgICAgICAgICAgICAgQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9BUkVBKSB7CisgICAgICAgICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbFNpemVMaW5lYXJTY2FsZSkgeworICAgICAgICAgICAgICAgICAgICBtTG9ja2VkLnRvb2xTaXplTGluZWFyU2NhbGUgPSBtQ2FsaWJyYXRpb24udG9vbFNpemVMaW5lYXJTY2FsZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtTG9ja2VkLnRvb2xTaXplTGluZWFyU2NhbGUgPSBtaW4od2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbFNpemVMaW5lYXJCaWFzKSB7CisgICAgICAgICAgICAgICAgICAgIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJCaWFzID0gbUNhbGlicmF0aW9uLnRvb2xTaXplTGluZWFyQmlhczsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sU2l6ZUFyZWFTY2FsZSkgeworICAgICAgICAgICAgICAgICAgICBtTG9ja2VkLnRvb2xTaXplQXJlYVNjYWxlID0gbUNhbGlicmF0aW9uLnRvb2xTaXplQXJlYVNjYWxlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVJhd0F4ZXMudG9vbE1ham9yLnZhbGlkICYmIG1SYXdBeGVzLnRvb2xNYWpvci5tYXhWYWx1ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1Mb2NrZWQudG9vbFNpemVBcmVhU2NhbGUgPSAxLjBmIC8gbVJhd0F4ZXMudG9vbE1ham9yLm1heFZhbHVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xTaXplQXJlYUJpYXMpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC50b29sU2l6ZUFyZWFCaWFzID0gbUNhbGlicmF0aW9uLnRvb2xTaXplQXJlYUJpYXM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb29sQXJlYSA9IHRydWU7CisgICAgICAgICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLmhhdmVUb29sU2l6ZSA9IHRydWU7CiAgICAgICAgICAgICBtTG9ja2VkLm9yaWVudGVkUmFuZ2VzLnRvb2xNYWpvci5taW4gPSAwOwogICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy50b29sTWFqb3IubWF4ID0gZGlhZ29uYWxTaXplOwogICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRlZFJhbmdlcy50b29sTWFqb3IuZmxhdCA9IDA7CkBAIC0xNDYzLDYgKzE0OTksNyBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8gUHJlc3N1cmUgZmFjdG9ycy4KKyAgICAgICAgbUxvY2tlZC5wcmVzc3VyZVNjYWxlID0gMDsKICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5wcmVzc3VyZUNhbGlicmF0aW9uICE9IENhbGlicmF0aW9uOjpQUkVTU1VSRV9DQUxJQlJBVElPTl9OT05FKSB7CiAgICAgICAgICAgICBSYXdBYnNvbHV0ZUF4aXNJbmZvIHJhd1ByZXNzdXJlQXhpczsKICAgICAgICAgICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnByZXNzdXJlU291cmNlKSB7CkBAIC0xNDc2LDcgKzE1MTMsNiBAQAogICAgICAgICAgICAgICAgIHJhd1ByZXNzdXJlQXhpcy5jbGVhcigpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtTG9ja2VkLnByZXNzdXJlU2NhbGUgPSAwOwogICAgICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5wcmVzc3VyZUNhbGlicmF0aW9uID09IENhbGlicmF0aW9uOjpQUkVTU1VSRV9DQUxJQlJBVElPTl9QSFlTSUNBTAogICAgICAgICAgICAgICAgICAgICB8fCBtQ2FsaWJyYXRpb24ucHJlc3N1cmVDYWxpYnJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IENhbGlicmF0aW9uOjpQUkVTU1VSRV9DQUxJQlJBVElPTl9BTVBMSVRVREUpIHsKQEAgLTE0OTUsOCArMTUzMSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBTaXplIGZhY3RvcnMuCisgICAgICAgIG1Mb2NrZWQuc2l6ZVNjYWxlID0gMDsKICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5zaXplQ2FsaWJyYXRpb24gIT0gQ2FsaWJyYXRpb246OlNJWkVfQ0FMSUJSQVRJT05fTk9ORSkgewotICAgICAgICAgICAgbUxvY2tlZC5zaXplU2NhbGUgPSAwOwogICAgICAgICAgICAgaWYgKG1DYWxpYnJhdGlvbi5zaXplQ2FsaWJyYXRpb24gPT0gQ2FsaWJyYXRpb246OlNJWkVfQ0FMSUJSQVRJT05fTk9STUFMSVpFRCkgewogICAgICAgICAgICAgICAgIGlmIChtUmF3QXhlcy50b29sTWFqb3IudmFsaWQgJiYgbVJhd0F4ZXMudG9vbE1ham9yLm1heFZhbHVlICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgbUxvY2tlZC5zaXplU2NhbGUgPSAxLjBmIC8gbVJhd0F4ZXMudG9vbE1ham9yLm1heFZhbHVlOwpAQCAtMTUxMSw4ICsxNTQ3LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9yaWVudGF0aW9uCisgICAgICAgIG1Mb2NrZWQub3JpZW50YXRpb25TY2FsZSA9IDA7CiAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24ub3JpZW50YXRpb25DYWxpYnJhdGlvbiAhPSBDYWxpYnJhdGlvbjo6T1JJRU5UQVRJT05fQ0FMSUJSQVRJT05fTk9ORSkgewotICAgICAgICAgICAgbUxvY2tlZC5vcmllbnRhdGlvblNjYWxlID0gMDsKICAgICAgICAgICAgIGlmIChtQ2FsaWJyYXRpb24ub3JpZW50YXRpb25DYWxpYnJhdGlvbgogICAgICAgICAgICAgICAgICAgICA9PSBDYWxpYnJhdGlvbjo6T1JJRU5UQVRJT05fQ0FMSUJSQVRJT05fSU5URVJQT0xBVEVEKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1SYXdBeGVzLm9yaWVudGF0aW9uLnZhbGlkICYmIG1SYXdBeGVzLm9yaWVudGF0aW9uLm1heFZhbHVlICE9IDApIHsKQEAgLTE2NDcsNDkgKzE2ODMsNTUgQEAKICAgICBjb25zdCBJbnB1dERldmljZUNhbGlicmF0aW9uJiBpbiA9IGdldERldmljZSgpLT5nZXRDYWxpYnJhdGlvbigpOwogICAgIENhbGlicmF0aW9uJiBvdXQgPSBtQ2FsaWJyYXRpb247CiAKLSAgICAvLyBUb3VjaCBBcmVhCi0gICAgb3V0LnRvdWNoQXJlYUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPVUNIX0FSRUFfQ0FMSUJSQVRJT05fREVGQVVMVDsKLSAgICBTdHJpbmc4IHRvdWNoQXJlYUNhbGlicmF0aW9uU3RyaW5nOwotICAgIGlmIChpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC50b3VjaEFyZWEuY2FsaWJyYXRpb24iKSwgdG91Y2hBcmVhQ2FsaWJyYXRpb25TdHJpbmcpKSB7Ci0gICAgICAgIGlmICh0b3VjaEFyZWFDYWxpYnJhdGlvblN0cmluZyA9PSAibm9uZSIpIHsKLSAgICAgICAgICAgIG91dC50b3VjaEFyZWFDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX05PTkU7Ci0gICAgICAgIH0gZWxzZSBpZiAodG91Y2hBcmVhQ2FsaWJyYXRpb25TdHJpbmcgPT0gImdlb21ldHJpYyIpIHsKLSAgICAgICAgICAgIG91dC50b3VjaEFyZWFDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX0dFT01FVFJJQzsKLSAgICAgICAgfSBlbHNlIGlmICh0b3VjaEFyZWFDYWxpYnJhdGlvblN0cmluZyA9PSAicHJlc3N1cmUiKSB7Ci0gICAgICAgICAgICBvdXQudG91Y2hBcmVhQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6VE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9QUkVTU1VSRTsKLSAgICAgICAgfSBlbHNlIGlmICh0b3VjaEFyZWFDYWxpYnJhdGlvblN0cmluZyAhPSAiZGVmYXVsdCIpIHsKLSAgICAgICAgICAgIExPR1coIkludmFsaWQgdmFsdWUgZm9yIHRvdWNoLnRvdWNoQXJlYS5jYWxpYnJhdGlvbjogJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgIHRvdWNoQXJlYUNhbGlicmF0aW9uU3RyaW5nLnN0cmluZygpKTsKKyAgICAvLyBUb3VjaCBTaXplCisgICAgb3V0LnRvdWNoU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fREVGQVVMVDsKKyAgICBTdHJpbmc4IHRvdWNoU2l6ZUNhbGlicmF0aW9uU3RyaW5nOworICAgIGlmIChpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC50b3VjaFNpemUuY2FsaWJyYXRpb24iKSwgdG91Y2hTaXplQ2FsaWJyYXRpb25TdHJpbmcpKSB7CisgICAgICAgIGlmICh0b3VjaFNpemVDYWxpYnJhdGlvblN0cmluZyA9PSAibm9uZSIpIHsKKyAgICAgICAgICAgIG91dC50b3VjaFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT1VDSF9TSVpFX0NBTElCUkFUSU9OX05PTkU7CisgICAgICAgIH0gZWxzZSBpZiAodG91Y2hTaXplQ2FsaWJyYXRpb25TdHJpbmcgPT0gImdlb21ldHJpYyIpIHsKKyAgICAgICAgICAgIG91dC50b3VjaFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT1VDSF9TSVpFX0NBTElCUkFUSU9OX0dFT01FVFJJQzsKKyAgICAgICAgfSBlbHNlIGlmICh0b3VjaFNpemVDYWxpYnJhdGlvblN0cmluZyA9PSAicHJlc3N1cmUiKSB7CisgICAgICAgICAgICBvdXQudG91Y2hTaXplQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6VE9VQ0hfU0laRV9DQUxJQlJBVElPTl9QUkVTU1VSRTsKKyAgICAgICAgfSBlbHNlIGlmICh0b3VjaFNpemVDYWxpYnJhdGlvblN0cmluZyAhPSAiZGVmYXVsdCIpIHsKKyAgICAgICAgICAgIExPR1coIkludmFsaWQgdmFsdWUgZm9yIHRvdWNoLnRvdWNoU2l6ZS5jYWxpYnJhdGlvbjogJyVzJyIsCisgICAgICAgICAgICAgICAgICAgIHRvdWNoU2l6ZUNhbGlicmF0aW9uU3RyaW5nLnN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFRvb2wgQXJlYQotICAgIG91dC50b29sQXJlYUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfQVJFQV9DQUxJQlJBVElPTl9ERUZBVUxUOwotICAgIFN0cmluZzggdG9vbEFyZWFDYWxpYnJhdGlvblN0cmluZzsKLSAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG9vbC50b29sQXJlYS5jYWxpYnJhdGlvbiIpLCB0b29sQXJlYUNhbGlicmF0aW9uU3RyaW5nKSkgewotICAgICAgICBpZiAodG9vbEFyZWFDYWxpYnJhdGlvblN0cmluZyA9PSAibm9uZSIpIHsKLSAgICAgICAgICAgIG91dC50b29sQXJlYUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfQVJFQV9DQUxJQlJBVElPTl9OT05FOwotICAgICAgICB9IGVsc2UgaWYgKHRvb2xBcmVhQ2FsaWJyYXRpb25TdHJpbmcgPT0gImdlb21ldHJpYyIpIHsKLSAgICAgICAgICAgIG91dC50b29sQXJlYUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfQVJFQV9DQUxJQlJBVElPTl9HRU9NRVRSSUM7Ci0gICAgICAgIH0gZWxzZSBpZiAodG9vbEFyZWFDYWxpYnJhdGlvblN0cmluZyA9PSAibGluZWFyIikgewotICAgICAgICAgICAgb3V0LnRvb2xBcmVhQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX0xJTkVBUjsKLSAgICAgICAgfSBlbHNlIGlmICh0b29sQXJlYUNhbGlicmF0aW9uU3RyaW5nICE9ICJkZWZhdWx0IikgewotICAgICAgICAgICAgTE9HVygiSW52YWxpZCB2YWx1ZSBmb3IgdG9vbC50b29sQXJlYS5jYWxpYnJhdGlvbjogJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgIHRvb2xBcmVhQ2FsaWJyYXRpb25TdHJpbmcuc3RyaW5nKCkpOworICAgIC8vIFRvb2wgU2l6ZQorICAgIG91dC50b29sU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9ERUZBVUxUOworICAgIFN0cmluZzggdG9vbFNpemVDYWxpYnJhdGlvblN0cmluZzsKKyAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG91Y2gudG9vbFNpemUuY2FsaWJyYXRpb24iKSwgdG9vbFNpemVDYWxpYnJhdGlvblN0cmluZykpIHsKKyAgICAgICAgaWYgKHRvb2xTaXplQ2FsaWJyYXRpb25TdHJpbmcgPT0gIm5vbmUiKSB7CisgICAgICAgICAgICBvdXQudG9vbFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fTk9ORTsKKyAgICAgICAgfSBlbHNlIGlmICh0b29sU2l6ZUNhbGlicmF0aW9uU3RyaW5nID09ICJnZW9tZXRyaWMiKSB7CisgICAgICAgICAgICBvdXQudG9vbFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fR0VPTUVUUklDOworICAgICAgICB9IGVsc2UgaWYgKHRvb2xTaXplQ2FsaWJyYXRpb25TdHJpbmcgPT0gImxpbmVhciIpIHsKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9MSU5FQVI7CisgICAgICAgIH0gZWxzZSBpZiAodG9vbFNpemVDYWxpYnJhdGlvblN0cmluZyA9PSAiYXJlYSIpIHsKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9BUkVBOworICAgICAgICB9IGVsc2UgaWYgKHRvb2xTaXplQ2FsaWJyYXRpb25TdHJpbmcgIT0gImRlZmF1bHQiKSB7CisgICAgICAgICAgICBMT0dXKCJJbnZhbGlkIHZhbHVlIGZvciB0b3VjaC50b29sU2l6ZS5jYWxpYnJhdGlvbjogJyVzJyIsCisgICAgICAgICAgICAgICAgICAgIHRvb2xTaXplQ2FsaWJyYXRpb25TdHJpbmcuc3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgb3V0LmhhdmVUb29sQXJlYUxpbmVhclNjYWxlID0gaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG91Y2gudG9vbEFyZWEubGluZWFyU2NhbGUiKSwKLSAgICAgICAgICAgIG91dC50b29sQXJlYUxpbmVhclNjYWxlKTsKLSAgICBvdXQuaGF2ZVRvb2xBcmVhTGluZWFyQmlhcyA9IGluLnRyeUdldFByb3BlcnR5KFN0cmluZzgoInRvdWNoLnRvb2xBcmVhLmxpbmVhckJpYXMiKSwKLSAgICAgICAgICAgIG91dC50b29sQXJlYUxpbmVhckJpYXMpOwotICAgIG91dC5oYXZlVG9vbEFyZWFJc1N1bW1lZCA9IGluLnRyeUdldFByb3BlcnR5KFN0cmluZzgoInRvdWNoLnRvb2xBcmVhLmlzU3VtbWVkIiksCi0gICAgICAgICAgICBvdXQudG9vbEFyZWFJc1N1bW1lZCk7CisgICAgb3V0LmhhdmVUb29sU2l6ZUxpbmVhclNjYWxlID0gaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG91Y2gudG9vbFNpemUubGluZWFyU2NhbGUiKSwKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUxpbmVhclNjYWxlKTsKKyAgICBvdXQuaGF2ZVRvb2xTaXplTGluZWFyQmlhcyA9IGluLnRyeUdldFByb3BlcnR5KFN0cmluZzgoInRvdWNoLnRvb2xTaXplLmxpbmVhckJpYXMiKSwKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUxpbmVhckJpYXMpOworICAgIG91dC5oYXZlVG9vbFNpemVBcmVhU2NhbGUgPSBpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC50b29sU2l6ZS5hcmVhU2NhbGUiKSwKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUFyZWFTY2FsZSk7CisgICAgb3V0LmhhdmVUb29sU2l6ZUFyZWFCaWFzID0gaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG91Y2gudG9vbFNpemUuYXJlYUJpYXMiKSwKKyAgICAgICAgICAgIG91dC50b29sU2l6ZUFyZWFCaWFzKTsKKyAgICBvdXQuaGF2ZVRvb2xTaXplSXNTdW1tZWQgPSBpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC50b29sU2l6ZS5pc1N1bW1lZCIpLAorICAgICAgICAgICAgb3V0LnRvb2xTaXplSXNTdW1tZWQpOwogCiAgICAgLy8gUHJlc3N1cmUKICAgICBvdXQucHJlc3N1cmVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpQUkVTU1VSRV9DQUxJQlJBVElPTl9ERUZBVUxUOwogICAgIFN0cmluZzggcHJlc3N1cmVDYWxpYnJhdGlvblN0cmluZzsKLSAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG9vbC5wcmVzc3VyZS5jYWxpYnJhdGlvbiIpLCBwcmVzc3VyZUNhbGlicmF0aW9uU3RyaW5nKSkgeworICAgIGlmIChpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC5wcmVzc3VyZS5jYWxpYnJhdGlvbiIpLCBwcmVzc3VyZUNhbGlicmF0aW9uU3RyaW5nKSkgewogICAgICAgICBpZiAocHJlc3N1cmVDYWxpYnJhdGlvblN0cmluZyA9PSAibm9uZSIpIHsKICAgICAgICAgICAgIG91dC5wcmVzc3VyZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlBSRVNTVVJFX0NBTElCUkFUSU9OX05PTkU7CiAgICAgICAgIH0gZWxzZSBpZiAocHJlc3N1cmVDYWxpYnJhdGlvblN0cmluZyA9PSAicGh5c2ljYWwiKSB7CkBAIC0xNjk3LDcgKzE3MzksNyBAQAogICAgICAgICB9IGVsc2UgaWYgKHByZXNzdXJlQ2FsaWJyYXRpb25TdHJpbmcgPT0gImFtcGxpdHVkZSIpIHsKICAgICAgICAgICAgIG91dC5wcmVzc3VyZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlBSRVNTVVJFX0NBTElCUkFUSU9OX0FNUExJVFVERTsKICAgICAgICAgfSBlbHNlIGlmIChwcmVzc3VyZUNhbGlicmF0aW9uU3RyaW5nICE9ICJkZWZhdWx0IikgewotICAgICAgICAgICAgTE9HVygiSW52YWxpZCB2YWx1ZSBmb3IgdG9vbC5wcmVzc3VyZS5jYWxpYnJhdGlvbjogJyVzJyIsCisgICAgICAgICAgICBMT0dXKCJJbnZhbGlkIHZhbHVlIGZvciB0b3VjaC5wcmVzc3VyZS5jYWxpYnJhdGlvbjogJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlQ2FsaWJyYXRpb25TdHJpbmcuc3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTcyMSwxMyArMTc2MywxMyBAQAogICAgIC8vIFNpemUKICAgICBvdXQuc2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlNJWkVfQ0FMSUJSQVRJT05fREVGQVVMVDsKICAgICBTdHJpbmc4IHNpemVDYWxpYnJhdGlvblN0cmluZzsKLSAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG9vbC5zaXplLmNhbGlicmF0aW9uIiksIHNpemVDYWxpYnJhdGlvblN0cmluZykpIHsKKyAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG91Y2guc2l6ZS5jYWxpYnJhdGlvbiIpLCBzaXplQ2FsaWJyYXRpb25TdHJpbmcpKSB7CiAgICAgICAgIGlmIChzaXplQ2FsaWJyYXRpb25TdHJpbmcgPT0gIm5vbmUiKSB7CiAgICAgICAgICAgICBvdXQuc2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlNJWkVfQ0FMSUJSQVRJT05fTk9ORTsKICAgICAgICAgfSBlbHNlIGlmIChzaXplQ2FsaWJyYXRpb25TdHJpbmcgPT0gIm5vcm1hbGl6ZWQiKSB7CiAgICAgICAgICAgICBvdXQuc2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlNJWkVfQ0FMSUJSQVRJT05fTk9STUFMSVpFRDsKICAgICAgICAgfSBlbHNlIGlmIChzaXplQ2FsaWJyYXRpb25TdHJpbmcgIT0gImRlZmF1bHQiKSB7Ci0gICAgICAgICAgICBMT0dXKCJJbnZhbGlkIHZhbHVlIGZvciB0b29sLnNpemUuY2FsaWJyYXRpb246ICclcyciLAorICAgICAgICAgICAgTE9HVygiSW52YWxpZCB2YWx1ZSBmb3IgdG91Y2guc2l6ZS5jYWxpYnJhdGlvbjogJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgIHNpemVDYWxpYnJhdGlvblN0cmluZy5zdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzM1LDEzICsxNzc3LDEzIEBACiAgICAgLy8gT3JpZW50YXRpb24KICAgICBvdXQub3JpZW50YXRpb25DYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpPUklFTlRBVElPTl9DQUxJQlJBVElPTl9ERUZBVUxUOwogICAgIFN0cmluZzggb3JpZW50YXRpb25DYWxpYnJhdGlvblN0cmluZzsKLSAgICBpZiAoaW4udHJ5R2V0UHJvcGVydHkoU3RyaW5nOCgidG9vbC5vcmllbnRhdGlvbi5jYWxpYnJhdGlvbiIpLCBvcmllbnRhdGlvbkNhbGlicmF0aW9uU3RyaW5nKSkgeworICAgIGlmIChpbi50cnlHZXRQcm9wZXJ0eShTdHJpbmc4KCJ0b3VjaC5vcmllbnRhdGlvbi5jYWxpYnJhdGlvbiIpLCBvcmllbnRhdGlvbkNhbGlicmF0aW9uU3RyaW5nKSkgewogICAgICAgICBpZiAob3JpZW50YXRpb25DYWxpYnJhdGlvblN0cmluZyA9PSAibm9uZSIpIHsKICAgICAgICAgICAgIG91dC5vcmllbnRhdGlvbkNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246Ok9SSUVOVEFUSU9OX0NBTElCUkFUSU9OX05PTkU7CiAgICAgICAgIH0gZWxzZSBpZiAob3JpZW50YXRpb25DYWxpYnJhdGlvblN0cmluZyA9PSAiaW50ZXJwb2xhdGVkIikgewogICAgICAgICAgICAgb3V0Lm9yaWVudGF0aW9uQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6T1JJRU5UQVRJT05fQ0FMSUJSQVRJT05fSU5URVJQT0xBVEVEOwogICAgICAgICB9IGVsc2UgaWYgKG9yaWVudGF0aW9uQ2FsaWJyYXRpb25TdHJpbmcgIT0gImRlZmF1bHQiKSB7Ci0gICAgICAgICAgICBMT0dXKCJJbnZhbGlkIHZhbHVlIGZvciB0b29sLm9yaWVudGF0aW9uLmNhbGlicmF0aW9uOiAnJXMnIiwKKyAgICAgICAgICAgIExPR1coIkludmFsaWQgdmFsdWUgZm9yIHRvdWNoLm9yaWVudGF0aW9uLmNhbGlicmF0aW9uOiAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25DYWxpYnJhdGlvblN0cmluZy5zdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzg5LDEzICsxODMxLDEzIEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIFRvb2wgQXJlYQotICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvb2xBcmVhQ2FsaWJyYXRpb24pIHsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX0FSRUFfQ0FMSUJSQVRJT05fREVGQVVMVDoKKyAgICAvLyBUb29sIFNpemUKKyAgICBzd2l0Y2ggKG1DYWxpYnJhdGlvbi50b29sU2l6ZUNhbGlicmF0aW9uKSB7CisgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9PTF9TSVpFX0NBTElCUkFUSU9OX0RFRkFVTFQ6CiAgICAgICAgIGlmIChtUmF3QXhlcy50b29sTWFqb3IudmFsaWQpIHsKLSAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sQXJlYUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPT0xfQVJFQV9DQUxJQlJBVElPTl9MSU5FQVI7CisgICAgICAgICAgICBtQ2FsaWJyYXRpb24udG9vbFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fTElORUFSOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvb2xBcmVhQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX05PTkU7CisgICAgICAgICAgICBtQ2FsaWJyYXRpb24udG9vbFNpemVDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fTk9ORTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtMTgwMywxNCArMTg0NSwxNCBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICAvLyBUb3VjaCBBcmVhCi0gICAgc3dpdGNoIChtQ2FsaWJyYXRpb24udG91Y2hBcmVhQ2FsaWJyYXRpb24pIHsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX0RFRkFVTFQ6CisgICAgLy8gVG91Y2ggU2l6ZQorICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvdWNoU2l6ZUNhbGlicmF0aW9uKSB7CisgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9VQ0hfU0laRV9DQUxJQlJBVElPTl9ERUZBVUxUOgogICAgICAgICBpZiAobUNhbGlicmF0aW9uLnByZXNzdXJlQ2FsaWJyYXRpb24gIT0gQ2FsaWJyYXRpb246OlBSRVNTVVJFX0NBTElCUkFUSU9OX05PTkUKLSAgICAgICAgICAgICAgICAmJiBtQ2FsaWJyYXRpb24udG9vbEFyZWFDYWxpYnJhdGlvbiAhPSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX05PTkUpIHsKLSAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b3VjaEFyZWFDYWxpYnJhdGlvbiA9IENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX1BSRVNTVVJFOworICAgICAgICAgICAgICAgICYmIG1DYWxpYnJhdGlvbi50b29sU2l6ZUNhbGlicmF0aW9uICE9IENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fTk9ORSkgeworICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvdWNoU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fUFJFU1NVUkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtQ2FsaWJyYXRpb24udG91Y2hBcmVhQ2FsaWJyYXRpb24gPSBDYWxpYnJhdGlvbjo6VE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9OT05FOworICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvdWNoU2l6ZUNhbGlicmF0aW9uID0gQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fTk9ORTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtMTg1MCw0OSArMTg5Miw2MiBAQAogdm9pZCBUb3VjaElucHV0TWFwcGVyOjpkdW1wQ2FsaWJyYXRpb24oU3RyaW5nOCYgZHVtcCkgewogICAgIGR1bXAuYXBwZW5kKElOREVOVDMgIkNhbGlicmF0aW9uOlxuIik7CiAKLSAgICAvLyBUb3VjaCBBcmVhCi0gICAgc3dpdGNoIChtQ2FsaWJyYXRpb24udG91Y2hBcmVhQ2FsaWJyYXRpb24pIHsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX05PTkU6Ci0gICAgICAgIGR1bXAuYXBwZW5kKElOREVOVDQgInRvdWNoLnRvdWNoQXJlYS5jYWxpYnJhdGlvbjogbm9uZVxuIik7CisgICAgLy8gVG91Y2ggU2l6ZQorICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvdWNoU2l6ZUNhbGlicmF0aW9uKSB7CisgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9VQ0hfU0laRV9DQUxJQlJBVElPTl9OT05FOgorICAgICAgICBkdW1wLmFwcGVuZChJTkRFTlQ0ICJ0b3VjaC50b3VjaFNpemUuY2FsaWJyYXRpb246IG5vbmVcbiIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX0dFT01FVFJJQzoKLSAgICAgICAgZHVtcC5hcHBlbmQoSU5ERU5UNCAidG91Y2gudG91Y2hBcmVhLmNhbGlicmF0aW9uOiBnZW9tZXRyaWNcbiIpOworICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fR0VPTUVUUklDOgorICAgICAgICBkdW1wLmFwcGVuZChJTkRFTlQ0ICJ0b3VjaC50b3VjaFNpemUuY2FsaWJyYXRpb246IGdlb21ldHJpY1xuIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPVUNIX0FSRUFfQ0FMSUJSQVRJT05fUFJFU1NVUkU6Ci0gICAgICAgIGR1bXAuYXBwZW5kKElOREVOVDQgInRvdWNoLnRvdWNoQXJlYS5jYWxpYnJhdGlvbjogcHJlc3N1cmVcbiIpOworICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fUFJFU1NVUkU6CisgICAgICAgIGR1bXAuYXBwZW5kKElOREVOVDQgInRvdWNoLnRvdWNoU2l6ZS5jYWxpYnJhdGlvbjogcHJlc3N1cmVcbiIpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBhc3NlcnQoZmFsc2UpOwogICAgIH0KIAotICAgIC8vIFRvb2wgQXJlYQotICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvb2xBcmVhQ2FsaWJyYXRpb24pIHsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX0FSRUFfQ0FMSUJSQVRJT05fTk9ORToKLSAgICAgICAgZHVtcC5hcHBlbmQoSU5ERU5UNCAidG91Y2gudG9vbEFyZWEuY2FsaWJyYXRpb246IG5vbmVcbiIpOworICAgIC8vIFRvb2wgU2l6ZQorICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvb2xTaXplQ2FsaWJyYXRpb24pIHsKKyAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fTk9ORToKKyAgICAgICAgZHVtcC5hcHBlbmQoSU5ERU5UNCAidG91Y2gudG9vbFNpemUuY2FsaWJyYXRpb246IG5vbmVcbiIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX0FSRUFfQ0FMSUJSQVRJT05fR0VPTUVUUklDOgotICAgICAgICBkdW1wLmFwcGVuZChJTkRFTlQ0ICJ0b3VjaC50b29sQXJlYS5jYWxpYnJhdGlvbjogZ2VvbWV0cmljXG4iKTsKKyAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fR0VPTUVUUklDOgorICAgICAgICBkdW1wLmFwcGVuZChJTkRFTlQ0ICJ0b3VjaC50b29sU2l6ZS5jYWxpYnJhdGlvbjogZ2VvbWV0cmljXG4iKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX0xJTkVBUjoKLSAgICAgICAgZHVtcC5hcHBlbmQoSU5ERU5UNCAidG91Y2gudG9vbEFyZWEuY2FsaWJyYXRpb246IGxpbmVhclxuIik7CisgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9PTF9TSVpFX0NBTElCUkFUSU9OX0xJTkVBUjoKKyAgICAgICAgZHVtcC5hcHBlbmQoSU5ERU5UNCAidG91Y2gudG9vbFNpemUuY2FsaWJyYXRpb246IGxpbmVhclxuIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9BUkVBOgorICAgICAgICBkdW1wLmFwcGVuZChJTkRFTlQ0ICJ0b3VjaC50b29sU2l6ZS5jYWxpYnJhdGlvbjogYXJlYVxuIik7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGFzc2VydChmYWxzZSk7CiAgICAgfQogCi0gICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbEFyZWFMaW5lYXJTY2FsZSkgewotICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJ0b3VjaC50b29sQXJlYS5saW5lYXJTY2FsZTogJTAuM2ZcbiIsCi0gICAgICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvb2xBcmVhTGluZWFyU2NhbGUpOworICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xTaXplTGluZWFyU2NhbGUpIHsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAidG91Y2gudG9vbFNpemUubGluZWFyU2NhbGU6ICUwLjNmXG4iLAorICAgICAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sU2l6ZUxpbmVhclNjYWxlKTsKICAgICB9CiAKLSAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sQXJlYUxpbmVhckJpYXMpIHsKLSAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAidG91Y2gudG9vbEFyZWEubGluZWFyQmlhczogJTAuM2ZcbiIsCi0gICAgICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvb2xBcmVhTGluZWFyQmlhcyk7CisgICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbFNpemVMaW5lYXJCaWFzKSB7CisgICAgICAgIGR1bXAuYXBwZW5kRm9ybWF0KElOREVOVDQgInRvdWNoLnRvb2xTaXplLmxpbmVhckJpYXM6ICUwLjNmXG4iLAorICAgICAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sU2l6ZUxpbmVhckJpYXMpOwogICAgIH0KIAotICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xBcmVhSXNTdW1tZWQpIHsKLSAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAidG91Y2gudG9vbEFyZWEuaXNTdW1tZWQ6ICVkXG4iLAotICAgICAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sQXJlYUlzU3VtbWVkKTsKKyAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sU2l6ZUFyZWFTY2FsZSkgeworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJ0b3VjaC50b29sU2l6ZS5hcmVhU2NhbGU6ICUwLjNmXG4iLAorICAgICAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sU2l6ZUFyZWFTY2FsZSk7CisgICAgfQorCisgICAgaWYgKG1DYWxpYnJhdGlvbi5oYXZlVG9vbFNpemVBcmVhQmlhcykgeworICAgICAgICBkdW1wLmFwcGVuZEZvcm1hdChJTkRFTlQ0ICJ0b3VjaC50b29sU2l6ZS5hcmVhQmlhczogJTAuM2ZcbiIsCisgICAgICAgICAgICAgICAgbUNhbGlicmF0aW9uLnRvb2xTaXplQXJlYUJpYXMpOworICAgIH0KKworICAgIGlmIChtQ2FsaWJyYXRpb24uaGF2ZVRvb2xTaXplSXNTdW1tZWQpIHsKKyAgICAgICAgZHVtcC5hcHBlbmRGb3JtYXQoSU5ERU5UNCAidG91Y2gudG9vbFNpemUuaXNTdW1tZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIG1DYWxpYnJhdGlvbi50b29sU2l6ZUlzU3VtbWVkKTsKICAgICB9CiAKICAgICAvLyBQcmVzc3VyZQpAQCAtMjIwNyw4ICsyMjYyLDggQEAKIAogICAgICAgICAgICAgLy8gVG9vbE1ham9yIGFuZCBUb29sTWlub3IKICAgICAgICAgICAgIGZsb2F0IHRvb2xNYWpvciwgdG9vbE1pbm9yOwotICAgICAgICAgICAgc3dpdGNoIChtQ2FsaWJyYXRpb24udG9vbEFyZWFDYWxpYnJhdGlvbikgewotICAgICAgICAgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9PTF9BUkVBX0NBTElCUkFUSU9OX0dFT01FVFJJQzoKKyAgICAgICAgICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvb2xTaXplQ2FsaWJyYXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPT0xfU0laRV9DQUxJQlJBVElPTl9HRU9NRVRSSUM6CiAgICAgICAgICAgICAgICAgdG9vbE1ham9yID0gaW4udG9vbE1ham9yICogbUxvY2tlZC5nZW9tZXRyaWNTY2FsZTsKICAgICAgICAgICAgICAgICBpZiAobVJhd0F4ZXMudG9vbE1pbm9yLnZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvb2xNaW5vciA9IGluLnRvb2xNaW5vciAqIG1Mb2NrZWQuZ2VvbWV0cmljU2NhbGU7CkBAIC0yMjE2LDI2ICsyMjcxLDM2IEBACiAgICAgICAgICAgICAgICAgICAgIHRvb2xNaW5vciA9IHRvb2xNYWpvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX0FSRUFfQ0FMSUJSQVRJT05fTElORUFSOgorICAgICAgICAgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9PTF9TSVpFX0NBTElCUkFUSU9OX0xJTkVBUjoKICAgICAgICAgICAgICAgICB0b29sTWFqb3IgPSBpbi50b29sTWFqb3IgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgPyBpbi50b29sTWFqb3IgKiBtTG9ja2VkLnRvb2xBcmVhTGluZWFyU2NhbGUgKyBtTG9ja2VkLnRvb2xBcmVhTGluZWFyQmlhcworICAgICAgICAgICAgICAgICAgICAgICAgPyBpbi50b29sTWFqb3IgKiBtTG9ja2VkLnRvb2xTaXplTGluZWFyU2NhbGUgKyBtTG9ja2VkLnRvb2xTaXplTGluZWFyQmlhcwogICAgICAgICAgICAgICAgICAgICAgICAgOiAwOwogICAgICAgICAgICAgICAgIGlmIChtUmF3QXhlcy50b29sTWlub3IudmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgdG9vbE1pbm9yID0gaW4udG9vbE1pbm9yICE9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGluLnRvb2xNaW5vciAqIG1Mb2NrZWQudG9vbEFyZWFMaW5lYXJTY2FsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtTG9ja2VkLnRvb2xBcmVhTGluZWFyQmlhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW4udG9vbE1pbm9yICogbUxvY2tlZC50b29sU2l6ZUxpbmVhclNjYWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJCaWFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRvb2xNaW5vciA9IHRvb2xNYWpvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENhbGlicmF0aW9uOjpUT09MX1NJWkVfQ0FMSUJSQVRJT05fQVJFQToKKyAgICAgICAgICAgICAgICBpZiAoaW4udG9vbE1ham9yICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGlhbWV0ZXIgPSBzcXJ0Zihpbi50b29sTWFqb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1Mb2NrZWQudG9vbFNpemVBcmVhU2NhbGUgKyBtTG9ja2VkLnRvb2xTaXplQXJlYUJpYXMpOworICAgICAgICAgICAgICAgICAgICB0b29sTWFqb3IgPSBkaWFtZXRlciAqIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJTY2FsZSArIG1Mb2NrZWQudG9vbFNpemVMaW5lYXJCaWFzOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRvb2xNYWpvciA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRvb2xNaW5vciA9IHRvb2xNYWpvcjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdG9vbE1ham9yID0gMDsKICAgICAgICAgICAgICAgICB0b29sTWlub3IgPSAwOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sQXJlYUlzU3VtbWVkICYmIG1DYWxpYnJhdGlvbi50b29sQXJlYUlzU3VtbWVkKSB7CisgICAgICAgICAgICBpZiAobUNhbGlicmF0aW9uLmhhdmVUb29sU2l6ZUlzU3VtbWVkICYmIG1DYWxpYnJhdGlvbi50b29sU2l6ZUlzU3VtbWVkKSB7CiAgICAgICAgICAgICAgICAgdG9vbE1ham9yIC89IHBvaW50ZXJDb3VudDsKICAgICAgICAgICAgICAgICB0b29sTWlub3IgLz0gcG9pbnRlckNvdW50OwogICAgICAgICAgICAgfQpAQCAtMjI2Niw4ICsyMzMxLDggQEAKIAogICAgICAgICAgICAgLy8gVG91Y2hNYWpvciBhbmQgVG91Y2hNaW5vcgogICAgICAgICAgICAgZmxvYXQgdG91Y2hNYWpvciwgdG91Y2hNaW5vcjsKLSAgICAgICAgICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvdWNoQXJlYUNhbGlicmF0aW9uKSB7Ci0gICAgICAgICAgICBjYXNlIENhbGlicmF0aW9uOjpUT1VDSF9BUkVBX0NBTElCUkFUSU9OX0dFT01FVFJJQzoKKyAgICAgICAgICAgIHN3aXRjaCAobUNhbGlicmF0aW9uLnRvdWNoU2l6ZUNhbGlicmF0aW9uKSB7CisgICAgICAgICAgICBjYXNlIENhbGlicmF0aW9uOjpUT1VDSF9TSVpFX0NBTElCUkFUSU9OX0dFT01FVFJJQzoKICAgICAgICAgICAgICAgICB0b3VjaE1ham9yID0gaW4udG91Y2hNYWpvciAqIG1Mb2NrZWQuZ2VvbWV0cmljU2NhbGU7CiAgICAgICAgICAgICAgICAgaWYgKG1SYXdBeGVzLnRvdWNoTWlub3IudmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgdG91Y2hNaW5vciA9IGluLnRvdWNoTWlub3IgKiBtTG9ja2VkLmdlb21ldHJpY1NjYWxlOwpAQCAtMjI3NSw3ICsyMzQwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdG91Y2hNaW5vciA9IHRvdWNoTWFqb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDYWxpYnJhdGlvbjo6VE9VQ0hfQVJFQV9DQUxJQlJBVElPTl9QUkVTU1VSRToKKyAgICAgICAgICAgIGNhc2UgQ2FsaWJyYXRpb246OlRPVUNIX1NJWkVfQ0FMSUJSQVRJT05fUFJFU1NVUkU6CiAgICAgICAgICAgICAgICAgdG91Y2hNYWpvciA9IHRvb2xNYWpvciAqIHByZXNzdXJlOwogICAgICAgICAgICAgICAgIHRvdWNoTWlub3IgPSB0b29sTWlub3IgKiBwcmVzc3VyZTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0FuZHJvaWQubWsgYi9tZWRpYS9saWJtZWRpYS9BbmRyb2lkLm1rCmluZGV4IGI0ZDAxZjUuLjJlNWNiZTMgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlibWVkaWEvQW5kcm9pZC5tawpAQCAtNTAsNyArNTAsNyBAQAogTE9DQUxfQ19JTkNMVURFUyA6PSBcCiAgICAgJChKTklfSF9JTkNMVURFKSBcCiAgICAgJChjYWxsIGluY2x1ZGUtcGF0aC1mb3IsIGdyYXBoaWNzIGNvcmVjZykgXAotICAgICQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXggXAogICAgIGV4dGVybmFsL2ljdTRjL2NvbW1vbiBcCiAgICAgZXh0ZXJuYWwvZXhwYXQvbGliCiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKaW5kZXggZTFlZGQxNi4uNTU4NDZiZSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKQEAgLTUzLDcgKzUzLDcgQEAKIExPQ0FMX0NfSU5DTFVERVMgOj0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCSQoSk5JX0hfSU5DTFVERSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJJChjYWxsIGluY2x1ZGUtcGF0aC1mb3IsIGdyYXBoaWNzIGNvcmVjZykgICAgICAgICAgICAgICAgICAgICAgIFwKLQkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorCSQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4IFwKIAkkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgICAgICAgICAgICAgXAogCSQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcCAgICAgICAgICAgICAgICBcCiAgICAgICAgICQoVE9QKS9leHRlcm5hbC90cmVtb2xvL1RyZW1vbG8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BbmRyb2lkLm1rCmluZGV4IDNlMTdhN2UuLjYxNWYzZTggMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQW5kcm9pZC5tawpAQCAtNDYsOCArNDYsNyBAQAogCiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAotICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAotICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvYW5kcm9pZCBcCisgICAgICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4IFwKICAgICAgICAgJChUT1ApL2V4dGVybmFsL3RyZW1vbG8gXAogICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzJUU1dyaXRlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHMlRTV3JpdGVyLmNwcAppbmRleCBiM2RhZjY3Li44MWEyYjBkIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHMlRTV3JpdGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHMlRTV3JpdGVyLmNwcApAQCAtNzI1LDYgKzcyNSwxNCBAQAogCiAgICAgc2l6ZV90IFBFU19wYWNrZXRfbGVuZ3RoID0gYWNjZXNzVW5pdC0+c2l6ZSgpICsgODsKIAorICAgIGlmIChQRVNfcGFja2V0X2xlbmd0aCA+PSA2NTUzNikgeworICAgICAgICAvLyBUaGlzIHJlYWxseSBzaG91bGQgb25seSBoYXBwZW4gZm9yIHZpZGVvLgorICAgICAgICBDSEVDS19FUShzdHJlYW1faWQsIDB4ZTB1KTsKKworICAgICAgICAvLyBJdCdzIHZhbGlkIHRvIHNldCB0aGlzIHRvIDAgZm9yIHZpZGVvIGFjY29yZGluZyB0byB0aGUgc3BlY3MuCisgICAgICAgIFBFU19wYWNrZXRfbGVuZ3RoID0gMDsKKyAgICB9CisKICAgICB1aW50OF90ICpwdHIgPSBidWZmZXItPmRhdGEoKTsKICAgICAqcHRyKysgPSAweDQ3OwogICAgICpwdHIrKyA9IDB4NDAgfCAoUElEID4+IDgpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwCmluZGV4IDRiYmMyNTEuLmY0MDQ3MDggMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QRUc0RXh0cmFjdG9yLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHNEV4dHJhY3Rvci5jcHAKQEAgLTQ5OCw3ICs0OTgsOSBAQAogICAgICAgICAgICAgaWYgKGNodW5rX3R5cGUgPT0gRk9VUkNDKCdzJywgJ3QnLCAnYicsICdsJykpIHsKICAgICAgICAgICAgICAgICBMT0dWKCJzYW1wbGVUYWJsZSBjaHVuayBpcyAlZCBieXRlcyBsb25nLiIsIChzaXplX3QpY2h1bmtfc2l6ZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobURhdGFTb3VyY2UtPmZsYWdzKCkgJiBEYXRhU291cmNlOjprV2FudHNQcmVmZXRjaGluZykgeworICAgICAgICAgICAgICAgIGlmIChtRGF0YVNvdXJjZS0+ZmxhZ3MoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiAoRGF0YVNvdXJjZTo6a1dhbnRzUHJlZmV0Y2hpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERhdGFTb3VyY2U6OmtJc0NhY2hpbmdEYXRhU291cmNlKSkgewogICAgICAgICAgICAgICAgICAgICBzcDxNUEVHNERhdGFTb3VyY2U+IGNhY2hlZFNvdXJjZSA9CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTVBFRzREYXRhU291cmNlKG1EYXRhU291cmNlKTsKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT01YQ29kZWMuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT01YQ29kZWMuY3BwCmluZGV4IDQ2NDhhZDMuLjlhNDlhOWIgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09NWENvZGVjLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9PTVhDb2RlYy5jcHAKQEAgLTQ5MywxMiArNDkzLDI5IEBACiAKICAgICAgICAgTE9HVigiQXR0ZW1wdGluZyB0byBhbGxvY2F0ZSBPTVggbm9kZSAnJXMnIiwgY29tcG9uZW50TmFtZSk7CiAKKyAgICAgICAgdWludDMyX3QgcXVpcmtzID0gZ2V0Q29tcG9uZW50UXVpcmtzKGNvbXBvbmVudE5hbWUsIGNyZWF0ZUVuY29kZXIpOworCisgICAgICAgIGlmICghY3JlYXRlRW5jb2RlcgorICAgICAgICAgICAgICAgICYmIChxdWlya3MgJiBrT3V0cHV0QnVmZmVyc0FyZVVucmVhZGFibGUpCisgICAgICAgICAgICAgICAgJiYgKGZsYWdzICYga0NsaWVudE5lZWRzRnJhbWVidWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoc3RybmNtcChjb21wb25lbnROYW1lLCAiT01YLlNFQy4iLCA4KSkgeworICAgICAgICAgICAgICAgIC8vIEZvciBPTVguU0VDLiogZGVjb2RlcnMgd2UgY2FuIGVuYWJsZSBhIHNwZWNpYWwgbW9kZSB0aGF0CisgICAgICAgICAgICAgICAgLy8gZ2l2ZXMgdGhlIGNsaWVudCBhY2Nlc3MgdG8gdGhlIGZyYW1lYnVmZmVyIGNvbnRlbnRzLgorCisgICAgICAgICAgICAgICAgTE9HVygiQ29tcG9uZW50ICclcycgZG9lcyBub3QgZ2l2ZSB0aGUgY2xpZW50IGFjY2VzcyB0byAiCisgICAgICAgICAgICAgICAgICAgICAidGhlIGZyYW1lYnVmZmVyIGNvbnRlbnRzLiBTa2lwcGluZy4iLAorICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSk7CisKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHN0YXR1c190IGVyciA9IG9teC0+YWxsb2NhdGVOb2RlKGNvbXBvbmVudE5hbWUsIG9ic2VydmVyLCAmbm9kZSk7CiAgICAgICAgIGlmIChlcnIgPT0gT0spIHsKICAgICAgICAgICAgIExPR1YoIlN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgT01YIG5vZGUgJyVzJyIsIGNvbXBvbmVudE5hbWUpOwogCiAgICAgICAgICAgICBzcDxPTVhDb2RlYz4gY29kZWMgPSBuZXcgT01YQ29kZWMoCi0gICAgICAgICAgICAgICAgICAgIG9teCwgbm9kZSwgZ2V0Q29tcG9uZW50UXVpcmtzKGNvbXBvbmVudE5hbWUsIGNyZWF0ZUVuY29kZXIpLAorICAgICAgICAgICAgICAgICAgICBvbXgsIG5vZGUsIHF1aXJrcywKICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRW5jb2RlciwgbWltZSwgY29tcG9uZW50TmFtZSwKICAgICAgICAgICAgICAgICAgICAgc291cmNlKTsKIApAQCAtNjgxLDYgKzY5OCwzMyBAQAogCiAgICAgaW5pdE91dHB1dEZvcm1hdChtZXRhKTsKIAorICAgIGlmICgoZmxhZ3MgJiBrQ2xpZW50TmVlZHNGcmFtZWJ1ZmZlcikKKyAgICAgICAgICAgICYmICFzdHJuY21wKG1Db21wb25lbnROYW1lLCAiT01YLlNFQy4iLCA4KSkgeworICAgICAgICBPTVhfSU5ERVhUWVBFIGluZGV4OworCisgICAgICAgIHN0YXR1c190IGVyciA9CisgICAgICAgICAgICBtT01YLT5nZXRFeHRlbnNpb25JbmRleCgKKyAgICAgICAgICAgICAgICAgICAgbU5vZGUsCisgICAgICAgICAgICAgICAgICAgICJPTVguU0VDLmluZGV4LlRodW1ibmFpbE1vZGUiLAorICAgICAgICAgICAgICAgICAgICAmaW5kZXgpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKworICAgICAgICBPTVhfQk9PTCBlbmFibGUgPSBPTVhfVFJVRTsKKyAgICAgICAgZXJyID0gbU9NWC0+c2V0Q29uZmlnKG1Ob2RlLCBpbmRleCwgJmVuYWJsZSwgc2l6ZW9mKGVuYWJsZSkpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIENPREVDX0xPR0UoInNldENvbmZpZygnT01YLlNFQy5pbmRleC5UaHVtYm5haWxNb2RlJykgIgorICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuZWQgZXJyb3IgMHglMDh4IiwgZXJyKTsKKworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorCisgICAgICAgIG1RdWlya3MgJj0gfmtPdXRwdXRCdWZmZXJzQXJlVW5yZWFkYWJsZTsKKyAgICB9CisKICAgICByZXR1cm4gT0s7CiB9CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlci5jcHAKaW5kZXggYWY5YzcwYy4uYTgwMGE5MyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgIHNwPE1lZGlhU291cmNlPiBkZWNvZGVyID0KICAgICAgICAgT01YQ29kZWM6OkNyZWF0ZSgKICAgICAgICAgICAgICAgICBjbGllbnQtPmludGVyZmFjZSgpLCBzb3VyY2UtPmdldEZvcm1hdCgpLCBmYWxzZSwgc291cmNlLAotICAgICAgICAgICAgICAgIE5VTEwsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICBOVUxMLCBmbGFncyB8IE9NWENvZGVjOjprQ2xpZW50TmVlZHNGcmFtZWJ1ZmZlcik7CiAKICAgICBpZiAoZGVjb2Rlci5nZXQoKSA9PSBOVUxMKSB7CiAgICAgICAgIExPR1YoInVuYWJsZSB0byBpbnN0YW50aWF0ZSB2aWRlbyBkZWNvZGVyLiIpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hdmMvZGVjL0FuZHJvaWQubWsKaW5kZXggMmExYzhlMC4uMWIwMDM0NyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYXZjL2RlYy9BbmRyb2lkLm1rCkBAIC0yMCw3ICsyMCw3IEBACiAgCSQoTE9DQUxfUEFUSCkvaW5jbHVkZSBcCiAgCSQoTE9DQUxfUEFUSCkvLi4vY29tbW9uL2luY2x1ZGUgXAogICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAotICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUKKyAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgKIAogTE9DQUxfQ0ZMQUdTIDo9IC1ET1NDTF9JTVBPUlRfUkVGPSAtRE9TQ0xfVU5VU0VEX0FSRz0gLURPU0NMX0VYUE9SVF9SRUY9CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hdmMvZW5jL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYXZjL2VuYy9BbmRyb2lkLm1rCmluZGV4IDEwMGYyMzkuLmViMmUzMjAgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hdmMvZW5jL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9lbmMvQW5kcm9pZC5tawpAQCAtMjUsNyArMjUsNyBAQAogTE9DQUxfQ19JTkNMVURFUyA6PSBcCiAgICAgJChMT0NBTF9QQVRIKS9zcmMgXAogICAgICQoTE9DQUxfUEFUSCkvLi4vY29tbW9uL2luY2x1ZGUgXAotICAgICQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXggXAogICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZQogCiBMT0NBTF9DRkxBR1MgOj0gXApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL200dl9oMjYzL2RlYy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL200dl9oMjYzL2RlYy9BbmRyb2lkLm1rCmluZGV4IDQwM2RhNTguLjJkOWJjYzYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9tNHZfaDI2My9kZWMvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvbTR2X2gyNjMvZGVjL0FuZHJvaWQubWsKQEAgLTQzLDcgKzQzLDcgQEAKIAkkKExPQ0FMX1BBVEgpL3NyYyBcCiAJJChMT0NBTF9QQVRIKS9pbmNsdWRlIFwKIAkkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAotCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZQorCSQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4CiAKIExPQ0FMX0NGTEFHUyA6PSAtRE9TQ0xfRVhQT1JUX1JFRj0gLURPU0NMX0lNUE9SVF9SRUY9CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9tNHZfaDI2My9lbmMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9tNHZfaDI2My9lbmMvQW5kcm9pZC5tawppbmRleCBmMmM5MzIwLi40MzMxOGU5IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvbTR2X2gyNjMvZW5jL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL200dl9oMjYzL2VuYy9BbmRyb2lkLm1rCkBAIC0zMSw3ICszMSw3IEBACiBMT0NBTF9DX0lOQ0xVREVTIDo9IFwKICAgICAkKExPQ0FMX1BBVEgpL3NyYyBcCiAgICAgJChMT0NBTF9QQVRIKS9pbmNsdWRlIFwKLSAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4IFwKICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUKIAogaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvZGVjL0FuZHJvaWQubWsKaW5kZXggMDNkZmI3NS4uYjc2OWYwZCAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL29uMi9kZWMvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9BbmRyb2lkLm1rCkBAIC04LDcgKzgsNyBAQAogCiBMT0NBTF9DX0lOQ0xVREVTIDo9IFwKICAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKLSAgICAgICAgJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKyAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXggXAogICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvbGlidnB4IFwKICAgICAgICAgJChUT1ApL2V4dGVybmFsL2xpYnZweC92cHhfY29kZWMgXAogICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvbGlidnB4L3ZweF9wb3J0cwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29sb3Jjb252ZXJzaW9uL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQW5kcm9pZC5tawppbmRleCBiOWJhMWJlLi4wZGNiZDczIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQW5kcm9pZC5tawpAQCAtNiw3ICs2LDcgQEAKICAgICAgICAgU29mdHdhcmVSZW5kZXJlci5jcHAKIAogTE9DQUxfQ19JTkNMVURFUyA6PSBcCi0gICAgICAgICQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZQorICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heAogCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICAgICAgIFwKICAgICAgICAgbGliYmluZGVyICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL0FuZHJvaWQubWsKaW5kZXggM2RlMmM4MC4uY2M3ZGQ0ZiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9BbmRyb2lkLm1rCkBAIC04LDcgKzgsNyBAQAogCiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAotCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisJJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXggXAogICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0CiAKIExPQ0FMX01PRFVMRTo9IGxpYnN0YWdlZnJpZ2h0X2h0dHBsaXZlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvQW5kcm9pZC5tawppbmRleCAwZTcyMTk4Li4zM2M5ZDk3IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9BbmRyb2lkLm1rCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL0FuZHJvaWQubWsKQEAgLTcsNyArNyw3IEBACiAKIExPQ0FMX0NfSU5DTFVERVM6PSBcCiAJJChKTklfSF9JTkNMVURFKSBcCi0gICAgICAgICQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisgICAgICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4IFwKIAogTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5kcm9pZC5tawppbmRleCA0ZGZjMGY3Li40YTMwNDE2IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BbmRyb2lkLm1rCkBAIC0xMCw3ICsxMCw3IEBACiAKIExPQ0FMX0NfSU5DTFVERVM6PSBcCiAJJChKTklfSF9JTkNMVURFKSBcCi0JJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKwkkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heCBcCiAgICAgICAgICQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQKIAogTE9DQUxfTU9EVUxFOj0gbGlic3RhZ2VmcmlnaHRfbXBlZzJ0cwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvQW5kcm9pZC5tawppbmRleCBmNGY1Y2MxLi5lYWQxNjc1IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvQW5kcm9pZC5tawpAQCAtMSwxMCArMSwxMiBAQAogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKIAoraWZuZXEgKCQoQlVJTERfV0lUSE9VVF9QViksdHJ1ZSkKICMgU2V0IHVwIHRoZSBPcGVuQ29yZSB2YXJpYWJsZXMuCiBpbmNsdWRlIGV4dGVybmFsL29wZW5jb3JlL0NvbmZpZy5tawogTE9DQUxfQ19JTkNMVURFUyA6PSAkKFBWX0lOQ0xVREVTKQogTE9DQUxfQ0ZMQUdTIDo9ICQoUFZfQ0ZMQUdTX01JTlVTX1ZJU0lCSUxJVFkpCitlbmRpZgogCiBMT0NBTF9DX0lOQ0xVREVTICs9ICQoSk5JX0hfSU5DTFVERSkKIApAQCAtMjEsNiArMjMsOCBAQAogTE9DQUxfQ0ZMQUdTICs9IC1ETk9fT1BFTkNPUkUKIGVuZGlmCiAKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgKKwogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAgICAgICBcCiAgICAgICAgIGxpYmJpbmRlciAgICAgICAgICAgICAgIFwKICAgICAgICAgbGlibWVkaWEgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L3Rlc3RzL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5tawppbmRleCA4YmY0MzM2Li5iZjY5NDI4IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvdGVzdHMvQW5kcm9pZC5tawpAQCAtMTAsNyArMTAsNyBAQAogTE9DQUxfQ19JTkNMVURFUzo9IFwKIAkkKEpOSV9IX0lOQ0xVREUpIFwKIAlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQgXAotCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZQorCSQoVE9QKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9vcGVubWF4CiAKIExPQ0FMX01PRFVMRTo9IG9teF90ZXN0cwogCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FuZHJvaWQubWsKaW5kZXggZWQxNjA1OS4uMDgxYWUzMiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BbmRyb2lkLm1rCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQW5kcm9pZC5tawpAQCAtMjEsNyArMjEsNyBAQAogCiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAotCSQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisJJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXggXAogICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAogCiBMT0NBTF9NT0RVTEU6PSBsaWJzdGFnZWZyaWdodF9ydHNwCkBAIC00OCw3ICs0OCw3IEBACiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAogCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodCBcCi0JJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlCisJJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L29wZW5tYXgKIAogTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCiAKZGlmZiAtLWdpdCBhL21lZGlhL3Rlc3RzL29teGpwZWdkZWNvZGVyL0FuZHJvaWQubWsgYi9tZWRpYS90ZXN0cy9vbXhqcGVnZGVjb2Rlci9BbmRyb2lkLm1rCmluZGV4IGY5N2Y4ZWIuLjc4MDJlZmQgMTAwNjQ0Ci0tLSBhL21lZGlhL3Rlc3RzL29teGpwZWdkZWNvZGVyL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvdGVzdHMvb214anBlZ2RlY29kZXIvQW5kcm9pZC5tawpAQCAtNDQsNyArNDQsNyBAQAogICAgICQoVE9QKS9leHRlcm5hbC9za2lhL2luY2x1ZGUvdXRpbHMgXAogICAgICQoVE9QKS9leHRlcm5hbC9za2lhL2luY2x1ZGUvZWZmZWN0cyBcCiAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodCBcCi0gICAgJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKyAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvb3Blbm1heCBcCiAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9pbmNsdWRlLyBcCiAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS8KIApkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvd01hbmFnZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGhvbmVXaW5kb3dNYW5hZ2VyLmphdmEKaW5kZXggM2NmNDM2MC4uNDM5MzZhNCAxMDA3NTUKLS0tIGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvd01hbmFnZXIuamF2YQorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93TWFuYWdlci5qYXZhCkBAIC05Myw2ICs5Myw3IEBACiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1BIT05FOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9QUklPUklUWV9QSE9ORTsKIGltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU0VBUkNIX0JBUjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU0VDVVJFX1NZU1RFTV9PVkVSTEFZOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fRElBTE9HOwpAQCAtMTUzLDYgKzE1NCw3IEBACiAgICAgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9ESUFMT0dfTEFZRVIgPSAxNTsKICAgICAvLyB0aGluZ3MgaW4gaGVyZSBDQU4gTk9UIHRha2UgZm9jdXMsIGJ1dCBhcmUgc2hvd24gb24gdG9wIG9mIGV2ZXJ5dGhpbmcgZWxzZS4KICAgICBzdGF0aWMgZmluYWwgaW50IFNZU1RFTV9PVkVSTEFZX0xBWUVSID0gMTY7CisgICAgc3RhdGljIGZpbmFsIGludCBTRUNVUkVfU1lTVEVNX09WRVJMQVlfTEFZRVIgPSAxNzsKIAogICAgIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fTUVESUFfU1VCTEFZRVIgPSAtMjsKICAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX01FRElBX09WRVJMQVlfU1VCTEFZRVIgPSAtMTsKQEAgLTYzMSw3ICs2MzMsNyBAQAogICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoCiAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKTsKLSAgICAgICAgICAgIGxwLnR5cGUgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9PVkVSTEFZOworICAgICAgICAgICAgbHAudHlwZSA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU0VDVVJFX1NZU1RFTV9PVkVSTEFZOwogICAgICAgICAgICAgbHAuZmxhZ3MgPSAKICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSEFCTEV8CiAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFfApAQCAtNzI3LDYgKzcyOSw3IEBACiAgICAgcHVibGljIHZvaWQgYWRqdXN0V2luZG93UGFyYW1zTHcoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMpIHsKICAgICAgICAgc3dpdGNoIChhdHRycy50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX09WRVJMQVk6CisgICAgICAgICAgICBjYXNlIFRZUEVfU0VDVVJFX1NZU1RFTV9PVkVSTEFZOgogICAgICAgICAgICAgY2FzZSBUWVBFX1RPQVNUOgogICAgICAgICAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHdpbmRvd3MgY2FuJ3QgcmVjZWl2ZSBpbnB1dCBldmVudHMuCiAgICAgICAgICAgICAgICAgYXR0cnMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFCkBAIC04MDQsNiArODA3LDggQEAKICAgICAgICAgICAgIHJldHVybiBJTlBVVF9NRVRIT0RfRElBTE9HX0xBWUVSOwogICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX09WRVJMQVk6CiAgICAgICAgICAgICByZXR1cm4gU1lTVEVNX09WRVJMQVlfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9TRUNVUkVfU1lTVEVNX09WRVJMQVk6CisgICAgICAgICAgICByZXR1cm4gU0VDVVJFX1NZU1RFTV9PVkVSTEFZX0xBWUVSOwogICAgICAgICBjYXNlIFRZUEVfUFJJT1JJVFlfUEhPTkU6CiAgICAgICAgICAgICByZXR1cm4gUFJJT1JJVFlfUEhPTkVfTEFZRVI7CiAgICAgICAgIGNhc2UgVFlQRV9UT0FTVDoKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhdHRlcnlTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYXR0ZXJ5U2VydmljZS5qYXZhCmluZGV4IGU2YzMyZDkuLmZjNGUwNmYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhdHRlcnlTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQmF0dGVyeVNlcnZpY2UuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJhdHRlcnlNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuRmlsZVV0aWxzOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkRyb3BCb3hNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwpAQCAtMzg0LDcgKzM4NSw3IEBACiAgICAgICAgICAgICBkdW1wRmlsZSA9IG5ldyBGaWxlKERVTVBTWVNfREFUQV9QQVRIICsgQkFUVEVSWV9TVEFUU19TRVJWSUNFX05BTUUgKyAiLmR1bXAiKTsKICAgICAgICAgICAgIGR1bXBTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShkdW1wRmlsZSk7CiAgICAgICAgICAgICBiYXR0ZXJ5SW5mb1NlcnZpY2UuZHVtcChkdW1wU3RyZWFtLmdldEZEKCksIERVTVBTWVNfQVJHUyk7Ci0gICAgICAgICAgICBkdW1wU3RyZWFtLmdldEZEKCkuc3luYygpOworICAgICAgICAgICAgRmlsZVV0aWxzLnN5bmMoZHVtcFN0cmVhbSk7CiAKICAgICAgICAgICAgIC8vIGFkZCBkdW1wIGZpbGUgdG8gZHJvcCBib3gKICAgICAgICAgICAgIGRiLmFkZEZpbGUoIkJBVFRFUllfRElTQ0hBUkdFX0lORk8iLCBkdW1wRmlsZSwgRHJvcEJveE1hbmFnZXIuSVNfVEVYVCk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9EZXZpY2VQb2xpY3lNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvRGV2aWNlUG9saWN5TWFuYWdlclNlcnZpY2UuamF2YQppbmRleCAyMTI3M2NjLi4xNTM4MDAzIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9EZXZpY2VQb2xpY3lNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0RldmljZVBvbGljeU1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE3LDYgKzE3LDcgQEAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuY29udGVudC5QYWNrYWdlTW9uaXRvcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5zdG9yYWdlLkV4dGVybmFsU3RvcmFnZUZvcm1hdHRlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkZhc3RYbWxTZXJpYWxpemVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuSm91cm5hbGVkRmlsZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlhtbFV0aWxzOwpAQCAtNDEsNiArNDIsNyBAQAogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLklQb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5Qb3dlck1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZWNvdmVyeVN5c3RlbTsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUNhbGxiYWNrOwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwpAQCAtNzEsNiArNzMsNyBAQAogICAgIAogICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CiAgICAgZmluYWwgTXlQYWNrYWdlTW9uaXRvciBtTW9uaXRvcjsKKyAgICBmaW5hbCBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VMb2NrOwogCiAgICAgSVBvd2VyTWFuYWdlciBtSVBvd2VyTWFuYWdlcjsKICAgICAKQEAgLTIxNiw2ICsyMTksOCBAQAogICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgIG1Nb25pdG9yID0gbmV3IE15UGFja2FnZU1vbml0b3IoKTsKICAgICAgICAgbU1vbml0b3IucmVnaXN0ZXIoY29udGV4dCwgdHJ1ZSk7CisgICAgICAgIG1XYWtlTG9jayA9ICgoUG93ZXJNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpKQorICAgICAgICAgICAgICAgIC5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJEUE0iKTsKICAgICB9CiAKICAgICBwcml2YXRlIElQb3dlck1hbmFnZXIgZ2V0SVBvd2VyTWFuYWdlcigpIHsKQEAgLTg2MiwxMCArODY3LDE3IEBACiAgICAgfQogICAgIAogICAgIHZvaWQgd2lwZURhdGFMb2NrZWQoaW50IGZsYWdzKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBSZWNvdmVyeVN5c3RlbS5yZWJvb3RXaXBlVXNlckRhdGEobUNvbnRleHQpOwotICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCAiRmFpbGVkIHJlcXVlc3RpbmcgZGF0YSB3aXBlIiwgZSk7CisgICAgICAgIGlmICgoZmxhZ3MmRGV2aWNlUG9saWN5TWFuYWdlci5XSVBFX0VYVEVSTkFMX1NUT1JBR0UpICE9IDApIHsKKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEV4dGVybmFsU3RvcmFnZUZvcm1hdHRlci5GT1JNQVRfQU5EX0ZBQ1RPUllfUkVTRVQpOworICAgICAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChFeHRlcm5hbFN0b3JhZ2VGb3JtYXR0ZXIuQ09NUE9ORU5UX05BTUUpOworICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoMTAwMDApOworICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRTZXJ2aWNlKGludGVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFJlY292ZXJ5U3lzdGVtLnJlYm9vdFdpcGVVc2VyRGF0YShtQ29udGV4dCk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkZhaWxlZCByZXF1ZXN0aW5nIGRhdGEgd2lwZSIsIGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvRHJvcEJveE1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Ecm9wQm94TWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA5ODI5ZjlhLi4wZTQ1MTQ1IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Ecm9wQm94TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Ecm9wQm94TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKIGltcG9ydCBhbmRyb2lkLm9zLkRlYnVnOwogaW1wb3J0IGFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5GaWxlVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3I7CiBpbXBvcnQgYW5kcm9pZC5vcy5TdGF0RnM7CkBAIC0xODMsNyArMTg0LDggQEAKICAgICAgICAgICAgIGludCBidWZmZXJTaXplID0gbUJsb2NrU2l6ZTsKICAgICAgICAgICAgIGlmIChidWZmZXJTaXplID4gNDA5NikgYnVmZmVyU2l6ZSA9IDQwOTY7CiAgICAgICAgICAgICBpZiAoYnVmZmVyU2l6ZSA8IDUxMikgYnVmZmVyU2l6ZSA9IDUxMjsKLSAgICAgICAgICAgIG91dHB1dCA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbSh0ZW1wKSwgYnVmZmVyU2l6ZSk7CisgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvdXRwdXQgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSh0ZW1wKTsKKyAgICAgICAgICAgIG91dHB1dCA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShmb3V0cHV0LCBidWZmZXJTaXplKTsKICAgICAgICAgICAgIGlmIChyZWFkID09IGJ1ZmZlci5sZW5ndGggJiYgKChmbGFncyAmIERyb3BCb3hNYW5hZ2VyLklTX0daSVBQRUQpID09IDApKSB7CiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbmV3IEdaSVBPdXRwdXRTdHJlYW0ob3V0cHV0KTsKICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgRHJvcEJveE1hbmFnZXIuSVNfR1pJUFBFRDsKQEAgLTIwMCw2ICsyMDIsNyBAQAogCiAgICAgICAgICAgICAgICAgcmVhZCA9IGlucHV0LnJlYWQoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBpZiAocmVhZCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKGZvdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKTsgIC8vIEdldCBhIGZpbmFsIHNpemUgbWVhc3VyZW1lbnQKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbnVsbDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTG9hZEF2ZXJhZ2VTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2FkQXZlcmFnZVNlcnZpY2UuamF2YQppbmRleCAwZDg2NDI5Li5iNmJhYWRiIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2FkQXZlcmFnZVNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2FkQXZlcmFnZVNlcnZpY2UuamF2YQpAQCAtMjcyLDcgKzI3Miw3IEBACiAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIHBhcmFtcyA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLldSQVBfQ09OVEVOVCwKICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLldSQVBfQ09OVEVOVCwKLSAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX09WRVJMQVksCisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NFQ1VSRV9TWVNURU1fT1ZFUkxBWSwKICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRXwKICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRSwKICAgICAgICAgICAgIFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01hc3RlckNsZWFyUmVjZWl2ZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01hc3RlckNsZWFyUmVjZWl2ZXIuamF2YQppbmRleCA0ZDA0Y2VlLi5iZGI1YTI0IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9NYXN0ZXJDbGVhclJlY2VpdmVyLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTWFzdGVyQ2xlYXJSZWNlaXZlci5qYXZhCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJNYXN0ZXJDbGVhciI7CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgSW50ZW50IGludGVudCkgewogICAgICAgICBpZiAoaW50ZW50LmdldEFjdGlvbigpLmVxdWFscyhJbnRlbnQuQUNUSU9OX1JFTU9URV9JTlRFTlQpKSB7CiAgICAgICAgICAgICBpZiAoISJnb29nbGUuY29tIi5lcXVhbHMoaW50ZW50LmdldFN0cmluZ0V4dHJhKCJmcm9tIikpKSB7CiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIklnbm9yaW5nIG1hc3RlciBjbGVhciByZXF1ZXN0IC0tIG5vdCBmcm9tIHRydXN0ZWQgc2VydmVyLiIpOwpAQCAtMzcsMTYgKzM3LDIzIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgU2xvZy53KFRBRywgIiEhISBGQUNUT1JZIFJFU0VUICEhISIpOwotICAgICAgICAgICAgaWYgKGludGVudC5oYXNFeHRyYSgiZW5hYmxlRUZTIikpIHsKLSAgICAgICAgICAgICAgICBSZWNvdmVyeVN5c3RlbS5yZWJvb3RUb2dnbGVFRlMoY29udGV4dCwgaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiZW5hYmxlRUZTIiwgZmFsc2UpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVjb3ZlcnlTeXN0ZW0ucmVib290V2lwZVVzZXJEYXRhKGNvbnRleHQpOworICAgICAgICBTbG9nLncoVEFHLCAiISEhIEZBQ1RPUlkgUkVTRVQgISEhIik7CisgICAgICAgIC8vIFRoZSByZWJvb3QgY2FsbCBpcyBibG9ja2luZywgc28gd2UgbmVlZCB0byBkbyBpdCBvbiBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgVGhyZWFkIHRociA9IG5ldyBUaHJlYWQoIlJlYm9vdCIpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlbnQuaGFzRXh0cmEoImVuYWJsZUVGUyIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNvdmVyeVN5c3RlbS5yZWJvb3RUb2dnbGVFRlMoY29udGV4dCwgaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiZW5hYmxlRUZTIiwgZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY292ZXJ5U3lzdGVtLnJlYm9vdFdpcGVVc2VyRGF0YShjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBMb2cud3RmKFRBRywgIlN0aWxsIHJ1bm5pbmcgYWZ0ZXIgbWFzdGVyIGNsZWFyPyEiKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJDYW4ndCBwZXJmb3JtIG1hc3RlciBjbGVhci9mYWN0b3J5IHJlc2V0IiwgZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgTG9nLnd0ZihUQUcsICJTdGlsbCBydW5uaW5nIGFmdGVyIG1hc3RlciBjbGVhcj8hIik7Ci0gICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIFNsb2cuZShUQUcsICJDYW4ndCBwZXJmb3JtIG1hc3RlciBjbGVhci9mYWN0b3J5IHJlc2V0IiwgZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgdGhyLnN0YXJ0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA5ZDdjNThlLi5jYzdhMDI3IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBNVUxUSVBMRV9BUFBMSUNBVElPTl9VSURTID0gdHJ1ZTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUkFESU9fVUlEID0gUHJvY2Vzcy5QSE9ORV9VSUQ7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPR19VSUQgPSBQcm9jZXNzLkxPR19VSUQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5GQ19VSUQgPSBQcm9jZXNzLk5GQ19VSUQ7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJUlNUX0FQUExJQ0FUSU9OX1VJRCA9CiAgICAgICAgIFByb2Nlc3MuRklSU1RfQVBQTElDQVRJT05fVUlEOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfQVBQTElDQVRJT05fVUlEUyA9IDEwMDA7CkBAIC03NDAsNiArNzQxLDEwIEBACiAgICAgICAgICAgICAgICAgTVVMVElQTEVfQVBQTElDQVRJT05fVUlEUwogICAgICAgICAgICAgICAgICAgICAgICAgPyBMT0dfVUlEIDogRklSU1RfQVBQTElDQVRJT05fVUlELAogICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSk7CisgICAgICAgIG1TZXR0aW5ncy5hZGRTaGFyZWRVc2VyTFAoImFuZHJvaWQudWlkLm5mYyIsCisgICAgICAgICAgICAgICAgTVVMVElQTEVfQVBQTElDQVRJT05fVUlEUworICAgICAgICAgICAgICAgICAgICAgICAgPyBORkNfVUlEIDogRklSU1RfQVBQTElDQVRJT05fVUlELAorICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSk7CiAKICAgICAgICAgU3RyaW5nIHNlcGFyYXRlUHJvY2Vzc2VzID0gU3lzdGVtUHJvcGVydGllcy5nZXQoImRlYnVnLnNlcGFyYXRlX3Byb2Nlc3NlcyIpOwogICAgICAgICBpZiAoc2VwYXJhdGVQcm9jZXNzZXMgIT0gbnVsbCAmJiBzZXBhcmF0ZVByb2Nlc3Nlcy5sZW5ndGgoKSA+IDApIHsKQEAgLTU5NTAsOCArNTk1NSw4IEBACiAKICAgICBwcml2YXRlIHZvaWQgZXh0cmFjdFB1YmxpY0ZpbGVzKFBhY2thZ2VQYXJzZXIuUGFja2FnZSBuZXdQYWNrYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBwdWJsaWNaaXBGaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICBmaW5hbCBaaXBPdXRwdXRTdHJlYW0gcHVibGljWmlwT3V0U3RyZWFtID0KLSAgICAgICAgICAgICAgICBuZXcgWmlwT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKHB1YmxpY1ppcEZpbGUpKTsKKyAgICAgICAgZmluYWwgRmlsZU91dHB1dFN0cmVhbSBmc3RyID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0ocHVibGljWmlwRmlsZSk7CisgICAgICAgIGZpbmFsIFppcE91dHB1dFN0cmVhbSBwdWJsaWNaaXBPdXRTdHJlYW0gPSBuZXcgWmlwT3V0cHV0U3RyZWFtKGZzdHIpOwogICAgICAgICBmaW5hbCBaaXBGaWxlIHByaXZhdGVaaXAgPSBuZXcgWmlwRmlsZShuZXdQYWNrYWdlLm1QYXRoKTsKIAogICAgICAgICAvLyBDb3B5IG1hbmlmZXN0LCByZXNvdXJjZXMuYXJzYyBhbmQgcmVzIGRpcmVjdG9yeSB0byBwdWJsaWMgemlwCkBAIC01OTc2LDYgKzU5ODEsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcHVibGljWmlwT3V0U3RyZWFtLmZpbmlzaCgpOworICAgICAgICBwdWJsaWNaaXBPdXRTdHJlYW0uZmx1c2goKTsKKyAgICAgICAgRmlsZVV0aWxzLnN5bmMoZnN0cik7CiAgICAgICAgIHB1YmxpY1ppcE91dFN0cmVhbS5jbG9zZSgpOwogICAgICAgICBGaWxlVXRpbHMuc2V0UGVybWlzc2lvbnMoCiAgICAgICAgICAgICAgICAgcHVibGljWmlwRmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSwKQEAgLTg0NzcsOCArODQ4NSw4IEBACiAgICAgICAgICAgICBtUGFzdFNpZ25hdHVyZXMuY2xlYXIoKTsKIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBCdWZmZXJlZE91dHB1dFN0cmVhbSBzdHIgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0oCi0gICAgICAgICAgICAgICAgICAgICAgICBtU2V0dGluZ3NGaWxlbmFtZSkpOworICAgICAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZnN0ciA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKG1TZXR0aW5nc0ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBCdWZmZXJlZE91dHB1dFN0cmVhbSBzdHIgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0oZnN0cik7CiAKICAgICAgICAgICAgICAgICAvL1htbFNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IFhtbFV0aWxzLnNlcmlhbGl6ZXJJbnN0YW5jZSgpOwogICAgICAgICAgICAgICAgIFhtbFNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBGYXN0WG1sU2VyaWFsaXplcigpOwpAQCAtODU1OSw2ICs4NTY3LDcgQEAKICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLmVuZERvY3VtZW50KCk7CiAKICAgICAgICAgICAgICAgICBzdHIuZmx1c2goKTsKKyAgICAgICAgICAgICAgICBGaWxlVXRpbHMuc3luYyhmc3RyKTsKICAgICAgICAgICAgICAgICBzdHIuY2xvc2UoKTsKIAogICAgICAgICAgICAgICAgIC8vIE5ldyBzZXR0aW5ncyBzdWNjZXNzZnVsbHkgd3JpdHRlbiwgb2xkIG9uZXMgYXJlIG5vIGxvbmdlcgpAQCAtODU3NSw3ICs4NTg0LDggQEAKICAgICAgICAgICAgICAgICBGaWxlIHRlbXBGaWxlID0gbmV3IEZpbGUobVBhY2thZ2VMaXN0RmlsZW5hbWUudG9TdHJpbmcoKSArICIudG1wIik7CiAgICAgICAgICAgICAgICAgSm91cm5hbGVkRmlsZSBqb3VybmFsID0gbmV3IEpvdXJuYWxlZEZpbGUobVBhY2thZ2VMaXN0RmlsZW5hbWUsIHRlbXBGaWxlKTsKIAotICAgICAgICAgICAgICAgIHN0ciA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShqb3VybmFsLmNob29zZUZvcldyaXRlKCkpKTsKKyAgICAgICAgICAgICAgICBmc3RyID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oam91cm5hbC5jaG9vc2VGb3JXcml0ZSgpKTsKKyAgICAgICAgICAgICAgICBzdHIgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0oZnN0cik7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoUGFja2FnZVNldHRpbmcgcGtnIDogbVBhY2thZ2VzLnZhbHVlcygpKSB7CkBAIC04NjExLDYgKzg2MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3RyLndyaXRlKHNiLnRvU3RyaW5nKCkuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3RyLmZsdXNoKCk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKGZzdHIpOwogICAgICAgICAgICAgICAgICAgICBzdHIuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgam91cm5hbC5jb21taXQoKTsKICAgICAgICAgICAgICAgICB9CkBAIC04ODI1LDcgKzg4MzYsNyBAQAogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHN0ciA9IG5ldyBGaWxlSW5wdXRTdHJlYW0obUJhY2t1cFNldHRpbmdzRmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgICBtUmVhZE1lc3NhZ2VzLmFwcGVuZCgiUmVhZGluZyBmcm9tIGJhY2t1cCBzZXR0aW5ncyBmaWxlXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiUmVhZGluZyBmcm9tIGJhY2t1cCBzZXR0aW5ncyBmaWxlISIpOworICAgICAgICAgICAgICAgICAgICByZXBvcnRTZXR0aW5nc1Byb2JsZW0oTG9nLklORk8sICJOZWVkIHRvIHJlYWQgZnJvbSBiYWNrdXAgc2V0dGluZ3MgZmlsZSIpOwogICAgICAgICAgICAgICAgICAgICBpZiAobVNldHRpbmdzRmlsZW5hbWUuZXhpc3RzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGJvdGggdGhlIGJhY2t1cCBhbmQgc2V0dGluZ3MgZmlsZSBleGlzdCwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB0aGUgc2V0dGluZ3Mgc2luY2UgaXQgbWlnaHQgaGF2ZSBiZWVuCkBAIC04ODQ0LDcgKzg4NTUsNyBAQAogICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW1TZXR0aW5nc0ZpbGVuYW1lLmV4aXN0cygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtUmVhZE1lc3NhZ2VzLmFwcGVuZCgiTm8gc2V0dGluZ3MgZmlsZSBmb3VuZFxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiTm8gY3VycmVudCBzZXR0aW5ncyBmaWxlISIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0U2V0dGluZ3NQcm9ibGVtKExvZy5JTkZPLCAiTm8gc2V0dGluZ3MgZmlsZTsgY3JlYXRpbmcgaW5pdGlhbCBzdGF0ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHN0ciA9IG5ldyBGaWxlSW5wdXRTdHJlYW0obVNldHRpbmdzRmlsZW5hbWUpOwpAQCAtODg2MCw3ICs4ODcxLDcgQEAKIAogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFhtbFB1bGxQYXJzZXIuU1RBUlRfVEFHKSB7CiAgICAgICAgICAgICAgICAgICAgIG1SZWFkTWVzc2FnZXMuYXBwZW5kKCJObyBzdGFydCB0YWcgZm91bmQgaW4gc2V0dGluZ3MgZmlsZVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJObyBzdGFydCB0YWcgZm91bmQgaW4gcGFja2FnZSBtYW5hZ2VyIHNldHRpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJlcG9ydFNldHRpbmdzUHJvYmxlbShMb2cuV0FSTiwgIk5vIHN0YXJ0IHRhZyBmb3VuZCBpbiBwYWNrYWdlIG1hbmFnZXIgc2V0dGluZ3MiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KIApAQCAtODkyMywxMCArODkzNCwxMiBAQAogCiAgICAgICAgICAgICB9IGNhdGNoKFhtbFB1bGxQYXJzZXJFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIG1SZWFkTWVzc2FnZXMuYXBwZW5kKCJFcnJvciByZWFkaW5nOiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICByZXBvcnRTZXR0aW5nc1Byb2JsZW0oTG9nLkVSUk9SLCAiRXJyb3IgcmVhZGluZyBzZXR0aW5nczogIiArIGUpOwogICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFcnJvciByZWFkaW5nIHBhY2thZ2UgbWFuYWdlciBzZXR0aW5ncyIsIGUpOwogCiAgICAgICAgICAgICB9IGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIG1SZWFkTWVzc2FnZXMuYXBwZW5kKCJFcnJvciByZWFkaW5nOiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICByZXBvcnRTZXR0aW5nc1Byb2JsZW0oTG9nLkVSUk9SLCAiRXJyb3IgcmVhZGluZyBzZXR0aW5nczogIiArIGUpOwogICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFcnJvciByZWFkaW5nIHBhY2thZ2UgbWFuYWdlciBzZXR0aW5ncyIsIGUpOwogCiAgICAgICAgICAgICB9CkBAIC04OTQwLDcgKzg5NTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaGFyZWRVc2VyU2V0dGluZykgaWRPYmosIHBwLmNvZGVQYXRoLCBwcC5yZXNvdXJjZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAubmF0aXZlTGlicmFyeVBhdGhTdHJpbmcsIHBwLnZlcnNpb25Db2RlLCBwcC5wa2dGbGFncywgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJVbmFibGUgdG8gY3JlYXRlIGFwcGxpY2F0aW9uIHBhY2thZ2UgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFNldHRpbmdzUHJvYmxlbShMb2cuV0FSTiwgIlVuYWJsZSB0byBjcmVhdGUgYXBwbGljYXRpb24gcGFja2FnZSBmb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHBwLm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTg5NTAsMTMgKzg5NjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaGFzIHNoYXJlZCB1aWQgIiArIHBwLnNoYXJlZElkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRoYXQgaXMgbm90IGEgc2hhcmVkIHVpZFxuIjsKICAgICAgICAgICAgICAgICAgICAgbVJlYWRNZXNzYWdlcy5hcHBlbmQobXNnKTsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0U2V0dGluZ3NQcm9ibGVtKExvZy5FUlJPUiwgbXNnKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIkJhZCBwYWNrYWdlIHNldHRpbmc6IHBhY2thZ2UgIiArIHBwLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaGFzIHNoYXJlZCB1aWQgIiArIHBwLnNoYXJlZElkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRoYXQgaXMgbm90IGRlZmluZWRcbiI7CiAgICAgICAgICAgICAgICAgICAgIG1SZWFkTWVzc2FnZXMuYXBwZW5kKG1zZyk7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsIG1zZyk7CisgICAgICAgICAgICAgICAgICAgIHJlcG9ydFNldHRpbmdzUHJvYmxlbShMb2cuRVJST1IsIG1zZyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbVBlbmRpbmdQYWNrYWdlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvUG93ZXJNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvUG93ZXJNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IGI5MGI0YmYuLjYzOGJkNDUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1Bvd2VyTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Qb3dlck1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE5NzEsOCArMTk3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgIC8gc3RlcHNUb1RhcmdldDsKICAgICAgICAgICAgIGlmIChtU3BldykgewogICAgICAgICAgICAgICAgIFN0cmluZyBub3RpY2VNZSA9IG5vbWluYWxDdXJyZW50VmFsdWUgPT0gY3VyVmFsdWUgPyAiIiA6ICIgICoqKioqKioqKioqKioqKioqKiI7Ci0gICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlNldHRpbmcgdGFyZ2V0ICIgKyBtYXNrICsgIjogY3VyPSIgKyBjdXJWYWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRhcmdldD0iICsgdGFyZ2V0VmFsdWUgKyAiIGRlbHRhPSIgKyBkZWx0YQorICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJzZXRUYXJnZXRMb2NrZWQgbWFzaz0iICsgbWFzayArICIgY3VyVmFsdWU9IiArIGN1clZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICArICIgdGFyZ2V0PSIgKyB0YXJnZXQgKyAiIHRhcmdldFZhbHVlPSIgKyB0YXJnZXRWYWx1ZSArICIgZGVsdGE9IiArIGRlbHRhCiAgICAgICAgICAgICAgICAgICAgICAgICArICIgbm9taW5hbEN1cnJlbnRWYWx1ZT0iICsgbm9taW5hbEN1cnJlbnRWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgKyBub3RpY2VNZSk7CiAgICAgICAgICAgICB9CkBAIC0yMDEwLDIwICsyMDEwLDIwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobVNwZXcpIFNsb2cuZChUQUcsICJBbmltYXRpbmcgY3VySW50VmFsdWU9IiArIGN1ckludFZhbHVlICsgIjogIiArIG1hc2spOwogICAgICAgICAgICAgc2V0TGlnaHRCcmlnaHRuZXNzKG1hc2ssIGN1ckludFZhbHVlKTsKLSAgICAgICAgICAgIGZpbmlzaEFuaW1hdGlvbihtb3JlLCBjdXJJbnRWYWx1ZSk7CisgICAgICAgICAgICBmaW5pc2hBbmltYXRpb25Mb2NrZWQobW9yZSwgY3VySW50VmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIG1vcmU7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGp1bXBUb1RhcmdldCgpIHsKLSAgICAgICAgICAgIGlmIChtU3BldykgU2xvZy5kKFRBRywgImp1bXBUb1RhcmdldCB0YXJnZXRWYWx1ZT0iICsgdGFyZ2V0VmFsdWUgKyAiOiAiICsgbWFzayk7CisgICAgICAgIHZvaWQganVtcFRvVGFyZ2V0TG9ja2VkKCkgeworICAgICAgICAgICAgaWYgKG1TcGV3KSBTbG9nLmQoVEFHLCAianVtcFRvVGFyZ2V0TG9ja2VkIHRhcmdldFZhbHVlPSIgKyB0YXJnZXRWYWx1ZSArICI6ICIgKyBtYXNrKTsKICAgICAgICAgICAgIHNldExpZ2h0QnJpZ2h0bmVzcyhtYXNrLCB0YXJnZXRWYWx1ZSk7CiAgICAgICAgICAgICBmaW5hbCBpbnQgdHYgPSB0YXJnZXRWYWx1ZTsKICAgICAgICAgICAgIGN1clZhbHVlID0gdHY7CiAgICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IC0xOwotICAgICAgICAgICAgZmluaXNoQW5pbWF0aW9uKGZhbHNlLCB0dik7CisgICAgICAgICAgICBmaW5pc2hBbmltYXRpb25Mb2NrZWQoZmFsc2UsIHR2KTsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgdm9pZCBmaW5pc2hBbmltYXRpb24oYm9vbGVhbiBtb3JlLCBpbnQgY3VySW50VmFsdWUpIHsKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGZpbmlzaEFuaW1hdGlvbkxvY2tlZChib29sZWFuIG1vcmUsIGludCBjdXJJbnRWYWx1ZSkgewogICAgICAgICAgICAgYW5pbWF0aW5nID0gbW9yZTsKICAgICAgICAgICAgIGlmICghbW9yZSkgewogICAgICAgICAgICAgICAgIGlmIChtYXNrID09IFNDUkVFTl9CUklHSFRfQklUICYmIGN1ckludFZhbHVlID09IFBvd2VyLkJSSUdIVE5FU1NfT0ZGKSB7CkBAIC0yMDQyLDIxICsyMDQyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJvb2xlYW4gYW5pbWF0ZTsKLSAgICAgICAgICAgICAgICBib29sZWFuIGp1bXA7CiAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtTG9ja3MpIHsKLSAgICAgICAgICAgICAgICAgICAganVtcCA9IGFuaW1hdGluZzsgLy8gd2UgaGF2ZW4ndCBhbHJlYWR5IHJ1biB0aGlzIGFuaW1hdGlvbgotICAgICAgICAgICAgICAgICAgICBhbmltYXRlID0ganVtcCAmJiB0YXJnZXRWYWx1ZSA9PSBQb3dlci5CUklHSFRORVNTX09GRjsgLy8gd2UncmUgdHVybmluZyBvZmYKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgdHVybmluZyBvZmYKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBhbmltYXRlID0gYW5pbWF0aW5nICYmIHRhcmdldFZhbHVlID09IFBvd2VyLkJSSUdIVE5FU1NfT0ZGOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBwcmV0dHkgc2NhcnkgdG8gaG9sZCBtTG9ja3MgZm9yIHRoaXMgbG9uZywgYW5kIHdlIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkZXNpZ24gdGhpcywgYnV0IGl0IHdvcmtzIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVTdGFydFN1cmZhY2VGbGluZ2VyQW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2NyZWVuT2ZmUmVhc29uID09IFdpbmRvd01hbmFnZXJQb2xpY3kuT0ZGX0JFQ0FVU0VfT0ZfUFJPWF9TRU5TT1IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwIDogbUFuaW1hdGlvblNldHRpbmcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1TY3JlZW5CcmlnaHRuZXNzLmp1bXBUb1RhcmdldExvY2tlZCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBJIHRoaW5rIGl0J3MgcG9zc2libGUgdGhhdCBpZiB5b3Ugc2xlZXAgJiB3YWtlIG11bHRpcGxlIHRpbWVzCi0gICAgICAgICAgICAgICAgICAgIC8vIHF1aWNrbHkgZm9yIGRpZmZlcmVudCByZWFzb25zLCBtU2NyZWVuT2ZmUmVhc29uIGZvciB0aGUgZmlyc3QgYW5pbWF0aW9uCi0gICAgICAgICAgICAgICAgICAgIC8vIG1pZ2h0IGdldCBzdG9tcGVkIG9uIGFzIGl0IHN0YXJ0cyB0aGUgc2Vjb25kIGFuaW1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbmF0aXZlU3RhcnRTdXJmYWNlRmxpbmdlckFuaW1hdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2NyZWVuT2ZmUmVhc29uID09IFdpbmRvd01hbmFnZXJQb2xpY3kuT0ZGX0JFQ0FVU0VfT0ZfUFJPWF9TRU5TT1IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAgOiBtQW5pbWF0aW9uU2V0dGluZyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1TY3JlZW5CcmlnaHRuZXNzLmp1bXBUb1RhcmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjc4NSw4ICsyNzgyLDEwIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIHVwZGF0ZSBvdXIgYW5pbWF0aW9uIHN0YXRlCi0gICAgICAgICAgICBtU2NyZWVuQnJpZ2h0bmVzcy50YXJnZXRWYWx1ZSA9IGJyaWdodG5lc3M7Ci0gICAgICAgICAgICBtU2NyZWVuQnJpZ2h0bmVzcy5qdW1wVG9UYXJnZXQoKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2tzKSB7CisgICAgICAgICAgICAgICAgbVNjcmVlbkJyaWdodG5lc3MudGFyZ2V0VmFsdWUgPSBicmlnaHRuZXNzOworICAgICAgICAgICAgICAgIG1TY3JlZW5CcmlnaHRuZXNzLmp1bXBUb1RhcmdldExvY2tlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TeXN0ZW1TZXJ2ZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCmluZGV4IGEyYTVlNjcuLmRmNjliNzYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCkBAIC0yMCw3ICsyMCw2IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLlNodXRkb3duVGhyZWFkOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkJpbmRlckludGVybmFsOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlNhbXBsaW5nUHJvZmlsZXJJbnRlZ3JhdGlvbjsKLWltcG9ydCBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5zZXJ2ZXIuTmZjU2VydmljZTsKIAogaW1wb3J0IGRhbHZpay5zeXN0ZW0uVk1SdW50aW1lOwogaW1wb3J0IGRhbHZpay5zeXN0ZW0uWnlnb3RlOwpAQCAtNDM3LDIwICs0MzYsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJOZmMgU2VydmljZSIpOwotICAgICAgICAgICAgICAgIE5mY1NlcnZpY2UgbmZjOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG5mYyA9IG5ldyBOZmNTZXJ2aWNlKGNvbnRleHQpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVuc2F0aXNmaWVkTGlua0Vycm9yIGUpIHsgLy8gZ3Jvc3MgaGFjayB0byBkZXRlY3QgTkZDCi0gICAgICAgICAgICAgICAgICAgIG5mYyA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJObyBORkMgc3VwcG9ydCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBTZXJ2aWNlTWFuYWdlci5hZGRTZXJ2aWNlKENvbnRleHQuTkZDX1NFUlZJQ0UsIG5mYyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgewotICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsdXJlIHN0YXJ0aW5nIE5GQyBTZXJ2aWNlIiwgZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIkRpc2tTdGF0cyBTZXJ2aWNlIik7CiAgICAgICAgICAgICAgICAgU2VydmljZU1hbmFnZXIuYWRkU2VydmljZSgiZGlza3N0YXRzIiwgbmV3IERpc2tTdGF0c1NlcnZpY2UoY29udGV4dCkpOwogICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dhbGxwYXBlck1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XYWxscGFwZXJNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IGM4MzdhM2EuLjg1OWM4NWMgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dhbGxwYXBlck1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2FsbHBhcGVyTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMzUsNiArMzUsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRmlsZVV0aWxzOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLm9zLkZpbGVPYnNlcnZlcjsKQEAgLTgzNiw2ICs4MzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHt9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbHMuc3luYyhmb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3MuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7fQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDljMDZjMzMuLmFhMmY3ODQgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTU4ODgsNyArNTg4OCw3IEBACiAgICAgICAgICAgICAgICAgVmlldyB2ID0gTGF5b3V0SW5mbGF0ZXIuZnJvbShtQ29udGV4dCkuaW5mbGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNhZmVfbW9kZSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoKTsKLSAgICAgICAgICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fT1ZFUkxBWTsKKyAgICAgICAgICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TRUNVUkVfU1lTVEVNX09WRVJMQVk7CiAgICAgICAgICAgICAgICAgbHAud2lkdGggPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5XUkFQX0NPTlRFTlQ7CiAgICAgICAgICAgICAgICAgbHAuaGVpZ2h0ID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5UOwogICAgICAgICAgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LkJPVFRPTSB8IEdyYXZpdHkuTEVGVDsKQEAgLTYwNzQsNiArNjA3NCw3IEBACiAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRmFpbHVyZSB3cml0aW5nIGxhc3QgZG9uZSBwcmUtYm9vdCByZWNlaXZlcnMiLCBlKTsKICAgICAgICAgICAgIGZpbGUuZGVsZXRlKCk7CiAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBGaWxlVXRpbHMuc3luYyhmb3MpOwogICAgICAgICAgICAgaWYgKGRvcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgZG9zLmNsb3NlKCk7CkBAIC03MDM1LDYgKzcwMzYsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAobUhlYXZ5V2VpZ2h0UHJvY2VzcyA9PSBhcHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuZmxhZ3MgfD0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5GTEFHX0NBTlRfU0FWRV9TVEFURTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYXBwLnBlcnNpc3RlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuZmxhZ3MgfD0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5GTEFHX1BFUlNJU1RFTlQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaW50IGFkaiA9IGFwcC5jdXJBZGo7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhZGogPj0gRU1QVFlfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5pbXBvcnRhbmNlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5JTVBPUlRBTkNFX0VNUFRZOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFjay5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlTdGFjay5qYXZhCmluZGV4IDg2YzdiZGYuLmY1MmQzMjIgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5U3RhY2suamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKQEAgLTE4ODEsNyArMTg4MSwyNyBAQAogICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLAogICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQsIGludCBjYWxsaW5nVWlkLCBib29sZWFuIG9ubHlJZk5lZWRlZCwKICAgICAgICAgICAgIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkKSB7Ci0gICAgICAgIFNsb2cuaShUQUcsICJTdGFydGluZzogIiArIGludGVudCk7CisKKyAgICAgICAgaW50IGVyciA9IFNUQVJUX1NVQ0NFU1M7CisKKyAgICAgICAgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHAgPSBudWxsOworICAgICAgICBpZiAoY2FsbGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhbGxlckFwcCA9IG1TZXJ2aWNlLmdldFJlY29yZEZvckFwcExvY2tlZChjYWxsZXIpOworICAgICAgICAgICAgaWYgKGNhbGxlckFwcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IGNhbGxlckFwcC5waWQ7CisgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IGNhbGxlckFwcC5pbmZvLnVpZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuYWJsZSB0byBmaW5kIGFwcCBmb3IgY2FsbGVyICIgKyBjYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICArICIgKHBpZD0iICsgY2FsbGluZ1BpZCArICIpIHdoZW4gc3RhcnRpbmc6ICIKKyAgICAgICAgICAgICAgICAgICAgICArIGludGVudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBTVEFSVF9QRVJNSVNTSU9OX0RFTklFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnIgPT0gU1RBUlRfU1VDQ0VTUykgeworICAgICAgICAgICAgU2xvZy5pKFRBRywgIlN0YXJ0aW5nOiAiICsgaW50ZW50ICsgIiBmcm9tIHBpZCAiCisgICAgICAgICAgICAgICAgICAgICsgKGNhbGxlckFwcCAhPSBudWxsID8gY2FsbGVyQXBwLnBpZCA6IGNhbGxpbmdQaWQpKTsKKyAgICAgICAgfQogCiAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHNvdXJjZVJlY29yZCA9IG51bGw7CiAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHJlc3VsdFJlY29yZCA9IG51bGw7CkBAIC0xOTE2LDkgKzE5MzYsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaW50IGVyciA9IFNUQVJUX1NVQ0NFU1M7Ci0KLSAgICAgICAgaWYgKGludGVudC5nZXRDb21wb25lbnQoKSA9PSBudWxsKSB7CisgICAgICAgIGlmIChlcnIgPT0gU1RBUlRfU1VDQ0VTUyAmJiBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgPT0gbnVsbCkgewogICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gSW50ZW50LgogICAgICAgICAgICAgLy8gVGhhdCdzIHRoZSBlbmQgb2YgdGhhdCEKICAgICAgICAgICAgIGVyciA9IFNUQVJUX0lOVEVOVF9OT1RfUkVTT0xWRUQ7CkBAIC0xOTMwLDIwICsxOTQ4LDYgQEAKICAgICAgICAgICAgIGVyciA9IFNUQVJUX0NMQVNTX05PVF9GT1VORDsKICAgICAgICAgfQogCi0gICAgICAgIFByb2Nlc3NSZWNvcmQgY2FsbGVyQXBwID0gbnVsbDsKLSAgICAgICAgaWYgKGVyciA9PSBTVEFSVF9TVUNDRVNTICYmIGNhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBjYWxsZXJBcHAgPSBtU2VydmljZS5nZXRSZWNvcmRGb3JBcHBMb2NrZWQoY2FsbGVyKTsKLSAgICAgICAgICAgIGlmIChjYWxsZXJBcHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBjYWxsZXJBcHAucGlkOwotICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQgPSBjYWxsZXJBcHAuaW5mby51aWQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJVbmFibGUgdG8gZmluZCBhcHAgZm9yIGNhbGxlciAiICsgY2FsbGVyCi0gICAgICAgICAgICAgICAgICAgICAgKyAiIChwaWQ9IiArIGNhbGxpbmdQaWQgKyAiKSB3aGVuIHN0YXJ0aW5nOiAiCi0gICAgICAgICAgICAgICAgICAgICAgKyBpbnRlbnQudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgZXJyID0gU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoZXJyICE9IFNUQVJUX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VzYWdlU3RhdHNTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Vc2FnZVN0YXRzU2VydmljZS5qYXZhCmluZGV4IDg0NjNiNWEuLjZlOGYyNDggMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VzYWdlU3RhdHNTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vVXNhZ2VTdGF0c1NlcnZpY2UuamF2YQpAQCAtMjMsNiArMjMsOCBAQAogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5Qa2dVc2FnZVN0YXRzOworCitpbXBvcnQgYW5kcm9pZC5vcy5GaWxlVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CiBpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOwogaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CkBAIC00NzEsNiArNDczLDcgQEAKICAgICAgICAgICAgIG91dC5yZWN5Y2xlKCk7CiAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKTsKICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIEZpbGVVdGlscy5zeW5jKHN0cmVhbSk7CiAgICAgICAgICAgICBzdHJlYW0uY2xvc2UoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvc2VydmVyL05mY1NlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL3RydXN0ZWRsb2dpYy90cnVzdGVkbmZjL2FuZHJvaWQvc2VydmVyL05mY1NlcnZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRkYmFmYy4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS90cnVzdGVkbG9naWMvdHJ1c3RlZG5mYy9hbmRyb2lkL3NlcnZlci9OZmNTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMTU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLnNlcnZlcjsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7Ci0KLWltcG9ydCBhbmRyb2lkLm5mYy5FcnJvckNvZGVzOwotaW1wb3J0IGFuZHJvaWQubmZjLkZvcm1hdEV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm5mYy5JTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0OwotaW1wb3J0IGFuZHJvaWQubmZjLklMbGNwU2VydmljZVNvY2tldDsKLWltcG9ydCBhbmRyb2lkLm5mYy5JTmZjQWRhcHRlcjsKLWltcG9ydCBhbmRyb2lkLm5mYy5JTGxjcFNvY2tldDsKLWltcG9ydCBhbmRyb2lkLm5mYy5JTmZjVGFnOwotaW1wb3J0IGFuZHJvaWQubmZjLklQMnBJbml0aWF0b3I7Ci1pbXBvcnQgYW5kcm9pZC5uZmMuSVAycFRhcmdldDsKLWltcG9ydCBhbmRyb2lkLm5mYy5MbGNwUGFja2V0OwotaW1wb3J0IGFuZHJvaWQubmZjLk5kZWZNZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQubmZjLlRhZzsKLS8vaW1wb3J0IGFuZHJvaWQubmZjLk5mY0V4Y2VwdGlvbjsKLS8vaW1wb3J0IGFuZHJvaWQubmZjLk5mY01hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5uZmMuTmZjQWRhcHRlcjsKLWltcG9ydCBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5pbnRlcm5hbC5OYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQ7Ci1pbXBvcnQgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuaW50ZXJuYWwuTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQ7Ci1pbXBvcnQgY29tLnRydXN0ZWRsb2dpYy50cnVzdGVkbmZjLmFuZHJvaWQuaW50ZXJuYWwuTmF0aXZlTGxjcFNvY2tldDsKLWltcG9ydCBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5pbnRlcm5hbC5OYXRpdmVOZmNNYW5hZ2VyOwotaW1wb3J0IGNvbS50cnVzdGVkbG9naWMudHJ1c3RlZG5mYy5hbmRyb2lkLmludGVybmFsLk5hdGl2ZU5mY1RhZzsKLWltcG9ydCBjb20udHJ1c3RlZGxvZ2ljLnRydXN0ZWRuZmMuYW5kcm9pZC5pbnRlcm5hbC5OYXRpdmVQMnBEZXZpY2U7Ci1pbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwotaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOwotaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKLWltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7Ci1pbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7Ci0KLXB1YmxpYyBjbGFzcyBOZmNTZXJ2aWNlIGV4dGVuZHMgSU5mY0FkYXB0ZXIuU3R1YiBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKLQotICAgIC8qKgotICAgICAqIE5GQyBTZXJ2aWNlIHRhZwotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTmZjU2VydmljZSI7Ci0KLSAgICAvKioKLSAgICAgKiBORkMgZmVhdHVyZXMgZGlzYWJsZWQgc3RhdGUKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBORkNfU1RBVEVfRElTQUJMRUQgPSAweDAwOwotCi0gICAgLyoqCi0gICAgICogTkZDIGZlYXR1cmVzIGVuYWJsZWQgc3RhdGUKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBORkNfU1RBVEVfRU5BQkxFRCA9IDB4MDE7Ci0KLSAgICAvKioKLSAgICAgKiBORkMgRGlzY292ZXJ5IGZvciBSZWFkZXIgbW9kZQotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBESVNDT1ZFUllfTU9ERV9SRUFERVIgPSAwOwotCi0gICAgLyoqCi0gICAgICogTkZDIERpc2NvdmVyeSBmb3IgQ2FyZCBFbXVsYXRpb24gTW9kZQotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBESVNDT1ZFUllfTU9ERV9DQVJEX0VNVUxBVElPTiA9IDI7Ci0KLSAgICAvKioKLSAgICAgKiBMTENQIFNlcnZpY2UgU29ja2V0IHR5cGUKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9TRVJWSUNFX1NPQ0tFVF9UWVBFID0gMDsKLQotICAgIC8qKgotICAgICAqIExMQ1AgU29ja2V0IHR5cGUKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9TT0NLRVRfVFlQRSA9IDE7Ci0KLSAgICAvKioKLSAgICAgKiBMTENQIENvbm5lY3Rpb25sZXNzIHNvY2tldCB0eXBlCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExMQ1BfQ09OTkVDVElPTkxFU1NfU09DS0VUX1RZUEUgPSAyOwotCi0gICAgLyoqCi0gICAgICogTWF4aW11biBudW1iZXIgb2Ygc29ja2V0cyBtYW5hZ2VkCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExMQ1BfU09DS0VUX05CX01BWCA9IDU7Ci0KLSAgICAvKioKLSAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciB0aGUgTWF4aW11bSBJbmZvcm1hdGlvbiBVbml0IHBhcmFtZXRlcgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMTENQX0xUT19ERUZBVUxUX1ZBTFVFID0gMTUwOwotCi0gICAgLyoqCi0gICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIE1heGltdW0gSW5mb3JtYXRpb24gVW5pdCBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9MVE9fTUFYX1ZBTFVFID0gMjU1OwotCi0gICAgLyoqCi0gICAgICogTWF4aW11biB2YWx1ZSBmb3IgdGhlIFJlY2VpdmUgV2luZG93Ci0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExMQ1BfUldfTUFYX1ZBTFVFID0gMTU7Ci0KLSAgICAvKioKLSAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciB0aGUgTWF4aW11bSBJbmZvcm1hdGlvbiBVbml0IHBhcmFtZXRlcgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMTENQX01JVV9ERUZBVUxUX1ZBTFVFID0gMTI4OwotCi0gICAgLyoqCi0gICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIE1heGltdW0gSW5mb3JtYXRpb24gVW5pdCBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9NSVVfTUFYX1ZBTFVFID0gMjE3NjsKLQotICAgIC8qKgotICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBXZWxsIEtub3duIFNlcnZpY2UgTGlzdCBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9XS1NfREVGQVVMVF9WQUxVRSA9IDE7Ci0KLSAgICAvKioKLSAgICAgKiBNYXggdmFsdWUgZm9yIHRoZSBXZWxsIEtub3duIFNlcnZpY2UgTGlzdCBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9XS1NfTUFYX1ZBTFVFID0gMTU7Ci0KLSAgICAvKioKLSAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciB0aGUgT3B0aW9uIHBhcmFtZXRlcgotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMTENQX09QVF9ERUZBVUxUX1ZBTFVFID0gMDsKLQotICAgIC8qKgotICAgICAqIE1heCB2YWx1ZSBmb3IgdGhlIE9wdGlvbiBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTExDUF9PUFRfTUFYX1ZBTFVFID0gMzsKLQotICAgIC8qKgotICAgICAqIExMQ1AgUHJvcGVydGllcwotICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQUk9QRVJUWV9MTENQX0xUTyA9IDA7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUFJPUEVSVFlfTExDUF9NSVUgPSAxOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBST1BFUlRZX0xMQ1BfV0tTID0gMjsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQUk9QRVJUWV9MTENQX09QVCA9IDM7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVFlfTExDUF9MVE9fVkFMVUUgPSAibGxjcC5sdG8iOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX0xMQ1BfTUlVX1ZBTFVFID0gImxsY3AubWl1IjsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWV9MTENQX1dLU19WQUxVRSA9ICJsbGNwLndrcyI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVFlfTExDUF9PUFRfVkFMVUUgPSAibGxjcC5vcHQiOwotCi0gICAgLyoqCi0gICAgICogTkZDIFJlYWRlciBQcm9wZXJ0aWVzCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQSA9IDQ7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9CID0gNTsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0YgPSA2OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBST1BFUlRZX05GQ19ESVNDT1ZFUllfMTU2OTMgPSA3OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBST1BFUlRZX05GQ19ESVNDT1ZFUllfTkZDSVAgPSA4OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQV9WQUxVRSA9ICJkaXNjb3ZlcnkuaXNvMTQ0NDNBIjsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0JfVkFMVUUgPSAiZGlzY292ZXJ5LmlzbzE0NDQzQiI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9GX1ZBTFVFID0gImRpc2NvdmVyeS5mZWxpY2EiOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX05GQ19ESVNDT1ZFUllfMTU2OTNfVkFMVUUgPSAiZGlzY292ZXJ5LmlzbzE1NjkzIjsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWV9ORkNfRElTQ09WRVJZX05GQ0lQX1ZBTFVFID0gImRpc2NvdmVyeS5uZmNpcCI7Ci0KLSAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0KLSAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgT2JqZWN0PiBtT2JqZWN0TWFwID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgT2JqZWN0PigpOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPEludGVnZXIsIE9iamVjdD4gbVNvY2tldE1hcCA9IG5ldyBIYXNoTWFwPEludGVnZXIsIE9iamVjdD4oKTsKLQotICAgIHByaXZhdGUgZmluYWwgTGlua2VkTGlzdDxSZWdpc3RlcmVkU29ja2V0PiBtUmVnaXN0ZXJlZFNvY2tldExpc3QgPSBuZXcgTGlua2VkTGlzdDxSZWdpc3RlcmVkU29ja2V0PigpOwotCi0gICAgcHJpdmF0ZSBpbnQgbUxsY3BMaW5rU3RhdGUgPSBOZmNBZGFwdGVyLkxMQ1BfTElOS19TVEFURV9ERUFDVElWQVRFRDsKLQotICAgIHByaXZhdGUgaW50IG1HZW5lcmF0ZWRTb2NrZXRIYW5kbGUgPSAwOwotCi0gICAgcHJpdmF0ZSBpbnQgbU5iU29ja2V0Q3JlYXRlZCA9IDA7Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gbUlzTmZjRW5hYmxlZCA9IGZhbHNlOwotCi0gICAgcHJpdmF0ZSBOZmNIYW5kbGVyIG1OZmNIYW5kbGVyOwotCi0gICAgcHJpdmF0ZSBpbnQgbVNlbGVjdGVkU2VJZCA9IDA7Ci0KLSAgICBwcml2YXRlIGludCBtVGltZW91dCA9IDA7Ci0KLSAgICBwcml2YXRlIGludCBtTmZjU3RhdGU7Ci0KLSAgICBwcml2YXRlIGludCBtTmZjU2VjdXJlRWxlbWVudFN0YXRlOwotCi0gICAgcHJpdmF0ZSBib29sZWFuIG1PcGVuUGVuZGluZyA9IGZhbHNlOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBOYXRpdmVOZmNNYW5hZ2VyIG1NYW5hZ2VyOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJTGxjcFNvY2tldCBtTGxjcFNvY2tldCA9IG5ldyBJTGxjcFNvY2tldC5TdHViKCkgewotCi0gICAgICAgIHByaXZhdGUgZmluYWwgaW50IENPTk5FQ1RfRkxBRyA9IDB4MDE7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgaW50IENMT1NFX0ZMQUcgICA9IDB4MDI7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgaW50IFJFQ1ZfRkxBRyAgICA9IDB4MDQ7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgaW50IFNFTkRfRkxBRyAgICA9IDB4MDg7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgY29uY3VycmVuY3lGbGFnczsKLSAgICAgICAgcHJpdmF0ZSBPYmplY3Qgc3luYzsKLQotICAgICAgICBwcml2YXRlIHZvaWQgZW50ZXJDcml0aWNhbChpbnQgbWFzaywgaW50IGN1cnJlbnQpIHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAtMTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHJlc3VsdCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb25jdXJyZW5jeUZsYWdzICYgbWFzazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzeW5jLndhaXQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBTZXQgZmxhZwotICAgICAgICAgICAgY29uY3VycmVuY3lGbGFncyB8PSBjdXJyZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZSB2b2lkIGxlYXZlQ3JpdGljYWwoaW50IGN1cnJlbnQpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2xlYXIgZmxhZwotICAgICAgICAgICAgICAgIGNvbmN1cnJlbmN5RmxhZ3MgJj0gfmN1cnJlbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBSZWxlYXNlIHdhaXRpbmcgdGhyZWFkcwotICAgICAgICAgICAgc3luYy5ub3RpZnlBbGwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY2xvc2UoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG51bGw7Ci0gICAgICAgICAgICBib29sZWFuIGlzU3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAobUxsY3BMaW5rU3RhdGUgPT0gTmZjQWRhcHRlci5MTENQX0xJTktfU1RBVEVfQUNUSVZBVEVEKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHNvY2tldC5kb0Nsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1N1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc29ja2V0IGNsb3NlZCBmcm9tIHRoZSBobWFwICovCi0gICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBtTmJTb2NrZXRDcmVhdGVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICBtTmJTb2NrZXRDcmVhdGVkLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5TVUNDRVNTOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHNvY2tldCBjbG9zZWQgZnJvbSB0aGUgaG1hcCAqLwotICAgICAgICAgICAgICAgICAgICBSZW1vdmVTb2NrZXQobmF0aXZlSGFuZGxlKTsKLQotICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgcmVnaXN0ZXJlZCBzb2NrZXQgZnJvbSB0aGUgbGlzdCAqLwotICAgICAgICAgICAgICAgICAgICBSZW1vdmVSZWdpc3RlcmVkU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogVXBkYXRlIG1OYlNvY2tldENyZWF0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZC0tOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlNVQ0NFU1M7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY29ubmVjdChpbnQgbmF0aXZlSGFuZGxlLCBpbnQgc2FwKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTb2NrZXQgc29ja2V0ID0gbnVsbDsKLSAgICAgICAgICAgIGJvb2xlYW4gaXNTdWNjZXNzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHNvY2tldC5kb0Nvbm5lY3Qoc2FwLCBzb2NrZXQuZ2V0Q29ubmVjdFRpbWVvdXQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3VjY2VzcykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5TVUNDRVNTOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY29ubmVjdEJ5TmFtZShpbnQgbmF0aXZlSGFuZGxlLCBTdHJpbmcgc24pIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTGxjcFNvY2tldCBzb2NrZXQgPSBudWxsOwotICAgICAgICAgICAgYm9vbGVhbiBpc1N1Y2Nlc3MgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBzb2NrZXQgPSAoTmF0aXZlTGxjcFNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaXNTdWNjZXNzID0gc29ja2V0LmRvQ29ubmVjdEJ5KHNuLCBzb2NrZXQuZ2V0Q29ubmVjdFRpbWVvdXQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3VjY2VzcykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5TVUNDRVNTOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0Q29ubmVjdFRpbWVvdXQoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuZ2V0Q29ubmVjdFRpbWVvdXQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldExvY2FsU2FwKGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTGxjcFNvY2tldCBzb2NrZXQgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0LmdldFNhcCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0TG9jYWxTb2NrZXRNaXUoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuZ2V0TWl1KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRMb2NhbFNvY2tldFJ3KGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTGxjcFNvY2tldCBzb2NrZXQgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0LmdldFJ3KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRSZW1vdGVTb2NrZXRNaXUoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChzb2NrZXQuZG9HZXRSZW1vdGVTb2NrZXRNaXUoKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuZG9HZXRSZW1vdGVTb2NrZXRNaXUoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TT0NLRVRfTk9UX0NPTk5FQ1RFRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX1NPQ0tFVF9OT1RfQ09OTkVDVEVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRSZW1vdGVTb2NrZXRSdyhpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTb2NrZXQgc29ja2V0ID0gbnVsbDsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBzb2NrZXQgPSAoTmF0aXZlTGxjcFNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNvY2tldC5kb0dldFJlbW90ZVNvY2tldFJ3KCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0LmRvR2V0UmVtb3RlU29ja2V0UncoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TT0NLRVRfTk9UX0NPTk5FQ1RFRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX1NPQ0tFVF9OT1RfQ09OTkVDVEVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCByZWNlaXZlKGludCBuYXRpdmVIYW5kbGUsIGJ5dGVbXSByZWNlaXZlQnVmZmVyKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTb2NrZXQgc29ja2V0ID0gbnVsbDsKLSAgICAgICAgICAgIGludCByZWNlaXZlTGVuZ3RoID0gMDsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBzb2NrZXQgPSAoTmF0aXZlTGxjcFNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZUxlbmd0aCA9IHNvY2tldC5kb1JlY2VpdmUocmVjZWl2ZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVMZW5ndGggIT0gMCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjZWl2ZUxlbmd0aDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBzZW5kKGludCBuYXRpdmVIYW5kbGUsIGJ5dGVbXSBkYXRhKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTb2NrZXQgc29ja2V0ID0gbnVsbDsKLSAgICAgICAgICAgIGJvb2xlYW4gaXNTdWNjZXNzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHNvY2tldC5kb1NlbmQoZGF0YSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3VjY2VzcykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5TVUNDRVNTOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBzZXRDb25uZWN0VGltZW91dChpbnQgbmF0aXZlSGFuZGxlLCBpbnQgdGltZW91dCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHNvY2tldC5zZXRDb25uZWN0VGltZW91dCh0aW1lb3V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgfTsKLQotICAgIHByaXZhdGUgZmluYWwgSUxsY3BTZXJ2aWNlU29ja2V0IG1MbGNwU2VydmVyU29ja2V0U2VydmljZSA9IG5ldyBJTGxjcFNlcnZpY2VTb2NrZXQuU3R1YigpIHsKLQotICAgICAgICBwdWJsaWMgaW50IGFjY2VwdChpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0IHNvY2tldCA9IG51bGw7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IGNsaWVudFNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtTmJTb2NrZXRDcmVhdGVkIDwgTExDUF9TT0NLRVRfTkJfTUFYKSB7Ci0gICAgICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsaWVudFNvY2tldCA9IHNvY2tldC5kb0FjY2VwdChzb2NrZXQuZ2V0QWNjZXB0VGltZW91dCgpLCBzb2NrZXQuZ2V0TWl1KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LmdldFJ3KCksIHNvY2tldC5nZXRMaW5lYXJCdWZmZXJMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRTb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogQWRkIHRoZSBzb2NrZXQgaW50byB0aGUgc29ja2V0IG1hcCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgbVNvY2tldE1hcC5wdXQoY2xpZW50U29ja2V0LmdldEhhbmRsZSgpLCBjbGllbnRTb2NrZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudFNvY2tldC5nZXRIYW5kbGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0IHNvY2tldCA9IG51bGw7Ci0gICAgICAgICAgICBib29sZWFuIGlzU3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU2VydmljZVNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1MbGNwTGlua1N0YXRlID09IE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0FDVElWQVRFRCkgewotICAgICAgICAgICAgICAgICAgICBpc1N1Y2Nlc3MgPSBzb2NrZXQuZG9DbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHNvY2tldCBjbG9zZWQgZnJvbSB0aGUgaG1hcCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBVcGRhdGUgbU5iU29ja2V0Q3JlYXRlZCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZC0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHRoZSBzb2NrZXQgY2xvc2VkIGZyb20gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgICAgICAgICAgUmVtb3ZlU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHJlZ2lzdGVyZWQgc29ja2V0IGZyb20gdGhlIGxpc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgUmVtb3ZlUmVnaXN0ZXJlZFNvY2tldChuYXRpdmVIYW5kbGUpOwotCi0gICAgICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBtTmJTb2NrZXRDcmVhdGVkICovCi0gICAgICAgICAgICAgICAgICAgIG1OYlNvY2tldENyZWF0ZWQtLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldEFjY2VwdFRpbWVvdXQoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU2VydmljZVNvY2tldCBzb2NrZXQgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU2VydmljZVNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5nZXRBY2NlcHRUaW1lb3V0KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgc2V0QWNjZXB0VGltZW91dChpbnQgbmF0aXZlSGFuZGxlLCBpbnQgdGltZW91dCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVMbGNwU2VydmljZVNvY2tldCBzb2NrZXQgPSBudWxsOwotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwU2VydmljZVNvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc29ja2V0LnNldEFjY2VwdFRpbWVvdXQodGltZW91dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IG1MbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXRTZXJ2aWNlID0gbmV3IElMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQuU3R1YigpIHsKLQotICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldCBzb2NrZXQgPSBudWxsOwotICAgICAgICAgICAgYm9vbGVhbiBpc1N1Y2Nlc3MgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBzb2NrZXQgPSAoTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAobUxsY3BMaW5rU3RhdGUgPT0gTmZjQWRhcHRlci5MTENQX0xJTktfU1RBVEVfQUNUSVZBVEVEKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHNvY2tldC5kb0Nsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1N1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc29ja2V0IGNsb3NlZCBmcm9tIHRoZSBobWFwICovCi0gICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSBtTmJTb2NrZXRDcmVhdGVkICovCi0gICAgICAgICAgICAgICAgICAgICAgICBtTmJTb2NrZXRDcmVhdGVkLS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHNvY2tldCBjbG9zZWQgZnJvbSB0aGUgaG1hcCAqLwotICAgICAgICAgICAgICAgICAgICBSZW1vdmVTb2NrZXQobmF0aXZlSGFuZGxlKTsKLQotICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgcmVnaXN0ZXJlZCBzb2NrZXQgZnJvbSB0aGUgbGlzdCAqLwotICAgICAgICAgICAgICAgICAgICBSZW1vdmVSZWdpc3RlcmVkU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogVXBkYXRlIG1OYlNvY2tldENyZWF0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZC0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0U2FwKGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHNvY2tldCA9IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHNvY2tldCBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgc29ja2V0ID0gKE5hdGl2ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldCkgZmluZFNvY2tldChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5nZXRTYXAoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgTGxjcFBhY2tldCByZWNlaXZlRnJvbShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldCBzb2NrZXQgPSBudWxsOwotICAgICAgICAgICAgTGxjcFBhY2tldCBwYWNrZXQ7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgc29ja2V0IGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBzb2NrZXQgPSAoTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0KSBmaW5kU29ja2V0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBwYWNrZXQgPSBzb2NrZXQuZG9SZWNlaXZlRnJvbShzb2NrZXQuZ2V0TGlua01pdSgpKTsKLSAgICAgICAgICAgICAgICBpZiAocGFja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhY2tldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBzZW5kVG8oaW50IG5hdGl2ZUhhbmRsZSwgTGxjcFBhY2tldCBwYWNrZXQpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHNvY2tldCA9IG51bGw7Ci0gICAgICAgICAgICBib29sZWFuIGlzU3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBzb2NrZXQgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHNvY2tldCA9IChOYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQpIGZpbmRTb2NrZXQobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHNvY2tldC5kb1NlbmRUbyhwYWNrZXQuZ2V0UmVtb3RlU2FwKCksIHBhY2tldC5nZXREYXRhQnVmZmVyKCkpOwotICAgICAgICAgICAgICAgIGlmIChpc1N1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuU1VDQ0VTUzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lPOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgZmluYWwgSU5mY1RhZyBtTmZjVGFnU2VydmljZSA9IG5ldyBJTmZjVGFnLlN0dWIoKSB7Ci0KLSAgICAgICAgcHVibGljIGludCBjbG9zZShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZU5mY1RhZyB0YWcgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSB0YWcgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHRhZyA9IChOYXRpdmVOZmNUYWcpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmICh0YWcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmICh0YWcuZG9EaXNjb25uZWN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHRoZSBkZXZpY2UgZnJvbSB0aGUgaG1hcCAqLwotICAgICAgICAgICAgICAgICAgICBSZW1vdmVPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgLyogUmVzdGFydCBwb2xsaW5nIGxvb3AgZm9yIG5vdGlmaWNhdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBtTWFuYWdlci5lbmFibGVEaXNjb3ZlcnkoRElTQ09WRVJZX01PREVfUkVBREVSKTsKLSAgICAgICAgICAgICAgICAgICAgbU9wZW5QZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlNVQ0NFU1M7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBSZXN0YXJ0IHBvbGxpbmcgbG9vcCBmb3Igbm90aWZpY2F0aW9uICovCi0gICAgICAgICAgICBtTWFuYWdlci5lbmFibGVEaXNjb3ZlcnkoRElTQ09WRVJZX01PREVfUkVBREVSKTsKLSAgICAgICAgICAgIG1PcGVuUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfRElTQ09OTkVDVDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY29ubmVjdChpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZU5mY1RhZyB0YWcgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSB0YWcgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIHRhZyA9IChOYXRpdmVOZmNUYWcpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmICh0YWcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmICh0YWcuZG9Db25uZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlNVQ0NFU1M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBSZXN0YXJ0IHBvbGxpbmcgbG9vcCBmb3Igbm90aWZpY2F0aW9uICovCi0gICAgICAgICAgICBtTWFuYWdlci5lbmFibGVEaXNjb3ZlcnkoRElTQ09WRVJZX01PREVfUkVBREVSKTsKLSAgICAgICAgICAgIG1PcGVuUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfQ09OTkVDVDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZU5mY1RhZyB0YWcgPSBudWxsOwotICAgICAgICAgICAgU3RyaW5nIHR5cGU7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgdGFnIGluIHRoZSBobWFwICovCi0gICAgICAgICAgICB0YWcgPSAoTmF0aXZlTmZjVGFnKSBmaW5kT2JqZWN0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAodGFnICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0eXBlID0gdGFnLmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJ5dGVbXSBnZXRVaWQoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVOZmNUYWcgdGFnID0gbnVsbDsKLSAgICAgICAgICAgIGJ5dGVbXSB1aWQ7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgdGFnIGluIHRoZSBobWFwICovCi0gICAgICAgICAgICB0YWcgPSAoTmF0aXZlTmZjVGFnKSBmaW5kT2JqZWN0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAodGFnICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB1aWQgPSB0YWcuZ2V0VWlkKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVpZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJvb2xlYW4gaXNOZGVmKGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTmZjVGFnIHRhZyA9IG51bGw7Ci0gICAgICAgICAgICBib29sZWFuIGlzU3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlzU3VjY2VzczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgdGFnIGluIHRoZSBobWFwICovCi0gICAgICAgICAgICB0YWcgPSAoTmF0aXZlTmZjVGFnKSBmaW5kT2JqZWN0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAodGFnICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpc1N1Y2Nlc3MgPSB0YWcuY2hlY2tOREVGKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gaXNTdWNjZXNzOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJ5dGVbXSB0cmFuc2NlaXZlKGludCBuYXRpdmVIYW5kbGUsIGJ5dGVbXSBkYXRhKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZU5mY1RhZyB0YWcgPSBudWxsOwotICAgICAgICAgICAgYnl0ZVtdIHJlc3BvbnNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHRhZyBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgdGFnID0gKE5hdGl2ZU5mY1RhZykgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YWcuZG9UcmFuc2NlaXZlKGRhdGEpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIE5kZWZNZXNzYWdlIHJlYWQoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVOZmNUYWcgdGFnOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIHRhZyBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgdGFnID0gKE5hdGl2ZU5mY1RhZykgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZiA9IHRhZy5kb1JlYWQoKTsKLSAgICAgICAgICAgICAgICBpZiAoYnVmID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIGFuIE5kZWZNZXNzYWdlICovCi0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOZGVmTWVzc2FnZShidWYpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCB3cml0ZShpbnQgbmF0aXZlSGFuZGxlLCBOZGVmTWVzc2FnZSBtc2cpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlTmZjVGFnIHRhZzsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgdGFnIGluIHRoZSBobWFwICovCi0gICAgICAgICAgICB0YWcgPSAoTmF0aXZlTmZjVGFnKSBmaW5kT2JqZWN0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAodGFnID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRhZy5kb1dyaXRlKG1zZy50b0J5dGVBcnJheSgpKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLlNVQ0NFU1M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRMYXN0RXJyb3IoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0TW9kZUhpbnQoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgbWFrZVJlYWRPbmx5KGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotCi0gICAgfTsKLQotICAgIHByaXZhdGUgZmluYWwgSVAycEluaXRpYXRvciBtUDJwSW5pdGlhdG9yU2VydmljZSA9IG5ldyBJUDJwSW5pdGlhdG9yLlN0dWIoKSB7Ci0KLSAgICAgICAgcHVibGljIGJ5dGVbXSBnZXRHZW5lcmFsQnl0ZXMoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIGRldmljZSBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgZGV2aWNlID0gKE5hdGl2ZVAycERldmljZSkgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKGRldmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZmYgPSBkZXZpY2UuZ2V0R2VuZXJhbEJ5dGVzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZmYgPT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0TW9kZShpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZVAycERldmljZSBkZXZpY2U7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIGRldmljZSBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgZGV2aWNlID0gKE5hdGl2ZVAycERldmljZSkgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKGRldmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZS5nZXRNb2RlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlZBTElEX1BBUkFNOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJ5dGVbXSByZWNlaXZlKGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlUDJwRGV2aWNlIGRldmljZTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBkZXZpY2UgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIGRldmljZSA9IChOYXRpdmVQMnBEZXZpY2UpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGJ5dGVbXSBidWZmID0gZGV2aWNlLmRvUmVjZWl2ZSgpOwotICAgICAgICAgICAgICAgIGlmIChidWZmID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIHJldHVybiBidWZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogUmVzdGFydCBwb2xsaW5nIGxvb3AgZm9yIG5vdGlmaWNhdGlvbiAqLwotICAgICAgICAgICAgbU1hbmFnZXIuZW5hYmxlRGlzY292ZXJ5KERJU0NPVkVSWV9NT0RFX1JFQURFUik7Ci0gICAgICAgICAgICBtT3BlblBlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJvb2xlYW4gc2VuZChpbnQgbmF0aXZlSGFuZGxlLCBieXRlW10gZGF0YSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotICAgICAgICAgICAgYm9vbGVhbiBpc1N1Y2Nlc3MgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBpc1N1Y2Nlc3M7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIGRldmljZSBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgZGV2aWNlID0gKE5hdGl2ZVAycERldmljZSkgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKGRldmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaXNTdWNjZXNzID0gZGV2aWNlLmRvU2VuZChkYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBpc1N1Y2Nlc3M7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJUDJwVGFyZ2V0IG1QMnBUYXJnZXRTZXJ2aWNlID0gbmV3IElQMnBUYXJnZXQuU3R1YigpIHsKLQotICAgICAgICBwdWJsaWMgaW50IGNvbm5lY3QoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBkZXZpY2UgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIGRldmljZSA9IChOYXRpdmVQMnBEZXZpY2UpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChkZXZpY2UuZG9Db25uZWN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuU1VDQ0VTUzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9DT05ORUNUOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdChpbnQgbmF0aXZlSGFuZGxlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIE5hdGl2ZVAycERldmljZSBkZXZpY2U7Ci0gICAgICAgICAgICBib29sZWFuIGlzU3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlzU3VjY2VzczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogZmluZCB0aGUgZGV2aWNlIGluIHRoZSBobWFwICovCi0gICAgICAgICAgICBkZXZpY2UgPSAoTmF0aXZlUDJwRGV2aWNlKSBmaW5kT2JqZWN0KG5hdGl2ZUhhbmRsZSk7Ci0gICAgICAgICAgICBpZiAoZGV2aWNlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNTdWNjZXNzID0gZGV2aWNlLmRvRGlzY29ubmVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1PcGVuUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmUgdGhlIGRldmljZSBmcm9tIHRoZSBobWFwICovCi0gICAgICAgICAgICAgICAgICAgIFJlbW92ZU9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgICAgICAgICAvKiBSZXN0YXJ0IHBvbGxpbmcgbG9vcCBmb3Igbm90aWZpY2F0aW9uICovCi0gICAgICAgICAgICAgICAgICAgIG1NYW5hZ2VyLmVuYWJsZURpc2NvdmVyeShESVNDT1ZFUllfTU9ERV9SRUFERVIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBpc1N1Y2Nlc3M7Ci0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBieXRlW10gZ2V0R2VuZXJhbEJ5dGVzKGludCBuYXRpdmVIYW5kbGUpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAgICAgTmF0aXZlUDJwRGV2aWNlIGRldmljZTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBkZXZpY2UgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIGRldmljZSA9IChOYXRpdmVQMnBEZXZpY2UpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGJ5dGVbXSBidWZmID0gZGV2aWNlLmdldEdlbmVyYWxCeXRlcygpOwotICAgICAgICAgICAgICAgIGlmIChidWZmID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIHJldHVybiBidWZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldE1vZGUoaW50IG5hdGl2ZUhhbmRsZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBmaW5kIHRoZSBkZXZpY2UgaW4gdGhlIGhtYXAgKi8KLSAgICAgICAgICAgIGRldmljZSA9IChOYXRpdmVQMnBEZXZpY2UpIGZpbmRPYmplY3QobmF0aXZlSGFuZGxlKTsKLSAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2UuZ2V0TW9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5WQUxJRF9QQVJBTTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBieXRlW10gdHJhbnNjZWl2ZShpbnQgbmF0aXZlSGFuZGxlLCBieXRlW10gZGF0YSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIGZpbmQgdGhlIGRldmljZSBpbiB0aGUgaG1hcCAqLwotICAgICAgICAgICAgZGV2aWNlID0gKE5hdGl2ZVAycERldmljZSkgZmluZE9iamVjdChuYXRpdmVIYW5kbGUpOwotICAgICAgICAgICAgaWYgKGRldmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZmYgPSBkZXZpY2UuZG9UcmFuc2NlaXZlKGRhdGEpOwotICAgICAgICAgICAgICAgIGlmIChidWZmID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIHJldHVybiBidWZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBjbGFzcyBOZmNIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0KLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gTG9nLCBkb24ndCBjcmFzaCEKLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFeGNlcHRpb24gaW4gTmZjSGFuZGxlci5oYW5kbGVNZXNzYWdlOiIsIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICB9OwotCi0gICAgcHVibGljIE5mY1NlcnZpY2UoQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgIHN1cGVyKCk7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgbU1hbmFnZXIgPSBuZXcgTmF0aXZlTmZjTWFuYWdlcihtQ29udGV4dCk7Ci0KLSAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtTmZjU2VydmljZVJlY2VpdmVyLCBuZXcgSW50ZW50RmlsdGVyKAotICAgICAgICAgICAgICAgIE5hdGl2ZU5mY01hbmFnZXIuSU5URVJOQUxfTExDUF9MSU5LX1NUQVRFX0NIQU5HRURfQUNUSU9OKSk7Ci0KLSAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtTmZjU2VydmljZVJlY2VpdmVyLCBuZXcgSW50ZW50RmlsdGVyKAotICAgICAgICAgICAgICAgIE5mY0FkYXB0ZXIuQUNUSU9OX0xMQ1BfTElOS19TVEFURV9DSEFOR0VEKSk7Ci0KLSAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtTmZjU2VydmljZVJlY2VpdmVyLCBuZXcgSW50ZW50RmlsdGVyKAotICAgICAgICAgICAgICAgIE5hdGl2ZU5mY01hbmFnZXIuSU5URVJOQUxfVEFSR0VUX0RFU0VMRUNURURfQUNUSU9OKSk7Ci0KLSAgICAgICAgVGhyZWFkIHRocmVhZCA9IG5ldyBUaHJlYWQobnVsbCwgdGhpcywgIk5mY1NlcnZpY2UiKTsKLSAgICAgICAgdGhyZWFkLnN0YXJ0KCk7Ci0KLSAgICAgICAgbU1hbmFnZXIuaW5pdGlhbGl6ZU5hdGl2ZVN0cnVjdHVyZSgpOwotCi0gICAgICAgICAgICBpbnQgbmZjU3RhdGUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfT04sIDApOwotCi0gICAgICAgICAgICBpZiAobmZjU3RhdGUgPT0gTkZDX1NUQVRFX0VOQUJMRUQpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fZW5hYmxlKCkpIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgIFByb2Nlc3Muc2V0VGhyZWFkUHJpb3JpdHkoUHJvY2Vzcy5USFJFQURfUFJJT1JJVFlfQkFDS0dST1VORCk7Ci0gICAgICAgIExvb3Blci5wcmVwYXJlKCk7Ci0gICAgICAgIG1OZmNIYW5kbGVyID0gbmV3IE5mY0hhbmRsZXIoKTsKLSAgICAgICAgTG9vcGVyLmxvb3AoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBjYW5jZWwoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5ORkNfUkFXLAotICAgICAgICAgICAgICAgICJORkNfUkFXIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gY2FuY2VsIE5GQyBvcGVuaW5nIik7Ci0gICAgICAgIGlmIChtT3BlblBlbmRpbmcpIHsKLSAgICAgICAgICAgIG1PcGVuUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgbU1hbmFnZXIuZG9DYW5jZWwoKTsKLSAgICAgICAgICAgIC8qIFJlc3RhcnQgcG9sbGluZyBsb29wIGZvciBub3RpZmljYXRpb24gKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmVuYWJsZURpc2NvdmVyeShESVNDT1ZFUllfTU9ERV9SRUFERVIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGludCBjcmVhdGVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQoaW50IHNhcCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLk5GQ19MTENQLAotICAgICAgICAgICAgICAgICJORkNfTExDUCBwZXJtaXNzaW9uIHJlcXVpcmVkIGZvciBMTENQIG9wZXJhdGlvbnMgd2l0aCBORkMgc2VydmljZSIpOwotCi0gICAgICAgIC8qIENoZWNrIFNBUCBpcyBub3QgYWxyZWFkeSB1c2VkICovCi0KLSAgICAgICAgLyogQ2hlY2sgbmIgc29ja2V0IGNyZWF0ZWQgKi8KLSAgICAgICAgaWYgKG1OYlNvY2tldENyZWF0ZWQgPCBMTENQX1NPQ0tFVF9OQl9NQVgpIHsKLSAgICAgICAgICAgIC8qIFN0b3JlIHRoZSBzb2NrZXQgaGFuZGxlICovCi0gICAgICAgICAgICBpbnQgc29ja2VIYW5kbGUgPSBtR2VuZXJhdGVkU29ja2V0SGFuZGxlOwotCi0gICAgICAgICAgICBpZiAobUxsY3BMaW5rU3RhdGUgPT0gTmZjQWRhcHRlci5MTENQX0xJTktfU1RBVEVfQUNUSVZBVEVEKSB7Ci0gICAgICAgICAgICAgICAgTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHNvY2tldDsKLQotICAgICAgICAgICAgICAgIHNvY2tldCA9IG1NYW5hZ2VyLmRvQ3JlYXRlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0KHNhcCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIHNvY2tldCBjcmVhdGVkICovCi0gICAgICAgICAgICAgICAgICAgIG1OYlNvY2tldENyZWF0ZWQrKzsKLQotICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHNvY2tldCBpbnRvIHRoZSBzb2NrZXQgbWFwICovCi0gICAgICAgICAgICAgICAgICAgIG1Tb2NrZXRNYXAucHV0KHNvY2tlSGFuZGxlLCBzb2NrZXQpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZUhhbmRsZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgKiBzb2NrZXQgY3JlYXRpb24gZXJyb3IgLSB1cGRhdGUgdGhlIHNvY2tldCBoYW5kbGUKLSAgICAgICAgICAgICAgICAgICAgICogZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgbUdlbmVyYXRlZFNvY2tldEhhbmRsZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAgIC8qIEdldCBFcnJvciBTdGF0dXMgKi8KLSAgICAgICAgICAgICAgICAgICAgaW50IGVycm9yU3RhdHVzID0gbU1hbmFnZXIuZG9HZXRMYXN0RXJyb3IoKTsKLQotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yU3RhdHVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVycm9yQ29kZXMuRVJST1JfQlVGRkVSX1RPX1NNQUxMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0JVRkZFUl9UT19TTUFMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRXJyb3JDb2Rlcy5FUlJPUl9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOU1VGRklDSUVOVF9SRVNPVVJDRVM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX1NPQ0tFVF9DUkVBVElPTjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogQ2hlY2sgU0FQIGlzIG5vdCBhbHJlYWR5IHVzZWQgKi8KLSAgICAgICAgICAgICAgICBpZiAoIUNoZWNrU29ja2V0U2FwKHNhcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfU0FQX1VTRUQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IHNvY2tldCA9IG5ldyBOYXRpdmVMbGNwQ29ubmVjdGlvbmxlc3NTb2NrZXQoc2FwKTsKLQotICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgc29ja2V0IGludG8gdGhlIHNvY2tldCBtYXAgKi8KLSAgICAgICAgICAgICAgICBtU29ja2V0TWFwLnB1dChzb2NrZUhhbmRsZSwgc29ja2V0KTsKLQotICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIHNvY2tldCBjcmVhdGVkICovCi0gICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZCsrOwotCi0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIG5ldyByZWdpc3RlcmVkIHNvY2tldCAqLwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTb2NrZXQgcmVnaXN0ZXJlZFNvY2tldCA9IG5ldyBSZWdpc3RlcmVkU29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgTExDUF9DT05ORUNUSU9OTEVTU19TT0NLRVRfVFlQRSwgc29ja2VIYW5kbGUsIHNhcCk7Ci0KLSAgICAgICAgICAgICAgICAvKiBQdXQgdGhpcyBzb2NrZXQgaW50byBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCBzb2NrZXQgKi8KLSAgICAgICAgICAgICAgICBtUmVnaXN0ZXJlZFNvY2tldExpc3QuYWRkKHJlZ2lzdGVyZWRTb2NrZXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiB1cGRhdGUgc29ja2V0IGhhbmRsZSBnZW5lcmF0aW9uICovCi0gICAgICAgICAgICBtR2VuZXJhdGVkU29ja2V0SGFuZGxlKys7Ci0KLSAgICAgICAgICAgIHJldHVybiBzb2NrZUhhbmRsZTsKLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogTm8gc29ja2V0IGF2YWlsYWJsZSAqLwotICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5TVUZGSUNJRU5UX1JFU09VUkNFUzsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgcHVibGljIGludCBjcmVhdGVMbGNwU2VydmljZVNvY2tldChpbnQgc2FwLCBTdHJpbmcgc24sIGludCBtaXUsIGludCBydywgaW50IGxpbmVhckJ1ZmZlckxlbmd0aCkKLSAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotCi0gICAgICAgIC8vIENoZWNrIGlmIE5GQyBpcyBlbmFibGVkCi0gICAgICAgIGlmICghbUlzTmZjRW5hYmxlZCkgewotICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfTk9UX0lOSVRJQUxJWkVEOwotICAgICAgICB9Ci0KLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5ORkNfTExDUCwKLSAgICAgICAgICAgICAgICAiTkZDX0xMQ1AgcGVybWlzc2lvbiByZXF1aXJlZCBmb3IgTExDUCBvcGVyYXRpb25zIHdpdGggTkZDIHNlcnZpY2UiKTsKLQotICAgICAgICBpZiAobU5iU29ja2V0Q3JlYXRlZCA8IExMQ1BfU09DS0VUX05CX01BWCkgewotICAgICAgICAgICAgaW50IHNvY2tlSGFuZGxlID0gbUdlbmVyYXRlZFNvY2tldEhhbmRsZTsKLQotICAgICAgICAgICAgaWYgKG1MbGNwTGlua1N0YXRlID09IE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0FDVElWQVRFRCkgewotICAgICAgICAgICAgICAgIE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0IHNvY2tldDsKLQotICAgICAgICAgICAgICAgIHNvY2tldCA9IG1NYW5hZ2VyLmRvQ3JlYXRlTGxjcFNlcnZpY2VTb2NrZXQoc2FwLCBzbiwgbWl1LCBydywgbGluZWFyQnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBudW1iZXIgb2Ygc29ja2V0IGNyZWF0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZCsrOwotICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHNvY2tldCBpbnRvIHRoZSBzb2NrZXQgbWFwICovCi0gICAgICAgICAgICAgICAgICAgIG1Tb2NrZXRNYXAucHV0KHNvY2tlSGFuZGxlLCBzb2NrZXQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHNvY2tldCBjcmVhdGlvbiBlcnJvciAtIHVwZGF0ZSB0aGUgc29ja2V0IGhhbmRsZSBjb3VudGVyICovCi0gICAgICAgICAgICAgICAgICAgIG1HZW5lcmF0ZWRTb2NrZXRIYW5kbGUgLT0gMTsKLQotICAgICAgICAgICAgICAgICAgICAvKiBHZXQgRXJyb3IgU3RhdHVzICovCi0gICAgICAgICAgICAgICAgICAgIGludCBlcnJvclN0YXR1cyA9IG1NYW5hZ2VyLmRvR2V0TGFzdEVycm9yKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlcnJvclN0YXR1cykgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFcnJvckNvZGVzLkVSUk9SX0JVRkZFUl9UT19TTUFMTDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9CVUZGRVJfVE9fU01BTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVycm9yQ29kZXMuRVJST1JfSU5TVUZGSUNJRU5UX1JFU09VUkNFUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TT0NLRVRfQ1JFQVRJT047Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICAgICAgLyogQ2hlY2sgU0FQIGlzIG5vdCBhbHJlYWR5IHVzZWQgKi8KLSAgICAgICAgICAgICAgICBpZiAoIUNoZWNrU29ja2V0U2FwKHNhcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfU0FQX1VTRUQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLyogU2VydmljZSBOYW1lICovCi0gICAgICAgICAgICAgICAgaWYgKCFDaGVja1NvY2tldFNlcnZpY2VOYW1lKHNuKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TRVJWSUNFX05BTUVfVVNFRDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvKiBDaGVjayBzb2NrZXQgb3B0aW9ucyAqLwotICAgICAgICAgICAgICAgIGlmICghQ2hlY2tTb2NrZXRPcHRpb25zKG1pdSwgcncsIGxpbmVhckJ1ZmZlckxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfU09DS0VUX09QVElPTlM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgTmF0aXZlTGxjcFNlcnZpY2VTb2NrZXQgc29ja2V0ID0gbmV3IE5hdGl2ZUxsY3BTZXJ2aWNlU29ja2V0KHNuKTsKLQotICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgc29ja2V0IGludG8gdGhlIHNvY2tldCBtYXAgKi8KLSAgICAgICAgICAgICAgICBtU29ja2V0TWFwLnB1dChzb2NrZUhhbmRsZSwgc29ja2V0KTsKLQotICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgbnVtYmVyIG9mIHNvY2tldCBjcmVhdGVkICovCi0gICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZCsrOwotCi0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIG5ldyByZWdpc3RlcmVkIHNvY2tldCAqLwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTb2NrZXQgcmVnaXN0ZXJlZFNvY2tldCA9IG5ldyBSZWdpc3RlcmVkU29ja2V0KExMQ1BfU0VSVklDRV9TT0NLRVRfVFlQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tlSGFuZGxlLCBzYXAsIHNuLCBtaXUsIHJ3LCBsaW5lYXJCdWZmZXJMZW5ndGgpOwotCi0gICAgICAgICAgICAgICAgLyogUHV0IHRoaXMgc29ja2V0IGludG8gYSBsaXN0IG9mIHJlZ2lzdGVyZWQgc29ja2V0ICovCi0gICAgICAgICAgICAgICAgbVJlZ2lzdGVyZWRTb2NrZXRMaXN0LmFkZChyZWdpc3RlcmVkU29ja2V0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogdXBkYXRlIHNvY2tldCBoYW5kbGUgZ2VuZXJhdGlvbiAqLwotICAgICAgICAgICAgbUdlbmVyYXRlZFNvY2tldEhhbmRsZSArPSAxOwotCi0gICAgICAgICAgICBMb2cuZChUQUcsICJMbGNwIFNlcnZpY2UgU29ja2V0IEhhbmRsZSA9IiArIHNvY2tlSGFuZGxlKTsKLSAgICAgICAgICAgIHJldHVybiBzb2NrZUhhbmRsZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIE5vIHNvY2tldCBhdmFpbGFibGUgKi8KLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOU1VGRklDSUVOVF9SRVNPVVJDRVM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGNyZWF0ZUxsY3BTb2NrZXQoaW50IHNhcCwgaW50IG1pdSwgaW50IHJ3LCBpbnQgbGluZWFyQnVmZmVyTGVuZ3RoKQotICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgTkZDIGlzIGVuYWJsZWQKLSAgICAgICAgaWYgKCFtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9OT1RfSU5JVElBTElaRUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLk5GQ19MTENQLAotICAgICAgICAgICAgICAgICJORkNfTExDUCBwZXJtaXNzaW9uIHJlcXVpcmVkIGZvciBMTENQIG9wZXJhdGlvbnMgd2l0aCBORkMgc2VydmljZSIpOwotCi0gICAgICAgIGlmIChtTmJTb2NrZXRDcmVhdGVkIDwgTExDUF9TT0NLRVRfTkJfTUFYKSB7Ci0KLSAgICAgICAgICAgIGludCBzb2NrZUhhbmRsZSA9IG1HZW5lcmF0ZWRTb2NrZXRIYW5kbGU7Ci0KLSAgICAgICAgICAgIGlmIChtTGxjcExpbmtTdGF0ZSA9PSBOZmNBZGFwdGVyLkxMQ1BfTElOS19TVEFURV9BQ1RJVkFURUQpIHsKLSAgICAgICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldDsKLQotICAgICAgICAgICAgICAgIHNvY2tldCA9IG1NYW5hZ2VyLmRvQ3JlYXRlTGxjcFNvY2tldChzYXAsIG1pdSwgcncsIGxpbmVhckJ1ZmZlckxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBudW1iZXIgb2Ygc29ja2V0IGNyZWF0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgbU5iU29ja2V0Q3JlYXRlZCsrOwotICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHNvY2tldCBpbnRvIHRoZSBzb2NrZXQgbWFwICovCi0gICAgICAgICAgICAgICAgICAgIG1Tb2NrZXRNYXAucHV0KHNvY2tlSGFuZGxlLCBzb2NrZXQpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIHNvY2tldCBjcmVhdGlvbiBlcnJvciAtIHVwZGF0ZSB0aGUgc29ja2V0IGhhbmRsZQotICAgICAgICAgICAgICAgICAgICAgKiBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBtR2VuZXJhdGVkU29ja2V0SGFuZGxlIC09IDE7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogR2V0IEVycm9yIFN0YXR1cyAqLwotICAgICAgICAgICAgICAgICAgICBpbnQgZXJyb3JTdGF0dXMgPSBtTWFuYWdlci5kb0dldExhc3RFcnJvcigpOwotCi0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRXJyb3JDb2Rlcy5FUlJPUl9CVUZGRVJfVE9fU01BTEw6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfQlVGRkVSX1RPX1NNQUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFcnJvckNvZGVzLkVSUk9SX0lOU1VGRklDSUVOVF9SRVNPVVJDRVM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5TVUZGSUNJRU5UX1JFU09VUkNFUzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfU09DS0VUX0NSRUFUSU9OOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAgICAgICAgIC8qIENoZWNrIFNBUCBpcyBub3QgYWxyZWFkeSB1c2VkICovCi0gICAgICAgICAgICAgICAgaWYgKCFDaGVja1NvY2tldFNhcChzYXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX1NBUF9VU0VEOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8qIENoZWNrIFNvY2tldCBvcHRpb25zICovCi0gICAgICAgICAgICAgICAgaWYgKCFDaGVja1NvY2tldE9wdGlvbnMobWl1LCBydywgbGluZWFyQnVmZmVyTGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TT0NLRVRfT1BUSU9OUzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IHNvY2tldCA9IG5ldyBOYXRpdmVMbGNwU29ja2V0KHNhcCwgbWl1LCBydyk7Ci0KLSAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHNvY2tldCBpbnRvIHRoZSBzb2NrZXQgbWFwICovCi0gICAgICAgICAgICAgICAgbVNvY2tldE1hcC5wdXQoc29ja2VIYW5kbGUsIHNvY2tldCk7Ci0KLSAgICAgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIG51bWJlciBvZiBzb2NrZXQgY3JlYXRlZCAqLwotICAgICAgICAgICAgICAgIG1OYlNvY2tldENyZWF0ZWQrKzsKLSAgICAgICAgICAgICAgICAvKiBDcmVhdGUgbmV3IHJlZ2lzdGVyZWQgc29ja2V0ICovCi0gICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFNvY2tldCByZWdpc3RlcmVkU29ja2V0ID0gbmV3IFJlZ2lzdGVyZWRTb2NrZXQoTExDUF9TT0NLRVRfVFlQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tlSGFuZGxlLCBzYXAsIG1pdSwgcncsIGxpbmVhckJ1ZmZlckxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICAvKiBQdXQgdGhpcyBzb2NrZXQgaW50byBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCBzb2NrZXQgKi8KLSAgICAgICAgICAgICAgICBtUmVnaXN0ZXJlZFNvY2tldExpc3QuYWRkKHJlZ2lzdGVyZWRTb2NrZXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiB1cGRhdGUgc29ja2V0IGhhbmRsZSBnZW5lcmF0aW9uICovCi0gICAgICAgICAgICBtR2VuZXJhdGVkU29ja2V0SGFuZGxlKys7Ci0KLSAgICAgICAgICAgIHJldHVybiBzb2NrZUhhbmRsZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIE5vIHNvY2tldCBhdmFpbGFibGUgKi8KLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOU1VGRklDSUVOVF9SRVNPVVJDRVM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGRlc2VsZWN0U2VjdXJlRWxlbWVudCgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtU2VsZWN0ZWRTZUlkID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PX1NFX0NPTk5FQ1RFRDsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX0FETUlOLAotICAgICAgICAgICAgICAgICJORkNfQURNSU4gcGVybWlzc2lvbiByZXF1aXJlZCB0byBkZXNlbGVjdCBORkMgU2VjdXJlIEVsZW1lbnQiKTsKLQotICAgICAgICAgICAgbU1hbmFnZXIuZG9EZXNlbGVjdFNlY3VyZUVsZW1lbnQobVNlbGVjdGVkU2VJZCk7Ci0gICAgICAgIG1OZmNTZWN1cmVFbGVtZW50U3RhdGUgPSAwOwotICAgICAgICAgICAgbVNlbGVjdGVkU2VJZCA9IDA7Ci0KLSAgICAgICAgLyogU3RvcmUgdGhhdCBhIHNlY3VyZSBlbGVtZW50IGlzIGRlc2VsZWN0ZWQgKi8KLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX1NFQ1VSRV9FTEVNRU5UX09OLCAwKTsKLQotICAgICAgICAvKiBSZXNldCBTZWN1cmUgRWxlbWVudCBJRCAqLwotICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfU0VDVVJFX0VMRU1FTlRfSUQsIDApOwotCi0KLSAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuU1VDQ0VTUzsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBkaXNhYmxlKCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIGJvb2xlYW4gaXNTdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX0FETUlOLAotICAgICAgICAgICAgICAgICJORkNfQURNSU4gcGVybWlzc2lvbiByZXF1aXJlZCB0byBkaXNhYmxlIE5GQyBzZXJ2aWNlIik7Ci0gICAgICAgIGlmIChpc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgaXNTdWNjZXNzID0gbU1hbmFnZXIuZGVpbml0aWFsaXplKCk7Ci0gICAgICAgICAgICBpZiAoaXNTdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgbUlzTmZjRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdXBkYXRlTmZjT25TZXR0aW5nKCk7Ci0KLSAgICAgICAgcmV0dXJuIGlzU3VjY2VzczsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBlbmFibGUoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgYm9vbGVhbiBpc1N1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5ORkNfQURNSU4sCi0gICAgICAgICAgICAgICAgIk5GQ19BRE1JTiBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIGVuYWJsZSBORkMgc2VydmljZSIpOwotICAgICAgICBpZiAoIWlzRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgaXNTdWNjZXNzID0gX2VuYWJsZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpc1N1Y2Nlc3M7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIF9lbmFibGUoKSB7Ci0gICAgICAgIGJvb2xlYW4gaXNTdWNjZXNzID0gbU1hbmFnZXIuaW5pdGlhbGl6ZSgpOwotICAgICAgICBpZiAoaXNTdWNjZXNzKSB7Ci0gICAgICAgICAgICAvKiBDaGVjayBwZXJzaXN0ZW50IHByb3BlcnRpZXMgKi8KLSAgICAgICAgICAgIGNoZWNrUHJvcGVydGllcygpOwotCi0gICAgICAgICAgICAvKiBDaGVjayBTZWN1cmUgRWxlbWVudCBzZXR0aW5nICovCi0gICAgICAgICAgICBtTmZjU2VjdXJlRWxlbWVudFN0YXRlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19TRUNVUkVfRUxFTUVOVF9PTiwgMCk7Ci0KLSAgICAgICAgICAgIGlmIChtTmZjU2VjdXJlRWxlbWVudFN0YXRlID09IDEpIHsKLQotICAgICAgICAgICAgICAgIGludCBzZWN1cmVFbGVtZW50SWQgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19TRUNVUkVfRUxFTUVOVF9JRCwgMCk7Ci0gICAgICAgICAgICAgICAgaW50W10gU2VfbGlzdCA9IG1NYW5hZ2VyLmRvR2V0U2VjdXJlRWxlbWVudExpc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAoU2VfbGlzdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU2VfbGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNlX2xpc3RbaV0gPT0gc2VjdXJlRWxlbWVudElkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1hbmFnZXIuZG9TZWxlY3RTZWN1cmVFbGVtZW50KFNlX2xpc3RbaV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZWxlY3RlZFNlSWQgPSBTZV9saXN0W2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBTdGFydCBwb2xsaW5nIGxvb3AgKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmVuYWJsZURpc2NvdmVyeShESVNDT1ZFUllfTU9ERV9SRUFERVIpOwotCi0gICAgICAgICAgICBtSXNOZmNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1Jc05mY0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZU5mY09uU2V0dGluZygpOwotCi0gICAgICAgIHJldHVybiBpc1N1Y2Nlc3M7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZU5mY09uU2V0dGluZygpIHsKLSAgICAgICAgaW50IHN0YXRlOwotCi0gICAgICAgIGlmIChtSXNOZmNFbmFibGVkKSB7Ci0gICAgICAgICAgICBzdGF0ZSA9IE5GQ19TVEFURV9FTkFCTEVEOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhdGUgPSBORkNfU1RBVEVfRElTQUJMRUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX09OLCBzdGF0ZSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGNoZWNrUHJvcGVydGllcygpIHsKLSAgICAgICAgaW50IHZhbHVlOwotCi0gICAgICAgIC8qIExMQ1AgTFRPICovCi0gICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX0xUTywKLSAgICAgICAgICAgICAgICBMTENQX0xUT19ERUZBVUxUX1ZBTFVFKTsKLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX0xUTywgdmFsdWUpOwotICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTExDUF9MVE8sIHZhbHVlKTsKLQotICAgICAgICAvKiBMTENQIE1JVSAqLwotICAgICAgICB2YWx1ZSA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfTExDUF9NSVUsCi0gICAgICAgICAgICAgICAgTExDUF9NSVVfREVGQVVMVF9WQUxVRSk7Ci0gICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfTExDUF9NSVUsIHZhbHVlKTsKLSAgICAgICAgbU1hbmFnZXIuZG9TZXRQcm9wZXJ0aWVzKFBST1BFUlRZX0xMQ1BfTUlVLCB2YWx1ZSk7Ci0KLSAgICAgICAgLyogTExDUCBXS1MgKi8KLSAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX0xMQ1BfV0tTLAotICAgICAgICAgICAgICAgIExMQ1BfV0tTX0RFRkFVTFRfVkFMVUUpOwotICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX0xMQ1BfV0tTLCB2YWx1ZSk7Ci0gICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9MTENQX1dLUywgdmFsdWUpOwotCi0gICAgICAgIC8qIExMQ1AgT1BUICovCi0gICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX09QVCwKLSAgICAgICAgICAgICAgICBMTENQX09QVF9ERUZBVUxUX1ZBTFVFKTsKLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX09QVCwgdmFsdWUpOwotICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTExDUF9PUFQsIHZhbHVlKTsKLQotICAgICAgICAvKiBORkMgUkVBREVSIEEgKi8KLSAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZX0EsIDEpOwotICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9BLAotICAgICAgICAgICAgICAgIHZhbHVlKTsKLSAgICAgICAgbU1hbmFnZXIuZG9TZXRQcm9wZXJ0aWVzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQSwgdmFsdWUpOwotCi0gICAgICAgIC8qIE5GQyBSRUFERVIgQiAqLwotICAgICAgICB2YWx1ZSA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfQiwgMSk7Ci0gICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZX0IsCi0gICAgICAgICAgICAgICAgdmFsdWUpOwotICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9CLCB2YWx1ZSk7Ci0KLSAgICAgICAgLyogTkZDIFJFQURFUiBGICovCi0gICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9GLCAxKTsKLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfRiwKLSAgICAgICAgICAgICAgICB2YWx1ZSk7Ci0gICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0YsIHZhbHVlKTsKLQotICAgICAgICAvKiBORkMgUkVBREVSIDE1NjkzICovCi0gICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV8xNTY5MywgMSk7Ci0gICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZXzE1NjkzLAotICAgICAgICAgICAgICAgIHZhbHVlKTsKLSAgICAgICAgbU1hbmFnZXIuZG9TZXRQcm9wZXJ0aWVzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfMTU2OTMsIHZhbHVlKTsKLQotICAgICAgICAvKiBORkMgTkZDSVAgKi8KLSAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZX05GQ0lQLCAxKTsKLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfTkZDSVAsCi0gICAgICAgICAgICAgICAgdmFsdWUpOwotICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9ORkNJUCwgdmFsdWUpOwotICAgIH0KLQotICAgIHB1YmxpYyBJTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IGdldExsY3BDb25uZWN0aW9ubGVzc0ludGVyZmFjZSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbUxsY3BDb25uZWN0aW9ubGVzc1NvY2tldFNlcnZpY2U7Ci0gICAgfQotCi0gICAgcHVibGljIElMbGNwU29ja2V0IGdldExsY3BJbnRlcmZhY2UoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1MbGNwU29ja2V0OwotICAgIH0KLQotICAgIHB1YmxpYyBJTGxjcFNlcnZpY2VTb2NrZXQgZ2V0TGxjcFNlcnZpY2VJbnRlcmZhY2UoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1MbGNwU2VydmVyU29ja2V0U2VydmljZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgSU5mY1RhZyBnZXROZmNUYWdJbnRlcmZhY2UoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1OZmNUYWdTZXJ2aWNlOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0T3BlblRpbWVvdXQoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1UaW1lb3V0OwotICAgIH0KLQotICAgIHB1YmxpYyBJUDJwSW5pdGlhdG9yIGdldFAycEluaXRpYXRvckludGVyZmFjZSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbVAycEluaXRpYXRvclNlcnZpY2U7Ci0gICAgfQotCi0gICAgcHVibGljIElQMnBUYXJnZXQgZ2V0UDJwVGFyZ2V0SW50ZXJmYWNlKCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIHJldHVybiBtUDJwVGFyZ2V0U2VydmljZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnRpZXMoU3RyaW5nIHBhcmFtKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgaW50IHZhbHVlOwotCi0gICAgICAgIGlmIChwYXJhbSA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gIldyb25nIHBhcmFtZXRlciI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX0xMQ1BfTFRPX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0xMQ1BfTFRPLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTExDUF9NSVVfVkFMVUUpKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCi0gICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfTExDUF9NSVUsIDApOwotICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9MTENQX1dLU19WQUxVRSkpIHsKLSAgICAgICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX1dLUywgMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX0xMQ1BfT1BUX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0xMQ1BfT1BULCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9BX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9BLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9CX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9CLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9GX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9GLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9ORkNJUF9WQUxVRSkpIHsKLSAgICAgICAgICAgIHZhbHVlID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfTkZDSVAsIDApOwotICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZXzE1NjkzX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsdWUgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV8xNTY5MywgMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gIlVua25vd24gcHJvcGVydHkiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0FfVkFMVUUpCi0gICAgICAgICAgICAgICAgfHwgcGFyYW0uZXF1YWxzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQl9WQUxVRSkKLSAgICAgICAgICAgICAgICB8fCBwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9GX1ZBTFVFKQotICAgICAgICAgICAgICAgIHx8IHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX05GQ0lQX1ZBTFVFKQotICAgICAgICAgICAgICAgIHx8IHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZXzE1NjkzX1ZBTFVFKSkgewotICAgICAgICAgICAgaWYgKHZhbHVlID09IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gImZhbHNlIjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gMSkgewotICAgICAgICAgICAgICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAiVW5rbm93biBWYWx1ZSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1lbHNlewotICAgICAgICAgICAgcmV0dXJuICIiICsgdmFsdWU7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIHB1YmxpYyBpbnRbXSBnZXRTZWN1cmVFbGVtZW50TGlzdCgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICBpbnRbXSBsaXN0ID0gbnVsbDsKLSAgICAgICAgaWYgKG1Jc05mY0VuYWJsZWQgPT0gdHJ1ZSkgewotICAgICAgICAgICAgbGlzdCA9IG1NYW5hZ2VyLmRvR2V0U2VjdXJlRWxlbWVudExpc3QoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFNlbGVjdGVkU2VjdXJlRWxlbWVudCgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbVNlbGVjdGVkU2VJZDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1Jc05mY0VuYWJsZWQ7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBvcGVuUDJwQ29ubmVjdGlvbigpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX1JBVywKLSAgICAgICAgICAgICAgICAiTkZDX1JBVyBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIG9wZW4gTkZDIFAyUCBjb25uZWN0aW9uIik7Ci0gICAgICAgIGlmICghbU9wZW5QZW5kaW5nKSB7Ci0gICAgICAgICAgICBOYXRpdmVQMnBEZXZpY2UgZGV2aWNlOwotICAgICAgICAgICAgbU9wZW5QZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIGRldmljZSA9IG1NYW5hZ2VyLmRvT3BlblAycENvbm5lY3Rpb24obVRpbWVvdXQpOwotICAgICAgICAgICAgaWYgKGRldmljZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLyogYWRkIGRldmljZSB0byB0aGUgSG1hcCAqLwotICAgICAgICAgICAgICAgIG1PYmplY3RNYXAucHV0KGRldmljZS5nZXRIYW5kbGUoKSwgZGV2aWNlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlLmdldEhhbmRsZSgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtT3BlblBlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAvKiBSZXN0YXJ0IHBvbGxpbmcgbG9vcCBmb3Igbm90aWZpY2F0aW9uICovCi0gICAgICAgICAgICAgICAgbU1hbmFnZXIuZW5hYmxlRGlzY292ZXJ5KERJU0NPVkVSWV9NT0RFX1JFQURFUik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU87Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9CVVNZOwotICAgICAgICB9Ci0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBvcGVuVGFnQ29ubmVjdGlvbihUYWcgdGFnKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgTmF0aXZlTmZjVGFnIG5hdGl2ZVRhZyA9IG5ldyBOYXRpdmVOZmNUYWcodGFnLmdldEhhbmRsZSgpLCAiIiwgdGFnLmdldElkKCkpOwotCi0gICAgICAgIG1PYmplY3RNYXAucHV0KG5hdGl2ZVRhZy5nZXRIYW5kbGUoKSwgbmF0aXZlVGFnKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IHNlbGVjdFNlY3VyZUVsZW1lbnQoaW50IHNlSWQpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAvLyBDaGVjayBpZiBORkMgaXMgZW5hYmxlZAotICAgICAgICBpZiAoIW1Jc05mY0VuYWJsZWQpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05PVF9JTklUSUFMSVpFRDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtU2VsZWN0ZWRTZUlkID09IHNlSWQpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX1NFX0FMUkVBRFlfU0VMRUNURUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVNlbGVjdGVkU2VJZCAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9TRV9DT05ORUNURUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLk5GQ19BRE1JTiwKLSAgICAgICAgICAgICAgICAiTkZDX0FETUlOIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc2VsZWN0IE5GQyBTZWN1cmUgRWxlbWVudCIpOwotCi0gICAgICAgICAgICBtU2VsZWN0ZWRTZUlkID0gc2VJZDsKLSAgICAgICAgICAgIG1NYW5hZ2VyLmRvU2VsZWN0U2VjdXJlRWxlbWVudChtU2VsZWN0ZWRTZUlkKTsKLQotICAgICAgICAvKiBTdG9yZSB0aGF0IGEgc2VjdXJlIGVsZW1lbnQgaXMgc2VsZWN0ZWQgKi8KLSAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTkZDX1NFQ1VSRV9FTEVNRU5UX09OLCAxKTsKLQotICAgICAgICAvKiBTdG9yZSB0aGUgSUQgb2YgdGhlIFNlY3VyZSBFbGVtZW50IFNlbGVjdGVkICovCi0gICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19TRUNVUkVfRUxFTUVOVF9JRCwgbVNlbGVjdGVkU2VJZCk7Ci0KLSAgICAgICAgbU5mY1NlY3VyZUVsZW1lbnRTdGF0ZSA9IDE7Ci0KLSAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuU1VDQ0VTUzsKLQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE9wZW5UaW1lb3V0KGludCB0aW1lb3V0KSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5ORkNfUkFXLAotICAgICAgICAgICAgICAgICJORkNfUkFXIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc2V0IE5GQyBjb25uZWN0aW9uIHRpbWVvdXQiKTsKLSAgICAgICAgbVRpbWVvdXQgPSB0aW1lb3V0OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgc2V0UHJvcGVydGllcyhTdHJpbmcgcGFyYW0sIFN0cmluZyB2YWx1ZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX0FETUlOLAotICAgICAgICAgICAgICAgICJORkNfQURNSU4gcGVybWlzc2lvbiByZXF1aXJlZCB0byBzZXQgTkZDIFByb3BlcnRpZXMiKTsKLQotICAgICAgICBpZiAoaXNFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX05GQ19PTjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCB2YWw7Ci0KLSAgICAgICAgLyogQ2hlY2sgcGFyYW1zIHZhbGlkaXR5ICovCi0gICAgICAgIGlmIChwYXJhbSA9PSBudWxsIHx8IHZhbHVlID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOVkFMSURfUEFSQU07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX0xMQ1BfTFRPX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsID0gSW50ZWdlci5wYXJzZUludCh2YWx1ZSk7Ci0KLSAgICAgICAgICAgIC8qIENoZWNrIHBhcmFtcyAqLwotICAgICAgICAgICAgaWYgKHZhbCA+IExMQ1BfTFRPX01BWF9WQUxVRSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlZBTElEX1BBUkFNOwotCi0gICAgICAgICAgICAvKiBTdG9yZSB2YWx1ZSAqLwotICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIC5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfTExDUF9MVE8sIHZhbCk7Ci0KLSAgICAgICAgICAgIC8qIFVwZGF0ZSBKTkkgKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9MTENQX0xUTywgdmFsKTsKLQotICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9MTENQX01JVV9WQUxVRSkpIHsKLSAgICAgICAgICAgIHZhbCA9IEludGVnZXIucGFyc2VJbnQodmFsdWUpOwotCi0gICAgICAgICAgICAvKiBDaGVjayBwYXJhbXMgKi8KLSAgICAgICAgICAgIGlmICgodmFsIDwgTExDUF9NSVVfREVGQVVMVF9WQUxVRSkgfHwgKHZhbCA+IExMQ1BfTUlVX01BWF9WQUxVRSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5WQUxJRF9QQVJBTTsKLQotICAgICAgICAgICAgLyogU3RvcmUgdmFsdWUgKi8KLSAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbQotICAgICAgICAgICAgICAgICAgICAucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX0xMQ1BfTUlVLCB2YWwpOwotCi0gICAgICAgICAgICAvKiBVcGRhdGUgSk5JICovCi0gICAgICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTExDUF9NSVUsIHZhbCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTExDUF9XS1NfVkFMVUUpKSB7Ci0gICAgICAgICAgICB2YWwgPSBJbnRlZ2VyLnBhcnNlSW50KHZhbHVlKTsKLQotICAgICAgICAgICAgLyogQ2hlY2sgcGFyYW1zICovCi0gICAgICAgICAgICBpZiAodmFsID4gTExDUF9XS1NfTUFYX1ZBTFVFKQotICAgICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOVkFMSURfUEFSQU07Ci0KLSAgICAgICAgICAgIC8qIFN0b3JlIHZhbHVlICovCi0gICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19MTENQX1dLUywgdmFsKTsKLQotICAgICAgICAgICAgLyogVXBkYXRlIEpOSSAqLwotICAgICAgICAgICAgbU1hbmFnZXIuZG9TZXRQcm9wZXJ0aWVzKFBST1BFUlRZX0xMQ1BfV0tTLCB2YWwpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX0xMQ1BfT1BUX1ZBTFVFKSkgewotICAgICAgICAgICAgdmFsID0gSW50ZWdlci5wYXJzZUludCh2YWx1ZSk7Ci0KLSAgICAgICAgICAgIC8qIENoZWNrIHBhcmFtcyAqLwotICAgICAgICAgICAgaWYgKHZhbCA+IExMQ1BfT1BUX01BWF9WQUxVRSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlZBTElEX1BBUkFNOwotCi0gICAgICAgICAgICAvKiBTdG9yZSB2YWx1ZSAqLwotICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIC5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfTExDUF9PUFQsIHZhbCk7Ci0KLSAgICAgICAgICAgIC8qIFVwZGF0ZSBKTkkgKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9MTENQX09QVCwgdmFsKTsKLQotICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0FfVkFMVUUpKSB7Ci0KLSAgICAgICAgICAgIC8qIENoZWNrIHBhcmFtcyAqLwotICAgICAgICAgICAgaWYgKHZhbHVlLmVxdWFscygidHJ1ZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUuZXF1YWxzKCJmYWxzZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5WQUxJRF9QQVJBTTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFN0b3JlIHZhbHVlICovCi0gICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLCBTZXR0aW5ncy5TeXN0ZW0uTkZDX0RJU0NPVkVSWV9BLAotICAgICAgICAgICAgICAgICAgICB2YWwpOwotCi0gICAgICAgICAgICAvKiBVcGRhdGUgSk5JICovCi0gICAgICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9BLCB2YWwpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQl9WQUxVRSkpIHsKLQotICAgICAgICAgICAgLyogQ2hlY2sgcGFyYW1zICovCi0gICAgICAgICAgICBpZiAodmFsdWUuZXF1YWxzKCJ0cnVlIikpIHsKLSAgICAgICAgICAgICAgICB2YWwgPSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5lcXVhbHMoImZhbHNlIikpIHsKLSAgICAgICAgICAgICAgICB2YWwgPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlZBTElEX1BBUkFNOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBTdG9yZSB2YWx1ZSAqLwotICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfQiwKLSAgICAgICAgICAgICAgICAgICAgdmFsKTsKLQotICAgICAgICAgICAgLyogVXBkYXRlIEpOSSAqLwotICAgICAgICAgICAgbU1hbmFnZXIuZG9TZXRQcm9wZXJ0aWVzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfQiwgdmFsKTsKLQotICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLmVxdWFscyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0ZfVkFMVUUpKSB7Ci0KLSAgICAgICAgICAgIC8qIENoZWNrIHBhcmFtcyAqLwotICAgICAgICAgICAgaWYgKHZhbHVlLmVxdWFscygidHJ1ZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUuZXF1YWxzKCJmYWxzZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5WQUxJRF9QQVJBTTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogU3RvcmUgdmFsdWUgKi8KLSAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZX0YsCi0gICAgICAgICAgICAgICAgICAgIHZhbCk7Ci0KLSAgICAgICAgICAgIC8qIFVwZGF0ZSBKTkkgKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZX0YsIHZhbCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5lcXVhbHMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV8xNTY5M19WQUxVRSkpIHsKLQotICAgICAgICAgICAgLyogQ2hlY2sgcGFyYW1zICovCi0gICAgICAgICAgICBpZiAodmFsdWUuZXF1YWxzKCJ0cnVlIikpIHsKLSAgICAgICAgICAgICAgICB2YWwgPSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5lcXVhbHMoImZhbHNlIikpIHsKLSAgICAgICAgICAgICAgICB2YWwgPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5FUlJPUl9JTlZBTElEX1BBUkFNOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBTdG9yZSB2YWx1ZSAqLwotICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5GQ19ESVNDT1ZFUllfMTU2OTMsIHZhbCk7Ci0KLSAgICAgICAgICAgIC8qIFVwZGF0ZSBKTkkgKi8KLSAgICAgICAgICAgIG1NYW5hZ2VyLmRvU2V0UHJvcGVydGllcyhQUk9QRVJUWV9ORkNfRElTQ09WRVJZXzE1NjkzLCB2YWwpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGFyYW0uZXF1YWxzKFBST1BFUlRZX05GQ19ESVNDT1ZFUllfTkZDSVBfVkFMVUUpKSB7Ci0KLSAgICAgICAgICAgIC8qIENoZWNrIHBhcmFtcyAqLwotICAgICAgICAgICAgaWYgKHZhbHVlLmVxdWFscygidHJ1ZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUuZXF1YWxzKCJmYWxzZSIpKSB7Ci0gICAgICAgICAgICAgICAgdmFsID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZXMuRVJST1JfSU5WQUxJRF9QQVJBTTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogU3RvcmUgdmFsdWUgKi8KLSAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5wdXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCi0gICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5ORkNfRElTQ09WRVJZX05GQ0lQLCB2YWwpOwotCi0gICAgICAgICAgICAvKiBVcGRhdGUgSk5JICovCi0gICAgICAgICAgICBtTWFuYWdlci5kb1NldFByb3BlcnRpZXMoUFJPUEVSVFlfTkZDX0RJU0NPVkVSWV9ORkNJUCwgdmFsKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGVzLkVSUk9SX0lOVkFMSURfUEFSQU07Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gRXJyb3JDb2Rlcy5TVUNDRVNTOwotICAgIH0KLQotICAgIHB1YmxpYyBOZGVmTWVzc2FnZSBsb2NhbEdldCgpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGxvY2FsU2V0KE5kZWZNZXNzYWdlIG1lc3NhZ2UpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICAvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCi0KLSAgICB9Ci0KLSAgICAvLyBSZXNldCBhbGwgaW50ZXJuYWxzCi0gICAgcHJpdmF0ZSB2b2lkIHJlc2V0KCkgewotCi0gICAgICAgIC8vIENsZWFyIHRhYmxlcwotICAgICAgICBtT2JqZWN0TWFwLmNsZWFyKCk7Ci0gICAgICAgIG1Tb2NrZXRNYXAuY2xlYXIoKTsKLSAgICAgICAgbVJlZ2lzdGVyZWRTb2NrZXRMaXN0LmNsZWFyKCk7Ci0KLSAgICAgICAgLy8gUmVzZXQgdmFyaWFibGVzCi0gICAgICAgIG1MbGNwTGlua1N0YXRlID0gTmZjQWRhcHRlci5MTENQX0xJTktfU1RBVEVfREVBQ1RJVkFURUQ7Ci0gICAgICAgIG1OYlNvY2tldENyZWF0ZWQgPSAwOwotICAgICAgICBtSXNOZmNFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIG1TZWxlY3RlZFNlSWQgPSAwOwotICAgICAgICBtVGltZW91dCA9IDA7Ci0gICAgICAgIG1OZmNTdGF0ZSA9IE5GQ19TVEFURV9ESVNBQkxFRDsKLSAgICAgICAgbU9wZW5QZW5kaW5nID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBPYmplY3QgZmluZE9iamVjdChpbnQga2V5KSB7Ci0gICAgICAgIE9iamVjdCBkZXZpY2UgPSBudWxsOwotCi0gICAgICAgIGRldmljZSA9IG1PYmplY3RNYXAuZ2V0KGtleSk7Ci0gICAgICAgIGlmIChkZXZpY2UgPT0gbnVsbCkgewotICAgICAgICAgICAgTG9nLncoVEFHLCAiSGFuZGxlIG5vdCBmb3VuZCAhIik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZGV2aWNlOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBSZW1vdmVPYmplY3QoaW50IGtleSkgewotICAgICAgICBtT2JqZWN0TWFwLnJlbW92ZShrZXkpOwotICAgIH0KLQotICAgIHByaXZhdGUgT2JqZWN0IGZpbmRTb2NrZXQoaW50IGtleSkgewotICAgICAgICBPYmplY3Qgc29ja2V0ID0gbnVsbDsKLQotICAgICAgICBzb2NrZXQgPSBtU29ja2V0TWFwLmdldChrZXkpOwotCi0gICAgICAgIHJldHVybiBzb2NrZXQ7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIFJlbW92ZVNvY2tldChpbnQga2V5KSB7Ci0gICAgICAgIG1Tb2NrZXRNYXAucmVtb3ZlKGtleSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIENoZWNrU29ja2V0U2FwKGludCBzYXApIHsKLSAgICAgICAgLyogTGlzdCBvZiBzb2NrZXRzIHJlZ2lzdGVyZWQgKi8KLSAgICAgICAgTGlzdEl0ZXJhdG9yPFJlZ2lzdGVyZWRTb2NrZXQ+IGl0ID0gbVJlZ2lzdGVyZWRTb2NrZXRMaXN0Lmxpc3RJdGVyYXRvcigpOwotCi0gICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIFJlZ2lzdGVyZWRTb2NrZXQgcmVnaXN0ZXJlZFNvY2tldCA9IGl0Lm5leHQoKTsKLQotICAgICAgICAgICAgaWYgKHNhcCA9PSByZWdpc3RlcmVkU29ja2V0Lm1TYXApIHsKLSAgICAgICAgICAgICAgICAvKiBTQVAgYWxyZWFkeSB1c2VkICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBDaGVja1NvY2tldE9wdGlvbnMoaW50IG1pdSwgaW50IHJ3LCBpbnQgbGluZWFyQnVmZmVybGVuZ3RoKSB7Ci0KLSAgICAgICAgaWYgKHJ3ID4gTExDUF9SV19NQVhfVkFMVUUgfHwgbWl1IDwgTExDUF9NSVVfREVGQVVMVF9WQUxVRSB8fCBsaW5lYXJCdWZmZXJsZW5ndGggPCBtaXUpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gQ2hlY2tTb2NrZXRTZXJ2aWNlTmFtZShTdHJpbmcgc24pIHsKLQotICAgICAgICAvKiBMaXN0IG9mIHNvY2tldHMgcmVnaXN0ZXJlZCAqLwotICAgICAgICBMaXN0SXRlcmF0b3I8UmVnaXN0ZXJlZFNvY2tldD4gaXQgPSBtUmVnaXN0ZXJlZFNvY2tldExpc3QubGlzdEl0ZXJhdG9yKCk7Ci0KLSAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgUmVnaXN0ZXJlZFNvY2tldCByZWdpc3RlcmVkU29ja2V0ID0gaXQubmV4dCgpOwotCi0gICAgICAgICAgICBpZiAoc24uZXF1YWxzKHJlZ2lzdGVyZWRTb2NrZXQubVNlcnZpY2VOYW1lKSkgewotICAgICAgICAgICAgICAgIC8qIFNlcnZpY2UgTmFtZSBhbHJlYWR5IHVzZWQgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIFJlbW92ZVJlZ2lzdGVyZWRTb2NrZXQoaW50IG5hdGl2ZUhhbmRsZSkgewotICAgICAgICAvKiBjaGVjayBpZiBzb2NrZXRzIGFyZSByZWdpc3RlcmVkICovCi0gICAgICAgIExpc3RJdGVyYXRvcjxSZWdpc3RlcmVkU29ja2V0PiBpdCA9IG1SZWdpc3RlcmVkU29ja2V0TGlzdC5saXN0SXRlcmF0b3IoKTsKLQotICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBSZWdpc3RlcmVkU29ja2V0IHJlZ2lzdGVyZWRTb2NrZXQgPSBpdC5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAocmVnaXN0ZXJlZFNvY2tldC5tSGFuZGxlID09IG5hdGl2ZUhhbmRsZSkgewotICAgICAgICAgICAgICAgIC8qIHJlbW92ZSB0aGUgcmVnaXN0ZXJlZCBzb2NrZXQgZnJvbSB0aGUgbGlzdCAqLwotICAgICAgICAgICAgICAgIGl0LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgIExvZy5kKFRBRywgInNvY2tldCByZW1vdmVkIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFJlZ2lzdGVyZWRTb2NrZXQgY2xhc3MgdG8gc3RvcmUgdGhlIGNyZWF0aW9uIHJlcXVlc3Qgb2Ygc29ja2V0IHVudGlsIHRoZQotICAgICAqIExMQ1AgbGluayBpbiBub3QgYWN0aXZhdGVkCi0gICAgICovCi0gICAgcHJpdmF0ZSBjbGFzcyBSZWdpc3RlcmVkU29ja2V0IHsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbVR5cGU7Ci0KLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbUhhbmRsZTsKLQotICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtU2FwOwotCi0gICAgICAgIHByaXZhdGUgaW50IG1NaXU7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgbVJ3OwotCi0gICAgICAgIHByaXZhdGUgU3RyaW5nIG1TZXJ2aWNlTmFtZTsKLQotICAgICAgICBwcml2YXRlIGludCBtbGluZWFyQnVmZmVyTGVuZ3RoOwotCi0gICAgICAgIFJlZ2lzdGVyZWRTb2NrZXQoaW50IHR5cGUsIGludCBoYW5kbGUsIGludCBzYXAsIFN0cmluZyBzbiwgaW50IG1pdSwgaW50IHJ3LAotICAgICAgICAgICAgICAgIGludCBsaW5lYXJCdWZmZXJMZW5ndGgpIHsKLSAgICAgICAgICAgIG1UeXBlID0gdHlwZTsKLSAgICAgICAgICAgIG1IYW5kbGUgPSBoYW5kbGU7Ci0gICAgICAgICAgICBtU2FwID0gc2FwOwotICAgICAgICAgICAgbVNlcnZpY2VOYW1lID0gc247Ci0gICAgICAgICAgICBtUncgPSBydzsKLSAgICAgICAgICAgIG1NaXUgPSBtaXU7Ci0gICAgICAgICAgICBtbGluZWFyQnVmZmVyTGVuZ3RoID0gbGluZWFyQnVmZmVyTGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJlZFNvY2tldChpbnQgdHlwZSwgaW50IGhhbmRsZSwgaW50IHNhcCwgaW50IG1pdSwgaW50IHJ3LCBpbnQgbGluZWFyQnVmZmVyTGVuZ3RoKSB7Ci0gICAgICAgICAgICBtVHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBtSGFuZGxlID0gaGFuZGxlOwotICAgICAgICAgICAgbVNhcCA9IHNhcDsKLSAgICAgICAgICAgIG1SdyA9IHJ3OwotICAgICAgICAgICAgbU1pdSA9IG1pdTsKLSAgICAgICAgICAgIG1saW5lYXJCdWZmZXJMZW5ndGggPSBsaW5lYXJCdWZmZXJMZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAgICBSZWdpc3RlcmVkU29ja2V0KGludCB0eXBlLCBpbnQgaGFuZGxlLCBpbnQgc2FwKSB7Ci0gICAgICAgICAgICBtVHlwZSA9IHR5cGU7Ci0gICAgICAgICAgICBtSGFuZGxlID0gaGFuZGxlOwotICAgICAgICAgICAgbVNhcCA9IHNhcDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbU5mY1NlcnZpY2VSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIkludGVybmFsIE5GQyBJbnRlbnQgcmVjZWl2ZWQiKTsKLQotICAgICAgICAgICAgLyogTExDUCBMaW5rIGRlYWN0aXZhdGlvbiAqLwotICAgICAgICAgICAgaWYgKGludGVudC5nZXRBY3Rpb24oKS5lcXVhbHMoTmZjQWRhcHRlci5BQ1RJT05fTExDUF9MSU5LX1NUQVRFX0NIQU5HRUQpKSB7Ci0gICAgICAgICAgICAgICAgbUxsY3BMaW5rU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoTmZjQWRhcHRlci5FWFRSQV9MTENQX0xJTktfU1RBVEVfQ0hBTkdFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0RFQUNUSVZBVEVEKTsKLQotICAgICAgICAgICAgICAgIGlmIChtTGxjcExpbmtTdGF0ZSA9PSBOZmNBZGFwdGVyLkxMQ1BfTElOS19TVEFURV9ERUFDVElWQVRFRCkgewotICAgICAgICAgICAgICAgICAgICAvKiByZXN0YXJ0IHBvbGxpbmcgbG9vcCAqLwotICAgICAgICAgICAgICAgICAgICBtTWFuYWdlci5lbmFibGVEaXNjb3ZlcnkoRElTQ09WRVJZX01PREVfUkVBREVSKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIExMQ1AgTGluayBhY3RpdmF0aW9uICovCi0gICAgICAgICAgICBlbHNlIGlmIChpbnRlbnQuZ2V0QWN0aW9uKCkuZXF1YWxzKAotICAgICAgICAgICAgICAgICAgICBOYXRpdmVOZmNNYW5hZ2VyLklOVEVSTkFMX0xMQ1BfTElOS19TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKLQotICAgICAgICAgICAgICAgIG1MbGNwTGlua1N0YXRlID0gaW50ZW50LmdldEludEV4dHJhKAotICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlTmZjTWFuYWdlci5JTlRFUk5BTF9MTENQX0xJTktfU1RBVEVfQ0hBTkdFRF9FWFRSQSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0RFQUNUSVZBVEVEKTsKLQotICAgICAgICAgICAgICAgIGlmIChtTGxjcExpbmtTdGF0ZSA9PSBOZmNBZGFwdGVyLkxMQ1BfTElOS19TVEFURV9BQ1RJVkFURUQpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgc29ja2V0cyBhcmUgcmVnaXN0ZXJlZCAqLwotICAgICAgICAgICAgICAgICAgICBMaXN0SXRlcmF0b3I8UmVnaXN0ZXJlZFNvY2tldD4gaXQgPSBtUmVnaXN0ZXJlZFNvY2tldExpc3QubGlzdEl0ZXJhdG9yKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiTmIgc29ja2V0IHJlc2dpc3RlcmVkID0gIiArIG1SZWdpc3RlcmVkU29ja2V0TGlzdC5zaXplKCkpOwotCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTb2NrZXQgcmVnaXN0ZXJlZFNvY2tldCA9IGl0Lm5leHQoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWdpc3RlcmVkU29ja2V0Lm1UeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBMTENQX1NFUlZJQ0VfU09DS0VUX1RZUEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlJlZ2lzdGVyZWQgTGxjcCBTZXJ2aWNlIFNvY2tldCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVMbGNwU2VydmljZVNvY2tldCBzZXJ2aWNlU29ja2V0OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VTb2NrZXQgPSBtTWFuYWdlci5kb0NyZWF0ZUxsY3BTZXJ2aWNlU29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRTb2NrZXQubVNhcCwgcmVnaXN0ZXJlZFNvY2tldC5tU2VydmljZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZFNvY2tldC5tTWl1LCByZWdpc3RlcmVkU29ja2V0Lm1SdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkU29ja2V0Lm1saW5lYXJCdWZmZXJMZW5ndGgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlU29ja2V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkZCB0aGUgc29ja2V0IGludG8gdGhlIHNvY2tldCBtYXAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Tb2NrZXRNYXAucHV0KHJlZ2lzdGVyZWRTb2NrZXQubUhhbmRsZSwgc2VydmljZVNvY2tldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc29ja2V0IGNyZWF0aW9uIGVycm9yIC0gdXBkYXRlIHRoZSBzb2NrZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhhbmRsZSBjb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1HZW5lcmF0ZWRTb2NrZXRIYW5kbGUgLT0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTExDUF9TT0NLRVRfVFlQRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiUmVnaXN0ZXJlZCBMbGNwIFNvY2tldCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVMbGNwU29ja2V0IGNsaWVudFNvY2tldDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50U29ja2V0ID0gbU1hbmFnZXIuZG9DcmVhdGVMbGNwU29ja2V0KHJlZ2lzdGVyZWRTb2NrZXQubVNhcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkU29ja2V0Lm1NaXUsIHJlZ2lzdGVyZWRTb2NrZXQubVJ3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRTb2NrZXQubWxpbmVhckJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRTb2NrZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWRkIHRoZSBzb2NrZXQgaW50byB0aGUgc29ja2V0IG1hcCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNvY2tldE1hcC5wdXQocmVnaXN0ZXJlZFNvY2tldC5tSGFuZGxlLCBjbGllbnRTb2NrZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNvY2tldCBjcmVhdGlvbiBlcnJvciAtIHVwZGF0ZSB0aGUgc29ja2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYW5kbGUgY291bnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtR2VuZXJhdGVkU29ja2V0SGFuZGxlIC09IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIExMQ1BfQ09OTkVDVElPTkxFU1NfU09DS0VUX1RZUEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlJlZ2lzdGVyZWQgTGxjcCBDb25uZWN0aW9ubGVzcyBTb2NrZXQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0IGNvbm5lY3Rpb25sZXNzU29ja2V0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9ubGVzc1NvY2tldCA9IG1NYW5hZ2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvQ3JlYXRlTGxjcENvbm5lY3Rpb25sZXNzU29ja2V0KHJlZ2lzdGVyZWRTb2NrZXQubVNhcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9ubGVzc1NvY2tldCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHNvY2tldCBpbnRvIHRoZSBzb2NrZXQgbWFwICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU29ja2V0TWFwLnB1dChyZWdpc3RlcmVkU29ja2V0Lm1IYW5kbGUsIGNvbm5lY3Rpb25sZXNzU29ja2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzb2NrZXQgY3JlYXRpb24gZXJyb3IgLSB1cGRhdGUgdGhlIHNvY2tldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaGFuZGxlIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUdlbmVyYXRlZFNvY2tldEhhbmRsZSAtPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgYWxsIHJlZ2lzdGVyZWQgc29ja2V0IGZyb20gdGhlIGxpc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgbVJlZ2lzdGVyZWRTb2NrZXRMaXN0LmNsZWFyKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyogQnJvYWRjYXN0IEludGVudCBMaW5rIExMQ1AgYWN0aXZhdGVkICovCi0gICAgICAgICAgICAgICAgICAgIEludGVudCBMbGNwTGlua0ludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTGxjcExpbmtJbnRlbnQuc2V0QWN0aW9uKE5mY0FkYXB0ZXIuQUNUSU9OX0xMQ1BfTElOS19TVEFURV9DSEFOR0VEKTsKLQotICAgICAgICAgICAgICAgICAgICBMbGNwTGlua0ludGVudC5wdXRFeHRyYShOZmNBZGFwdGVyLkVYVFJBX0xMQ1BfTElOS19TVEFURV9DSEFOR0VELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5mY0FkYXB0ZXIuTExDUF9MSU5LX1NUQVRFX0FDVElWQVRFRCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiQnJvYWRjYXN0aW5nIExMQ1AgYWN0aXZhdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kT3JkZXJlZEJyb2FkY2FzdChMbGNwTGlua0ludGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uTkZDX0xMQ1ApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFRhcmdldCBEZWFjdGl2YXRlZCAqLwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZW50LmdldEFjdGlvbigpLmVxdWFscygKLSAgICAgICAgICAgICAgICAgICAgTmF0aXZlTmZjTWFuYWdlci5JTlRFUk5BTF9UQVJHRVRfREVTRUxFQ1RFRF9BQ1RJT04pKSB7Ci0gICAgICAgICAgICAgICAgaWYobU9wZW5QZW5kaW5nICE9IGZhbHNlKXsKLSAgICAgICAgICAgICAgICAgICAgbU9wZW5QZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIFJlc3RhcnQgcG9sbGluZyBsb29wIGZvciBub3RpZmljYXRpb24gKi8KLSAgICAgICAgICAgICAgICBtTWFuYWdlci5lbmFibGVEaXNjb3ZlcnkoRElTQ09WRVJZX01PREVfUkVBREVSKTsKLQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9vYmJ0b29sL0FuZHJvaWQubWsgYi90b29scy9vYmJ0b29sL0FuZHJvaWQubWsKaW5kZXggOTg2Njg3Ni4uZDExOGJkNyAxMDA2NDQKLS0tIGEvdG9vbHMvb2JidG9vbC9BbmRyb2lkLm1rCisrKyBiL3Rvb2xzL29iYnRvb2wvQW5kcm9pZC5tawpAQCAtMjksMjEgKzI5LDE4IEBACiAKIGluY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCiAKLSMgTm9uLUxpbnV4IGhvc3RzIG1pZ2h0IG5vdCBoYXZlIE9wZW5TU0wgbGliY3J5cHRvCi1pZmVxICgkKEhPU1RfT1MpLGxpbnV4KQotICAgIGluY2x1ZGUgJChDTEVBUl9WQVJTKQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQogCi0gICAgTE9DQUxfTU9EVUxFIDo9IHBia2RmMmdlbgorTE9DQUxfTU9EVUxFIDo9IHBia2RmMmdlbgorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKK0xPQ0FMX0NGTEFHUyA6PSAtV2FsbCAtV2Vycm9yCitMT0NBTF9TUkNfRklMRVMgOj0gcGJrZGYyZ2VuLmNwcAorTE9DQUxfTERMSUJTICs9IC1sZGwKK0xPQ0FMX0NfSU5DTFVERVMgOj0gZXh0ZXJuYWwvb3BlbnNzbC9pbmNsdWRlICQoTE9DQUxfQ19JTkNMVURFUykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gbGliY3J5cHRvX3N0YXRpYwogCi0gICAgTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKK2luY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCiAKLSAgICBMT0NBTF9DRkxBR1MgOj0gLVdhbGwgLVdlcnJvcgotCi0gICAgTE9DQUxfU1JDX0ZJTEVTIDo9IHBia2RmMmdlbi5jcHAKLQotICAgIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGliY3J5cHRvCi0KLSAgICBpbmNsdWRlICQoQlVJTERfSE9TVF9FWEVDVVRBQkxFKQotZW5kaWYgIyBIT1NUX09TID09IGxpbnV4Ci0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGVuZGlmICMgVEFSR0VUX0JVSUxEX0FQUFMKZGlmZiAtLWdpdCBhL3ZvaXAvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc2lwL1NpcFNlc3Npb25Hcm91cC5qYXZhIGIvdm9pcC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zaXAvU2lwU2Vzc2lvbkdyb3VwLmphdmEKaW5kZXggZDg2MWZhNS4uNTc4YmQ5YiAxMDA2NDQKLS0tIGEvdm9pcC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zaXAvU2lwU2Vzc2lvbkdyb3VwLmphdmEKKysrIGIvdm9pcC9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zaXAvU2lwU2Vzc2lvbkdyb3VwLmphdmEKQEAgLTgyLDYgKzgyLDExIEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IHRydWU7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19QSU5HID0gREVCVUcgJiYgZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFOT05ZTU9VUyA9ICJhbm9ueW1vdXMiOworICAgIC8vIExpbWl0IHRoZSBzaXplIG9mIHRocmVhZCBwb29sIHRvIDEgZm9yIHRoZSBvcmRlciBpc3N1ZSB3aGVuIHRoZSBwaG9uZSBpcworICAgIC8vIHdha2VuIHVwIGZyb20gc2xlZXAgYW5kIHRoZXJlIGFyZSBtYW55IHBhY2tldHMgdG8gYmUgcHJvY2Vzc2VkIGluIHRoZSBTSVAKKyAgICAvLyBzdGFjay4gTm90ZTogVGhlIGRlZmF1bHQgdGhyZWFkIHBvb2wgc2l6ZSBpbiBOSVNUIFNJUCBzdGFjayBpcyAtMSB3aGljaCBpcworICAgIC8vIHVubGltaXRlZC4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEhSRUFEX1BPT0xfU0laRSA9ICIxIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhQSVJZX1RJTUUgPSAzNjAwOyAvLyBpbiBzZWNvbmRzCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENBTkNFTF9DQUxMX1RJTUVSID0gMzsgLy8gaW4gc2Vjb25kcwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgV0FLRV9MT0NLX0hPTERJTkdfVElNRSA9IDUwMDsgLy8gaW4gbWlsbGlzZWNvbmRzCkBAIC0xMjksNiArMTM0LDcgQEAKICAgICAgICAgU2lwRmFjdG9yeSBzaXBGYWN0b3J5ID0gU2lwRmFjdG9yeS5nZXRJbnN0YW5jZSgpOwogICAgICAgICBQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllcygpOwogICAgICAgICBwcm9wZXJ0aWVzLnNldFByb3BlcnR5KCJqYXZheC5zaXAuU1RBQ0tfTkFNRSIsIGdldFN0YWNrTmFtZSgpKTsKKyAgICAgICAgcHJvcGVydGllcy5zZXRQcm9wZXJ0eSgiamF2YXguc2lwLlRIUkVBRF9QT09MX1NJWkUiLCBUSFJFQURfUE9PTF9TSVpFKTsKICAgICAgICAgU3RyaW5nIG91dGJvdW5kUHJveHkgPSBteXNlbGYuZ2V0UHJveHlBZGRyZXNzKCk7CiAgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkob3V0Ym91bmRQcm94eSkpIHsKICAgICAgICAgICAgIExvZy52KFRBRywgIm91dGJvdW5kUHJveHkgaXMgIiArIG91dGJvdW5kUHJveHkpOwpkaWZmIC0tZ2l0IGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaVN0YXRlVHJhY2tlci5qYXZhIGIvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaVN0YXRlVHJhY2tlci5qYXZhCmluZGV4IDA2ZjY2OTYuLjgwMjhmZTcgMTAwNjQ0Ci0tLSBhL3dpZmkvamF2YS9hbmRyb2lkL25ldC93aWZpL1dpZmlTdGF0ZVRyYWNrZXIuamF2YQorKysgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpU3RhdGVUcmFja2VyLmphdmEKQEAgLTg0MCw5ICs4NDAsMTUgQEAKICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgewogICAgICAgICAgICAgY2FzZSBFVkVOVF9TVVBQTElDQU5UX0NPTk5FQ1RJT046CiAgICAgICAgICAgICAgICAgbVJ1blN0YXRlID0gUlVOX1NUQVRFX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1hY2FkZHI7CiAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJhdHRlcnlXb3JrU291cmNlTG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICBtYWNhZGRyID0gV2lmaU5hdGl2ZS5nZXRNYWNBZGRyZXNzQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWFjYWRkciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1XaWZpSW5mby5zZXRNYWNBZGRyZXNzKG1hY2FkZHIpOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNoZWNrVXNlU3RhdGljSXAoKTsKICAgICAgICAgICAgICAgICAvKiBSZXNldCBub3RpZmljYXRpb24gc3RhdGUgb24gbmV3IGNvbm5lY3Rpb24gKi8KICAgICAgICAgICAgICAgICByZXNldE5vdGlmaWNhdGlvblRpbWVyKCk7CkBAIC0xMjgxLDcgKzEyODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgc2V0TnVtQWxsb3dlZENoYW5uZWxzKCk7CiAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1hY2FkZHIgPSBXaWZpTmF0aXZlLmdldE1hY0FkZHJlc3NDb21tYW5kKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNhZGRyID0gV2lmaU5hdGl2ZS5nZXRNYWNBZGRyZXNzQ29tbWFuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hY2FkZHIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaWZpSW5mby5zZXRNYWNBZGRyZXNzKG1hY2FkZHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQo=