From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 6E5A249B72 for ; Sun, 3 Mar 2024 22:45:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DD0468D273; Mon, 4 Mar 2024 00:45:29 +0200 (EET) Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F44B68D139 for ; Mon, 4 Mar 2024 00:45:23 +0200 (EET) Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a444205f764so501996266b.2 for ; Sun, 03 Mar 2024 14:45:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709505922; x=1710110722; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=z2OReEhtZE+IvpxVcT+NhMAP6WWqOB5wTFXM+t5k/eI=; b=cIIQe+QVdCruRmKGnef79fObiUcLJ2Zmc7tjOQWPDhN/BMZ30OFFGHoZTmfRCNX/aa 5LIA3wDlQwMknVvZ0QkBlvOuoveKBwuTdeArkef/X6pPRj+UM7c7av/sMLZowJ7jLGf1 sHeNgKgiXOlEBSmNXTdFo7p0HBYBafbrQiGTxhIOnGMlvYowW8+btaTT0aRzBDXYq7xC 461dE568VHpd82dh3z4s0alfZB2x7fIj3IKHKAEPOwgaPd6pj5uC1ECy/jsmGdcnVA2R Kqo++liEc5C0hJ5JQZh+44anM+XeSmFVSWHzS6RduDf96jPx9Et7RQKGb0WVGGU+zSoJ +bPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709505922; x=1710110722; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=z2OReEhtZE+IvpxVcT+NhMAP6WWqOB5wTFXM+t5k/eI=; b=v/gOOp85/JKJZE38q+DOhxkRC6CT872uRIY2mr+uiY8pU9LVz/93pEup3lsCBzce9t 2HRp5I2d4QWJDfwsoYlvUjpgS8IvykaGoqdv1MHAcKc+0hkT8v3SmhxXtYgpfimJvs2/ 9kyDu1RVNVCB0P13JvqFIpvbUu1f+pjxJAELRKE3gnCVI3sByzpuxejBheCHIX2+LJeQ v+eu8WPNNv9fkNnRi2VZ7GdhaOeH/E++BvSfLHodJlHCfiW1kjgsEVdQbFBzctPOg9Sw hwx88sZ1JL9/4tVjlmOz+qumQIECZg6NDLKX0n3Iau25xCqT+yDFGX1M7Pb8rGcahbLx Uoug== X-Gm-Message-State: AOJu0YwkXd2WMwFihGCxTEl1rWsTc8vGH/r/pybXhuQHgrc4rSMwhzRt bfhlVsUUu3zdzHeXCEgc7+s4Lunj4CEDzrAUeEdNqOTQgEdtNnbHOiFCUkDHoHB+vZpUcSX3Bio 8lEmknreU1lw0D2CFStpD2+QbB6IV69uARaI= X-Google-Smtp-Source: AGHT+IFQEnlqvUF5HxGINWFtvfADelCi9FdtWYQRNkUvIMev5I7TfzwjHVa4m88N5v96RJuTfvFyvitPlYiNNAIlBdw= X-Received: by 2002:a17:906:4ac8:b0:a45:6449:360c with SMTP id u8-20020a1709064ac800b00a456449360cmr34948ejt.49.1709505922114; Sun, 03 Mar 2024 14:45:22 -0800 (PST) MIME-Version: 1.0 References: <20240224200603.6613-1-connorbworley@gmail.com> In-Reply-To: <20240224200603.6613-1-connorbworley@gmail.com> From: Connor Worley Date: Sun, 3 Mar 2024 14:44:55 -0800 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v4 1/2] lavu/hashtable: create generic robin hood hash table X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: QW55IG9iamVjdGlvbnMgdG8gdGhpcyBwYXRjaHNldD8KCk9uIFNhdCwgRmViIDI0LCAyMDI0IGF0 IDEyOjA24oCvUE0gQ29ubm9yIFdvcmxleSA8Y29ubm9yYndvcmxleUBnbWFpbC5jb20+Cndyb3Rl OgoKPiBTaWduZWQtb2ZmLWJ5OiBDb25ub3IgV29ybGV5IDxjb25ub3Jid29ybGV5QGdtYWlsLmNv bT4KPiAtLS0KPiAgbGliYXZ1dGlsL01ha2VmaWxlICAgICAgICAgIHwgICAyICsKPiAgbGliYXZ1 dGlsL2hhc2h0YWJsZS5jICAgICAgIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBsaWJhdnV0aWwvaGFzaHRhYmxlLmggICAgICAgfCAgNDAgKysrKysrKysKPiAg bGliYXZ1dGlsL3Rlc3RzL2hhc2h0YWJsZS5jIHwgMTEwICsrKysrKysrKysrKysrKysrKysrKwo+ ICA0IGZpbGVzIGNoYW5nZWQsIDM0NCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJhdnV0aWwvaGFzaHRhYmxlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9o YXNodGFibGUuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL3Rlc3RzL2hhc2h0YWJs ZS5jCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL01ha2VmaWxlIGIvbGliYXZ1dGlsL01ha2Vm aWxlCj4gaW5kZXggZTc3MDliOTdkMC4uYmU3NWQ0NjRmYyAxMDA2NDQKPiAtLS0gYS9saWJhdnV0 aWwvTWFrZWZpbGUKPiArKysgYi9saWJhdnV0aWwvTWFrZWZpbGUKPiBAQCAtMTM4LDYgKzEzOCw3 IEBAIE9CSlMgPSBhZGxlcjMyLm8KPiAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICBmaXhl ZF9kc3AubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiAgICAgICAgIGZyYW1lLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgaGFzaC5vICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBo YXNodGFibGUubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiAgICAgICAgIGhkcl9keW5hbWljX21ldGFkYXRhLm8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgaGRyX2R5bmFtaWNfdml2aWRf bWV0YWRhdGEubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAg ICBobWFjLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiBAQCAtMjUxLDYgKzI1Miw3IEBAIFRFU1RQUk9HUyA9IGFkbGVyMzIKPiAg ICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgICBmaWZv ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gICAgICAgICAgICAgIGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgaGFzaHRhYmxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgICBo bWFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gICAgICAgICAgICAgIGh3ZGV2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgaW50ZWdlciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IGRpZmYgLS1naXQg YS9saWJhdnV0aWwvaGFzaHRhYmxlLmMgYi9saWJhdnV0aWwvaGFzaHRhYmxlLmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjE1NWEyNjQ2NjUKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvbGliYXZ1dGlsL2hhc2h0YWJsZS5jCj4gQEAgLTAsMCArMSwxOTIgQEAKPiAr LyoKPiArICogR2VuZXJpYyBoYXNodGFibGUKPiArICogQ29weXJpZ2h0IChDKSAyMDI0IENvbm5v ciBXb3JsZXkgPGNvbm5vcmJ3b3JsZXlAZ21haWwuY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKwo+ICsjaW5j bHVkZSAiY3JjLmgiCj4gKyNpbmNsdWRlICJlcnJvci5oIgo+ICsjaW5jbHVkZSAibWVtLmgiCj4g KyNpbmNsdWRlICJoYXNodGFibGUuaCIKPiArCj4gKyNkZWZpbmUgQUxJR04gX0FsaWdub2Yoc2l6 ZV90KQo+ICsKPiArc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCB7Cj4gKyAgICBzaXplX3Qga2V5 X3NpemU7Cj4gKyAgICBzaXplX3Qga2V5X3NpemVfYWxpZ25lZDsKPiArICAgIHNpemVfdCB2YWxf c2l6ZTsKPiArICAgIHNpemVfdCB2YWxfc2l6ZV9hbGlnbmVkOwo+ICsgICAgc2l6ZV90IGVudHJ5 X3NpemU7Cj4gKyAgICBzaXplX3QgbWF4X2VudHJpZXM7Cj4gKyAgICBzaXplX3QgdXRpbGl6YXRp b247Cj4gKyAgICBjb25zdCBBVkNSQyAqY3JjOwo+ICsgICAgdWludDhfdCAqdGFibGU7Cj4gKyAg ICB1aW50OF90ICpzd2FwYnVmOwo+ICt9Owo+ICsKPiArI2RlZmluZSBFTlRSWV9QU0woZW50cnkp IChlbnRyeSkKPiArI2RlZmluZSBFTlRSWV9PQ0MoZW50cnkpIChFTlRSWV9QU0woZW50cnkpICsg RkZBTElHTihzaXplb2Yoc2l6ZV90KSwKPiBBTElHTikpCj4gKyNkZWZpbmUgRU5UUllfS0VZKGVu dHJ5KSAoRU5UUllfT0NDKGVudHJ5KSArIEZGQUxJR04oc2l6ZW9mKHNpemVfdCksCj4gQUxJR04p KQo+ICsjZGVmaW5lIEVOVFJZX1ZBTChlbnRyeSkgKEVOVFJZX0tFWShlbnRyeSkgKyBjdHgtPmtl eV9zaXplX2FsaWduZWQpCj4gKwo+ICsjZGVmaW5lIEtFWVNfRVFVQUwoazEsIGsyKSAhbWVtY21w KGsxLCBrMiwgY3R4LT5rZXlfc2l6ZSkKPiArCj4gK2ludCBhdl9oYXNodGFibGVfYWxsb2Moc3Ry dWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqKmN0eCwgc2l6ZV90IGtleV9zaXplLAo+IHNpemVfdCB2 YWxfc2l6ZSwgc2l6ZV90IG1heF9lbnRyaWVzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgQVZIYXNodGFi bGVDb250ZXh0ICpyZXMgPSBhdl9tYWxsb2Moc2l6ZW9mKHN0cnVjdAo+IEFWSGFzaHRhYmxlQ29u dGV4dCkpOwo+ICsgICAgaWYgKCFyZXMpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKPiArICAgIHJlcy0+a2V5X3NpemUgPSBrZXlfc2l6ZTsKPiArICAgIHJlcy0+a2V5X3NpemVf YWxpZ25lZCA9IEZGQUxJR04oa2V5X3NpemUsIEFMSUdOKTsKPiArICAgIHJlcy0+dmFsX3NpemUg PSB2YWxfc2l6ZTsKPiArICAgIHJlcy0+dmFsX3NpemVfYWxpZ25lZCA9IEZGQUxJR04odmFsX3Np emUsIEFMSUdOKTsKPiArICAgIHJlcy0+ZW50cnlfc2l6ZSA9IEZGQUxJR04oc2l6ZW9mKHNpemVf dCksIEFMSUdOKQo+ICsgICAgICAgICAgICAgICAgICAgICsgRkZBTElHTihzaXplb2Yoc2l6ZV90 KSwgQUxJR04pCj4gKyAgICAgICAgICAgICAgICAgICAgKyByZXMtPmtleV9zaXplX2FsaWduZWQK PiArICAgICAgICAgICAgICAgICAgICArIHJlcy0+dmFsX3NpemVfYWxpZ25lZDsKPiArICAgIHJl cy0+bWF4X2VudHJpZXMgPSBtYXhfZW50cmllczsKPiArICAgIHJlcy0+dXRpbGl6YXRpb24gPSAw Owo+ICsgICAgcmVzLT5jcmMgPSBhdl9jcmNfZ2V0X3RhYmxlKEFWX0NSQ18zMl9JRUVFKTsKPiAr ICAgIGlmICghcmVzLT5jcmMpIHsKPiArICAgICAgICBhdl9oYXNodGFibGVfZnJlZXAoJnJlcyk7 Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfQlVHOwo+ICsgICAgfQo+ICsgICAgcmVzLT50YWJs ZSA9IGF2X2NhbGxvYyhyZXMtPm1heF9lbnRyaWVzLCByZXMtPmVudHJ5X3NpemUpOwo+ICsgICAg aWYgKCFyZXMtPnRhYmxlKSB7Cj4gKyAgICAgICAgYXZfaGFzaHRhYmxlX2ZyZWVwKCZyZXMpOwo+ ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICB9Cj4gKyAgICByZXMtPnN3 YXBidWYgPSBhdl9jYWxsb2MoMiwgcmVzLT5rZXlfc2l6ZV9hbGlnbmVkICsKPiByZXMtPnZhbF9z aXplX2FsaWduZWQpOwo+ICsgICAgaWYgKCFyZXMtPnN3YXBidWYpIHsKPiArICAgICAgICBhdl9o YXNodGFibGVfZnJlZXAoJnJlcyk7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK PiArICAgIH0KPiArICAgICpjdHggPSByZXM7Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIHNpemVfdCBoYXNoX2tleShjb25zdCBzdHJ1Y3QgQVZIYXNodGFibGVDb250ZXh0ICpj dHgsIGNvbnN0IHZvaWQKPiAqa2V5KQo+ICt7Cj4gKyAgICByZXR1cm4gYXZfY3JjKGN0eC0+Y3Jj LCAwLCBrZXksIGN0eC0+a2V5X3NpemUpICUgY3R4LT5tYXhfZW50cmllczsKPiArfQo+ICsKPiAr aW50IGF2X2hhc2h0YWJsZV9nZXQoY29uc3Qgc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqY3R4 LCBjb25zdCB2b2lkCj4gKmtleSwgdm9pZCAqdmFsKQo+ICt7Cj4gKyAgICBzaXplX3QgaGFzaCA9 IGhhc2hfa2V5KGN0eCwga2V5KTsKPiArCj4gKyAgICBpZiAoIWN0eC0+dXRpbGl6YXRpb24pCj4g KyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgZm9yIChzaXplX3QgcHNsID0gMDsgcHNsIDwg Y3R4LT5tYXhfZW50cmllczsgcHNsKyspIHsKPiArICAgICAgICBzaXplX3Qgd3JhcHBlZF9pbmRl eCA9IChoYXNoICsgcHNsKSAlIGN0eC0+bWF4X2VudHJpZXM7Cj4gKyAgICAgICAgdWludDhfdCAq ZW50cnkgPSBjdHgtPnRhYmxlICsgd3JhcHBlZF9pbmRleCAqIGN0eC0+ZW50cnlfc2l6ZTsKPiAr ICAgICAgICBpZiAoISpFTlRSWV9PQ0MoZW50cnkpIHx8ICooc2l6ZV90KilFTlRSWV9QU0woZW50 cnkpIDwgcHNsKQo+ICsgICAgICAgICAgICByZXR1cm4gMDsKPiArICAgICAgICBpZiAoS0VZU19F UVVBTChFTlRSWV9LRVkoZW50cnkpLCBrZXkpKSB7Cj4gKyAgICAgICAgICAgIG1lbWNweSh2YWws IEVOVFJZX1ZBTChlbnRyeSksIGN0eC0+dmFsX3NpemUpOwo+ICsgICAgICAgICAgICByZXR1cm4g MTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAraW50 IGF2X2hhc2h0YWJsZV9zZXQoc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqY3R4LCBjb25zdCB2 b2lkICprZXksCj4gY29uc3Qgdm9pZCAqdmFsKQo+ICt7Cj4gKyAgICBpbnQgc3dhcHBpbmcgPSAw Owo+ICsgICAgc2l6ZV90IHBzbCA9IDA7Cj4gKyAgICBzaXplX3QgaGFzaCA9IGhhc2hfa2V5KGN0 eCwga2V5KTsKPiArICAgIHVpbnQ4X3QgKnNldCA9IGN0eC0+c3dhcGJ1ZjsKPiArICAgIHVpbnQ4 X3QgKnRtcCA9IGN0eC0+c3dhcGJ1ZiArIGN0eC0+a2V5X3NpemVfYWxpZ25lZCArCj4gY3R4LT52 YWxfc2l6ZV9hbGlnbmVkOwo+ICsKPiArICAgIG1lbWNweShzZXQsIGtleSwgY3R4LT5rZXlfc2l6 ZSk7Cj4gKyAgICBtZW1jcHkoc2V0ICsgY3R4LT5rZXlfc2l6ZV9hbGlnbmVkLCB2YWwsIGN0eC0+ dmFsX3NpemUpOwo+ICsKPiArICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3R4LT5tYXhfZW50 cmllczsgaSsrKSB7Cj4gKyAgICAgICAgc2l6ZV90IHdyYXBwZWRfaW5kZXggPSAoaGFzaCArIGkp ICUgY3R4LT5tYXhfZW50cmllczsKPiArICAgICAgICB1aW50OF90ICplbnRyeSA9IGN0eC0+dGFi bGUgKyB3cmFwcGVkX2luZGV4ICogY3R4LT5lbnRyeV9zaXplOwo+ICsgICAgICAgIGlmICghKkVO VFJZX09DQyhlbnRyeSkgfHwgKCFzd2FwcGluZyAmJgo+IEtFWVNfRVFVQUwoRU5UUllfS0VZKGVu dHJ5KSwgc2V0KSkpIHsKPiArICAgICAgICAgICAgaWYgKCEqRU5UUllfT0NDKGVudHJ5KSkKPiAr ICAgICAgICAgICAgICAgIGN0eC0+dXRpbGl6YXRpb24rKzsKPiArICAgICAgICAgICAgKihzaXpl X3QqKUVOVFJZX1BTTChlbnRyeSkgPSBwc2w7Cj4gKyAgICAgICAgICAgICpFTlRSWV9PQ0MoZW50 cnkpID0gMTsKPiArICAgICAgICAgICAgbWVtY3B5KEVOVFJZX0tFWShlbnRyeSksIHNldCwgY3R4 LT5rZXlfc2l6ZV9hbGlnbmVkICsKPiBjdHgtPnZhbF9zaXplKTsKPiArICAgICAgICAgICAgcmV0 dXJuIDE7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmICgqKHNpemVfdCopRU5UUllfUFNMKGVu dHJ5KSA8IHBzbCkgewo+ICsgICAgICAgICAgICBpZiAoY3R4LT51dGlsaXphdGlvbiA9PSBjdHgt Pm1heF9lbnRyaWVzKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICAgICAg IHN3YXBwaW5nID0gMTsKPiArICAgICAgICAgICAgLy8gc2V0IG5lZWRzIHRvIHN3YXAgd2l0aCBl bnRyeQo+ICsgICAgICAgICAgICBtZW1jcHkodG1wLCBFTlRSWV9LRVkoZW50cnkpLCBjdHgtPmtl eV9zaXplX2FsaWduZWQgKwo+IGN0eC0+dmFsX3NpemUpOwo+ICsgICAgICAgICAgICBtZW1jcHko RU5UUllfS0VZKGVudHJ5KSwgc2V0LCBjdHgtPmtleV9zaXplX2FsaWduZWQgKwo+IGN0eC0+dmFs X3NpemUpOwo+ICsgICAgICAgICAgICBGRlNXQVAodWludDhfdCosIHNldCwgdG1wKTsKPiArICAg ICAgICAgICAgRkZTV0FQKHNpemVfdCwgcHNsLCAqKHNpemVfdCopRU5UUllfUFNMKGVudHJ5KSk7 Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHBzbCsrOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK2ludCBhdl9oYXNodGFibGVfZGVsZXRlKHN0cnVjdCBBVkhhc2h0YWJsZUNv bnRleHQgKmN0eCwgY29uc3Qgdm9pZCAqa2V5KQo+ICt7Cj4gKyAgICB1aW50OF90ICpuZXh0X2Vu dHJ5Owo+ICsgICAgc2l6ZV90IGhhc2ggPSBoYXNoX2tleShjdHgsIGtleSk7Cj4gKwo+ICsgICAg aWYgKCFjdHgtPnV0aWxpemF0aW9uKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIGZv ciAoc2l6ZV90IHBzbCA9IDA7IHBzbCA8IGN0eC0+bWF4X2VudHJpZXM7IHBzbCsrKSB7Cj4gKyAg ICAgICAgc2l6ZV90IHdyYXBwZWRfaW5kZXggPSAoaGFzaCArIHBzbCkgJSBjdHgtPm1heF9lbnRy aWVzOwo+ICsgICAgICAgIHVpbnQ4X3QgKmVudHJ5ID0gY3R4LT50YWJsZSArIHdyYXBwZWRfaW5k ZXggKiBjdHgtPmVudHJ5X3NpemU7Cj4gKyAgICAgICAgaWYgKCEqRU5UUllfT0NDKGVudHJ5KSB8 fCAqKHNpemVfdCopRU5UUllfUFNMKGVudHJ5KSA8IHBzbCkKPiArICAgICAgICAgICAgcmV0dXJu IDA7Cj4gKyAgICAgICAgaWYgKEtFWVNfRVFVQUwoRU5UUllfS0VZKGVudHJ5KSwga2V5KSkgewo+ ICsgICAgICAgICAgICAqRU5UUllfT0NDKGVudHJ5KSA9IDA7Cj4gKyAgICAgICAgICAgIGZvciAo cHNsKys7IHBzbCA8IGN0eC0+bWF4X2VudHJpZXM7IHBzbCsrKSB7Cj4gKyAgICAgICAgICAgICAg ICB3cmFwcGVkX2luZGV4ID0gKGhhc2ggKyBwc2wpICUgY3R4LT5tYXhfZW50cmllczsKPiArICAg ICAgICAgICAgICAgIG5leHRfZW50cnkgPSBjdHgtPnRhYmxlICsgd3JhcHBlZF9pbmRleCAqIGN0 eC0+ZW50cnlfc2l6ZTsKPiArICAgICAgICAgICAgICAgIGlmICghKkVOVFJZX09DQyhuZXh0X2Vu dHJ5KSB8fAo+ICEqKHNpemVfdCopRU5UUllfUFNMKG5leHRfZW50cnkpKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LT51dGlsaXphdGlvbi0tOwo+ICsgICAgICAgICAgICAgICAgICAgIHJl dHVybiAxOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgbWVtY3B5KGVu dHJ5LCBuZXh0X2VudHJ5LCBjdHgtPmVudHJ5X3NpemUpOwo+ICsgICAgICAgICAgICAgICAgKCoo c2l6ZV90KilFTlRSWV9QU0woZW50cnkpKS0tOwo+ICsgICAgICAgICAgICAgICAgKkVOVFJZX09D QyhuZXh0X2VudHJ5KSA9IDA7Cj4gKyAgICAgICAgICAgICAgICBlbnRyeSA9IG5leHRfZW50cnk7 Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Owo+ICsgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3ZvaWQgYXZfaGFzaHRhYmxlX2NsZWFyKHN0cnVjdCBBVkhhc2h0YWJsZUNv bnRleHQgKmN0eCkKPiArewo+ICsgICAgbWVtc2V0KGN0eC0+dGFibGUsIDAsIGN0eC0+ZW50cnlf c2l6ZSAqIGN0eC0+bWF4X2VudHJpZXMpOwo+ICt9Cj4gKwo+ICt2b2lkIGF2X2hhc2h0YWJsZV9m cmVlcChzdHJ1Y3QgQVZIYXNodGFibGVDb250ZXh0ICoqY3R4KQo+ICt7Cj4gKyAgICBpZiAoKmN0 eCkgewo+ICsgICAgICAgIGF2X2ZyZWVwKCYoKmN0eCktPnRhYmxlKTsKPiArICAgICAgICBhdl9m cmVlcCgmKCpjdHgpLT5zd2FwYnVmKTsKPiArICAgIH0KPiArICAgIGF2X2ZyZWVwKGN0eCk7Cj4g K30KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2hhc2h0YWJsZS5oIGIvbGliYXZ1dGlsL2hhc2h0 YWJsZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5mMTQwODY4 NjdlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2dXRpbC9oYXNodGFibGUuaAo+IEBAIC0w LDAgKzEsNDAgQEAKPiArLyoKPiArICogR2VuZXJpYyBoYXNodGFibGUKPiArICogQ29weXJpZ2h0 IChDKSAyMDI0IENvbm5vciBXb3JsZXkgPGNvbm5vcmJ3b3JsZXlAZ21haWwuY29tPgo+ICsgKgo+ ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsg KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEg VVNBCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBBVlVUSUxfSEFTSFRBQkxFX0gKPiArI2RlZmluZSBB VlVUSUxfSEFTSFRBQkxFX0gKPiArCj4gKyNpbmNsdWRlIDxzdGRkZWYuaD4KPiArCj4gKy8qIElt cGxlbWVudHMgYSBoYXNoIHRhYmxlIHVzaW5nIFJvYmluIEhvb2Qgb3BlbiBhZGRyZXNzaW5nLgo+ ICsgKiBTZWU6IGh0dHBzOi8vY3MudXdhdGVybG9vLmNhL3Jlc2VhcmNoL3RyLzE5ODYvQ1MtODYt MTQucGRmCj4gKyAqLwo+ICsKPiArc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dDsKPiArCj4gK2lu dCBhdl9oYXNodGFibGVfYWxsb2Moc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqKmN0eCwgc2l6 ZV90IGtleV9zaXplLAo+IHNpemVfdCB2YWxfc2l6ZSwgc2l6ZV90IG1heF9lbnRyaWVzKTsKPiAr aW50IGF2X2hhc2h0YWJsZV9nZXQoY29uc3Qgc3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqY3R4 LCBjb25zdCB2b2lkCj4gKmtleSwgdm9pZCAqdmFsKTsKPiAraW50IGF2X2hhc2h0YWJsZV9zZXQo c3RydWN0IEFWSGFzaHRhYmxlQ29udGV4dCAqY3R4LCBjb25zdCB2b2lkICprZXksCj4gY29uc3Qg dm9pZCAqdmFsKTsKPiAraW50IGF2X2hhc2h0YWJsZV9kZWxldGUoc3RydWN0IEFWSGFzaHRhYmxl Q29udGV4dCAqY3R4LCBjb25zdCB2b2lkICprZXkpOwo+ICt2b2lkIGF2X2hhc2h0YWJsZV9jbGVh cihzdHJ1Y3QgQVZIYXNodGFibGVDb250ZXh0ICpjdHgpOwo+ICt2b2lkIGF2X2hhc2h0YWJsZV9m cmVlcChzdHJ1Y3QgQVZIYXNodGFibGVDb250ZXh0ICoqY3R4KTsKPiArCj4gKyNlbmRpZgo+IGRp ZmYgLS1naXQgYS9saWJhdnV0aWwvdGVzdHMvaGFzaHRhYmxlLmMgYi9saWJhdnV0aWwvdGVzdHMv aGFzaHRhYmxlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjFl MzdkNzY2M2IKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZ1dGlsL3Rlc3RzL2hhc2h0YWJs ZS5jCj4gQEAgLTAsMCArMSwxMTAgQEAKPiArLyoKPiArICogR2VuZXJpYyBoYXNodGFibGUgdGVz dHMKPiArICogQ29weXJpZ2h0IChDKSAyMDI0IENvbm5vciBXb3JsZXkgPGNvbm5vcmJ3b3JsZXlA Z21haWwuY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAq Cj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxv bmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICog Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgo+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL2hhc2h0YWJsZS5oIgo+ICsKPiAraW50IG1haW4odm9pZCkKPiArewo+ICsgICAgc3RydWN0 IEFWSGFzaHRhYmxlQ29udGV4dCAqY3R4Owo+ICsgICAgdWludDhfdCBrOwo+ICsgICAgdWludDY0 X3QgdjsKPiArCj4gKyAgICAvLyBpbXBvc3NpYmx5IGxhcmdlIGFsbG9jYXRpb24gc2hvdWxkIGZh aWwgZ3JhY2VmdWxseQo+ICsgICAgYXZfYXNzZXJ0MChhdl9oYXNodGFibGVfYWxsb2MoJmN0eCwg LTEsIC0xLCAtMSkgPCAwKTsKPiArCj4gKyAgICAvLyBoYXNodGFibGUgY2FuIHN0b3JlIHVwIHRv IDMgdWludDhfdC0+dWludDY0X3QgZW50cmllcwo+ICsgICAgYXZfYXNzZXJ0MCghYXZfaGFzaHRh YmxlX2FsbG9jKCZjdHgsIHNpemVvZihrKSwgc2l6ZW9mKHYpLCAzKSk7Cj4gKwo+ICsgICAgLy8g dW5zdWNjZXNzZnVsIGRlbGV0ZXMgcmV0dXJuIDAKPiArICAgIGsgPSAxOwo+ICsgICAgYXZfYXNz ZXJ0MCghYXZfaGFzaHRhYmxlX2RlbGV0ZShjdHgsICZrKSk7Cj4gKwo+ICsgICAgLy8gdW5zdWNj ZXNzZnVsIGdldHMgcmV0dXJuIDAKPiArICAgIGsgPSAxOwo+ICsgICAgYXZfYXNzZXJ0MCghYXZf aGFzaHRhYmxlX2dldChjdHgsICZrLCAmdikpOwo+ICsKPiArICAgIC8vIHN1Y2Nlc3NmdWwgc2V0 cyByZXR1cm5zIDEKPiArICAgIGsgPSAxOwo+ICsgICAgdiA9IDE7Cj4gKyAgICBhdl9hc3NlcnQw KGF2X2hhc2h0YWJsZV9zZXQoY3R4LCAmaywgJnYpKTsKPiArCj4gKyAgICAvLyBnZXQgc2hvdWxk IG5vdyBjb250YWluIDEKPiArICAgIGsgPSAxOwo+ICsgICAgdiA9IDA7Cj4gKyAgICBhdl9hc3Nl cnQwKGF2X2hhc2h0YWJsZV9nZXQoY3R4LCAmaywgJnYpKTsKPiArICAgIGF2X2Fzc2VydDAodiA9 PSAxKTsKPiArCj4gKyAgICAvLyB1cGRhdGluZyBzZXRzIHNob3VsZCByZXR1cm4gMQo+ICsgICAg ayA9IDE7Cj4gKyAgICB2ID0gMjsKPiArICAgIGF2X2Fzc2VydDAoYXZfaGFzaHRhYmxlX3NldChj dHgsICZrLCAmdikpOwo+ICsKPiArICAgIC8vIGdldCBzaG91bGQgbm93IGNvbnRhaW4gMgo+ICsg ICAgayA9IDE7Cj4gKyAgICB2ID0gMDsKPiArICAgIGF2X2Fzc2VydDAoYXZfaGFzaHRhYmxlX2dl dChjdHgsICZrLCAmdikpOwo+ICsgICAgYXZfYXNzZXJ0MCh2ID09IDIpOwo+ICsKPiArICAgIC8v IGZpbGwgdGhlIHRhYmxlCj4gKyAgICBrID0gMjsKPiArICAgIHYgPSAyOwo+ICsgICAgYXZfYXNz ZXJ0MChhdl9oYXNodGFibGVfc2V0KGN0eCwgJmssICZ2KSk7Cj4gKyAgICBrID0gMzsKPiArICAg IHYgPSAzOwo+ICsgICAgYXZfYXNzZXJ0MChhdl9oYXNodGFibGVfc2V0KGN0eCwgJmssICZ2KSk7 Cj4gKwo+ICsgICAgLy8gaW5zZXJ0aW5nIHNldHMgb24gYSBmdWxsIHRhYmxlIHNob3VsZCByZXR1 cm4gMAo+ICsgICAgayA9IDQ7Cj4gKyAgICB2ID0gNDsKPiArICAgIGF2X2Fzc2VydDAoIWF2X2hh c2h0YWJsZV9zZXQoY3R4LCAmaywgJnYpKTsKPiArCj4gKyAgICAvLyB1cGRhdGluZyBzZXRzIG9u IGEgZnVsbCB0YWJsZSBzaG91bGQgcmV0dXJuIDEKPiArICAgIGsgPSAxOwo+ICsgICAgdiA9IDQ7 Cj4gKyAgICBhdl9hc3NlcnQwKGF2X2hhc2h0YWJsZV9zZXQoY3R4LCAmaywgJnYpKTsKPiArICAg IHYgPSAwOwo+ICsgICAgYXZfYXNzZXJ0MChhdl9oYXNodGFibGVfZ2V0KGN0eCwgJmssICZ2KSk7 Cj4gKyAgICBhdl9hc3NlcnQwKHYgPT0gNCk7Cj4gKwo+ICsgICAgLy8gc3VjY2Vzc2Z1bCBkZWxl dGVzIHNob3VsZCByZXR1cm4gMQo+ICsgICAgayA9IDE7Cj4gKyAgICBhdl9hc3NlcnQwKGF2X2hh c2h0YWJsZV9kZWxldGUoY3R4LCAmaykpOwo+ICsKPiArICAgIC8vIGdldCBzaG91bGQgbm93IHJl dHVybiAwCj4gKyAgICBhdl9hc3NlcnQwKCFhdl9oYXNodGFibGVfZ2V0KGN0eCwgJmssICZ2KSk7 Cj4gKwo+ICsgICAgLy8gc2FuaXR5IGNoZWNrIHJlbWFpbmluZyBrZXlzCj4gKyAgICBrID0gMjsK PiArICAgIHYgPSAwOwo+ICsgICAgYXZfYXNzZXJ0MChhdl9oYXNodGFibGVfZ2V0KGN0eCwgJmss ICZ2KSk7Cj4gKyAgICBhdl9hc3NlcnQwKHYgPT0gMik7Cj4gKyAgICBrID0gMzsKPiArICAgIHYg PSAwOwo+ICsgICAgYXZfYXNzZXJ0MChhdl9oYXNodGFibGVfZ2V0KGN0eCwgJmssICZ2KSk7Cj4g KyAgICBhdl9hc3NlcnQwKHYgPT0gMyk7Cj4gKwo+ICsgICAgYXZfaGFzaHRhYmxlX2ZyZWVwKCZj dHgpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gLS0KPiAyLjQzLjEKPgo+CgotLSAKQ29u bm9yIFdvcmxleQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==