From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mimi Zohar Subject: Re: [Linux-ima-devel] [PATCH v2 3/5] tpm: pass multiple digests to tpm_pcr_extend() Date: Mon, 29 May 2017 23:29:03 -0400 Message-ID: <1496114943.3841.480.camel@linux.vnet.ibm.com> References: <20170505142152.29795-1-roberto.sassu@huawei.com> <20170505142152.29795-4-roberto.sassu@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170505142152.29795-4-roberto.sassu-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tpmdd-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: Roberto Sassu , tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Cc: linux-ima-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, keyrings-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: tpmdd-devel@lists.sourceforge.net T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE2OjIxICswMjAwLCBSb2JlcnRvIFNhc3N1IHdyb3RlOgo+ IFRoZSB0cG1fcGNyX2V4dGVuZCgpIGRlZmluaXRpb24gaGFzIGJlZW4gbW9kaWZpZWQgdG8gdGFr ZSBhbiBhcnJheSBvZgo+IHRwbTJfZGlnZXN0IHN0cnVjdHVyZXMsIGFuZCB0aGUgc2l6ZSBvZiB0 aGUgYXJyYXkgYXMgYXJndW1lbnRzLgo+IAo+IFRoZSBmdW5jdGlvbiBub3cgY2hlY2tzIGlmIGNh bGxlcnMgcHJvdmlkZWQgYSBkaWdlc3RzIGZvciBlYWNoIGFjdGl2ZQo+IFBDUiBiYW5rIChvciBh IFNIQTEgZGlnZXN0IGZvciBUUE0gMS4yKSwgdG8gZm9sbG93IHRoZSByZWNvbWVuZGF0aW9uIGZy b20KPiB0aGUgVENHIHNwZWNpZmljYXRpb25zLiBTZWUgY29tbWl0IGMxZjkyYjRiMDRhZCAoInRw bTogZW5oYW5jZSBUUE0gMi4wCj4gUENSIGV4dGVuZCB0byBzdXBwb3J0IG11bHRpcGxlIGJhbmtz IikuIEFsbCBiYW5rcyBzaG91bGQgYmUgZXh0ZW5kZWQKPiBiZWNhdXNlIHVudXNlZCBiYW5rcyBj b3VsZCBiZSB1c2VkIGJ5IGFuIGF0dGFja2VyIHRvIGhpZGUgdGhlIHRydWUKPiBpbnRlZ3JpdHkg c3RhdHVzIG9mIHRoZSBwbGF0Zm9ybS4KPiAKPiBUaGUgb25seSBhbGxvd2VkIGV4Y2VwdGlvbiB0 byB0aGUgcnVsZSBhYm92ZSBpcyB0byBwYXNzIGEgU0hBMSBkaWdlc3QuCj4gSXQgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggYXBwbGljYXRpb25zIHRo YXQKPiBleHBlY3QgdG8gaW50ZXJhY3Qgd2l0aCBhIFRQTSAxLjIsIGFuZCBwcm92aWRlIG9ubHkg YSBTSEExIGRpZ2VzdC4KPiBJbiB0aGlzIGNhc2UsIHRoZSBiZWhhdmlvciBvZiB0cG1fcGNyX2V4 dGVuZCgpIGlzIHVuY2hhbmdlZCBhbmQKPiByZW1haW5pbmcgUENSIGJhbmtzIGFyZSBleHRlbmRl ZCB3aXRoIHRoYXQgZGlnZXN0LCBwYWRkZWQgd2l0aCB6ZXJvcy4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBSb2JlcnRvIFNhc3N1IDxyb2JlcnRvLnNhc3N1QGh1YXdlaS5jb20+Cj4gLS0tCj4gdjIKPiAK PiAtIHRwbV9wY3JfZXh0ZW5kKCkgYXJndW1lbnRzIGNoZWNrZWQgYnkgdHBtX3Bjcl9jaGVja19p bnB1dCgpCj4gLSBtb2RpZmllZCBwYXJhbWV0ZXJzIG9mIHRwbV9wY3JfZXh0ZW5kKCkKPiAKPiAg ZHJpdmVycy9jaGFyL3RwbS90cG0taW50ZXJmYWNlLmMgfCA3NiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tCj4gIGRyaXZlcnMvY2hhci90cG0vdHBtLmggICAgICAgICAg IHwgIDYgLS0tLQo+ICBpbmNsdWRlL2xpbnV4L3RwbS5oICAgICAgICAgICAgICB8IDExICsrKyst LQo+ICAzIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvdHBtL3RwbS1pbnRlcmZhY2UuYyBiL2RyaXZl cnMvY2hhci90cG0vdHBtLWludGVyZmFjZS5jCj4gaW5kZXggYWFjNzAzZS4uNGIwOGIwMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvdHBtL3RwbS1pbnRlcmZhY2UuYwo+ICsrKyBiL2RyaXZl cnMvY2hhci90cG0vdHBtLWludGVyZmFjZS5jCj4gQEAgLTg2Nyw2ICs4NjcsNTUgQEAgc3RhdGlj IGludCB0cG0xX3Bjcl9leHRlbmQoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBpbnQgcGNyX2lkeCwg Y29uc3QgdTggKmhhc2gsCj4gIH0KPiAKPiAgLyoqCj4gKyAqIHRwbV9wY3JfY2hlY2tfaW5wdXQg LSBjaGVjayBkaWdlc3RzIGFyZ3VtZW50Cj4gKyAqCj4gKyAqIFJldHVybiB2YWx1ZXM6Cj4gKyAq ICAgICAgIDE6IGlucHV0IGNvcnJlY3QKPiArICogICAgICAgMDogZmlsbCBkaWdlc3RzIHdpdGgg U0hBMSBkaWdlc3QgcGFkZGVkIHdpdGggemVyb3MKPiArICogLUVJTlZBTDogaW5wdXQgaW5jb3Jy ZWN0Cj4gKyAqLwo+ICtzdGF0aWMgaW50IHRwbV9wY3JfY2hlY2tfaW5wdXQoc3RydWN0IHRwbV9j aGlwICpjaGlwLCBpbnQgY291bnQsCj4gKwkJCSAgICAgICBzdHJ1Y3QgdHBtMl9kaWdlc3QgKmRp Z2VzdHMpCj4gK3sKPiArCWJvb2wgc2hhMV9vbmx5Owo+ICsJaW50IGZvdW5kID0gMCwgbm90X2Zv dW5kID0gMDsKPiArCWludCBpLCBqOwo+ICsKPiArCWlmIChjb3VudCA8PSAwIHx8IGRpZ2VzdHMg PT0gTlVMTCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlzaGExX29ubHkgPSAoY291bnQg PT0gMSAmJiBkaWdlc3RzWzBdLmFsZ19pZCA9PSBUUE0yX0FMR19TSEExKTsKPiArCj4gKwlpZiAo IShjaGlwLT5mbGFncyAmIFRQTV9DSElQX0ZMQUdfVFBNMikpCj4gKwkJcmV0dXJuIHNoYTFfb25s eSA/IDEgOiAtRUlOVkFMOwo+ICsKPiArCWlmIChzaGExX29ubHkpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2hpcC0+YWN0aXZlX2JhbmtzKSAmJgo+ ICsJICAgICBjaGlwLT5hY3RpdmVfYmFua3NbaV0gIT0gVFBNMl9BTEdfRVJST1I7IGkrKykgewo+ ICsJCWZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7Cj4gKwkJCWlmIChkaWdlc3RzW2pdLmFs Z19pZCA9PSBjaGlwLT5hY3RpdmVfYmFua3NbaV0pIHsKPiArCQkJCWZvdW5kKys7Cj4gKwkJCQli cmVhazsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJaWYgKGogPT0gY291bnQpIHsKPiArCQkJZGV2 X2RiZygmY2hpcC0+ZGV2LCAiJXM6IG1pc3NpbmcgYWxnb3JpdGhtIDB4JVhcbiIsCj4gKwkJCQlf X2Z1bmNfXywgY2hpcC0+YWN0aXZlX2JhbmtzW2ldKTsKPiArCQkJbm90X2ZvdW5kKys7Cj4gKwkJ fQo+ICsJfQo+ICsKPiArCWlmIChub3RfZm91bmQgPT0gMCAmJiBmb3VuZCAhPSBjb3VudCkKPiAr CQlkZXZfZGJnKCZjaGlwLT5kZXYsCj4gKwkJCSIlczogZHVwbGljYXRlIG9yIHVuc3VwcG9ydGVk IGFsZ29yaXRobVxuIiwgX19mdW5jX18pOwo+ICsKPiArCXJldHVybiAobm90X2ZvdW5kID09IDAg JiYgZm91bmQgPT0gY291bnQpID8gMSA6IC1FSU5WQUw7Cj4gK30KPiArCj4gKy8qKgo+ICAgKiB0 cG1fcGNyX2V4dGVuZCAtIGV4dGVuZCBwY3IgdmFsdWUgd2l0aCBoYXNoCj4gICAqIEBjaGlwX251 bToJdHBtIGlkeCAjIG9yIEFOJgo+ICAgKiBAcGNyX2lkeDoJcGNyIGlkeCB0byBleHRlbmQKPiBA QCAtODc2LDI5ICs5MjUsNDYgQEAgc3RhdGljIGludCB0cG0xX3Bjcl9leHRlbmQoc3RydWN0IHRw bV9jaGlwICpjaGlwLCBpbnQgcGNyX2lkeCwgY29uc3QgdTggKmhhc2gsCj4gICAqIGlzbid0LCBw cm90ZWN0IGFnYWluc3QgdGhlIGNoaXAgZGlzYXBwZWFyaW5nLCBieSBpbmNyZW1lbnRpbmcKPiAg ICogdGhlIG1vZHVsZSB1c2FnZSBjb3VudC4KPiAgICovCj4gLWludCB0cG1fcGNyX2V4dGVuZCh1 MzIgY2hpcF9udW0sIGludCBwY3JfaWR4LCBjb25zdCB1OCAqaGFzaCkKPiAraW50IHRwbV9wY3Jf ZXh0ZW5kKHUzMiBjaGlwX251bSwgaW50IHBjcl9pZHgsIGludCBjb3VudCwKPiArCQkgICBzdHJ1 Y3QgdHBtMl9kaWdlc3QgKmRpZ2VzdHMpCj4gIHsKPiAgCWludCByYzsKPiAgCXN0cnVjdCB0cG1f Y2hpcCAqY2hpcDsKPiAgCXN0cnVjdCB0cG0yX2RpZ2VzdCBkaWdlc3RfbGlzdFtBUlJBWV9TSVpF KGNoaXAtPmFjdGl2ZV9iYW5rcyldOwo+IC0JdTMyIGNvdW50ID0gMDsKPiArCXN0cnVjdCB0cG0y X2RpZ2VzdCAqZGlnZXN0c19wdHIgPSBkaWdlc3RzOwo+ICsJdTMyIGZpbGxlZF9jb3VudCA9IDA7 Cj4gKwl1OCAqaGFzaDsKPiAgCWludCBpOwo+IAo+ICAJY2hpcCA9IHRwbV9jaGlwX2ZpbmRfZ2V0 KGNoaXBfbnVtKTsKPiAgCWlmIChjaGlwID09IE5VTEwpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4g Cj4gLQlpZiAoY2hpcC0+ZmxhZ3MgJiBUUE1fQ0hJUF9GTEFHX1RQTTIpIHsKPiArCXJjID0gdHBt X3Bjcl9jaGVja19pbnB1dChjaGlwLCBjb3VudCwgZGlnZXN0cyk7Cj4gKwlpZiAocmMgPCAwKSB7 Cj4gKwkJZGV2X2RiZygmY2hpcC0+ZGV2LCAiJXM6IGludmFsaWQgYXJndW1lbnRzXG4iLCBfX2Z1 bmNfXyk7Cj4gKwkJdHBtX3B1dF9vcHMoY2hpcCk7CgpUaGlzIHJlamVjdHMgdGhlIFRQTSBleHRl bmQsIGlmIEFOWSBvZiB0aGUgYWxnb3JpdGhtcyBhcmUgdW5rbm93bi4KU3VwcG9zZSB0aGF0IHRo ZSBzdGFuZGFyZHMgd2VyZSB1cGRhdGVkLCBUUE0gdmVuZG9ycyBhZGQgc3VwcG9ydCBmb3IKdGhl IG5ldyBhbGdvcml0aG0sIGJ1dCB0aGUga2VybmVsIGhhcyBub3QgYmVlbiB1cGRhdGVkIHRvIHJl ZmxlY3QgdGhlCm5ldyBhbGdvcml0aG1zIHN1cHBvcnRlZC4gwqBBcyB0aGUgbWVhc3VyZW1lbnQg aGFzaCBhbHJlYWR5IGJlZW4gYWRkZWQKdG8gdGhlIElNQSBtZWFzdXJlbWVudCBsaXN0LCB2ZXJp ZnlpbmcgdGhlIG1lYXN1cmVtZW50IGxpc3QgYWdhaW5zdCBhClRQTSBxdW90ZSB3aWxsIGZhaWws IG5vdCBqdXN0IGZvciB0aGUgdW5rbm93biBhbGdvcml0aG0sIGJ1dCBmb3IgYWxsCmFsZ29yaXRo bXMuIMKgU29tZXRoaW5nIGlzIHZlcnkgYnJva2VuIHdpdGggdGhpcyBhcHByb2FjaC4KCk1pbWkK Cj4gKwkJcmV0dXJuIHJjOwo+ICsJfQo+ICsKPiArCWhhc2ggPSBkaWdlc3RzWzBdLmRpZ2VzdDsK PiArCj4gKwlpZiAoIXJjKSB7Cj4gIAkJbWVtc2V0KGRpZ2VzdF9saXN0LCAwLCBzaXplb2YoZGln ZXN0X2xpc3QpKTsKPiAKPiAgCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjaGlwLT5hY3Rp dmVfYmFua3MpICYmCj4gIAkJCSAgICBjaGlwLT5hY3RpdmVfYmFua3NbaV0gIT0gVFBNMl9BTEdf RVJST1I7IGkrKykgewo+ICAJCQlkaWdlc3RfbGlzdFtpXS5hbGdfaWQgPSBjaGlwLT5hY3RpdmVf YmFua3NbaV07Cj4gIAkJCW1lbWNweShkaWdlc3RfbGlzdFtpXS5kaWdlc3QsIGhhc2gsIFRQTV9E SUdFU1RfU0laRSk7Cj4gLQkJCWNvdW50Kys7Cj4gKwkJCWZpbGxlZF9jb3VudCsrOwo+ICAJCX0K PiAKPiAtCQlyYyA9IHRwbTJfcGNyX2V4dGVuZChjaGlwLCBwY3JfaWR4LCBjb3VudCwgZGlnZXN0 X2xpc3QpOwo+ICsJCWRpZ2VzdHNfcHRyID0gZGlnZXN0X2xpc3Q7Cj4gKwkJY291bnQgPSBmaWxs ZWRfY291bnQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKGNoaXAtPmZsYWdzICYgVFBNX0NISVBfRkxBR19U UE0yKSB7Cj4gKwkJcmMgPSB0cG0yX3Bjcl9leHRlbmQoY2hpcCwgcGNyX2lkeCwgY291bnQsIGRp Z2VzdHNfcHRyKTsKPiAgCQl0cG1fcHV0X29wcyhjaGlwKTsKPiAgCQlyZXR1cm4gcmM7Cj4gIAl9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci90cG0vdHBtLmggYi9kcml2ZXJzL2NoYXIvdHBt L3RwbS5oCj4gaW5kZXggYjIyYmMyNS4uNmQ3NzVjNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2No YXIvdHBtL3RwbS5oCj4gKysrIGIvZHJpdmVycy9jaGFyL3RwbS90cG0uaAo+IEBAIC0zNCw3ICsz NCw2IEBACj4gICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9jZGV2 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+Cj4gLSNpbmNsdWRlIDxjcnlwdG8vaGFz aF9pbmZvLmg+Cj4gCj4gIGVudW0gdHBtX2NvbnN0IHsKPiAgCVRQTV9NSU5PUiA9IDIyNCwJLyog b2ZmaWNpYWxseSBhc3NpZ25lZCAqLwo+IEBAIC00MDUsMTEgKzQwNCw2IEBAIHN0cnVjdCB0cG1f Y21kX3Qgewo+ICAJdHBtX2NtZF9wYXJhbXMJcGFyYW1zOwo+ICB9IF9fcGFja2VkOwo+IAo+IC1z dHJ1Y3QgdHBtMl9kaWdlc3Qgewo+IC0JdTE2IGFsZ19pZDsKPiAtCXU4IGRpZ2VzdFtTSEE1MTJf RElHRVNUX1NJWkVdOwo+IC19IF9fcGFja2VkOwo+IC0KPiAgLyogQSBzdHJpbmcgYnVmZmVyIHR5 cGUgZm9yIGNvbnN0cnVjdGluZyBUUE0gY29tbWFuZHMuIFRoaXMgaXMgYmFzZWQgb24gdGhlCj4g ICAqIGlkZWFzIG9mIHN0cmluZyBidWZmZXIgY29kZSBpbiBzZWN1cml0eS9rZXlzL3RydXN0ZWQu aCBidXQgaXMgaGVhcCBiYXNlZAo+ICAgKiBpbiBvcmRlciB0byBrZWVwIHRoZSBzdGFjayB1c2Fn ZSBtaW5pbWFsLgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RwbS5oIGIvaW5jbHVkZS9s aW51eC90cG0uaAo+IGluZGV4IDllY2QxMmMuLjVjNWE2MDAgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9saW51eC90cG0uaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvdHBtLmgKPiBAQCAtMzYsNiArMzYs MTEgQEAgc3RydWN0IHRwbV9jaGlwOwo+ICBzdHJ1Y3QgdHJ1c3RlZF9rZXlfcGF5bG9hZDsKPiAg c3RydWN0IHRydXN0ZWRfa2V5X29wdGlvbnM7Cj4gCj4gK3N0cnVjdCB0cG0yX2RpZ2VzdCB7Cj4g Kwl1MTYgYWxnX2lkOwo+ICsJdTggZGlnZXN0W1NIQTUxMl9ESUdFU1RfU0laRV07Cj4gK30gX19w YWNrZWQ7Cj4gKwo+ICBlbnVtIFRQTV9PUFNfRkxBR1Mgewo+ICAJVFBNX09QU19BVVRPX1NUQVJU VVAgPSBCSVQoMCksCj4gIH07Cj4gQEAgLTcwLDcgKzc1LDggQEAgc3RydWN0IHRwbV9jbGFzc19v cHMgewo+IAo+ICBleHRlcm4gaW50IHRwbV9pc190cG0yKHUzMiBjaGlwX251bSk7Cj4gIGV4dGVy biBpbnQgdHBtX3Bjcl9yZWFkKHUzMiBjaGlwX251bSwgaW50IHBjcl9pZHgsIHU4ICpyZXNfYnVm KTsKPiAtZXh0ZXJuIGludCB0cG1fcGNyX2V4dGVuZCh1MzIgY2hpcF9udW0sIGludCBwY3JfaWR4 LCBjb25zdCB1OCAqaGFzaCk7Cj4gK2V4dGVybiBpbnQgdHBtX3Bjcl9leHRlbmQodTMyIGNoaXBf bnVtLCBpbnQgcGNyX2lkeCwgaW50IGNvdW50LAo+ICsJCQkgIHN0cnVjdCB0cG0yX2RpZ2VzdCAq ZGlnZXN0cyk7Cj4gIGV4dGVybiBpbnQgdHBtX3Bjcl9hbGdvcml0aG1zKHUzMiBjaGlwX251bSwg aW50IGNvdW50LAo+ICAJCQkgICAgICBlbnVtIHRwbTJfYWxnb3JpdGhtcyAqYWxnb3JpdGhtcyk7 Cj4gIGV4dGVybiBlbnVtIGhhc2hfYWxnbyB0cG1fcGNyX2FsZ29fdG9fY3J5cHRvKGVudW0gdHBt Ml9hbGdvcml0aG1zIHRwbV9pZCk7Cj4gQEAgLTkxLDcgKzk3LDggQEAgc3RhdGljIGlubGluZSBp bnQgdHBtX2lzX3RwbTIodTMyIGNoaXBfbnVtKQo+ICBzdGF0aWMgaW5saW5lIGludCB0cG1fcGNy X3JlYWQodTMyIGNoaXBfbnVtLCBpbnQgcGNyX2lkeCwgdTggKnJlc19idWYpIHsKPiAgCXJldHVy biAtRU5PREVWOwo+ICB9Cj4gLXN0YXRpYyBpbmxpbmUgaW50IHRwbV9wY3JfZXh0ZW5kKHUzMiBj aGlwX251bSwgaW50IHBjcl9pZHgsIGNvbnN0IHU4ICpoYXNoKSB7Cj4gK3N0YXRpYyBpbmxpbmUg aW50IHRwbV9wY3JfZXh0ZW5kKHUzMiBjaGlwX251bSwgaW50IHBjcl9pZHgsIGludCBjb3VudCwK PiArCQkJCSBzdHJ1Y3QgdHBtMl9kaWdlc3QgKmRpZ2VzdHMpIHsKPiAgCXJldHVybiAtRU5PREVW Owo+ICB9Cj4gIHN0YXRpYyBpbmxpbmUgaW50IHRwbV9wY3JfYWxnb3JpdGhtcyh1MzIgY2hpcF9u dW0sIGludCBjb3VudCwKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQ2hlY2sgb3V0IHRoZSB2aWJy YW50IHRlY2ggY29tbXVuaXR5IG9uIG9uZSBvZiB0aGUgd29ybGQncyBtb3N0CmVuZ2FnaW5nIHRl Y2ggc2l0ZXMsIFNsYXNoZG90Lm9yZyEgaHR0cDovL3NkbS5saW5rL3NsYXNoZG90Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnRwbWRkLWRldmVsIG1haWxp bmcgbGlzdAp0cG1kZC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5z b3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vdHBtZGQtZGV2ZWwK