From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Velikov Subject: [PATCH libdrm v2 5/8] tests/random: extract test out of xf86drmRandom.c Date: Thu, 26 Mar 2015 23:57:08 +0000 Message-ID: <1427414231-11385-5-git-send-email-emil.l.velikov@gmail.com> References: <1427414231-11385-1-git-send-email-emil.l.velikov@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by gabe.freedesktop.org (Postfix) with ESMTP id ED79D6EAD0 for ; Thu, 26 Mar 2015 16:54:04 -0700 (PDT) Received: by wibg7 with SMTP id g7so7839486wib.1 for ; Thu, 26 Mar 2015 16:54:04 -0700 (PDT) In-Reply-To: <1427414231-11385-1-git-send-email-emil.l.velikov@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: emil.l.velikov@gmail.com List-Id: dri-devel@lists.freedesktop.org V2l0aCBmb2xsb3cgdXAgY29tbWl0cyB3ZSBjYW4gY2xlYXIgaXQgdXAgYW5kIHdpcmUgdG8KbWFr ZSBjaGVjawoKdjI6CiAtIFVzZSB4Zjg2ZHJtUmFuZG9tLmggZm9yIGNvbW1vbiBzdHJ1Y3QuKEph bikKIC0gQWRkIHRlc3QgdG8gLmdpdGlnbm9yZS4KClNpZ25lZC1vZmYtYnk6IEVtaWwgVmVsaWtv diA8ZW1pbC5sLnZlbGlrb3ZAZ21haWwuY29tPgotLS0KIC5naXRpZ25vcmUgICAgICAgIHwgICAx ICsKIE1ha2VmaWxlLnNvdXJjZXMgIHwgICAxICsKIHRlc3RzL01ha2VmaWxlLmFtIHwgICAzICst CiB0ZXN0cy9yYW5kb20uYyAgICB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIHhmODZkcm1SYW5kb20uYyAgIHwgIDc4ICsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGY4NmRybVJhbmRvbS5oICAgfCAgMzUgKysr KysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgNzUgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcmFuZG9tLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4Zjg2ZHJtUmFuZG9tLmgKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGln bm9yZQppbmRleCAwZmFhODI1Li5jYzMxZjhmIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBi Ly5naXRpZ25vcmUKQEAgLTgxLDYgKzgxLDcgQEAgdGVzdHMvZ2V0dmVyc2lvbgogdGVzdHMvaGFz aAogdGVzdHMvbG9jawogdGVzdHMvb3BlbmNsb3NlCit0ZXN0cy9yYW5kb20KIHRlc3RzL3NldHZl cnNpb24KIHRlc3RzL3VwZGF0ZWRyYXcKIHRlc3RzL21vZGVwcmludC9tb2RlcHJpbnQKZGlmZiAt LWdpdCBhL01ha2VmaWxlLnNvdXJjZXMgYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGZmNGZlNWUu LmYyMTU3NDcgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvTWFrZWZpbGUuc291 cmNlcwpAQCAtMyw2ICszLDcgQEAgTElCRFJNX0ZJTEVTIDo9IFwKIAl4Zjg2ZHJtSGFzaC5jIFwK IAl4Zjg2ZHJtSGFzaC5oIFwKIAl4Zjg2ZHJtUmFuZG9tLmMgXAorCXhmODZkcm1SYW5kb20uaCBc CiAJeGY4NmRybVNMLmMgXAogCXhmODZkcm1Nb2RlLmMgXAogCXhmODZhdG9taWMuaCBcCmRpZmYg LS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IDc5YTEz YzQuLmUzNDQzZGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL01h a2VmaWxlLmFtCkBAIC0yOSw3ICsyOSw4IEBAIExEQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYmRy bS5sYQogCiBjaGVja19QUk9HUkFNUyA9IFwKIAlkcmlzdGF0IFwKLQlkcm1zdGF0CisJZHJtc3Rh dCBcCisJcmFuZG9tCiAKIGlmIEhBVkVfTk9VVkVBVQogU1VCRElSUyArPSBub3V2ZWF1CmRpZmYg LS1naXQgYS90ZXN0cy9yYW5kb20uYyBiL3Rlc3RzL3JhbmRvbS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmRiMzQxZjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yYW5k b20uYwpAQCAtMCwwICsxLDExOCBAQAorLyogeGY4NmRybVJhbmRvbS5jIC0tICJNaW5pbWFsIFN0 YW5kYXJkIiBQUk5HIEltcGxlbWVudGF0aW9uCisgKiBDcmVhdGVkOiBNb24gQXByIDE5IDA4OjI4 OjEzIDE5OTkgYnkgZmFpdGhAcHJlY2lzaW9uaW5zaWdodC5jb20KKyAqCisgKiBDb3B5cmlnaHQg MTk5OSBQcmVjaXNpb24gSW5zaWdodCwgSW5jLiwgQ2VkYXIgUGFyaywgVGV4YXMuCisgKiBBbGwg UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKiAKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFBSRUNJU0lPTiBJTlNJR0hU IEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S CisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgorICogCisgKiBBdXRob3JzOiBSaWNrYXJkIEUuIChSaWspIEZhaXRoIDxm YWl0aEB2YWxpbnV4LmNvbT4KKyAqCisgKiBERVNDUklQVElPTgorICoKKyAqIFRoaXMgZmlsZSBj b250YWlucyBhIHNpbXBsZSwgc3RyYWlnaHRmb3J3YXJkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQ YXJrCisgKiAmIE1pbGxlciAiTWluaW1hbCBTdGFuZGFyZCIgUFJORyBbUE04OCwgUE1TOTNdLCB3 aGljaCBpcyBhIExlaG1lcgorICogbXVsdGlwbGljYXRpdmUgbGluZWFyIGNvbmdydWVudGlhbCBn ZW5lcmF0b3IgKE1MQ0cpIHdpdGggYSBwZXJpb2Qgb2YKKyAqIDJeMzEtMS4KKyAqCisgKiBUaGlz IGltcGxlbWVudGF0aW9uIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSByZWxpYWJsZSwgcG9ydGFi bGUgUFJORworICogdGhhdCBpcyBzdWl0YWJsZSBmb3IgdGVzdGluZyBhIGhhc2ggdGFibGUgaW1w bGVtZW50YXRpb24gYW5kIGZvcgorICogaW1wbGVtZW50aW5nIHNraXAgbGlzdHMuCisgKgorICog RlVUVVJFIEVOSEFOQ0VNRU5UUworICoKKyAqIElmIGluaXRpYWwgc2VlZHMgYXJlIG5vdCBzZWxl Y3RlZCByYW5kb21seSwgdHdvIGluc3RhbmNlcyBvZiB0aGUgUFJORworICogY2FuIGJlIGNvcnJl bGF0ZWQuICBbS251dGg4MSwgcHAuIDMyLTMzXSBkZXNjcmliZXMgYSBzaHVmZmxpbmcgdGVjaG5p cXVlCisgKiB0aGF0IGNhbiBlbGltaW5hdGUgdGhpcyBwcm9ibGVtLgorICoKKyAqIElmIFBSTkdz IGFyZSB1c2VkIGZvciBzaW11bGF0aW9uLCB0aGUgcGVyaW9kIG9mIHRoZSBjdXJyZW50CisgKiBp bXBsZW1lbnRhdGlvbiBtYXkgYmUgdG9vIHNob3J0LiAgW0xFODhdIGRpc2N1c3NlcyBtZXRob2Rz IG9mIGNvbWJpbmluZworICogTUxDR3MgdG8gcHJvZHVjZSBtdWNoIGxvbmdlciBwZXJpb2RzLCBh bmQgc3VnZ2VzdHMgc29tZSBhbHRlcm5hdGl2ZQorICogdmFsdWVzIGZvciBBIGFuZCBNLiAgW0xF OTAgYW5kIFNjaDkyXSBhbHNvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24KKyAqIGxvbmctcGVyaW9k IFBSTkdzLgorICoKKyAqIFJFRkVSRU5DRVMKKyAqCisgKiBbS251dGg4MV0gRG9uYWxkIEUuIEtu dXRoLiBUaGUgQXJ0IG9mIENvbXB1dGVyIFByb2dyYW1taW5nLiAgVm9sdW1lIDI6CisgKiBTZW1p bnVtZXJpY2FsIEFsZ29yaXRobXMuICBSZWFkaW5nLCBNYXNzYWNodXNldHRzOiBBZGRpc29uLVdl c2xleSwgMTk4MS4KKyAqCisgKiBbTEU4OF0gUGllcnJlIEwnRWN1eWVyLiAiRWZmaWNpZW50IGFu ZCBQb3J0YWJsZSBDb21iaW5lZCBSYW5kb20gTnVtYmVyCisgKiBHZW5lcmF0b3JzIi4gIENBQ00g MzEoNiksIEp1bmUgMTk4OCwgcHAuIDc0Mi03NzQuCisgKgorICogW0xFOTBdIFBpZXJyZSBMJ0Vj dXllci4gIlJhbmRvbSBOdW1iZXJzIGZvciBTaW11bGF0aW9uIi4gQ0FDTSAzMygxMCwKKyAqIE9j dG9iZXIgMTk5MCwgcHAuIDg1LTk3LgorICoKKyAqIFtQTTg4XSBTdGVwaGVuIEsuIFBhcmsgYW5k IEtlaXRoIFcuIE1pbGxlci4gIlJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yczoKKyAqIEdvb2QgT25l cyBhcmUgSGFyZCB0byBGaW5kIi4gQ0FDTSAzMSgxMCksIE9jdG9iZXIgMTk4OCwgcHAuIDExOTIt MTIwMS4KKyAqCisgKiBbU2NoOTJdIEJydWNlIFNjaG5laWVyLiAiUHNldWRvLVJhbnNvbSBTZXF1 ZW5jZSBHZW5lcmF0b3IgZm9yIDMyLUJpdAorICogQ1BVcyIuICBEci4gRG9iYidzIEpvdXJuYWwg MTcoMiksIEZlYnJ1YXJ5IDE5OTIsIHBwLiAzNCwgMzctMzgsIDQwLgorICoKKyAqIFtQTVM5M10g U3RlcGhlbiBLLiBQYXJrLCBLZWl0aCBXLiBNaWxsZXIsIGFuZCBQYXVsIEsuIFN0b2NrbWV5ZXIu ICBJbgorICogIlRlY2huaWNhbCBDb3JyZXNwb25kZW5jZTogUmVtYXJrcyBvbiBDaG9vc2luZyBh bmQgSW1wbGVtZW50aW5nIFJhbmRvbQorICogTnVtYmVyIEdlbmVyYXRvcnMiLiBDQUNNIDM2KDcp LCBKdWx5IDE5OTMsIHBwLiAxMDUtMTEwLgorICoKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgInhmODZkcm0uaCIKKyNpbmNsdWRlICJ4 Zjg2ZHJtUmFuZG9tLmgiCisKK3N0YXRpYyB2b2lkIGNoZWNrX3BlcmlvZCh1bnNpZ25lZCBsb25n IHNlZWQpCit7CisgICAgdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisgICAgdW5zaWduZWQgbG9u ZyBpbml0aWFsOworICAgIHZvaWQgICAgICAgICAgKnN0YXRlOworICAgIAorICAgIHN0YXRlID0g ZHJtUmFuZG9tQ3JlYXRlKHNlZWQpOworICAgIGluaXRpYWwgPSBkcm1SYW5kb20oc3RhdGUpOwor ICAgICsrY291bnQ7CisgICAgd2hpbGUgKGluaXRpYWwgIT0gZHJtUmFuZG9tKHN0YXRlKSkgewor CWlmICghKytjb3VudCkgYnJlYWs7CisgICAgfQorICAgIHByaW50ZigiV2l0aCBzZWVkIG9mICUx MGx1LCBwZXJpb2QgPSAlMTBsdSAoMHglMDhseClcbiIsCisJICAgc2VlZCwgY291bnQsIGNvdW50 KTsKKyAgICBkcm1SYW5kb21EZXN0cm95KHN0YXRlKTsKK30KKworaW50IG1haW4odm9pZCkKK3sK KyAgICBSYW5kb21TdGF0ZSAgICpzdGF0ZTsKKyAgICBpbnQgICAgICAgICAgIGk7CisgICAgdW5z aWduZWQgbG9uZyByYW5kOworCisgICAgc3RhdGUgPSBkcm1SYW5kb21DcmVhdGUoMSk7CisgICAg Zm9yIChpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKwlyYW5kID0gZHJtUmFuZG9tKHN0YXRlKTsK KyAgICB9CisgICAgcHJpbnRmKCJBZnRlciAxMDAwMCBpdGVyYXRpb25zOiAlbHUgKCVsdSBleHBl Y3RlZCk6ICVzXG4iLAorCSAgIHJhbmQsIHN0YXRlLT5jaGVjaywKKwkgICByYW5kIC0gc3RhdGUt PmNoZWNrID8gIipJTkNPUlJFQ1QqIiA6ICJDT1JSRUNUIik7CisgICAgZHJtUmFuZG9tRGVzdHJv eShzdGF0ZSk7CisKKyAgICBwcmludGYoIkNoZWNraW5nIHBlcmlvZHMuLi5cbiIpOworICAgIGNo ZWNrX3BlcmlvZCgxKTsKKyAgICBjaGVja19wZXJpb2QoMik7CisgICAgY2hlY2tfcGVyaW9kKDMx NDE1OTI2KTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3hmODZkcm1SYW5k b20uYyBiL3hmODZkcm1SYW5kb20uYwppbmRleCA5NDkyMmFkLi5iM2E0YmU5IDEwMDY0NAotLS0g YS94Zjg2ZHJtUmFuZG9tLmMKKysrIGIveGY4NmRybVJhbmRvbS5jCkBAIC03NCw0NSArNzQsMTcg QEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0jZGVmaW5lIFJB TkRPTV9NQUlOIDAKLQotI2lmICFSQU5ET01fTUFJTgotIyBpbmNsdWRlICJ4Zjg2ZHJtLmgiCi0j ZW5kaWYKKyNpbmNsdWRlICJ4Zjg2ZHJtLmgiCisjaW5jbHVkZSAieGY4NmRybVJhbmRvbS5oIgog CiAjZGVmaW5lIFJBTkRPTV9NQUdJQyAweGZlZWRiZWVmCiAjZGVmaW5lIFJBTkRPTV9ERUJVRyAw CiAKLSNpZiBSQU5ET01fTUFJTgotI2RlZmluZSBSQU5ET01fQUxMT0MgbWFsbG9jCi0jZGVmaW5l IFJBTkRPTV9GUkVFICBmcmVlCi0jZWxzZQotI2RlZmluZSBSQU5ET01fQUxMT0MgZHJtTWFsbG9j Ci0jZGVmaW5lIFJBTkRPTV9GUkVFICBkcm1GcmVlCi0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3Qg UmFuZG9tU3RhdGUgewotICAgIHVuc2lnbmVkIGxvbmcgbWFnaWM7Ci0gICAgdW5zaWduZWQgbG9u ZyBhOwotICAgIHVuc2lnbmVkIGxvbmcgbTsKLSAgICB1bnNpZ25lZCBsb25nIHE7CQkvKiBtIGRp diBhICovCi0gICAgdW5zaWduZWQgbG9uZyByOwkJLyogbSBtb2QgYSAqLwotICAgIHVuc2lnbmVk IGxvbmcgY2hlY2s7Ci0gICAgdW5zaWduZWQgbG9uZyBzZWVkOwotfSBSYW5kb21TdGF0ZTsKLQot I2lmIFJBTkRPTV9NQUlOCi1leHRlcm4gdm9pZCAgICAgICAgICAqZHJtUmFuZG9tQ3JlYXRlKHVu c2lnbmVkIGxvbmcgc2VlZCk7Ci1leHRlcm4gaW50ICAgICAgICAgICBkcm1SYW5kb21EZXN0cm95 KHZvaWQgKnN0YXRlKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIGRybVJhbmRvbSh2b2lkICpzdGF0 ZSk7Ci1leHRlcm4gZG91YmxlICAgICAgICBkcm1SYW5kb21Eb3VibGUodm9pZCAqc3RhdGUpOwot I2VuZGlmCi0KIHZvaWQgKmRybVJhbmRvbUNyZWF0ZSh1bnNpZ25lZCBsb25nIHNlZWQpCiB7CiAg ICAgUmFuZG9tU3RhdGUgICpzdGF0ZTsKIAotICAgIHN0YXRlICAgICAgICAgICA9IFJBTkRPTV9B TExPQyhzaXplb2YoKnN0YXRlKSk7CisgICAgc3RhdGUgICAgICAgICAgID0gZHJtTWFsbG9jKHNp emVvZigqc3RhdGUpKTsKICAgICBpZiAoIXN0YXRlKSByZXR1cm4gTlVMTDsKICAgICBzdGF0ZS0+ bWFnaWMgICAgPSBSQU5ET01fTUFHSUM7CiAjaWYgMApAQCAtMTQwLDcgKzExMiw3IEBAIHZvaWQg KmRybVJhbmRvbUNyZWF0ZSh1bnNpZ25lZCBsb25nIHNlZWQpCiAKIGludCBkcm1SYW5kb21EZXN0 cm95KHZvaWQgKnN0YXRlKQogewotICAgIFJBTkRPTV9GUkVFKHN0YXRlKTsKKyAgICBkcm1GcmVl KHN0YXRlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTY0LDQ1ICsxMzYsMyBAQCBkb3VibGUg ZHJtUmFuZG9tRG91YmxlKHZvaWQgKnN0YXRlKQogICAgIAogICAgIHJldHVybiAoZG91YmxlKWRy bVJhbmRvbShzdGF0ZSkvKGRvdWJsZSlzLT5tOwogfQotCi0jaWYgUkFORE9NX01BSU4KLXN0YXRp YyB2b2lkIGNoZWNrX3BlcmlvZCh1bnNpZ25lZCBsb25nIHNlZWQpCi17Ci0gICAgdW5zaWduZWQg bG9uZyBjb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyBpbml0aWFsOwotICAgIHZvaWQgICAg ICAgICAgKnN0YXRlOwotICAgIAotICAgIHN0YXRlID0gZHJtUmFuZG9tQ3JlYXRlKHNlZWQpOwot ICAgIGluaXRpYWwgPSBkcm1SYW5kb20oc3RhdGUpOwotICAgICsrY291bnQ7Ci0gICAgd2hpbGUg KGluaXRpYWwgIT0gZHJtUmFuZG9tKHN0YXRlKSkgewotCWlmICghKytjb3VudCkgYnJlYWs7Ci0g ICAgfQotICAgIHByaW50ZigiV2l0aCBzZWVkIG9mICUxMGx1LCBwZXJpb2QgPSAlMTBsdSAoMHgl MDhseClcbiIsCi0JICAgc2VlZCwgY291bnQsIGNvdW50KTsKLSAgICBkcm1SYW5kb21EZXN0cm95 KHN0YXRlKTsKLX0KLQotaW50IG1haW4odm9pZCkKLXsKLSAgICBSYW5kb21TdGF0ZSAgICpzdGF0 ZTsKLSAgICBpbnQgICAgICAgICAgIGk7Ci0gICAgdW5zaWduZWQgbG9uZyByYW5kOwotCi0gICAg c3RhdGUgPSBkcm1SYW5kb21DcmVhdGUoMSk7Ci0gICAgZm9yIChpID0gMDsgaSA8IDEwMDAwOyBp KyspIHsKLQlyYW5kID0gZHJtUmFuZG9tKHN0YXRlKTsKLSAgICB9Ci0gICAgcHJpbnRmKCJBZnRl ciAxMDAwMCBpdGVyYXRpb25zOiAlbHUgKCVsdSBleHBlY3RlZCk6ICVzXG4iLAotCSAgIHJhbmQs IHN0YXRlLT5jaGVjaywKLQkgICByYW5kIC0gc3RhdGUtPmNoZWNrID8gIipJTkNPUlJFQ1QqIiA6 ICJDT1JSRUNUIik7Ci0gICAgZHJtUmFuZG9tRGVzdHJveShzdGF0ZSk7Ci0KLSAgICBwcmludGYo IkNoZWNraW5nIHBlcmlvZHMuLi5cbiIpOwotICAgIGNoZWNrX3BlcmlvZCgxKTsKLSAgICBjaGVj a19wZXJpb2QoMik7Ci0gICAgY2hlY2tfcGVyaW9kKDMxNDE1OTI2KTsKLSAgICAKLSAgICByZXR1 cm4gMDsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEveGY4NmRybVJhbmRvbS5oIGIveGY4NmRybVJh bmRvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjczMGMKLS0tIC9k ZXYvbnVsbAorKysgYi94Zjg2ZHJtUmFuZG9tLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv cHlyaWdodCAxOTk5IFByZWNpc2lvbiBJbnNpZ2h0LCBJbmMuLCBDZWRhciBQYXJrLCBUZXhhcy4K KyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFBSRUNJU0lPTiBJ TlNJR0hUIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IFJpY2thcmQgRS4gKFJpaykgRmFp dGggPGZhaXRoQHZhbGludXguY29tPgorICovCisKK3R5cGVkZWYgc3RydWN0IFJhbmRvbVN0YXRl IHsKKyAgICB1bnNpZ25lZCBsb25nIG1hZ2ljOworICAgIHVuc2lnbmVkIGxvbmcgYTsKKyAgICB1 bnNpZ25lZCBsb25nIG07CisgICAgdW5zaWduZWQgbG9uZyBxOwkJLyogbSBkaXYgYSAqLworICAg IHVuc2lnbmVkIGxvbmcgcjsJCS8qIG0gbW9kIGEgKi8KKyAgICB1bnNpZ25lZCBsb25nIGNoZWNr OworICAgIHVuc2lnbmVkIGxvbmcgc2VlZDsKK30gUmFuZG9tU3RhdGU7Ci0tIAoyLjMuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK