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 4B55F49D02 for ; Fri, 8 Mar 2024 13:31:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6400268CF55; Fri, 8 Mar 2024 15:31:21 +0200 (EET) Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B154968CDD3 for ; Fri, 8 Mar 2024 15:31:14 +0200 (EET) Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-5d3912c9a83so1358438a12.3 for ; Fri, 08 Mar 2024 05:31:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709904672; x=1710509472; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ifHwLusXmJpdIu2cTWAsOp8hgwGzlJJBznlXr/e54g0=; b=JoPgpLFNio40/NBDa2IQJSsVC9OBFnG1+mSKc9SI3A/wzhjWalTdX6ya+i3FfO5V7f UxgME59SEG/M5tFPJ5VCHbXD1IyDtUKR6k5i6jJxvhQ9s9VtO5umxGM1OELMUmgTbtsy PvsAz2sl/rMCYHTD1xFxNWvvLUrH5c83c16YQF94cZFQM+ycw2Rq0EOrR7lEOea+UpUn an80rrpfkA/fA1pOWvhQl600TuWe/wxfmTKJQeXUm05kfpVNGaQcrD+/fuHLZHeREQG3 LmvbQ68LO4l7qNzWBcr2GWTi/5RX78zl9Kzmy3StqYvh/5Nuo+k5QGTJtOx/gUsGVY8y K5fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709904672; x=1710509472; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ifHwLusXmJpdIu2cTWAsOp8hgwGzlJJBznlXr/e54g0=; b=TwBxKsymD92ik8QZJ67L3H0YD4gq8dbQKkyLE6cpHyTX4jLyJcygvmrI/FvIKYpdQv sRTF4yrmgZajQIexQv+poIAI8kcRqDExbCJZrHgt1v4Nk04jBialeTEfPx7RnDpJjj5m WeASczkDbJf54xPPZh3cWC0VFia2dFEveGAjORt1HtWHg3g8Uf2qNSV1mxZWHrYVpbFl f6zMUukeKFtEetcoJOoeL4wqpR9DOAtW+8dYITDM97coIdcPOISzdlsfcTTfbXkbsQcD sL7r4VOpmFm2p8HDh2DvPcqWwRcD5r7+C4/9U7q8+wcX5VHIYMSei27+P4Rq1SkZC5rL S5Bw== X-Gm-Message-State: AOJu0YyLVaSzYJoCADTdkLVSHXeOyz0YaSscdUPfY3G1jdegtsG3SE+U JoRy1onyYsBDS50zqtq+Evwrlfm/oMeam73bAz0wrVMnq2N0YIwXQrd7ZApF X-Google-Smtp-Source: AGHT+IHiLJoY83MAWBVaUxdHOJf2sycNDjqJwhUlizNj2pTxjkufLQFnKzCQaR9Mp6zhVMh2hvg6TA== X-Received: by 2002:a17:90b:282:b0:29b:1f71:957c with SMTP id az2-20020a17090b028200b0029b1f71957cmr18919910pjb.14.1709904671052; Fri, 08 Mar 2024 05:31:11 -0800 (PST) Received: from [192.168.0.14] ([190.194.169.124]) by smtp.gmail.com with ESMTPSA id lt11-20020a17090b354b00b0029bc180378esm95318pjb.54.2024.03.08.05.31.09 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Mar 2024 05:31:10 -0800 (PST) Message-ID: <186f152d-122a-4400-b941-526c986d0c56@gmail.com> Date: Fri, 8 Mar 2024 10:31:28 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240308132108.28337-1-ffmpeg@haasn.xyz> From: James Almer In-Reply-To: <20240308132108.28337-1-ffmpeg@haasn.xyz> Subject: Re: [FFmpeg-devel] [PATCH v2 1/4] avcodec/aom_film_grain: add AOM film grain synthesis 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMy84LzIwMjQgMTA6MjEgQU0sIE5pa2xhcyBIYWFzIHdyb3RlOgo+IEZyb206IE5pa2xhcyBI YWFzIDxnaXRAaGFhc24uZGV2Pgo+IAo+IEltcGxlbWVudGF0aW9uIGNvcGllZCB3aG9sZXNhbGUg ZnJvbSBkYXYxZCwgc2FucyBTSU1ELCB1bmRlciBwZXJtaXNzaXZlCj4gbGljZW5zZS4gVGhpcyBp bXBsZW1lbnRhdGlvbiB3YXMgZXh0ZW5zaXZlbHkgdmVyaWZpZWQgdG8gYmUgYml0LWV4YWN0LAo+ IHNvIGl0IHNlcnZlcyBhcyBhIG11Y2ggYmV0dGVyIHN0YXJ0aW5nIHBvaW50IHRoYW4gdHJ5aW5n IHRvIHJlLWVuZ2luZWVyCj4gdGhpcyBmcm9tIHNjcmF0Y2ggZm9yIG5vIHJlYXNvbi4gKEkgYWxz byBhdXRob3JlZCB0aGUgb3JpZ2luYWwKPiBpbXBsZW1lbnRhdGlvbiBpbiBkYXYxZCwgc28gYW55 ICJjbGVhbiByb29tIiBpbXBsZW1lbnRhdGlvbiB3b3VsZCBlbmQgdXAKPiBsb29raW5nIG11Y2gg dGhlIHNhbWUsIGFueXdheSkKPiAKPiBUaGUgbm90YWJsZSBjaGFuZ2VzIEkgaGFkIHRvIG1ha2Ug d2hpbGUgYWRhcHRpbmcgdGhpcyBmcm9tIHRoZSBkYXYxZAo+IGNvZGUtYmFzZSB0byB0aGUgRkZt cGVnIGNvZGViYXNlIGluY2x1ZGU6Cj4gCj4gLSByZW9yZGVyaW5nIHZhcmlhYmxlIGRlY2xhcmF0 aW9ucyB0byBhdm9pZCB0cmlnZ2VyaW5nIHdhcm5pbmdzCj4gLSByZXBsYWNpbmcgc2V2ZXJhbCBp bmxpbmUgaGVscGVycyBieSBhdnV0aWwgZXF1aXZhbGVudHMKPiAtIGNoYW5naW5nIGNvZGUgdGhh dCBhY2Nlc3NlcyBmcmFtZSBtZXRhZGF0YQo+IC0gcmVwbGFjaW5nIHJhdyBwbGFuZSBjb3B5aW5n IGxvZ2ljIGJ5IGF2X2ltYWdlX2NvcHlfcGxhbmUKPiAKPiBBcGFydCBmcm9tIHRoaXMsIHRoZSBp bXBsZW1lbnRhdGlvbiBpcyBiYXNpY2FsbHkgdW5tb2RpZmllZC4KCkRvIHdlIHdhbnQgdGhpcyB0 byBiZSBwdWJsaWM/IEJvdGggYXMgYSBzdHJ1Y3QgYW5kIHRoZSBkZWNvZGluZyBmdW5jdGlvbnMu Ckl0IGNvdWxkIGJlIHVzZWQgYnkgbGliYXZmaWx0ZXIgb3IgZXZlbiBvdXRzaWRlIG91ciBsaWJy YXJpZXMuIFRoZSBoZXZjIApkZWNvZGVyIHdvdWxkIGV4cG9ydCB0aGUgcmVsZXZhbnQgVC4zNSBT RUkgaW4gdGhlIG5ldyBzdHJ1Y3QgaWYgdG9sZCB0byAKbm90IGFwcGx5IGZnLCBsaWtlIHdlIGFs cmVhZHkgZG8gaW4gYXYxLgoKPiAtLS0KPiAgIGxpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uYyAg ICAgICAgICB8IDMxMCArKysrKysrKysrKysrKwo+ICAgbGliYXZjb2RlYy9hb21fZmlsbV9ncmFp bi5oICAgICAgICAgIHwgIDM4ICsrCj4gICBsaWJhdmNvZGVjL2FvbV9maWxtX2dyYWluX3RlbXBs YXRlLmMgfCA1NzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5n ZWQsIDkyNSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9h b21fZmlsbV9ncmFpbi5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hb21fZmls bV9ncmFpbi5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hb21fZmlsbV9ncmFp bl90ZW1wbGF0ZS5jCj4gCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4u YyBiL2xpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAuLmZmY2Q3MWI1ODRiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xp YmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uYwo+IEBAIC0wLDAgKzEsMzEwIEBACj4gKy8qCj4gKyAq IEFPTSBmaWxtIGdyYWluIHN5bnRoZXNpcwo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgTmlrbGFz IEhhYXMgPGZmbXBlZ0BoYWFzbi54eXo+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr ICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAr ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAq IEBmaWxlCj4gKyAqIEFPTSBmaWxtIGdyYWluIHN5bnRoZXNpcy4KPiArICogQGF1dGhvciBOaWts YXMgSGFhcyA8ZmZtcGVnQGhhYXNuLnh5ej4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL2F2YXNzZXJ0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKPiArCj4g KyNpbmNsdWRlICJhb21fZmlsbV9ncmFpbi5oIgo+ICsKPiArLy8gQ29tbW9uL3NoYXJlZCBoZWxw ZXJzIChub3QgZGVwZW5kZW50IG9uIEJJVF9ERVBUSCkKPiArc3RhdGljIGlubGluZSBpbnQgZ2V0 X3JhbmRvbV9udW1iZXIoY29uc3QgaW50IGJpdHMsIHVuc2lnbmVkICpjb25zdCBzdGF0ZSkgewo+ ICsgICAgY29uc3QgaW50IHIgPSAqc3RhdGU7Cj4gKyAgICB1bnNpZ25lZCBiaXQgPSAoKHIgPj4g MCkgXiAociA+PiAxKSBeIChyID4+IDMpIF4gKHIgPj4gMTIpKSAmIDE7Cj4gKyAgICAqc3RhdGUg PSAociA+PiAxKSB8IChiaXQgPDwgMTUpOwo+ICsKPiArICAgIHJldHVybiAoKnN0YXRlID4+ICgx NiAtIGJpdHMpKSAmICgoMSA8PCBiaXRzKSAtIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5l IGludCByb3VuZDIoY29uc3QgaW50IHgsIGNvbnN0IHVpbnQ2NF90IHNoaWZ0KSB7Cj4gKyAgICBy ZXR1cm4gKHggKyAoKDEgPDwgc2hpZnQpID4+IDEpKSA+PiBzaGlmdDsKPiArfQo+ICsKPiArZW51 bSB7Cj4gKyAgICBHUkFJTl9XSURUSCAgICAgID0gODIsCj4gKyAgICBHUkFJTl9IRUlHSFQgICAg ID0gNzMsCj4gKyAgICBTVUJfR1JBSU5fV0lEVEggID0gNDQsCj4gKyAgICBTVUJfR1JBSU5fSEVJ R0hUID0gMzgsCj4gKyAgICBGR19CTE9DS19TSVpFICAgID0gMzIsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3QgaW50MTZfdCBnYXVzc2lhbl9zZXF1ZW5jZVsyMDQ4XTsKPiArCj4gKyNkZWZpbmUg QklUX0RFUFRIIDE2Cj4gKyNpbmNsdWRlICJhb21fZmlsbV9ncmFpbl90ZW1wbGF0ZS5jIgo+ICsj dW5kZWYgQklUX0RFUFRICj4gKwo+ICsjZGVmaW5lIEJJVF9ERVBUSCA4Cj4gKyNpbmNsdWRlICJh b21fZmlsbV9ncmFpbl90ZW1wbGF0ZS5jIgo+ICsjdW5kZWYgQklUX0RFUFRICj4gKwo+ICsKPiAr aW50IGZmX2FvbV9hcHBseV9maWxtX2dyYWluKEFWRnJhbWUgKm91dCwgY29uc3QgQVZGcmFtZSAq aW4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFt cyAqcGFyYW1zKQo+ICt7Cj4gKyAgICBjb25zdCBBVkZpbG1HcmFpbkFPTVBhcmFtcyAqY29uc3Qg ZGF0YSA9ICZwYXJhbXMtPmNvZGVjLmFvbTsKPiArICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRv ciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQob3V0LT5mb3JtYXQpOwo+ICsgICAgY29uc3Qg aW50IHN1YnggPSBkZXNjLT5sb2cyX2Nocm9tYV93LCBzdWJ5ID0gZGVzYy0+bG9nMl9jaHJvbWFf aDsKPiArICAgIGNvbnN0IGludCBweHN0ZXAgPSBkZXNjLT5jb21wWzBdLnN0ZXA7Cj4gKwo+ICsg ICAgYXZfYXNzZXJ0MChvdXQtPmZvcm1hdCA9PSBpbi0+Zm9ybWF0KTsKPiArICAgIGF2X2Fzc2Vy dDAocGFyYW1zLT50eXBlID09IEFWX0ZJTE1fR1JBSU5fUEFSQU1TX0FWMSk7Cj4gKwo+ICsgICAg Ly8gQ29weSBvdmVyIHRoZSBub24tbW9kaWZpZWQgcGxhbmVzCj4gKyAgICBpZiAoIXBhcmFtcy0+ Y29kZWMuYW9tLm51bV95X3BvaW50cykgewo+ICsgICAgICAgIGF2X2ltYWdlX2NvcHlfcGxhbmUo b3V0LT5kYXRhWzBdLCBvdXQtPmxpbmVzaXplWzBdLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW4tPmRhdGFbMF0sIGluLT5saW5lc2l6ZVswXSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG91dC0+d2lkdGggKiBweHN0ZXAsIG91dC0+aGVpZ2h0KTsKPiArICAgIH0KPiAr ICAgIGZvciAoaW50IHV2ID0gMDsgdXYgPCAyOyB1disrKSB7Cj4gKyAgICAgICAgaWYgKCFkYXRh LT5udW1fdXZfcG9pbnRzW3V2XSkgewo+ICsgICAgICAgICAgICBhdl9pbWFnZV9jb3B5X3BsYW5l KG91dC0+ZGF0YVsxK3V2XSwgb3V0LT5saW5lc2l6ZVsxK3V2XSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbi0+ZGF0YVsxK3V2XSwgaW4tPmxpbmVzaXplWzErdXZdLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0NFSUxfUlNISUZUKG91dC0+d2lkdGgs IHN1YngpICogcHhzdGVwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0NF SUxfUlNISUZUKG91dC0+aGVpZ2h0LCBzdWJ5KSk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsK PiArICAgIHN3aXRjaCAoaW4tPmZvcm1hdCkgewo+ICsgICAgY2FzZSBBVl9QSVhfRk1UX0dSQVk4 Ogo+ICsgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6Cj4gKyAgICBjYXNlIEFWX1BJWF9GTVRf WVVWNDIyUDoKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQOgo+ICsgICAgY2FzZSBBVl9Q SVhfRk1UX1lVVko0MjBQOgo+ICsgICAgY2FzZSBBVl9QSVhfRk1UX1lVVko0MjJQOgo+ICsgICAg Y2FzZSBBVl9QSVhfRk1UX1lVVko0NDRQOgo+ICsgICAgICAgIHJldHVybiBhcHBseV9maWxtX2dy YWluXzgob3V0LCBpbiwgcGFyYW1zKTsKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9HUkFZOToKPiAr ICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjBQOToKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0 MjJQOToKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQOToKPiArICAgICAgICByZXR1cm4g YXBwbHlfZmlsbV9ncmFpbl8xNihvdXQsIGluLCBwYXJhbXMsIDkpOwo+ICsgICAgY2FzZSBBVl9Q SVhfRk1UX0dSQVkxMDoKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjBQMTA6Cj4gKyAgICBj YXNlIEFWX1BJWF9GTVRfWVVWNDIyUDEwOgo+ICsgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFAx MDoKPiArICAgICAgICByZXR1cm4gYXBwbHlfZmlsbV9ncmFpbl8xNihvdXQsIGluLCBwYXJhbXMs IDEwKTsKPiArICAgIGNhc2UgQVZfUElYX0ZNVF9HUkFZMTI6Cj4gKyAgICBjYXNlIEFWX1BJWF9G TVRfWVVWNDIwUDEyOgo+ICsgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlAxMjoKPiArICAgIGNh c2UgQVZfUElYX0ZNVF9ZVVY0NDRQMTI6Cj4gKyAgICAgICAgcmV0dXJuIGFwcGx5X2ZpbG1fZ3Jh aW5fMTYob3V0LCBpbiwgcGFyYW1zLCAxMik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogVGhlIEFW MSBzcGVjIG9ubHkgZGVmaW5lcyBmaWxtIGdyYWluIHN5bnRoZXNpcyBmb3IgdGhlc2UgZm9ybWF0 cyAqLwo+ICsgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gK30KPiArCj4gKy8vIFRh a2VuIGZyb20gdGhlIEFWMSBzcGVjLiBSYW5nZSBpcyBbLTIwNDgsIDIwNDddLCBtZWFuIGlzIDAg YW5kIHN0ZGRldiBpcyA1MTIKPiArc3RhdGljIGNvbnN0IGludDE2X3QgZ2F1c3NpYW5fc2VxdWVu Y2VbMjA0OF0gPSB7Cj4gKyAgICA1NiwgICAgNTY4LCAgIC0xODAsICAxNzIsICAgMTI0LCAgIC04 NCwgICAxNzIsICAgLTY0LCAgIC05MDAsICAyNCwgICA4MjAsCj4gKyAgICAyMjQsICAgMTI0OCwg IDk5NiwgICAyNzIsICAgLTgsICAgIC05MTYsICAtMzg4LCAgLTczMiwgIC0xMDQsICAtMTg4LCA4 MDAsCj4gKyAgICAxMTIsICAgLTY1MiwgIC0zMjAsICAtMzc2LCAgMTQwLCAgIC0yNTIsICA0OTIs ICAgLTE2OCwgIDQ0LCAgICAtNzg4LCA1ODgsCj4gKyAgICAtNTg0LCAgNTAwLCAgIC0yMjgsICAx MiwgICAgNjgwLCAgIDI3MiwgICAtNDc2LCAgOTcyLCAgIC0xMDAsICA2NTIsICAzNjgsCj4gKyAg ICA0MzIsICAgLTE5NiwgIC03MjAsICAtMTkyLCAgMTAwMCwgIC0zMzIsICA2NTIsICAgLTEzNiwg IC01NTIsICAtNjA0LCAtNCwKPiArICAgIDE5MiwgICAtMjIwLCAgLTEzNiwgIDEwMDAsICAtNTIs ICAgMzcyLCAgIC05NiwgICAtNjI0LCAgMTI0LCAgIC0yNCwgIDM5NiwKPiArICAgIDU0MCwgICAt MTIsICAgLTEwNCwgIDY0MCwgICA0NjQsICAgMjQ0LCAgIC0yMDgsICAtODQsICAgMzY4LCAgIC01 MjgsIC03NDAsCj4gKyAgICAyNDgsICAgLTk2OCwgIC04NDgsICA2MDgsICAgMzc2LCAgIC02MCwg ICAtMjkyLCAgLTQwLCAgIC0xNTYsICAyNTIsICAtMjkyLAo+ICsgICAgMjQ4LCAgIDIyNCwgICAt MjgwLCAgNDAwLCAgIC0yNDQsICAyNDQsICAgLTYwLCAgIDc2LCAgICAtODAsICAgMjEyLCAgNTMy LAo+ICsgICAgMzQwLCAgIDEyOCwgICAtMzYsICAgODI0LCAgIC0zNTIsICAtNjAsICAgLTI2NCwg IC05NiwgICAtNjEyLCAgNDE2LCAgLTcwNCwKPiArICAgIDIyMCwgICAtMjA0LCAgNjQwLCAgIC0x NjAsICAxMjIwLCAgLTQwOCwgIDkwMCwgICAzMzYsICAgMjAsICAgIC0zMzYsIC05NiwKPiArICAg IC03OTIsICAzMDQsICAgNDgsICAgIC0yOCwgICAtMTIzMiwgLTExNzIsIC00NDgsICAxMDQsICAg LTI5MiwgIC01MjAsIDI0NCwKPiArICAgIDYwLCAgICAtOTQ4LCAgMCwgICAgIC03MDgsICAyNjgs ICAgMTA4LCAgIDM1NiwgICAtNTQ4LCAgNDg4LCAgIC0zNDQsIC0xMzYsCj4gKyAgICA0ODgsICAg LTE5NiwgIC0yMjQsICA2NTYsICAgLTIzNiwgIC0xMTI4LCA2MCwgICAgNCwgICAgIDE0MCwgICAy NzYsICAtNjc2LAo+ICsgICAgLTM3NiwgIDE2OCwgICAtMTA4LCAgNDY0LCAgIDgsICAgICA1NjQs ICAgNjQsICAgIDI0MCwgICAzMDgsICAgLTMwMCwgLTQwMCwKPiArICAgIC00NTYsICAtMTM2LCAg NTYsICAgIDEyMCwgICAtNDA4LCAgLTExNiwgIDQzNiwgICA1MDQsICAgLTIzMiwgIDMyOCwgIDg0 NCwKPiArICAgIC0xNjQsICAtODQsICAgNzg0LCAgIC0xNjgsICAyMzIsICAgLTIyNCwgIDM0OCwg ICAtMzc2LCAgMTI4LCAgIDU2OCwgIDk2LAo+ICsgICAgLTEyNDQsIC0yODgsICAyNzYsICAgODQ4 LCAgIDgzMiwgICAtMzYwLCAgNjU2LCAgIDQ2NCwgICAtMzg0LCAgLTMzMiwgLTM1NiwKPiArICAg IDcyOCwgICAtMzg4LCAgMTYwLCAgIC0xOTIsICA0NjgsICAgMjk2LCAgIDIyNCwgICAxNDAsICAg LTc3NiwgIC0xMDAsIDI4MCwKPiArICAgIDQsICAgICAxOTYsICAgNDQsICAgIC0zNiwgICAtNjQ4 LCAgOTMyLCAgIDE2LCAgICAxNDI4LCAgMjgsICAgIDUyOCwgIDgwOCwKPiArICAgIDc3MiwgICAy MCwgICAgMjY4LCAgIDg4LCAgICAtMzMyLCAgLTI4NCwgIDEyNCwgICAtMzg0LCAgLTQ0OCwgIDIw OCwgIC0yMjgsCj4gKyAgICAtMTA0NCwgLTMyOCwgIDY2MCwgICAzODAsICAgLTE0OCwgIC0zMDAs ICA1ODgsICAgMjQwLCAgIDU0MCwgICAyOCwgICAxMzYsCj4gKyAgICAtODgsICAgLTQzNiwgIDI1 NiwgICAyOTYsICAgLTEwMDAsIDE0MDAsICAwLCAgICAgLTQ4LCAgIDEwNTYsICAtMTM2LCAyNjQs Cj4gKyAgICAtNTI4LCAgLTExMDgsIDYzMiwgICAtNDg0LCAgLTU5MiwgIC0zNDQsICA3OTYsICAg MTI0LCAgIC02NjgsICAtNzY4LCAzODgsCj4gKyAgICAxMjk2LCAgLTIzMiwgIC0xODgsICAtMjAw LCAgLTI4OCwgIC00LCAgICAzMDgsICAgMTAwLCAgIC0xNjgsICAyNTYsICAtNTAwLAo+ICsgICAg MjA0LCAgIC01MDgsICA2NDgsICAgLTEzNiwgIDM3MiwgICAtMjcyLCAgLTEyMCwgIC0xMDA0LCAt NTUyLCAgLTU0OCwgLTM4NCwKPiArICAgIDU0OCwgICAtMjk2LCAgNDI4LCAgIC0xMDgsICAtOCwg ICAgLTkxMiwgIC0zMjQsICAtMjI0LCAgLTg4LCAgIC0xMTIsIC0yMjAsCj4gKyAgICAtMTAwLCAg OTk2LCAgIC03OTYsICA1NDgsICAgMzYwLCAgIC0yMTYsICAxODAsICAgNDI4LCAgIC0yMDAsICAt MjEyLCAxNDgsCj4gKyAgICA5NiwgICAgMTQ4LCAgIDI4NCwgICAyMTYsICAgLTQxMiwgIC0zMjAs ICAxMjAsICAgLTMwMCwgIC0zODQsICAtNjA0LCAtNTcyLAo+ICsgICAgLTMzMiwgIC04LCAgICAt MTgwLCAgLTE3NiwgIDY5NiwgICAxMTYsICAgLTg4LCAgIDYyOCwgICA3NiwgICAgNDQsICAgLTUx NiwKPiArICAgIDI0MCwgICAtMjA4LCAgLTQwLCAgIDEwMCwgICAtNTkyLCAgMzQ0LCAgIC0zMDgs ICAtNDUyLCAgLTIyOCwgIDIwLCAgIDkxNiwKPiArICAgIC0xNzUyLCAtMTM2LCAgLTM0MCwgIC04 MDQsICAxNDAsICAgNDAsICAgIDUxMiwgICAzNDAsICAgMjQ4LCAgIDE4NCwgIC00OTIsCj4gKyAg ICA4OTYsICAgLTE1NiwgIDkzMiwgICAtNjI4LCAgMzI4LCAgIC02ODgsICAtNDQ4LCAgLTYxNiwg IC03NTIsICAtMTAwLCA1NjAsCj4gKyAgICAtMTAyMCwgMTgwLCAgIC04MDAsICAtNjQsICAgNzYs ICAgIDU3NiwgICAxMDY4LCAgMzk2LCAgIDY2MCwgICA1NTIsICAtMTA4LAo+ICsgICAgLTI4LCAg IDMyMCwgICAtNjI4LCAgMzEyLCAgIC05MiwgICAtOTIsICAgLTQ3MiwgIDI2OCwgICAxNiwgICAg NTYwLCAgNTE2LAo+ICsgICAgLTY3MiwgIC01MiwgICA0OTIsICAgLTEwMCwgIDI2MCwgICAzODQs ICAgMjg0LCAgIDI5MiwgICAzMDQsICAgLTE0OCwgODgsCj4gKyAgICAtMTUyLCAgMTAxMiwgIDEw NjQsICAtMjI4LCAgMTY0LCAgIC0zNzYsICAtNjg0LCAgNTkyLCAgIC0zOTIsICAxNTYsICAxOTYs Cj4gKyAgICAtNTI0LCAgLTY0LCAgIC04ODQsICAxNjAsICAgLTE3NiwgIDYzNiwgICA2NDgsICAg NDA0LCAgIC0zOTYsICAtNDM2LCA4NjQsCj4gKyAgICA0MjQsICAgLTcyOCwgIDk4OCwgICAtNjA0 LCAgOTA0LCAgIC01OTIsICAyOTYsICAgLTIyNCwgIDUzNiwgICAtMTc2LCAtOTIwLAo+ICsgICAg NDM2LCAgIC00OCwgICAxMTc2LCAgLTg4NCwgIDQxNiwgICAtNzc2LCAgLTgyNCwgIC04ODQsICA1 MjQsICAgLTU0OCwgLTU2NCwKPiArICAgIC02OCwgICAtMTY0LCAgLTk2LCAgIDY5MiwgICAzNjQs ICAgLTY5MiwgIC0xMDEyLCAtNjgsICAgMjYwLCAgIC00ODAsIDg3NiwKPiArICAgIC0xMTE2LCA0 NTIsICAgLTMzMiwgIC0zNTIsICA4OTIsICAgLTEwODgsIDEyMjAsICAtNjc2LCAgMTIsICAgIC0y OTIsIDI0NCwKPiArICAgIDQ5NiwgICAzNzIsICAgLTMyLCAgIDI4MCwgICAyMDAsICAgMTEyLCAg IC00NDAsICAtOTYsICAgMjQsICAgIC02NDQsIC0xODQsCj4gKyAgICA1NiwgICAgLTQzMiwgIDIy NCwgICAtOTgwLCAgMjcyLCAgIC0yNjAsICAxNDQsICAgLTQzNiwgIDQyMCwgICAzNTYsICAzNjQs Cj4gKyAgICAtNTI4LCAgNzYsICAgIDE3MiwgICAtNzQ0LCAgLTM2OCwgIDQwNCwgICAtNzUyLCAg LTQxNiwgIDY4NCwgICAtNjg4LCA3MiwKPiArICAgIDU0MCwgICA0MTYsICAgOTIsICAgIDQ0NCwg ICA0ODAsICAgLTcyLCAgIC0xNDE2LCAxNjQsICAgLTExNzIsIC02OCwgIDI0LAo+ICsgICAgNDI0 LCAgIDI2NCwgICAxMDQwLCAgMTI4LCAgIC05MTIsICAtNTI0LCAgLTM1NiwgIDY0LCAgICA4NzYs ICAgLTEyLCAgNCwKPiArICAgIC04OCwgICA1MzIsICAgMjcyLCAgIC01MjQsICAzMjAsICAgMjc2 LCAgIC01MDgsICA5NDAsICAgMjQsICAgIC00MDAsIC0xMjAsCj4gKyAgICA3NTYsICAgNjAsICAg IDIzNiwgICAtNDEyLCAgMTAwLCAgIDM3NiwgICAtNDg0LCAgNDAwLCAgIC0xMDAsICAtNzQwLCAt MTA4LAo+ICsgICAgLTI2MCwgIDMyOCwgICAtMjY4LCAgMjI0LCAgIC0yMDAsICAtNDE2LCAgMTg0 LCAgIC02MDQsICAtNTY0LCAgLTIwLCAgMjk2LAo+ICsgICAgNjAsICAgIDg5MiwgICAtODg4LCAg NjAsICAgIDE2NCwgICA2OCwgICAgLTc2MCwgIDIxNiwgICAtMjk2LCAgOTA0LCAgLTMzNiwKPiAr ICAgIC0yOCwgICA0MDQsICAgLTM1NiwgIC01NjgsICAtMjA4LCAgLTE0ODAsIC01MTIsICAyOTYs ICAgMzI4LCAgIC0zNjAsIC0xNjQsCj4gKyAgICAtMTU2MCwgLTc3NiwgIDExNTYsICAtNDI4LCAg MTY0LCAgIC01MDQsICAtMTEyLCAgMTIwLCAgIC0yMTYsICAtMTQ4LCAtMjY0LAo+ICsgICAgMzA4 LCAgIDMyLCAgICA2NCwgICAgLTcyLCAgIDcyLCAgICAxMTYsICAgMTc2LCAgIC02NCwgICAtMjcy LCAgNDYwLCAgLTUzNiwKPiArICAgIC03ODQsICAtMjgwLCAgMzQ4LCAgIDEwOCwgICAtNzUyLCAg LTEzMiwgIDUyNCwgICAtNTQwLCAgLTc3NiwgIDExNiwgIC0yOTYsCj4gKyAgICAtMTE5NiwgLTI4 OCwgIC01NjAsICAxMDQwLCAgLTQ3MiwgIDExNiwgICAtODQ4LCAgLTExMTYsIDExNiwgICA2MzYs ICA2OTYsCj4gKyAgICAyODQsICAgLTE3NiwgIDEwMTYsICAyMDQsICAgLTg2NCwgIC02NDgsICAt MjQ4LCAgMzU2LCAgIDk3MiwgICAtNTg0LCAtMjA0LAo+ICsgICAgMjY0LCAgIDg4MCwgICA1Mjgs ICAgLTI0LCAgIC0xODQsICAxMTYsICAgNDQ4LCAgIC0xNDQsICA4MjgsICAgNTI0LCAgMjEyLAo+ ICsgICAgLTIxMiwgIDUyLCAgICAxMiwgICAgMjAwLCAgIDI2OCwgICAtNDg4LCAgLTQwNCwgIC04 ODAsICA4MjQsICAgLTY3MiwgLTQwLAo+ICsgICAgOTA4LCAgIC0yNDgsICA1MDAsICAgNzE2LCAg IC01NzYsICA0OTIsICAgLTU3NiwgIDE2LCAgICA3MjAsICAgLTEwOCwgMzg0LAo+ICsgICAgMTI0 LCAgIDM0NCwgICAyODAsICAgNTc2LCAgIC01MDAsICAyNTIsICAgMTA0LCAgIC0zMDgsICAxOTYs ICAgLTE4OCwgLTgsCj4gKyAgICAxMjY4LCAgMjk2LCAgIDEwMzIsICAtMTE5NiwgNDM2LCAgIDMx NiwgICAzNzIsICAgLTQzMiwgIC0yMDAsICAtNjYwLCA3MDQsCj4gKyAgICAtMjI0LCAgNTk2LCAg IC0xMzIsICAyNjgsICAgMzIsICAgIC00NTIsICA4ODQsICAgMTA0LCAgIC0xMDA4LCA0MjQsICAt MTM0OCwKPiArICAgIC0yODAsICA0LCAgICAgLTExNjgsIDM2OCwgICA0NzYsICAgNjk2LCAgIDMw MCwgICAtOCwgICAgMjQsICAgIDE4MCwgIC01OTIsCj4gKyAgICAtMTk2LCAgMzg4LCAgIDMwNCwg ICA1MDAsICAgNzI0LCAgIC0xNjAsICAyNDQsICAgLTg0LCAgIDI3MiwgICAtMjU2LCAtNDIwLAo+ ICsgICAgMzIwLCAgIDIwOCwgICAtMTQ0LCAgLTE1NiwgIDE1NiwgICAzNjQsICAgNDUyLCAgIDI4 LCAgICA1NDAsICAgMzE2LCAgMjIwLAo+ICsgICAgLTY0NCwgIC0yNDgsICA0NjQsICAgNzIsICAg IDM2MCwgICAzMiwgICAgLTM4OCwgIDQ5NiwgICAtNjgwLCAgLTQ4LCAgMjA4LAo+ICsgICAgLTEx NiwgIC00MDgsICA2MCwgICAgLTYwNCwgIC0zOTIsICA1NDgsICAgLTg0MCwgIDc4NCwgICAtNDYw LCAgNjU2LCAgLTU0NCwKPiArICAgIC0zODgsICAtMjY0LCAgOTA4LCAgIC04MDAsICAtNjI4LCAg LTYxMiwgIC01NjgsICA1NzIsICAgLTIyMCwgIDE2NCwgIDI4OCwKPiArICAgIC0xNiwgICAtMzA4 LCAgMzA4LCAgIC0xMTIsICAtNjM2LCAgLTc2MCwgIDI4MCwgICAtNjY4LCAgNDMyLCAgIDM2NCwg IDI0MCwKPiArICAgIC0xOTYsICA2MDQsICAgMzQwLCAgIDM4NCwgICAxOTYsICAgNTkyLCAgIC00 NCwgICAtNTAwLCAgNDMyLCAgIC01ODAsIC0xMzIsCj4gKyAgICA2MzYsICAgLTc2LCAgIDM5Miwg ICA0LCAgICAgLTQxMiwgIDU0MCwgICA1MDgsICAgMzI4LCAgIC0zNTYsICAtMzYsICAxNiwKPiAr ICAgIC0yMjAsICAtNjQsICAgLTI0OCwgIC02MCwgICAyNCwgICAgLTE5MiwgIDM2OCwgICAxMDQw LCAgOTIsICAgIC0yNCwgIC0xMDQ0LAo+ICsgICAgLTMyLCAgIDQwLCAgICAxMDQsICAgMTQ4LCAg IDE5MiwgICAtMTM2LCAgLTUyMCwgIDU2LCAgICAtODE2LCAgLTIyNCwgNzMyLAo+ICsgICAgMzky LCAgIDM1NiwgICAyMTIsICAgLTgwLCAgIC00MjQsICAtMTAwOCwgLTMyNCwgIDU4OCwgICAtMTQ5 NiwgNTc2LCAgNDYwLAo+ICsgICAgLTgxNiwgIC04NDgsICA1NiwgICAgLTU4MCwgIC05MiwgICAt MTM3MiwgLTExMiwgIC00OTYsICAyMDAsICAgMzY0LCAgNTIsCj4gKyAgICAtMTQwLCAgNDgsICAg IC00OCwgICAtNjAsICAgODQsICAgIDcyLCAgICA0MCwgICAgMTMyLCAgIC0zNTYsICAtMjY4LCAt MTA0LAo+ICsgICAgLTI4NCwgIC00MDQsICA3MzIsICAgLTUyMCwgIDE2NCwgICAtMzA0LCAgLTU0 MCwgIDEyMCwgICAzMjgsICAgLTc2LCAgLTQ2MCwKPiArICAgIDc1NiwgICAzODgsICAgNTg4LCAg IDIzNiwgICAtNDM2LCAgLTcyLCAgIC0xNzYsICAtNDA0LCAgLTMxNiwgIC0xNDgsIDcxNiwKPiAr ICAgIC02MDQsICA0MDQsICAgLTcyLCAgIC04OCwgICAtODg4LCAgLTY4LCAgIDk0NCwgICA4OCwg ICAgLTIyMCwgIC0zNDQsIDk2MCwKPiArICAgIDQ3MiwgICA0NjAsICAgLTIzMiwgIDcwNCwgICAx MjAsICAgODMyLCAgIC0yMjgsICA2OTIsICAgLTUwOCwgIDEzMiwgIC00NzYsCj4gKyAgICA4NDQs ICAgLTc0OCwgIC0zNjQsICAtNDQsICAgMTExNiwgIC0xMTA0LCAtMTA1NiwgNzYsICAgIDQyOCwg ICA1NTIsICAtNjkyLAo+ICsgICAgNjAsICAgIDM1NiwgICA5NiwgICAgLTM4NCwgIC0xODgsICAt NjEyLCAgLTU3NiwgIDczNiwgICA1MDgsICAgODkyLCAgMzUyLAo+ICsgICAgLTExMzIsIDUwNCwg ICAtMjQsICAgLTM1MiwgIDMyNCwgICAzMzIsICAgLTYwMCwgIC0zMTIsICAyOTIsICAgNTA4LCAg LTE0NCwKPiArICAgIC04LCAgICA0ODQsICAgNDgsICAgIDI4NCwgICAtMjYwLCAgLTI0MCwgIDI1 NiwgICAtMTAwLCAgLTI5MiwgIC0yMDQsIC00NCwKPiArICAgIDQ3MiwgICAtMjA0LCAgOTA4LCAg IC0xODgsICAtMTAwMCwgLTI1NiwgIDkyLCAgICAxMTY0LCAgLTM5MiwgIDU2NCwgIDM1NiwKPiAr ICAgIDY1MiwgICAtMjgsICAgLTg4NCwgIDI1NiwgICA0ODQsICAgLTE5MiwgIDc2MCwgICAtMTc2 LCAgMzc2LCAgIC01MjQsIC00NTIsCj4gKyAgICAtNDM2LCAgODYwLCAgIC03MzYsICAyMTIsICAg MTI0LCAgIDUwNCwgICAtNDc2LCAgNDY4LCAgIDc2LCAgICAtNDcyLCA1NTIsCj4gKyAgICAtNjky LCAgLTk0NCwgIC02MjAsICA3NDAsICAgLTI0MCwgIDQwMCwgICAxMzIsICAgMjAsICAgIDE5Miwg ICAtMTk2LCAyNjQsCj4gKyAgICAtNjY4LCAgLTEwMTIsIC02MCwgICAyOTYsICAgLTMxNiwgIC04 MjgsICA3NiwgICAgLTE1NiwgIDI4NCwgICAtNzY4LCAtNDQ4LAo+ICsgICAgLTgzMiwgIDE0OCwg ICAyNDgsICAgNjUyLCAgIDYxNiwgICAxMjM2LCAgMjg4LCAgIC0zMjgsICAtNDAwLCAgLTEyNCwg NTg4LAo+ICsgICAgMjIwLCAgIDUyMCwgICAtNjk2LCAgMTAzMiwgIDc2OCwgICAtNzQwLCAgLTky LCAgIC0yNzIsICAyOTYsICAgNDQ4LCAgLTQ2NCwKPiArICAgIDQxMiwgICAtMjAwLCAgMzkyLCAg IDQ0MCwgICAtMjAwLCAgMjY0LCAgIC0xNTIsICAtMjYwLCAgMzIwLCAgIDEwMzIsIDIxNiwKPiAr ICAgIDMyMCwgICAtOCwgICAgLTY0LCAgIDE1NiwgICAtMTAxNiwgMTA4NCwgIDExNzIsICA1MzYs ICAgNDg0LCAgIC00MzIsIDEzMiwKPiArICAgIDM3MiwgICAtNTIsICAgLTI1NiwgIDg0LCAgICAx MTYsICAgLTM1MiwgIDQ4LCAgICAxMTYsICAgMzA0LCAgIC0zODQsIDQxMiwKPiArICAgIDkyNCwg ICAtMzAwLCAgNTI4LCAgIDYyOCwgICAxODAsICAgNjQ4LCAgIDQ0LCAgICAtOTgwLCAgLTIyMCwg IDEzMjAsIDQ4LAo+ICsgICAgMzMyLCAgIDc0OCwgICA1MjQsICAgLTI2OCwgIC03MjAsICA1NDAs ICAgLTI3NiwgIDU2NCwgICAtMzQ0LCAgLTIwOCwgLTE5NiwKPiArICAgIDQzNiwgICA4OTYsICAg ODgsICAgIC0zOTIsICAxMzIsICAgODAsICAgIC05NjQsICAtMjg4LCAgNTY4LCAgIDU2LCAgIC00 OCwKPiArICAgIC00NTYsICA4ODgsICAgOCwgICAgIDU1MiwgICAtMTU2LCAgLTI5MiwgIDk0OCwg ICAyODgsICAgMTI4LCAgIC03MTYsIC0yOTIsCj4gKyAgICAxMTkyLCAgLTE1MiwgIDg3NiwgICAz NTIsICAgLTYwMCwgIC0yNjAsICAtODEyLCAgLTQ2OCwgIC0yOCwgICAtMTIwLCAtMzIsCj4gKyAg ICAtNDQsICAgMTI4NCwgIDQ5NiwgICAxOTIsICAgNDY0LCAgIDMxMiwgICAtNzYsICAgLTUxNiwg IC0zODAsICAtNDU2LCAtMTAxMiwKPiArICAgIC00OCwgICAzMDgsICAgLTE1NiwgIDM2LCAgICA0 OTIsICAgLTE1NiwgIC04MDgsICAxODgsICAgMTY1MiwgIDY4LCAgIC0xMjAsCj4gKyAgICAtMTE2 LCAgMzE2LCAgIDE2MCwgICAtMTQwLCAgMzUyLCAgIDgwOCwgICAtNDE2LCAgNTkyLCAgIDMxNiwg ICAtNDgwLCA1NiwKPiArICAgIDUyOCwgICAtMjA0LCAgLTU2OCwgIDM3MiwgICAtMjMyLCAgNzUy LCAgIC0zNDQsICA3NDQsICAgLTQsICAgIDMyNCwgIC00MTYsCj4gKyAgICAtNjAwLCAgNzY4LCAg IDI2OCwgICAtMjQ4LCAgLTg4LCAgIC0xMzIsICAtNDIwLCAgLTQzMiwgIDgwLCAgICAtMjg4LCA0 MDQsCj4gKyAgICAtMzE2LCAgLTEyMTYsIC01ODgsICA1MjAsICAgLTEwOCwgIDkyLCAgICAtMzIw LCAgMzY4LCAgIC00ODAsICAtMjE2LCAtOTIsCj4gKyAgICAxNjg4LCAgLTMwMCwgIDE4MCwgICAx MDIwLCAgLTE3NiwgIDgyMCwgICAtNjgsICAgLTIyOCwgIC0yNjAsICA0MzYsICAtOTA0LAo+ICsg ICAgMjAsICAgIDQwLCAgICAtNTA4LCAgNDQwLCAgIC03MzYsICAzMTIsICAgMzMyLCAgIDIwNCwg ICA3NjAsICAgLTM3MiwgNzI4LAo+ICsgICAgOTYsICAgIC0yMCwgICAtNjMyLCAgLTUyMCwgIC01 NjAsICAzMzYsICAgMTA3NiwgIC02NCwgICAtNTMyLCAgNzc2LCAgNTg0LAo+ICsgICAgMTkyLCAg IDM5NiwgICAtNzI4LCAgLTUyMCwgIDI3NiwgICAtMTg4LCAgODAsICAgIC01MiwgICAtNjEyLCAg LTI1MiwgLTQ4LAo+ICsgICAgNjQ4LCAgIDIxMiwgICAtNjg4LCAgMjI4LCAgIC01MiwgICAtMjYw LCAgNDI4LCAgIC00MTIsICAtMjcyLCAgLTQwNCwgMTgwLAo+ICsgICAgODE2LCAgIC03OTYsICA0 OCwgICAgMTUyLCAgIDQ4NCwgICAtODgsICAgLTIxNiwgIDk4OCwgICA2OTYsICAgMTg4LCAgLTUy OCwKPiArICAgIDY0OCwgICAtMTE2LCAgLTE4MCwgIDMxNiwgICA0NzYsICAgMTIsICAgIC01NjQs ICA5NiwgICAgNDc2LCAgIC0yNTIsIC0zNjQsCj4gKyAgICAtMzc2LCAgLTM5MiwgIDU1NiwgICAt MjU2LCAgLTU3NiwgIDI2MCwgICAtMzUyLCAgMTIwLCAgIC0xNiwgICAtMTM2LCAtMjYwLAo+ICsg ICAgLTQ5MiwgIDcyLCAgICA1NTYsICAgNjYwLCAgIDU4MCwgICA2MTYsICAgNzcyLCAgIDQzNiwg ICA0MjQsICAgLTMyLCAgLTMyNCwKPiArICAgIC0xMjY4LCA0MTYsICAgLTMyNCwgIC04MCwgICA5 MjAsICAgMTYwLCAgIDIyOCwgICA3MjQsICAgMzIsICAgIC01MTYsIDY0LAo+ICsgICAgMzg0LCAg IDY4LCAgICAtMTI4LCAgMTM2LCAgIDI0MCwgICAyNDgsICAgLTIwNCwgIC02OCwgICAyNTIsICAg LTkzMiwgLTEyMCwKPiArICAgIC00ODAsICAtNjI4LCAgLTg0LCAgIDE5MiwgICA4NTIsICAgLTQw NCwgIC0yODgsICAtMTMyLCAgMjA0LCAgIDEwMCwgIDE2OCwKPiArICAgIC02OCwgICAtMTk2LCAg LTg2OCwgIDQ2MCwgICAxMDgwLCAgMzgwLCAgIC04MCwgICAyNDQsICAgMCwgICAgIDQ4NCwgIC04 ODgsCj4gKyAgICA2NCwgICAgMTg0LCAgIDM1MiwgICA2MDAsICAgNDYwLCAgIDE2NCwgICA2MDQs ICAgLTE5NiwgIDMyMCwgICAtNjQsICA1ODgsCj4gKyAgICAtMTg0LCAgMjI4LCAgIDEyLCAgICAz NzIsICAgNDgsICAgIC04NDgsICAtMzQ0LCAgMjI0LCAgIDIwOCwgICAtMjAwLCA0ODQsCj4gKyAg ICAxMjgsICAgLTIwLCAgIDI3MiwgICAtNDY4LCAgLTg0MCwgIDM4NCwgICAyNTYsICAgLTcyMCwg IC01MjAsICAtNDY0LCAtNTgwLAo+ICsgICAgMTEyLCAgIC0xMjAsICA2NDQsICAgLTM1NiwgIC0y MDgsICAtNjA4LCAgLTUyOCwgIDcwNCwgICA1NjAsICAgLTQyNCwgMzkyLAo+ICsgICAgODI4LCAg IDQwLCAgICA4NCwgICAgMjAwLCAgIC0xNTIsICAwLCAgICAgLTE0NCwgIDU4NCwgICAyODAsICAg LTEyMCwgODAsCj4gKyAgICAtNTU2LCAgLTk3MiwgIC0xOTYsICAtNDcyLCAgNzI0LCAgIDgwLCAg ICAxNjgsICAgLTMyLCAgIDg4LCAgICAxNjAsICAtNjg4LAo+ICsgICAgMCwgICAgIDE2MCwgICAz NTYsICAgMzcyLCAgIC03NzYsICA3NDAsICAgLTEyOCwgIDY3NiwgICAtMjQ4LCAgLTQ4MCwgNCwK PiArICAgIC0zNjQsICA5NiwgICAgNTQ0LCAgIDIzMiwgICAtMTAzMiwgOTU2LCAgIDIzNiwgICAz NTYsICAgMjAsICAgIC00MCwgIDMwMCwKPiArICAgIDI0LCAgICAtNjc2LCAgLTU5NiwgIDEzMiwg ICAxMTIwLCAgLTEwNCwgIDUzMiwgICAtMTA5NiwgNTY4LCAgIDY0OCwgIDQ0NCwKPiArICAgIDUw OCwgICAzODAsICAgMTg4LCAgIC0zNzYsICAtNjA0LCAgMTQ4OCwgIDQyNCwgICAyNCwgICAgNzU2 LCAgIC0yMjAsIC0xOTIsCj4gKyAgICA3MTYsICAgMTIwLCAgIDkyMCwgICA2ODgsICAgMTY4LCAg IDQ0LCAgICAtNDYwLCAgNTY4LCAgIDI4NCwgICAxMTQ0LCAxMTYwLAo+ICsgICAgNjAwLCAgIDQy NCwgICA4ODgsICAgNjU2LCAgIC0zNTYsICAtMzIwLCAgMjIwLCAgIDMxNiwgICAtMTc2LCAgLTcy NCwgLTE4OCwKPiArICAgIC04MTYsICAtNjI4LCAgLTM0OCwgIC0yMjgsICAtMzgwLCAgMTAxMiwg IC00NTIsICAtNjYwLCAgNzM2LCAgIDkyOCwgIDQwNCwKPiArICAgIC02OTYsICAtNzIsICAgLTI2 OCwgIC04OTIsICAxMjgsICAgMTg0LCAgIC0zNDQsICAtNzgwLCAgMzYwLCAgIDMzNiwgIDQwMCwK PiArICAgIDM0NCwgICA0MjgsICAgNTQ4LCAgIC0xMTIsICAxMzYsICAgLTIyOCwgIC0yMTYsICAt ODIwLCAgLTUxNiwgIDM0MCwgIDkyLAo+ICsgICAgLTEzNiwgIDExNiwgICAtMzAwLCAgMzc2LCAg IC0yNDQsICAxMDAsICAgLTMxNiwgIC01MjAsICAtMjg0LCAgLTEyLCAgODI0LAo+ICsgICAgMTY0 LCAgIC01NDgsICAtMTgwLCAgLTEyOCwgIDExNiwgICAtOTI0LCAgLTgyOCwgIDI2OCwgICAtMzY4 LCAgLTU4MCwgNjIwLAo+ICsgICAgMTkyLCAgIDE2MCwgICAwLCAgICAgLTE2NzYsIDEwNjgsICA0 MjQsICAgLTU2LCAgIC0zNjAsICA0NjgsICAgLTE1NiwgNzIwLAo+ICsgICAgMjg4LCAgIC01Mjgs ICA1NTYsICAgLTM2NCwgIDU0OCwgICAtMTQ4LCAgNTA0LCAgIDMxNiwgICAxNTIsICAgLTY0OCwg LTYyMCwKPiArICAgIC02ODQsICAtMjQsICAgLTM3NiwgIC0zODQsICAtMTA4LCAgLTkyMCwgIC0x MDMyLCA3NjgsICAgMTgwLCAgIC0yNjQsIC01MDgsCj4gKyAgICAtMTI2OCwgLTI2MCwgIC02MCwg ICAzMDAsICAgLTI0MCwgIDk4OCwgICA3MjQsICAgLTM3NiwgIC01NzYsICAtMjEyLCAtNzM2LAo+ ICsgICAgNTU2LCAgIDE5MiwgICAxMDkyLCAgLTYyMCwgIC04ODAsICAzNzYsICAgLTU2LCAgIC00 LCAgICAtMjE2LCAgLTMyLCAgODM2LAo+ICsgICAgMjY4LCAgIDM5NiwgICAxMzMyLCAgODY0LCAg IC02MDAsICAxMDAsICAgNTYsICAgIC00MTIsICAtOTIsICAgMzU2LCAgMTgwLAo+ICsgICAgODg0 LCAgIC00NjgsICAtNDM2LCAgMjkyLCAgIC0zODgsICAtODA0LCAgLTcwNCwgIC04NDAsICAzNjgs ICAgLTM0OCwgMTQwLAo+ICsgICAgLTcyNCwgIDE1MzYsICA5NDAsICAgMzcyLCAgIDExMiwgICAt MzcyLCAgNDM2LCAgIC00ODAsICAxMTM2LCAgMjk2LCAgLTMyLAo+ICsgICAgLTIyOCwgIDEzMiwg ICAtNDgsICAgLTIyMCwgIDg2OCwgICAtMTAxNiwgLTYwLCAgIC0xMDQ0LCAtNDY0LCAgMzI4LCAg OTE2LAo+ICsgICAgMjQ0LCAgIDEyLCAgICAtNzM2LCAgLTI5NiwgIDM2MCwgICA0NjgsICAgLTM3 NiwgIC0xMDgsICAtOTIsICAgNzg4LCAgMzY4LAo+ICsgICAgLTU2LCAgIDU0NCwgICA0MDAsICAg LTY3MiwgIC00MjAsICA3MjgsICAgMTYsICAgIDMyMCwgICA0NCwgICAgLTI4NCwgLTM4MCwKPiAr ICAgIC03OTYsICA0ODgsICAgMTMyLCAgIDIwNCwgICAtNTk2LCAgLTM3MiwgIDg4LCAgICAtMTUy LCAgLTkwOCwgIC02MzYsIC01NzIsCj4gKyAgICAtNjI0LCAgLTExNiwgIC02OTIsICAtMjAwLCAg LTU2LCAgIDI3NiwgICAtODgsICAgNDg0LCAgIC0zMjQsICA5NDgsICA4NjQsCj4gKyAgICAxMDAw LCAgLTQ1NiwgIC0xODQsICAtMjc2LCAgMjkyLCAgIC0yOTYsICAxNTYsICAgNjc2LCAgIDMyMCwg ICAxNjAsICA5MDgsCj4gKyAgICAtODQsICAgLTEyMzYsIC0yODgsICAtMTE2LCAgMjYwLCAgIC0z NzIsICAtNjQ0LCAgNzMyLCAgIC03NTYsICAtOTYsICA4NCwKPiArICAgIDM0NCwgICAtNTIwLCAg MzQ4LCAgIC02ODgsICAyNDAsICAgLTg0LCAgIDIxNiwgICAtMTA0NCwgLTEzNiwgIC02NzYsIC0z OTYsCj4gKyAgICAtMTUwMCwgOTYwLCAgIC00MCwgICAxNzYsICAgMTY4LCAgIDE1MTYsICA0MjAs ICAgLTUwNCwgIC0zNDQsICAtMzY0LCAtMzYwLAo+ICsgICAgMTIxNiwgIC05NDAsICAtMzgwLCAg LTIxMiwgIDI1MiwgICAtNjYwLCAgLTcwOCwgIDQ4NCwgICAtNDQ0LCAgLTE1MiwgOTI4LAo+ICsg ICAgLTEyMCwgIDExMTIsICA0NzYsICAgLTI2MCwgIDU2MCwgICAtMTQ4LCAgLTM0NCwgIDEwOCwg ICAtMTk2LCAgMjI4LCAgLTI4OCwKPiArICAgIDUwNCwgICA1NjAsICAgLTMyOCwgIC04OCwgICAy ODgsICAgLTEwMDgsIDQ2MCwgICAtMjI4LCAgNDY4LCAgIC04MzYsIC0xOTYsCj4gKyAgICA3Niwg ICAgMzg4LCAgIDIzMiwgICA0MTIsICAgLTExNjgsIC03MTYsICAtNjQ0LCAgNzU2LCAgIC0xNzIs ICAtMzU2LCAtNTA0LAo+ICsgICAgMTE2LCAgIDQzMiwgICA1MjgsICAgNDgsICAgIDQ3NiwgICAt MTY4LCAgLTYwOCwgIDQ0OCwgICAxNjAsICAgLTUzMiwgLTI3MiwKPiArICAgIDI4LCAgICAtNjc2 LCAgLTEyLCAgIDgyOCwgICA5ODAsICAgNDU2LCAgIDUyMCwgICAxMDQsICAgLTEwNCwgIDI1Niwg IC0zNDQsCj4gKyAgICAtNCwgICAgLTI4LCAgIC0zNjgsICAtNTIsICAgLTUyNCwgIC01NzIsICAt NTU2LCAgLTIwMCwgIDc2OCwgICAxMTI0LCAtMjA4LAo+ICsgICAgLTUxMiwgIDE3NiwgICAyMzIs ICAgMjQ4LCAgIC0xNDgsICAtODg4LCAgNjA0LCAgIC02MDAsICAtMzA0LCAgODA0LCAgLTE1NiwK PiArICAgIC0yMTIsICA0ODgsICAgLTE5MiwgIC04MDQsICAtMjU2LCAgMzY4LCAgIC0zNjAsICAt OTE2LCAgLTMyOCwgIDIyOCwgIC0yNDAsCj4gKyAgICAtNDQ4LCAgLTQ3MiwgIDg1NiwgICAtNTU2 LCAgLTM2NCwgIDU3MiwgICAtMTIsICAgLTE1NiwgIC0zNjgsICAtMzQwLCA0MzIsCj4gKyAgICAy NTIsICAgLTc1MiwgIC0xNTIsICAyODgsICAgMjY4LCAgIC01ODAsICAtODQ4LCAgLTU5MiwgIDEw OCwgICAtNzYsICAyNDQsCj4gKyAgICAzMTIsICAgLTcxNiwgIDU5MiwgICAtODAsICAgNDM2LCAg IDM2MCwgICA0LCAgICAgLTI0OCwgIDE2MCwgICA1MTYsICA1ODQsCj4gKyAgICA3MzIsICAgNDQs ICAgIC00NjgsICAtMjgwLCAgLTI5MiwgIC0xNTYsICAtNTg4LCAgMjgsICAgIDMwOCwgICA5MTIs ICAyNCwKPiArICAgIDEyNCwgICAxNTYsICAgMTgwLCAgIC0yNTIsICA5NDQsICAgLTkyNCwgIC03 NzIsICAtNTIwLCAgLTQyOCwgIC02MjQsIDMwMCwKPiArICAgIC0yMTIsICAtMTE0NCwgMzIsICAg IC03MjQsICA4MDAsICAgLTExMjgsIC0yMTIsICAtMTI4OCwgLTg0OCwgIDE4MCwgIC00MTYsCj4g KyAgICA0NDAsICAgMTkyLCAgIC01NzYsICAtNzkyLCAgLTc2LCAgIC0xMDgwLCA4MCwgICAgLTUz MiwgIC0zNTIsICAtMTMyLCAzODAsCj4gKyAgICAtODIwLCAgMTQ4LCAgIDExMTIsICAxMjgsICAg MTY0LCAgIDQ1NiwgICA3MDAsICAgLTkyNCwgIDE0NCwgICAtNjY4LCAtMzg0LAo+ICsgICAgNjQ4 LCAgIC04MzIsICA1MDgsICAgNTUyLCAgIC01MiwgICAtMTAwLCAgLTY1NiwgIDIwOCwgICAtNTY4 LCAgNzQ4LCAgLTg4LAo+ICsgICAgNjgwLCAgIDIzMiwgICAzMDAsICAgMTkyLCAgIC00MDgsICAt MTAxMiwgLTE1MiwgIC0yNTIsICAtMjY4LCAgMjcyLCAgLTg3NiwKPiArICAgIC02NjQsICAtNjQ4 LCAgLTMzMiwgIC0xMzYsICAxNiwgICAgMTIsICAgIDExNTIsICAtMjgsICAgMzMyLCAgIC01MzYs IDMyMCwKPiArICAgIC02NzIsICAtNDYwLCAgLTMxNiwgIDUzMiwgICAtMjYwLCAgMjI4LCAgIC00 MCwgICAxMDUyLCAgLTgxNiwgIDE4MCwgIDg4LAo+ICsgICAgLTQ5NiwgIC01NTYsICAtNjcyLCAg LTM2OCwgIDQyOCwgICA5MiwgICAgMzU2LCAgIDQwNCwgICAtNDA4LCAgMjUyLCAgMTk2LAo+ICsg ICAgLTE3NiwgIC01NTYsICA3OTIsICAgMjY4LCAgIDMyLCAgICAzNzIsICAgNDAsICAgIDk2LCAg ICAtMzMyLCAgMzI4LCAgMTIwLAo+ICsgICAgMzcyLCAgIC05MDAsICAtNDAsICAgNDcyLCAgIC0y NjQsICAtNTkyLCAgOTUyLCAgIDEyOCwgICA2NTYsICAgMTEyLCAgNjY0LAo+ICsgICAgLTIzMiwg IDQyMCwgICA0LCAgICAgLTM0NCwgIC00NjQsICA1NTYsICAgMjQ0LCAgIC00MTYsICAtMzIsICAg MjUyLCAgMCwKPiArICAgIC00MTIsICAxODgsICAgLTY5NiwgIDUwOCwgICAtNDc2LCAgMzI0LCAg IC0xMDk2LCA2NTYsICAgLTMxMiwgIDU2MCwgIDI2NCwKPiArICAgIC0xMzYsICAzMDQsICAgMTYw LCAgIC02NCwgICAtNTgwLCAgMjQ4LCAgIDMzNiwgICAtNzIwLCAgNTYwLCAgIC0zNDgsIC0yODgs Cj4gKyAgICAtMjc2LCAgLTE5NiwgIC01MDAsICA4NTIsICAgLTU0NCwgIC0yMzYsICAtMTEyOCwg LTk5MiwgIC03NzYsICAxMTYsICA1NiwKPiArICAgIDUyLCAgICA4NjAsICAgODg0LCAgIDIxMiwg ICAtMTIsICAgMTY4LCAgIDEwMjAsICA1MTIsICAgLTU1MiwgIDkyNCwgIC0xNDgsCj4gKyAgICA3 MTYsICAgMTg4LCAgIDE2NCwgICAtMzQwLCAgLTUyMCwgIC0xODQsICA4ODAsICAgLTE1MiwgIC02 ODAsICAtMjA4LCAtMTE1NiwKPiArICAgIC0zMDAsICAtNTI4LCAgLTQ3MiwgIDM2NCwgICAxMDAs ICAgLTc0NCwgIC0xMDU2LCAtMzIsICAgNTQwLCAgIDI4MCwgIDE0NCwKPiArICAgIC02NzYsICAt MzIsICAgLTIzMiwgIC0yODAsICAtMjI0LCAgOTYsICAgIDU2OCwgICAtNzYsICAgMTcyLCAgIDE0 OCwgIDE0OCwKPiArICAgIDEwNCwgICAzMiwgICAgLTI5NiwgIC0zMiwgICA3ODgsICAgLTgwLCAg IDMyLCAgICAtMTYsICAgMjgwLCAgIDI4OCwgIDk0NCwKPiArICAgIDQyOCwgICAtNDg0Cj4gK307 Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uaCBiL2xpYmF2Y29kZWMv YW9tX2ZpbG1fZ3JhaW4uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAuLjVkNzcyYmQ3ZDE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2Y29kZWMvYW9tX2Zp bG1fZ3JhaW4uaAo+IEBAIC0wLDAgKzEsMzggQEAKPiArLyoKPiArICogQU9NIGZpbG0gZ3JhaW4g c3ludGhlc2lzCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgSGFhcyA8ZmZtcGVnQGhh YXNuLnh5ej4KPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsvKioKPiArICogQGZpbGUKPiArICogQU9N IGZpbG0gZ3JhaW4gc3ludGhlc2lzLgo+ICsgKiBAYXV0aG9yIE5pa2xhcyBIYWFzIDxmZm1wZWdA aGFhc24ueHl6Pgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgQVZDT0RFQ19BT01fRklMTV9HUkFJTl9I Cj4gKyNkZWZpbmUgQVZDT0RFQ19BT01fRklMTV9HUkFJTl9ICj4gKwo+ICsjaW5jbHVkZSAibGli YXZ1dGlsL2ZpbG1fZ3JhaW5fcGFyYW1zLmgiCj4gKwo+ICsvLyBTeW50aGVzaXplcyBmaWxtIGdy YWluIG9uIHRvcCBvZiBgaW5gIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCB0byBgb3V0YC4gYG91dGAK PiArLy8gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYW5kIHNldCB0byB0aGUgc2Ft ZSBzaXplIGFuZCBmb3JtYXQgYXMgYGluYC4KPiAraW50IGZmX2FvbV9hcHBseV9maWxtX2dyYWlu KEFWRnJhbWUgKm91dCwgY29uc3QgQVZGcmFtZSAqaW4sCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFtcyAqcGFyYW1zKTsKPiArCj4gKyNlbmRpZiAv KiBBVkNPREVDX0FPTV9GSUxNX0dSQUlOX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9h b21fZmlsbV9ncmFpbl90ZW1wbGF0ZS5jIGIvbGliYXZjb2RlYy9hb21fZmlsbV9ncmFpbl90ZW1w bGF0ZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMC4uNWY5ZjI5 ZjFmYWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZjb2RlYy9hb21fZmlsbV9ncmFpbl90 ZW1wbGF0ZS5jCj4gQEAgLTAsMCArMSw1NzcgQEAKPiArLyoKPiArICogQU9NIGZpbG0gZ3JhaW4g c3ludGhlc2lzCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMyBOaWtsYXMgSGFhcyA8ZmZtcGVnQGhh YXNuLnh5ej4KPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OCwgTmlrbGFzIEhhYXMKPiArICogQ29weXJpZ2h0IMKpIDIwMTgsIFZpZGVvTEFOIGFuZCBkYXYx ZCBhdXRob3JzCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4LCBUd28gT3Jpb2xlcywgTExDCj4gKyAq IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMgYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCj4gKyAqICAgIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKgo+ICsg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UsCj4gKyAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KPiArICogICAg YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4g KyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ RUQKPiArICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFSRQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCj4gKyAq IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S IENPTlNFUVVFTlRJQUwgREFNQUdFUwo+ICsgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cj4gKyAqIExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP V0VWRVIgQ0FVU0VEIEFORAo+ICsgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAo+ICsgKiAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV U0UgT0YgVEhJUwo+ICsgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiYml0X2RlcHRoX3Rl bXBsYXRlLmMiCj4gKwo+ICsjdW5kZWYgZW50cnkKPiArI3VuZGVmIGJpdGRlcHRoCj4gKyN1bmRl ZiBiaXRkZXB0aF9tYXgKPiArI3VuZGVmIEhCRF9ERUNMCj4gKyN1bmRlZiBIQkRfQ0FMTAo+ICsj dW5kZWYgU0NBTElOR19TSVpFCj4gKwo+ICsjaWYgQklUX0RFUFRIID4gOAo+ICsjIGRlZmluZSBl bnRyeSBpbnQxNl90Cj4gKyMgZGVmaW5lIGJpdGRlcHRoX21heCAoKDEgPDwgYml0ZGVwdGgpIC0g MSkKPiArIyBkZWZpbmUgSEJEX0RFQ0wgLCBjb25zdCBpbnQgYml0ZGVwdGgKPiArIyBkZWZpbmUg SEJEX0NBTEwgLCBiaXRkZXB0aAo+ICsjIGRlZmluZSBTQ0FMSU5HX1NJWkUgNDA5Ngo+ICsjZWxz ZQo+ICsjIGRlZmluZSBlbnRyeSBpbnQ4X3QKPiArIyBkZWZpbmUgYml0ZGVwdGggOAo+ICsjIGRl ZmluZSBiaXRkZXB0aF9tYXggVUlOVDhfTUFYCj4gKyMgZGVmaW5lIEhCRF9ERUNMCj4gKyMgZGVm aW5lIEhCRF9DQUxMCj4gKyMgZGVmaW5lIFNDQUxJTkdfU0laRSAyNTYKPiArI2VuZGlmCj4gKwo+ ICtzdGF0aWMgdm9pZCBGVU5DKGdlbmVyYXRlX2dyYWluX3lfYykoZW50cnkgYnVmW11bR1JBSU5f V0lEVEhdLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZG aWxtR3JhaW5QYXJhbXMgKmNvbnN0IHBhcmFtcwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSEJEX0RFQ0wpCj4gK3sKPiArICAgIGNvbnN0IEFWRmlsbUdyYWluQU9NUGFy YW1zICpjb25zdCBkYXRhID0gJnBhcmFtcy0+Y29kZWMuYW9tOwo+ICsgICAgY29uc3QgaW50IGJp dGRlcHRoX21pbl84ID0gYml0ZGVwdGggLSA4Owo+ICsgICAgdW5zaWduZWQgc2VlZCA9IHBhcmFt cy0+c2VlZDsKPiArICAgIGNvbnN0IGludCBzaGlmdCA9IDQgLSBiaXRkZXB0aF9taW5fOCArIGRh dGEtPmdyYWluX3NjYWxlX3NoaWZ0Owo+ICsgICAgY29uc3QgaW50IGdyYWluX2N0ciA9IDEyOCA8 PCBiaXRkZXB0aF9taW5fODsKPiArICAgIGNvbnN0IGludCBncmFpbl9taW4gPSAtZ3JhaW5fY3Ry LCBncmFpbl9tYXggPSBncmFpbl9jdHIgLSAxOwo+ICsKPiArICAgIGNvbnN0IGludCBhcl9wYWQg PSAzOwo+ICsgICAgY29uc3QgaW50IGFyX2xhZyA9IGRhdGEtPmFyX2NvZWZmX2xhZzsKPiArCj4g KyAgICBmb3IgKGludCB5ID0gMDsgeSA8IEdSQUlOX0hFSUdIVDsgeSsrKSB7Cj4gKyAgICAgICAg Zm9yIChpbnQgeCA9IDA7IHggPCBHUkFJTl9XSURUSDsgeCsrKSB7Cj4gKyAgICAgICAgICAgIGNv bnN0IGludCB2YWx1ZSA9IGdldF9yYW5kb21fbnVtYmVyKDExLCAmc2VlZCk7Cj4gKyAgICAgICAg ICAgIGJ1Zlt5XVt4XSA9IHJvdW5kMihnYXVzc2lhbl9zZXF1ZW5jZVsgdmFsdWUgXSwgc2hpZnQp Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBmb3IgKGludCB5ID0gYXJfcGFkOyB5 IDwgR1JBSU5fSEVJR0hUOyB5KyspIHsKPiArICAgICAgICBmb3IgKGludCB4ID0gYXJfcGFkOyB4 IDwgR1JBSU5fV0lEVEggLSBhcl9wYWQ7IHgrKykgewo+ICsgICAgICAgICAgICBjb25zdCBpbnQ4 X3QgKmNvZWZmID0gZGF0YS0+YXJfY29lZmZzX3k7Cj4gKyAgICAgICAgICAgIGludCBzdW0gPSAw LCBncmFpbjsKPiArICAgICAgICAgICAgZm9yIChpbnQgZHkgPSAtYXJfbGFnOyBkeSA8PSAwOyBk eSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBmb3IgKGludCBkeCA9IC1hcl9sYWc7IGR4IDw9IGFy X2xhZzsgZHgrKykgewo+ICsgICAgICAgICAgICAgICAgICAgIGlmICghZHggJiYgIWR5KQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICBzdW0g Kz0gKihjb2VmZisrKSAqIGJ1Zlt5ICsgZHldW3ggKyBkeF07Cj4gKyAgICAgICAgICAgICAgICB9 Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGdyYWluID0gYnVmW3ldW3hdICsg cm91bmQyKHN1bSwgZGF0YS0+YXJfY29lZmZfc2hpZnQpOwo+ICsgICAgICAgICAgICBidWZbeV1b eF0gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7Cj4gKyAgICAgICAgfQo+ ICsgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtGVU5DKGdlbmVyYXRlX2dyYWluX3V2 X2MpKGVudHJ5IGJ1ZltdW0dSQUlOX1dJRFRIXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBlbnRyeSBidWZfeVtdW0dSQUlOX1dJRFRIXSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFtcyAqY29uc3QgcGFyYW1zLCBjb25zdCBpbnRw dHJfdCB1diwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc3VieCwgY29u c3QgaW50IHN1YnkgSEJEX0RFQ0wpCj4gK3sKPiArICAgIGNvbnN0IEFWRmlsbUdyYWluQU9NUGFy YW1zICpjb25zdCBkYXRhID0gJnBhcmFtcy0+Y29kZWMuYW9tOwo+ICsgICAgY29uc3QgaW50IGJp dGRlcHRoX21pbl84ID0gYml0ZGVwdGggLSA4Owo+ICsgICAgdW5zaWduZWQgc2VlZCA9IHBhcmFt cy0+c2VlZCBeICh1diA/IDB4NDlkOCA6IDB4YjUyNCk7Cj4gKyAgICBjb25zdCBpbnQgc2hpZnQg PSA0IC0gYml0ZGVwdGhfbWluXzggKyBkYXRhLT5ncmFpbl9zY2FsZV9zaGlmdDsKPiArICAgIGNv bnN0IGludCBncmFpbl9jdHIgPSAxMjggPDwgYml0ZGVwdGhfbWluXzg7Cj4gKyAgICBjb25zdCBp bnQgZ3JhaW5fbWluID0gLWdyYWluX2N0ciwgZ3JhaW5fbWF4ID0gZ3JhaW5fY3RyIC0gMTsKPiAr Cj4gKyAgICBjb25zdCBpbnQgY2hyb21hVyA9IHN1YnggPyBTVUJfR1JBSU5fV0lEVEggIDogR1JB SU5fV0lEVEg7Cj4gKyAgICBjb25zdCBpbnQgY2hyb21hSCA9IHN1YnkgPyBTVUJfR1JBSU5fSEVJ R0hUIDogR1JBSU5fSEVJR0hUOwo+ICsKPiArICAgIGNvbnN0IGludCBhcl9wYWQgPSAzOwo+ICsg ICAgY29uc3QgaW50IGFyX2xhZyA9IGRhdGEtPmFyX2NvZWZmX2xhZzsKPiArCj4gKyAgICBmb3Ig KGludCB5ID0gMDsgeSA8IGNocm9tYUg7IHkrKykgewo+ICsgICAgICAgIGZvciAoaW50IHggPSAw OyB4IDwgY2hyb21hVzsgeCsrKSB7Cj4gKyAgICAgICAgICAgIGNvbnN0IGludCB2YWx1ZSA9IGdl dF9yYW5kb21fbnVtYmVyKDExLCAmc2VlZCk7Cj4gKyAgICAgICAgICAgIGJ1Zlt5XVt4XSA9IHJv dW5kMihnYXVzc2lhbl9zZXF1ZW5jZVsgdmFsdWUgXSwgc2hpZnQpOwo+ICsgICAgICAgIH0KPiAr ICAgIH0KPiArCj4gKyAgICBmb3IgKGludCB5ID0gYXJfcGFkOyB5IDwgY2hyb21hSDsgeSsrKSB7 Cj4gKyAgICAgICAgZm9yIChpbnQgeCA9IGFyX3BhZDsgeCA8IGNocm9tYVcgLSBhcl9wYWQ7IHgr Kykgewo+ICsgICAgICAgICAgICBjb25zdCBpbnQ4X3QgKmNvZWZmID0gZGF0YS0+YXJfY29lZmZz X3V2W3V2XTsKPiArICAgICAgICAgICAgaW50IHN1bSA9IDAsIGdyYWluOwo+ICsgICAgICAgICAg ICBmb3IgKGludCBkeSA9IC1hcl9sYWc7IGR5IDw9IDA7IGR5KyspIHsKPiArICAgICAgICAgICAg ICAgIGZvciAoaW50IGR4ID0gLWFyX2xhZzsgZHggPD0gYXJfbGFnOyBkeCsrKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBmaW5hbCAoY3VycmVudCkgcGl4ZWwsIHdlIG5lZWQg dG8gYWRkIGluIHRoZQo+ICsgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyaWJ1dGlvbiBmcm9t IHRoZSBsdW1hIGdyYWluIHRleHR1cmUKPiArICAgICAgICAgICAgICAgICAgICBpZiAoIWR4ICYm ICFkeSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbHVtYVggPSAoKHgg LSBhcl9wYWQpIDw8IHN1YngpICsgYXJfcGFkOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBpbnQgbHVtYVkgPSAoKHkgLSBhcl9wYWQpIDw8IHN1YnkpICsgYXJfcGFkOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgbHVtYSA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICghZGF0YS0+bnVtX3lfcG9pbnRzKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9 IHN1Ynk7IGkrKykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9 IDA7IGogPD0gc3VieDsgaisrKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bHVtYSArPSBidWZfeVtsdW1hWSArIGldW2x1bWFYICsgal07Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgbHVtYSA9IHJvdW5kMihsdW1hLCBzdWJ4ICsgc3VieSk7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHN1bSArPSBsdW1hICogKCpjb2VmZik7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg ICAgICAgICAgICAgc3VtICs9ICooY29lZmYrKykgKiBidWZbeSArIGR5XVt4ICsgZHhdOwo+ICsg ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBncmFp biA9IGJ1Zlt5XVt4XSArIHJvdW5kMihzdW0sIGRhdGEtPmFyX2NvZWZmX3NoaWZ0KTsKPiArICAg ICAgICAgICAgYnVmW3ldW3hdID0gYXZfY2xpcChncmFpbiwgZ3JhaW5fbWluLCBncmFpbl9tYXgp Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArfQo+ICsKPiArLy8gc2FtcGxlcyBmcm9tIHRoZSBj b3JyZWN0IGJsb2NrIG9mIGEgZ3JhaW4gTFVULCB3aGlsZSB0YWtpbmcgaW50byBhY2NvdW50IHRo ZQo+ICsvLyBvZmZzZXRzIHByb3ZpZGVkIGJ5IHRoZSBvZmZzZXRzIGNhY2hlCj4gK3N0YXRpYyBp bmxpbmUgZW50cnkgRlVOQyhzYW1wbGVfbHV0KShjb25zdCBlbnRyeSBncmFpbl9sdXRbXVtHUkFJ Tl9XSURUSF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgb2Zmc2V0c1syXVsyXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGludCBieCwgY29uc3QgaW50IGJ5LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHgsIGNvbnN0IGludCB5KQo+ICt7 Cj4gKyAgICBjb25zdCBpbnQgcmFuZHZhbCA9IG9mZnNldHNbYnhdW2J5XTsKPiArICAgIGNvbnN0 IGludCBvZmZ4ID0gMyArICgyID4+IHN1YngpICogKDMgKyAocmFuZHZhbCA+PiA0KSk7Cj4gKyAg ICBjb25zdCBpbnQgb2ZmeSA9IDMgKyAoMiA+PiBzdWJ5KSAqICgzICsgKHJhbmR2YWwgJiAweEYp KTsKPiArICAgIHJldHVybiBncmFpbl9sdXRbb2ZmeSArIHkgKyAoRkdfQkxPQ0tfU0laRSA+PiBz dWJ5KSAqIGJ5XQo+ICsgICAgICAgICAgICAgICAgICAgIFtvZmZ4ICsgeCArIChGR19CTE9DS19T SVpFID4+IHN1YngpICogYnhdOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBGVU5DKGZneV8zMngz MnhuX2MpKHBpeGVsICpjb25zdCBkc3Rfcm93LCBjb25zdCBwaXhlbCAqY29uc3Qgc3JjX3JvdywK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdHJkaWZmX3Qgc3RyaWRl LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRmlsbUdyYWluUGFy YW1zICpjb25zdCBwYXJhbXMsIGNvbnN0IHNpemVfdCBwdywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90IHNjYWxpbmdbU0NBTElOR19TSVpFXSwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSBncmFpbl9sdXRbXVtHUkFJ Tl9XSURUSF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGJo LCBjb25zdCBpbnQgcm93X251bSBIQkRfREVDTCkKPiArewo+ICsgICAgY29uc3QgQVZGaWxtR3Jh aW5BT01QYXJhbXMgKmNvbnN0IGRhdGEgPSAmcGFyYW1zLT5jb2RlYy5hb207Cj4gKyAgICBjb25z dCBpbnQgcm93cyA9IDEgKyAoZGF0YS0+b3ZlcmxhcF9mbGFnICYmIHJvd19udW0gPiAwKTsKPiAr ICAgIGNvbnN0IGludCBiaXRkZXB0aF9taW5fOCA9IGJpdGRlcHRoIC0gODsKPiArICAgIGNvbnN0 IGludCBncmFpbl9jdHIgPSAxMjggPDwgYml0ZGVwdGhfbWluXzg7Cj4gKyAgICBjb25zdCBpbnQg Z3JhaW5fbWluID0gLWdyYWluX2N0ciwgZ3JhaW5fbWF4ID0gZ3JhaW5fY3RyIC0gMTsKPiArICAg IHVuc2lnbmVkIHNlZWRbMl07Cj4gKyAgICBpbnQgb2Zmc2V0c1syIC8qIGNvbCBvZmZzZXQgKi9d WzIgLyogcm93IG9mZnNldCAqL107Cj4gKwo+ICsgICAgaW50IG1pbl92YWx1ZSwgbWF4X3ZhbHVl Owo+ICsgICAgaWYgKGRhdGEtPmxpbWl0X291dHB1dF9yYW5nZSkgewo+ICsgICAgICAgIG1pbl92 YWx1ZSA9IDE2IDw8IGJpdGRlcHRoX21pbl84Owo+ICsgICAgICAgIG1heF92YWx1ZSA9IDIzNSA8 PCBiaXRkZXB0aF9taW5fODsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgbWluX3ZhbHVlID0g MDsKPiArICAgICAgICBtYXhfdmFsdWUgPSBiaXRkZXB0aF9tYXg7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgLy8gc2VlZFswXSBjb250YWlucyB0aGUgY3VycmVudCByb3csIHNlZWRbMV0gY29udGFpbnMg dGhlIHByZXZpb3VzCj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+ICsg ICAgICAgIHNlZWRbaV0gPSBwYXJhbXMtPnNlZWQ7Cj4gKyAgICAgICAgc2VlZFtpXSBePSAoKChy b3dfbnVtIC0gaSkgKiAzNyAgKyAxNzgpICYgMHhGRikgPDwgODsKPiArICAgICAgICBzZWVkW2ld IF49ICgoKHJvd19udW0gLSBpKSAqIDE3MyArIDEwNSkgJiAweEZGKTsKPiArICAgIH0KPiArCj4g KyAgICBhdl9hc3NlcnQxKHN0cmlkZSAlIChGR19CTE9DS19TSVpFICogc2l6ZW9mKHBpeGVsKSkg PT0gMCk7Cj4gKwo+ICsgICAgLy8gcHJvY2VzcyB0aGlzIHJvdyBpbiBGR19CTE9DS19TSVpFXjIg YmxvY2tzCj4gKyAgICBmb3IgKHVuc2lnbmVkIGJ4ID0gMDsgYnggPCBwdzsgYnggKz0gRkdfQkxP Q0tfU0laRSkgewo+ICsgICAgICAgIGNvbnN0IGludCBidyA9IEZGTUlOKEZHX0JMT0NLX1NJWkUs IChpbnQpIHB3IC0gYngpOwo+ICsgICAgICAgIGNvbnN0IHBpeGVsICpzcmM7Cj4gKyAgICAgICAg cGl4ZWwgKmRzdDsKPiArICAgICAgICBpbnQgbm9pc2U7Cj4gKwo+ICsgICAgICAgIC8vIHgveSBi bG9jayBvZmZzZXRzIHRvIGNvbXBlbnNhdGUgZm9yIG92ZXJsYXBwZWQgcmVnaW9ucwo+ICsgICAg ICAgIGNvbnN0IGludCB5c3RhcnQgPSBkYXRhLT5vdmVybGFwX2ZsYWcgJiYgcm93X251bSA/IEZG TUlOKDIsIGJoKSA6IDA7Cj4gKyAgICAgICAgY29uc3QgaW50IHhzdGFydCA9IGRhdGEtPm92ZXJs YXBfZmxhZyAmJiBieCAgICAgID8gRkZNSU4oMiwgYncpIDogMDsKPiArCj4gKyAgICAgICAgc3Rh dGljIGNvbnN0IGludCB3WzJdWzJdID0geyB7IDI3LCAxNyB9LCB7IDE3LCAyNyB9IH07Cj4gKwo+ ICsgICAgICAgIGlmIChkYXRhLT5vdmVybGFwX2ZsYWcgJiYgYngpIHsKPiArICAgICAgICAgICAg Ly8gc2hpZnQgcHJldmlvdXMgb2Zmc2V0cyBsZWZ0Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgcm93czsgaSsrKQo+ICsgICAgICAgICAgICAgICAgb2Zmc2V0c1sxXVtpXSA9IG9m ZnNldHNbMF1baV07Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvLyB1cGRhdGUgY3VycmVu dCBvZmZzZXRzCj4gKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspCj4gKyAg ICAgICAgICAgIG9mZnNldHNbMF1baV0gPSBnZXRfcmFuZG9tX251bWJlcig4LCAmc2VlZFtpXSk7 Cj4gKwo+ICsjZGVmaW5lIGFkZF9ub2lzZV95KHgsIHksIGdyYWluKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICBzcmMgPSAoY29uc3Qg cGl4ZWwqKSgoY29uc3QgY2hhciopc3JjX3JvdyArICh5KSAqIHN0cmlkZSkgKyAoeCkgKyBieDsg ICBcCj4gKyAgICAgICAgZHN0ID0gKHBpeGVsKikoKGNoYXIqKWRzdF9yb3cgKyAoeSkgKiBzdHJp ZGUpICsgKHgpICsgYng7ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIG5vaXNlID0gcm91bmQy KHNjYWxpbmdbICpzcmMgXSAqIChncmFpbiksIGRhdGEtPnNjYWxpbmdfc2hpZnQpOyAgICAgICAg IFwKPiArICAgICAgICAqZHN0ID0gYXZfY2xpcCgqc3JjICsgbm9pc2UsIG1pbl92YWx1ZSwgbWF4 X3ZhbHVlKTsKPiArCj4gKyAgICAgICAgZm9yIChpbnQgeSA9IHlzdGFydDsgeSA8IGJoOyB5Kysp IHsKPiArICAgICAgICAgICAgLy8gTm9uLW92ZXJsYXBwZWQgaW1hZ2UgcmVnaW9uIChzdHJhaWdo dGZvcndhcmQpCj4gKyAgICAgICAgICAgIGZvciAoaW50IHggPSB4c3RhcnQ7IHggPCBidzsgeCsr KSB7Cj4gKyAgICAgICAgICAgICAgICBpbnQgZ3JhaW4gPSBGVU5DKHNhbXBsZV9sdXQpKGdyYWlu X2x1dCwgb2Zmc2V0cywgMCwgMCwgMCwgMCwgeCwgeSk7Cj4gKyAgICAgICAgICAgICAgICBhZGRf bm9pc2VfeSh4LCB5LCBncmFpbik7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAg IC8vIFNwZWNpYWwgY2FzZSBmb3Igb3ZlcmxhcHBlZCBjb2x1bW4KPiArICAgICAgICAgICAgZm9y IChpbnQgeCA9IDA7IHggPCB4c3RhcnQ7IHgrKykgewo+ICsgICAgICAgICAgICAgICAgaW50IGdy YWluID0gRlVOQyhzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIDAsIDAsIDAsIDAsIHgs IHkpOwo+ICsgICAgICAgICAgICAgICAgaW50IG9sZCAgID0gRlVOQyhzYW1wbGVfbHV0KShncmFp bl9sdXQsIG9mZnNldHMsIDAsIDAsIDEsIDAsIHgsIHkpOwo+ICsgICAgICAgICAgICAgICAgZ3Jh aW4gPSByb3VuZDIob2xkICogd1t4XVswXSArIGdyYWluICogd1t4XVsxXSwgNSk7Cj4gKyAgICAg ICAgICAgICAgICBncmFpbiA9IGF2X2NsaXAoZ3JhaW4sIGdyYWluX21pbiwgZ3JhaW5fbWF4KTsK PiArICAgICAgICAgICAgICAgIGFkZF9ub2lzZV95KHgsIHksIGdyYWluKTsKPiArICAgICAgICAg ICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCB5c3Rh cnQ7IHkrKykgewo+ICsgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIG92ZXJsYXBwZWQg cm93IChzYW5zIGNvcm5lcikKPiArICAgICAgICAgICAgZm9yIChpbnQgeCA9IHhzdGFydDsgeCA8 IGJ3OyB4KyspIHsKPiArICAgICAgICAgICAgICAgIGludCBncmFpbiA9IEZVTkMoc2FtcGxlX2x1 dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCAwLCAwLCAwLCAwLCB4LCB5KTsKPiArICAgICAgICAgICAg ICAgIGludCBvbGQgICA9IEZVTkMoc2FtcGxlX2x1dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCAwLCAw LCAwLCAxLCB4LCB5KTsKPiArICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKG9sZCAqIHdb eV1bMF0gKyBncmFpbiAqIHdbeV1bMV0sIDUpOwo+ICsgICAgICAgICAgICAgICAgZ3JhaW4gPSBh dl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7Cj4gKyAgICAgICAgICAgICAgICBh ZGRfbm9pc2VfeSh4LCB5LCBncmFpbik7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg ICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZG91Ymx5LW92ZXJsYXBwZWQgY29ybmVyCj4gKyAgICAg ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgeHN0YXJ0OyB4KyspIHsKPiArICAgICAgICAgICAg ICAgIGludCBncmFpbiA9IEZVTkMoc2FtcGxlX2x1dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCAwLCAw LCAwLCAwLCB4LCB5KTsKPiArICAgICAgICAgICAgICAgIGludCB0b3AgPSBGVU5DKHNhbXBsZV9s dXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgMCwgMCwgMCwgMSwgeCwgeSk7Cj4gKyAgICAgICAgICAg ICAgICBpbnQgb2xkID0gRlVOQyhzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIDAsIDAs IDEsIDEsIHgsIHkpOwo+ICsKPiArICAgICAgICAgICAgICAgIC8vIEJsZW5kIHRoZSB0b3AgcGl4 ZWwgd2l0aCB0aGUgdG9wIGxlZnQgYmxvY2sKPiArICAgICAgICAgICAgICAgIHRvcCA9IHJvdW5k MihvbGQgKiB3W3hdWzBdICsgdG9wICogd1t4XVsxXSwgNSk7Cj4gKyAgICAgICAgICAgICAgICB0 b3AgPSBhdl9jbGlwKHRvcCwgZ3JhaW5fbWluLCBncmFpbl9tYXgpOwo+ICsKPiArICAgICAgICAg ICAgICAgIC8vIEJsZW5kIHRoZSBjdXJyZW50IHBpeGVsIHdpdGggdGhlIGxlZnQgYmxvY2sKPiAr ICAgICAgICAgICAgICAgIG9sZCA9IEZVTkMoc2FtcGxlX2x1dCkoZ3JhaW5fbHV0LCBvZmZzZXRz LCAwLCAwLCAxLCAwLCB4LCB5KTsKPiArICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKG9s ZCAqIHdbeF1bMF0gKyBncmFpbiAqIHdbeF1bMV0sIDUpOwo+ICsgICAgICAgICAgICAgICAgZ3Jh aW4gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7Cj4gKwo+ICsgICAgICAg ICAgICAgICAgLy8gTWl4IHRoZSByb3cgcm93cyB0b2dldGhlciBhbmQgYXBwbHkgZ3JhaW4KPiAr ICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKHRvcCAqIHdbeV1bMF0gKyBncmFpbiAqIHdb eV1bMV0sIDUpOwo+ICsgICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9jbGlwKGdyYWluLCBncmFp bl9taW4sIGdyYWluX21heCk7Cj4gKyAgICAgICAgICAgICAgICBhZGRfbm9pc2VfeSh4LCB5LCBn cmFpbik7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkCj4gK0ZVTkMoZmd1dl8zMngzMnhuX2MpKHBpeGVsICpjb25zdCBkc3Rfcm93 LCBjb25zdCBwaXhlbCAqY29uc3Qgc3JjX3JvdywKPiArICAgICAgICAgICAgICAgICAgICAgY29u c3QgcHRyZGlmZl90IHN0cmlkZSwgY29uc3QgQVZGaWxtR3JhaW5QYXJhbXMgKmNvbnN0IHBhcmFt cywKPiArICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHB3LCBjb25zdCB1aW50OF90 IHNjYWxpbmdbU0NBTElOR19TSVpFXSwKPiArICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50 cnkgZ3JhaW5fbHV0W11bR1JBSU5fV0lEVEhdLCBjb25zdCBpbnQgYmgsCj4gKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGludCByb3dfbnVtLCBjb25zdCBwaXhlbCAqY29uc3QgbHVtYV9yb3cs Cj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBsdW1hX3N0cmlkZSwgY29u c3QgaW50IHV2LCBjb25zdCBpbnQgaXNfaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludCBzeCwgY29uc3QgaW50IHN5IEhCRF9ERUNMKQo+ICt7Cj4gKyAgICBjb25zdCBBVkZpbG1H cmFpbkFPTVBhcmFtcyAqY29uc3QgZGF0YSA9ICZwYXJhbXMtPmNvZGVjLmFvbTsKPiArICAgIGNv bnN0IGludCByb3dzID0gMSArIChkYXRhLT5vdmVybGFwX2ZsYWcgJiYgcm93X251bSA+IDApOwo+ ICsgICAgY29uc3QgaW50IGJpdGRlcHRoX21pbl84ID0gYml0ZGVwdGggLSA4Owo+ICsgICAgY29u c3QgaW50IGdyYWluX2N0ciA9IDEyOCA8PCBiaXRkZXB0aF9taW5fODsKPiArICAgIGNvbnN0IGlu dCBncmFpbl9taW4gPSAtZ3JhaW5fY3RyLCBncmFpbl9tYXggPSBncmFpbl9jdHIgLSAxOwo+ICsg ICAgdW5zaWduZWQgc2VlZFsyXTsKPiArICAgIGludCBvZmZzZXRzWzIgLyogY29sIG9mZnNldCAq L11bMiAvKiByb3cgb2Zmc2V0ICovXTsKPiArCj4gKyAgICBpbnQgbWluX3ZhbHVlLCBtYXhfdmFs dWU7Cj4gKyAgICBpZiAoZGF0YS0+bGltaXRfb3V0cHV0X3JhbmdlKSB7Cj4gKyAgICAgICAgbWlu X3ZhbHVlID0gMTYgPDwgYml0ZGVwdGhfbWluXzg7Cj4gKyAgICAgICAgbWF4X3ZhbHVlID0gKGlz X2lkID8gMjM1IDogMjQwKSA8PCBiaXRkZXB0aF9taW5fODsKPiArICAgIH0gZWxzZSB7Cj4gKyAg ICAgICAgbWluX3ZhbHVlID0gMDsKPiArICAgICAgICBtYXhfdmFsdWUgPSBiaXRkZXB0aF9tYXg7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gc2VlZFswXSBjb250YWlucyB0aGUgY3VycmVudCByb3cs IHNlZWRbMV0gY29udGFpbnMgdGhlIHByZXZpb3VzCj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IHJvd3M7IGkrKykgewo+ICsgICAgICAgIHNlZWRbaV0gPSBwYXJhbXMtPnNlZWQ7Cj4gKyAgICAg ICAgc2VlZFtpXSBePSAoKChyb3dfbnVtIC0gaSkgKiAzNyAgKyAxNzgpICYgMHhGRikgPDwgODsK PiArICAgICAgICBzZWVkW2ldIF49ICgoKHJvd19udW0gLSBpKSAqIDE3MyArIDEwNSkgJiAweEZG KTsKPiArICAgIH0KPiArCj4gKyAgICBhdl9hc3NlcnQxKHN0cmlkZSAlIChGR19CTE9DS19TSVpF ICogc2l6ZW9mKHBpeGVsKSkgPT0gMCk7Cj4gKwo+ICsgICAgLy8gcHJvY2VzcyB0aGlzIHJvdyBp biBGR19CTE9DS19TSVpFXjIgYmxvY2tzIChzdWJzYW1wbGVkKQo+ICsgICAgZm9yICh1bnNpZ25l ZCBieCA9IDA7IGJ4IDwgcHc7IGJ4ICs9IEZHX0JMT0NLX1NJWkUgPj4gc3gpIHsKPiArICAgICAg ICBjb25zdCBpbnQgYncgPSBGRk1JTihGR19CTE9DS19TSVpFID4+IHN4LCAoaW50KShwdyAtIGJ4 KSk7Cj4gKyAgICAgICAgaW50IHZhbCwgbHgsIGx5LCBub2lzZTsKPiArICAgICAgICBjb25zdCBw aXhlbCAqc3JjLCAqbHVtYTsKPiArICAgICAgICBwaXhlbCAqZHN0LCBhdmc7Cj4gKwo+ICsgICAg ICAgIC8vIHgveSBibG9jayBvZmZzZXRzIHRvIGNvbXBlbnNhdGUgZm9yIG92ZXJsYXBwZWQgcmVn aW9ucwo+ICsgICAgICAgIGNvbnN0IGludCB5c3RhcnQgPSBkYXRhLT5vdmVybGFwX2ZsYWcgJiYg cm93X251bSA/IEZGTUlOKDIgPj4gc3ksIGJoKSA6IDA7Cj4gKyAgICAgICAgY29uc3QgaW50IHhz dGFydCA9IGRhdGEtPm92ZXJsYXBfZmxhZyAmJiBieCAgICAgID8gRkZNSU4oMiA+PiBzeCwgYncp IDogMDsKPiArCj4gKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB3WzIgLyogc3ViICovXVsyIC8q IG9mZiAqL11bMl0gPSB7Cj4gKyAgICAgICAgICAgIHsgeyAyNywgMTcgfSwgeyAxNywgMjcgfSB9 LAo+ICsgICAgICAgICAgICB7IHsgMjMsIDIyIH0gfSwKPiArICAgICAgICB9Owo+ICsKPiArICAg ICAgICBpZiAoZGF0YS0+b3ZlcmxhcF9mbGFnICYmIGJ4KSB7Cj4gKyAgICAgICAgICAgIC8vIHNo aWZ0IHByZXZpb3VzIG9mZnNldHMgbGVmdAo+ICsgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IHJvd3M7IGkrKykKPiArICAgICAgICAgICAgICAgIG9mZnNldHNbMV1baV0gPSBvZmZzZXRz WzBdW2ldOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLy8gdXBkYXRlIGN1cnJlbnQgb2Zm c2V0cwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKQo+ICsgICAgICAg ICAgICBvZmZzZXRzWzBdW2ldID0gZ2V0X3JhbmRvbV9udW1iZXIoOCwgJnNlZWRbaV0pOwo+ICsK PiArI2RlZmluZSBhZGRfbm9pc2VfdXYoeCwgeSwgZ3JhaW4pICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgIGx4ID0gKGJ4ICsgeCkg PDwgc3g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ICsgICAgICAgICAgICBseSA9IHkgPDwgc3k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgbHVtYSA9IChjb25zdCBw aXhlbCopKChjb25zdCBjaGFyKilsdW1hX3JvdyArIGx5ICogbHVtYV9zdHJpZGUpICsgbHg7XAo+ ICsgICAgICAgICAgICBhdmcgPSBsdW1hWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgaWYgKHN4KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g KyAgICAgICAgICAgICAgICBhdmcgPSAoYXZnICsgbHVtYVsxXSArIDEpID4+IDE7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICBzcmMgPSAoY29uc3QgcGl4 ZWwqKSgoY29uc3QgY2hhciAqKXNyY19yb3cgKyAoeSkgKiBzdHJpZGUpICsgYnggKyAoeCk7XAo+ ICsgICAgICAgICAgICBkc3QgPSAocGl4ZWwgKikgKChjaGFyICopIGRzdF9yb3cgKyAoeSkgKiBz dHJpZGUpICsgYnggKyAoeCk7ICAgICAgIFwKPiArICAgICAgICAgICAgdmFsID0gYXZnOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g KyAgICAgICAgICAgIGlmICghZGF0YS0+Y2hyb21hX3NjYWxpbmdfZnJvbV9sdW1hKSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgY29uc3QgaW50IGNv bWJpbmVkID0gYXZnICogZGF0YS0+dXZfbXVsdF9sdW1hW3V2XSArICAgICAgICAgICAgIFwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNyYyAqIGRhdGEtPnV2X211bHRb dXZdOyAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICB2YWwgPSBhdl9jbGlw KCAoY29tYmluZWQgPj4gNikgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPnV2X29mZnNldFt1dl0gKiAoMSA8 PCBiaXRkZXB0aF9taW5fOCkpLCAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAsIGJpdGRlcHRoX21heCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICBub2lzZSA9IHJvdW5kMihzY2Fs aW5nWyB2YWwgXSAqIChncmFpbiksIGRhdGEtPnNjYWxpbmdfc2hpZnQpOyAgICAgIFwKPiArICAg ICAgICAgICAgKmRzdCA9IGF2X2NsaXAoKnNyYyArIG5vaXNlLCBtaW5fdmFsdWUsIG1heF92YWx1 ZSk7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IHkgPSB5c3RhcnQ7IHkgPCBiaDsgeSsrKSB7Cj4g KyAgICAgICAgICAgIC8vIE5vbi1vdmVybGFwcGVkIGltYWdlIHJlZ2lvbiAoc3RyYWlnaHRmb3J3 YXJkKQo+ICsgICAgICAgICAgICBmb3IgKGludCB4ID0geHN0YXJ0OyB4IDwgYnc7IHgrKykgewo+ ICsgICAgICAgICAgICAgICAgaW50IGdyYWluID0gRlVOQyhzYW1wbGVfbHV0KShncmFpbl9sdXQs IG9mZnNldHMsIHN4LCBzeSwgMCwgMCwgeCwgeSk7Cj4gKyAgICAgICAgICAgICAgICBhZGRfbm9p c2VfdXYoeCwgeSwgZ3JhaW4pOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAv LyBTcGVjaWFsIGNhc2UgZm9yIG92ZXJsYXBwZWQgY29sdW1uCj4gKyAgICAgICAgICAgIGZvciAo aW50IHggPSAwOyB4IDwgeHN0YXJ0OyB4KyspIHsKPiArICAgICAgICAgICAgICAgIGludCBncmFp biA9IEZVTkMoc2FtcGxlX2x1dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCBzeCwgc3ksIDAsIDAsIHgs IHkpOwo+ICsgICAgICAgICAgICAgICAgaW50IG9sZCAgID0gRlVOQyhzYW1wbGVfbHV0KShncmFp bl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMSwgMCwgeCwgeSk7Cj4gKyAgICAgICAgICAgICAgICBn cmFpbiA9IHJvdW5kMihvbGQgKiB3W3N4XVt4XVswXSArIGdyYWluICogd1tzeF1beF1bMV0sIDUp Owo+ICsgICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdy YWluX21heCk7Cj4gKyAgICAgICAgICAgICAgICBhZGRfbm9pc2VfdXYoeCwgeSwgZ3JhaW4pOwo+ ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGludCB5ID0g MDsgeSA8IHlzdGFydDsgeSsrKSB7Cj4gKyAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Ig b3ZlcmxhcHBlZCByb3cgKHNhbnMgY29ybmVyKQo+ICsgICAgICAgICAgICBmb3IgKGludCB4ID0g eHN0YXJ0OyB4IDwgYnc7IHgrKykgewo+ICsgICAgICAgICAgICAgICAgaW50IGdyYWluID0gRlVO QyhzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMCwgMCwgeCwgeSk7Cj4g KyAgICAgICAgICAgICAgICBpbnQgb2xkICAgPSBGVU5DKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwg b2Zmc2V0cywgc3gsIHN5LCAwLCAxLCB4LCB5KTsKPiArICAgICAgICAgICAgICAgIGdyYWluID0g cm91bmQyKG9sZCAqIHdbc3ldW3ldWzBdICsgZ3JhaW4gKiB3W3N5XVt5XVsxXSwgNSk7Cj4gKyAg ICAgICAgICAgICAgICBncmFpbiA9IGF2X2NsaXAoZ3JhaW4sIGdyYWluX21pbiwgZ3JhaW5fbWF4 KTsKPiArICAgICAgICAgICAgICAgIGFkZF9ub2lzZV91dih4LCB5LCBncmFpbik7Cj4gKyAgICAg ICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZG91Ymx5LW92 ZXJsYXBwZWQgY29ybmVyCj4gKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgeHN0YXJ0 OyB4KyspIHsKPiArICAgICAgICAgICAgICAgIGludCB0b3AgPSBGVU5DKHNhbXBsZV9sdXQpKGdy YWluX2x1dCwgb2Zmc2V0cywgc3gsIHN5LCAwLCAxLCB4LCB5KTsKPiArICAgICAgICAgICAgICAg IGludCBvbGQgPSBGVU5DKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgc3gsIHN5LCAx LCAxLCB4LCB5KTsKPiArICAgICAgICAgICAgICAgIGludCBncmFpbiA9IEZVTkMoc2FtcGxlX2x1 dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCBzeCwgc3ksIDAsIDAsIHgsIHkpOwo+ICsKPiArICAgICAg ICAgICAgICAgIC8vIEJsZW5kIHRoZSB0b3AgcGl4ZWwgd2l0aCB0aGUgdG9wIGxlZnQgYmxvY2sK PiArICAgICAgICAgICAgICAgIHRvcCA9IHJvdW5kMihvbGQgKiB3W3N4XVt4XVswXSArIHRvcCAq IHdbc3hdW3hdWzFdLCA1KTsKPiArICAgICAgICAgICAgICAgIHRvcCA9IGF2X2NsaXAodG9wLCBn cmFpbl9taW4sIGdyYWluX21heCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgLy8gQmxlbmQgdGhl IGN1cnJlbnQgcGl4ZWwgd2l0aCB0aGUgbGVmdCBibG9jawo+ICsgICAgICAgICAgICAgICAgb2xk ID0gRlVOQyhzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMSwgMCwgeCwg eSk7Cj4gKyAgICAgICAgICAgICAgICBncmFpbiA9IHJvdW5kMihvbGQgKiB3W3N4XVt4XVswXSAr IGdyYWluICogd1tzeF1beF1bMV0sIDUpOwo+ICsgICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9j bGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAg Ly8gTWl4IHRoZSByb3cgcm93cyB0b2dldGhlciBhbmQgYXBwbHkgdG8gaW1hZ2UKPiArICAgICAg ICAgICAgICAgIGdyYWluID0gcm91bmQyKHRvcCAqIHdbc3ldW3ldWzBdICsgZ3JhaW4gKiB3W3N5 XVt5XVsxXSwgNSk7Cj4gKyAgICAgICAgICAgICAgICBncmFpbiA9IGF2X2NsaXAoZ3JhaW4sIGdy YWluX21pbiwgZ3JhaW5fbWF4KTsKPiArICAgICAgICAgICAgICAgIGFkZF9ub2lzZV91dih4LCB5 LCBncmFpbik7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIEZVTkMoZ2VuZXJhdGVfc2NhbGluZykoY29uc3QgdWludDhfdCBwb2lu dHNbXVsyXSwgY29uc3QgaW50IG51bSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90IHNjYWxpbmdbU0NBTElOR19TSVpFXSBIQkRfREVDTCkKPiArewo+ICsgICAg Y29uc3QgaW50IHNoaWZ0X3ggPSBiaXRkZXB0aCAtIDg7Cj4gKyAgICBjb25zdCBpbnQgc2NhbGlu Z19zaXplID0gMSA8PCBiaXRkZXB0aDsKPiArICAgIGNvbnN0IGludCBtYXhfdmFsdWUgPSBwb2lu dHNbbnVtIC0gMV1bMF0gPDwgc2hpZnRfeDsKPiArICAgIGF2X2Fzc2VydDAoc2NhbGluZ19zaXpl IDw9IFNDQUxJTkdfU0laRSk7Cj4gKwo+ICsgICAgaWYgKG51bSA9PSAwKSB7Cj4gKyAgICAgICAg bWVtc2V0KHNjYWxpbmcsIDAsIHNjYWxpbmdfc2l6ZSk7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsg ICAgfQo+ICsKPiArICAgIC8vIEZpbGwgdXAgdGhlIHByZWNlZGluZyBlbnRyaWVzIHdpdGggdGhl IGluaXRpYWwgdmFsdWUKPiArICAgIG1lbXNldChzY2FsaW5nLCBwb2ludHNbMF1bMV0sIHBvaW50 c1swXVswXSA8PCBzaGlmdF94KTsKPiArCj4gKyAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB0 aGUgdmFsdWVzIGluIHRoZSBtaWRkbGUKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtIC0g MTsgaSsrKSB7Cj4gKyAgICAgICAgY29uc3QgaW50IGJ4ID0gcG9pbnRzW2ldWzBdOwo+ICsgICAg ICAgIGNvbnN0IGludCBieSA9IHBvaW50c1tpXVsxXTsKPiArICAgICAgICBjb25zdCBpbnQgZXgg PSBwb2ludHNbaSsxXVswXTsKPiArICAgICAgICBjb25zdCBpbnQgZXkgPSBwb2ludHNbaSsxXVsx XTsKPiArICAgICAgICBjb25zdCBpbnQgZHggPSBleCAtIGJ4Owo+ICsgICAgICAgIGNvbnN0IGlu dCBkeSA9IGV5IC0gYnk7Cj4gKyAgICAgICAgY29uc3QgaW50IGRlbHRhID0gZHkgKiAoKDB4MTAw MDAgKyAoZHggPj4gMSkpIC8gZHgpOwo+ICsgICAgICAgIGF2X2Fzc2VydDEoZHggPiAwKTsKPiAr ICAgICAgICBmb3IgKGludCB4ID0gMCwgZCA9IDB4ODAwMDsgeCA8IGR4OyB4KyspIHsKPiArICAg ICAgICAgICAgc2NhbGluZ1soYnggKyB4KSA8PCBzaGlmdF94XSA9IGJ5ICsgKGQgPj4gMTYpOwo+ ICsgICAgICAgICAgICBkICs9IGRlbHRhOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAg ICAvLyBGaWxsIHVwIHRoZSByZW1haW5pbmcgZW50cmllcyB3aXRoIHRoZSBmaW5hbCB2YWx1ZQo+ ICsgICAgbWVtc2V0KCZzY2FsaW5nW21heF92YWx1ZV0sIHBvaW50c1tudW0gLSAxXVsxXSwgc2Nh bGluZ19zaXplIC0gbWF4X3ZhbHVlKTsKPiArCj4gKyNpZiBCSVRfREVQVEggIT0gOAo+ICsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBudW0gLSAxOyBpKyspIHsKPiArICAgICAgICBjb25zdCBpbnQg cGFkID0gMSA8PCBzaGlmdF94LCBybmQgPSBwYWQgPj4gMTsKPiArICAgICAgICBjb25zdCBpbnQg YnggPSBwb2ludHNbaV1bMF0gPDwgc2hpZnRfeDsKPiArICAgICAgICBjb25zdCBpbnQgZXggPSBw b2ludHNbaSsxXVswXSA8PCBzaGlmdF94Owo+ICsgICAgICAgIGNvbnN0IGludCBkeCA9IGV4IC0g Yng7Cj4gKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBkeDsgeCArPSBwYWQpIHsKPiArICAg ICAgICAgICAgY29uc3QgaW50IHJhbmdlID0gc2NhbGluZ1tieCArIHggKyBwYWRdIC0gc2NhbGlu Z1tieCArIHhdOwo+ICsgICAgICAgICAgICBmb3IgKGludCBuID0gMSwgciA9IHJuZDsgbiA8IHBh ZDsgbisrKSB7Cj4gKyAgICAgICAgICAgICAgICByICs9IHJhbmdlOwo+ICsgICAgICAgICAgICAg ICAgc2NhbGluZ1tieCArIHggKyBuXSA9IHNjYWxpbmdbYnggKyB4XSArIChyID4+IHNoaWZ0X3gp Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsjZW5kaWYKPiArfQo+ ICsKPiArc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZAo+ICtGVU5DKGFwcGx5X2dyYWluX3Jv dykoQVZGcmFtZSAqb3V0LCBjb25zdCBBVkZyYW1lICppbiwKPiArICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGludCBzc194LCBjb25zdCBpbnQgc3NfeSwKPiArICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQ4X3Qgc2NhbGluZ1szXVtTQ0FMSU5HX1NJWkVdLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZW50cnkgZ3JhaW5fbHV0WzNdW0dSQUlOX0hFSUdIVCsxXVtHUkFJ Tl9XSURUSF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFt cyAqcGFyYW1zLAo+ICsgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHJvdyBIQkRfREVD TCkKPiArewo+ICsgICAgLy8gU3ludGhlc2l6ZSBncmFpbiBmb3IgdGhlIGFmZmVjdGVkIHBsYW5l cwo+ICsgICAgY29uc3QgQVZGaWxtR3JhaW5BT01QYXJhbXMgKmNvbnN0IGRhdGEgPSAmcGFyYW1z LT5jb2RlYy5hb207Cj4gKyAgICBjb25zdCBpbnQgY3B3ID0gKG91dC0+d2lkdGggKyBzc194KSA+ PiBzc194Owo+ICsgICAgY29uc3QgaW50IGlzX2lkID0gb3V0LT5jb2xvcnNwYWNlID09IEFWQ09M X1NQQ19SR0I7Cj4gKyAgICBjb25zdCBpbnQgYmggPSAoRkZNSU4ob3V0LT5oZWlnaHQgLSByb3cg KiBGR19CTE9DS19TSVpFLCBGR19CTE9DS19TSVpFKSArIHNzX3kpID4+IHNzX3k7Cj4gKyAgICBj b25zdCBwdHJkaWZmX3QgdXZfb2ZmID0gcm93ICogRkdfQkxPQ0tfU0laRSAqIG91dC0+bGluZXNp emVbMV0gPj4gc3NfeTsKPiArICAgIHBpeGVsICpjb25zdCBsdW1hX3NyYyA9IChwaXhlbCAqKQo+ ICsgICAgICAgICgoY2hhciAqKSBpbi0+ZGF0YVswXSArIHJvdyAqIEZHX0JMT0NLX1NJWkUgKiBp bi0+bGluZXNpemVbMF0pOwo+ICsKPiArICAgIGlmIChkYXRhLT5udW1feV9wb2ludHMpIHsKPiAr ICAgICAgICBjb25zdCBpbnQgYmggPSBGRk1JTihvdXQtPmhlaWdodCAtIHJvdyAqIEZHX0JMT0NL X1NJWkUsIEZHX0JMT0NLX1NJWkUpOwo+ICsgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBvZmYgPSBy b3cgKiBGR19CTE9DS19TSVpFICogb3V0LT5saW5lc2l6ZVswXTsKPiArICAgICAgICBGVU5DKGZn eV8zMngzMnhuX2MpKChwaXhlbCAqKSAoKGNoYXIgKikgb3V0LT5kYXRhWzBdICsgb2ZmKSwgbHVt YV9zcmMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQtPmxpbmVzaXplWzBdLCBw YXJhbXMsIG91dC0+d2lkdGgsIHNjYWxpbmdbMF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncmFpbl9sdXRbMF0sIGJoLCByb3cgSEJEX0NBTEwpOwo+ICsgICAgfQo+ICsKPiArICAg IGlmICghZGF0YS0+bnVtX3V2X3BvaW50c1swXSAmJiAhZGF0YS0+bnVtX3V2X3BvaW50c1sxXSAm Jgo+ICsgICAgICAgICFkYXRhLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEpCj4gKyAgICB7Cj4g KyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIGV4dGVuZCBwYWRkaW5nIHBp eGVscwo+ICsgICAgaWYgKG91dC0+d2lkdGggJiBzc194KSB7Cj4gKyAgICAgICAgcGl4ZWwgKnB0 ciA9IGx1bWFfc3JjOwo+ICsgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgYmg7IHkrKykgewo+ ICsgICAgICAgICAgICBwdHJbb3V0LT53aWR0aF0gPSBwdHJbb3V0LT53aWR0aCAtIDFdOwo+ICsg ICAgICAgICAgICBwdHIgPSAocGl4ZWwgKikgKChjaGFyICopIHB0ciArIChpbi0+bGluZXNpemVb MF0gPDwgc3NfeSkpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAoZGF0YS0+ Y2hyb21hX3NjYWxpbmdfZnJvbV9sdW1hKSB7Cj4gKyAgICAgICAgZm9yIChpbnQgcGwgPSAwOyBw bCA8IDI7IHBsKyspCj4gKyAgICAgICAgICAgIEZVTkMoZmd1dl8zMngzMnhuX2MpKChwaXhlbCAq KSAoKGNoYXIgKikgb3V0LT5kYXRhWzEgKyBwbF0gKyB1dl9vZmYpLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29uc3QgcGl4ZWwgKikgKChjb25zdCBjaGFyICopIGluLT5k YXRhWzEgKyBwbF0gKyB1dl9vZmYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbi0+bGluZXNpemVbMV0sIHBhcmFtcywgY3B3LCBzY2FsaW5nWzBdLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncmFpbl9sdXRbMSArIHBsXSwgYmgsIHJvdywgbHVtYV9z cmMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLT5saW5lc2l6ZVswXSwg cGwsIGlzX2lkLCBzc194LCBzc195IEhCRF9DQUxMKTsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAg ICAgZm9yIChpbnQgcGwgPSAwOyBwbCA8IDI7IHBsKyspIHsKPiArICAgICAgICAgICAgaWYgKGRh dGEtPm51bV91dl9wb2ludHNbcGxdKSB7Cj4gKyAgICAgICAgICAgICAgICBGVU5DKGZndXZfMzJ4 MzJ4bl9jKSgocGl4ZWwgKikgKChjaGFyICopIG91dC0+ZGF0YVsxICsgcGxdICsgdXZfb2ZmKSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBwaXhlbCAqKSAo KGNvbnN0IGNoYXIgKikgaW4tPmRhdGFbMSArIHBsXSArIHV2X29mZiksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbi0+bGluZXNpemVbMV0sIHBhcmFtcywgY3B3LCBz Y2FsaW5nWzEgKyBwbF0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cmFpbl9sdXRbMSArIHBsXSwgYmgsIHJvdywgbHVtYV9zcmMsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbi0+bGluZXNpemVbMF0sIHBsLCBpc19pZCwgc3NfeCwgc3Nf eSBIQkRfQ0FMTCk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgRlVOQyhhcHBseV9maWxtX2dyYWluKShBVkZyYW1lICpvdXRfZnJh bWUsIGNvbnN0IEFWRnJhbWUgKmluX2ZyYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgQVZGaWxtR3JhaW5QYXJhbXMgKnBhcmFtcyBIQkRfREVDTCkKPiArewo+ ICsgICAgZW50cnkgZ3JhaW5fbHV0WzNdW0dSQUlOX0hFSUdIVCArIDFdW0dSQUlOX1dJRFRIXTsK PiArICAgIHVpbnQ4X3Qgc2NhbGluZ1szXVtTQ0FMSU5HX1NJWkVdOwo+ICsKPiArICAgIGNvbnN0 IEFWRmlsbUdyYWluQU9NUGFyYW1zICpjb25zdCBkYXRhID0gJnBhcmFtcy0+Y29kZWMuYW9tOwo+ ICsgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpkZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dl dChvdXRfZnJhbWUtPmZvcm1hdCk7Cj4gKyAgICBjb25zdCBpbnQgcm93cyA9IEFWX0NFSUxfUlNI SUZUKG91dF9mcmFtZS0+aGVpZ2h0LCA1KTsgLyogbG9nMihGR19CTE9DS19TSVpFKSAqLwo+ICsg ICAgY29uc3QgaW50IHN1YnggPSBkZXNjLT5sb2cyX2Nocm9tYV93LCBzdWJ5ID0gZGVzYy0+bG9n Ml9jaHJvbWFfaDsKPiArCj4gKyAgICAvLyBHZW5lcmF0ZSBncmFpbiBMVVRzIGFzIG5lZWRlZAo+ ICsgICAgRlVOQyhnZW5lcmF0ZV9ncmFpbl95X2MpKGdyYWluX2x1dFswXSwgcGFyYW1zIEhCRF9D QUxMKTsKPiArICAgIGlmIChkYXRhLT5udW1fdXZfcG9pbnRzWzBdIHx8IGRhdGEtPmNocm9tYV9z Y2FsaW5nX2Zyb21fbHVtYSkKPiArICAgICAgICBGVU5DKGdlbmVyYXRlX2dyYWluX3V2X2MpKGdy YWluX2x1dFsxXSwgZ3JhaW5fbHV0WzBdLCBwYXJhbXMsIDAsIHN1YngsIHN1YnkgSEJEX0NBTEwp Owo+ICsgICAgaWYgKGRhdGEtPm51bV91dl9wb2ludHNbMV0gfHwgZGF0YS0+Y2hyb21hX3NjYWxp bmdfZnJvbV9sdW1hKQo+ICsgICAgICAgIEZVTkMoZ2VuZXJhdGVfZ3JhaW5fdXZfYykoZ3JhaW5f bHV0WzJdLCBncmFpbl9sdXRbMF0sIHBhcmFtcywgMSwgc3VieCwgc3VieSBIQkRfQ0FMTCk7Cj4g Kwo+ICsgICAgLy8gR2VuZXJhdGUgc2NhbGluZyBMVVRzIGFzIG5lZWRlZAo+ICsgICAgaWYgKGRh dGEtPm51bV95X3BvaW50cyB8fCBkYXRhLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEpCj4gKyAg ICAgICAgRlVOQyhnZW5lcmF0ZV9zY2FsaW5nKShkYXRhLT55X3BvaW50cywgZGF0YS0+bnVtX3lf cG9pbnRzLCBzY2FsaW5nWzBdIEhCRF9DQUxMKTsKPiArICAgIGlmIChkYXRhLT5udW1fdXZfcG9p bnRzWzBdKQo+ICsgICAgICAgIEZVTkMoZ2VuZXJhdGVfc2NhbGluZykoZGF0YS0+dXZfcG9pbnRz WzBdLCBkYXRhLT5udW1fdXZfcG9pbnRzWzBdLCBzY2FsaW5nWzFdIEhCRF9DQUxMKTsKPiArICAg IGlmIChkYXRhLT5udW1fdXZfcG9pbnRzWzFdKQo+ICsgICAgICAgIEZVTkMoZ2VuZXJhdGVfc2Nh bGluZykoZGF0YS0+dXZfcG9pbnRzWzFdLCBkYXRhLT5udW1fdXZfcG9pbnRzWzFdLCBzY2FsaW5n WzJdIEhCRF9DQUxMKTsKPiArCj4gKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCByb3dzOyBy b3crKykgewo+ICsgICAgICAgIEZVTkMoYXBwbHlfZ3JhaW5fcm93KShvdXRfZnJhbWUsIGluX2Zy YW1lLCBzdWJ4LCBzdWJ5LCBzY2FsaW5nLCBncmFpbl9sdXQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcmFtcywgcm93IEhCRF9DQUxMKTsKPiArICAgIH0KPiArCj4gKyAgICBy ZXR1cm4gMDsKPiArfQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==