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 2D4F446BF9 for ; Wed, 5 Jul 2023 12:50:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9A5CB68C622; Wed, 5 Jul 2023 15:50:38 +0300 (EEST) Received: from frankplowman.com (frankplowman.com [51.89.148.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5F22868C5FD for ; Wed, 5 Jul 2023 15:50:31 +0300 (EEST) Received: from [10.0.0.4] (port=36790) by frankplowman.com with esmtpsa (TLS1.3) tls TLS_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1qH1xl-005H2P-2I for ffmpeg-devel@ffmpeg.org; Wed, 05 Jul 2023 14:50:30 +0200 Message-ID: <360cb898-b8a9-a2ec-7062-9c5ea7cf8236@frankplowman.com> Date: Wed, 5 Jul 2023 13:50:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Content-Language: en-US From: Frank Plowman To: ffmpeg-devel@ffmpeg.org References: <8e614bcf-3282-a604-9913-7952d64896a3@frankplowman.com> In-Reply-To: <8e614bcf-3282-a604-9913-7952d64896a3@frankplowman.com> X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] cbs_h266: add range extension support 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: T24gMDUvMDcvMjAyMyAxMzozOCwgRnJhbmsgUGxvd21hbiB3cm90ZToKPiBPbiAwNS8wNy8yMDIz IDEyOjQ1LCBKYW1lcyBBbG1lciB3cm90ZToKPj4gT24gNy81LzIwMjMgODozOCBBTSwgTnVvIE1p IHdyb3RlOgo+Pj4gRnJvbTogZnJhbmtwbG93IDxwb3N0QGZyYW5rcGxvd21hbi5jb20+Cj4+Pgo+ Pj4gLS0tCj4+PiDCoCBsaWJhdmNvZGVjL2Nic19oMjY2LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDE4ICsrKysrKwo+Pj4gwqAgbGliYXZjb2RlYy9jYnNfaDI2Nl9zeW50YXhf dGVtcGxhdGUuYyB8IDc5IAo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+PiDCoCAy IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gyNjYuaCBiL2xpYmF2Y29kZWMvY2JzX2gyNjYu aAo+Pj4gaW5kZXggZTMzZDA4YTBmNS4uNDBhYmE5ZWIxMyAxMDA2NDQKPj4+IC0tLSBhL2xpYmF2 Y29kZWMvY2JzX2gyNjYuaAo+Pj4gKysrIGIvbGliYXZjb2RlYy9jYnNfaDI2Ni5oCj4+PiBAQCAt MTIwLDYgKzEyMCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIMjY2R2VuZXJhbENvbnN0cmFpbnRzSW5m byB7Cj4+PiDCoMKgwqDCoMKgIHVpbnQ4X3QgZ2NpX25vX3ZpcnR1YWxfYm91bmRhcmllc19jb25z dHJhaW50X2ZsYWc7Cj4+PiDCoMKgwqDCoMKgIHVpbnQ4X3QgZ2NpX251bV9yZXNlcnZlZF9iaXRz Owo+Pj4gwqDCoMKgwqDCoCB1aW50OF90IGdjaV9yZXNlcnZlZF96ZXJvX2JpdFsyNTVdOwo+Pj4g Kwo+Pj4gK8KgwqDCoCB1aW50OF90IGdjaV9hbGxfcmFwX3BpY3R1cmVzX2NvbnN0cmFpbnRfZmxh ZzsKPj4+ICvCoMKgwqAgdWludDhfdCBnY2lfbm9fZXh0ZW5kZWRfcHJlY2lzaW9uX3Byb2Nlc3Np bmdfY29uc3RyYWludF9mbGFnOwo+Pj4gK8KgwqDCoCB1aW50OF90IGdjaV9ub190c19yZXNpZHVh bF9jb2RpbmdfcmljZV9jb25zdHJhaW50X2ZsYWc7Cj4+PiArwqDCoMKgIHVpbnQ4X3QgZ2NpX25v X3JyY19yaWNlX2V4dGVuc2lvbl9jb25zdHJhaW50X2ZsYWc7Cj4+PiArwqDCoMKgIHVpbnQ4X3Qg Z2NpX25vX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2NvbnN0cmFpbnRfZmxhZzsKPj4+ICvC oMKgwqAgdWludDhfdCBnY2lfbm9fcmV2ZXJzZV9sYXN0X3NpZ19jb2VmZl9jb25zdHJhaW50X2Zs YWc7Cj4+PiDCoCB9IEgyNjZHZW5lcmFsQ29uc3RyYWludHNJbmZvOwo+Pj4gwqAgwqAgdHlwZWRl ZiBzdHJ1Y3QgSDI2NlJhd1Byb2ZpbGVUaWVyTGV2ZWwgewo+Pj4gQEAgLTQ1MSw2ICs0NTgsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QgSDI2NlJhd1NQUyB7Cj4+PiDCoCDCoMKgwqDCoMKgIHVpbnQ4X3TC oCBzcHNfZXh0ZW5zaW9uX2ZsYWc7Cj4+PiDCoCArwqDCoMKgIHVpbnQ4X3TCoCBzcHNfcmFuZ2Vf ZXh0ZW5zaW9uX2ZsYWc7Cj4+PiArwqDCoMKgIHVpbnQ4X3TCoCBzcHNfZXh0ZW5zaW9uXzdiaXRz Owo+Pj4gKwo+Pj4gK8KgwqDCoCB1aW50OF90wqAgc3BzX2V4dGVuZGVkX3ByZWNpc2lvbl9mbGFn Owo+Pj4gK8KgwqDCoCB1aW50OF90wqAgc3BzX3RzX3Jlc2lkdWFsX2NvZGluZ19yaWNlX3ByZXNl bnRfaW5fc2hfZmxhZzsKPj4+ICvCoMKgwqAgdWludDhfdMKgIHNwc19ycmNfcmljZV9leHRlbnNp b25fZmxhZzsKPj4+ICvCoMKgwqAgdWludDhfdMKgIHNwc19wZXJzaXN0ZW50X3JpY2VfYWRhcHRh dGlvbl9lbmFibGVkX2ZsYWc7Cj4+PiArwqDCoMKgIHVpbnQ4X3TCoCBzcHNfcmV2ZXJzZV9sYXN0 X3NpZ19jb2VmZl9lbmFibGVkX2ZsYWc7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIEgyNjZSYXdFeHRl bnNpb25EYXRhIGV4dGVuc2lvbl9kYXRhOwo+Pj4gwqAgwqAgfSBIMjY2UmF3U1BTOwo+Pj4gQEAg LTczNCw2ICs3NTAsOCBAQCB0eXBlZGVmIHN0cnVjdMKgIEgyNjZSYXdTbGljZUhlYWRlciB7Cj4+ PiDCoCDCoMKgwqDCoMKgIHVpbnQ4X3TCoCBzaF9zaWduX2RhdGFfaGlkaW5nX3VzZWRfZmxhZzsK Pj4+IMKgwqDCoMKgwqAgdWludDhfdMKgIHNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9m bGFnOwo+Pj4gK8KgwqDCoCB1aW50OF90wqAgc2hfdHNfcmVzaWR1YWxfY29kaW5nX3JpY2VfaWR4 X21pbnVzMTsKPj4+ICvCoMKgwqAgdWludDhfdMKgIHNoX3JldmVyc2VfbGFzdF9zaWdfY29lZmZf ZmxhZzsKPj4+IMKgwqDCoMKgwqAgdWludDE2X3Qgc2hfc2xpY2VfaGVhZGVyX2V4dGVuc2lvbl9s ZW5ndGg7Cj4+PiDCoMKgwqDCoMKgIHVpbnQ4X3TCoCBzaF9zbGljZV9oZWFkZXJfZXh0ZW5zaW9u X2RhdGFfYnl0ZVsyNTZdOwo+Pj4gwqAgZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gyNjZf c3ludGF4X3RlbXBsYXRlLmMgCj4+PiBiL2xpYmF2Y29kZWMvY2JzX2gyNjZfc3ludGF4X3RlbXBs YXRlLmMKPj4+IGluZGV4IDQ4NWMwMmY1OTAuLjg5M2ZhNTUzNjkgMTAwNjQ0Cj4+PiAtLS0gYS9s aWJhdmNvZGVjL2Nic19oMjY2X3N5bnRheF90ZW1wbGF0ZS5jCj4+PiArKysgYi9saWJhdmNvZGVj L2Nic19oMjY2X3N5bnRheF90ZW1wbGF0ZS5jCj4+PiBAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg aW50IEZVTkMoZ2VuZXJhbF9jb25zdHJhaW50c19pbmZvKSAKPj4+IChDb2RlZEJpdHN0cmVhbUNv bnRleHQgKmN0eCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUldDb250ZXh0 ICpydywKPj4+IEgyNjZHZW5lcmFsQ29uc3RyYWludHNJbmZvICpjdXJyZW50KQo+Pj4gwqAgewo+ Pj4gLcKgwqDCoCBpbnQgZXJyLCBpOwo+Pj4gK8KgwqDCoCBpbnQgZXJyLCBpLCBudW1fYWRkaXRp b25hbF9iaXRzX3VzZWQ7Cj4+PiDCoCDCoMKgwqDCoMKgIGZsYWcoZ2NpX3ByZXNlbnRfZmxhZyk7 Cj4+PiDCoMKgwqDCoMKgIGlmIChjdXJyZW50LT5nY2lfcHJlc2VudF9mbGFnKSB7Cj4+PiBAQCAt MTQ5LDcgKzE0OSwyNSBAQCBzdGF0aWMgaW50IEZVTkMoZ2VuZXJhbF9jb25zdHJhaW50c19pbmZv KSAKPj4+IChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBmbGFnKGdjaV9ub19sYWRmX2NvbnN0cmFpbnRfZmxhZyk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZmxhZyhnY2lfbm9fdmlydHVhbF9ib3VuZGFyaWVzX2NvbnN0cmFpbnRfZmxhZyk7Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgdWIoOCwgZ2NpX251bV9yZXNlcnZlZF9iaXRzKTsKPj4KPj4gVGhp cyBzaG91bGQgYmUgcmVuYW1lZCB0byBnY2lfbnVtX2FkZGl0aW9uYWxfYml0cyB3aGlsZSBhdCBp dC4KPj4KPj4+IC3CoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgY3VycmVudC0+Z2NpX251 bV9yZXNlcnZlZF9iaXRzOyBpKyspIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoY3VycmVudC0+ Z2NpX251bV9yZXNlcnZlZF9iaXRzID4gNSkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZmxhZyhnY2lfYWxsX3JhcF9waWN0dXJlc19jb25zdHJhaW50X2ZsYWcpOwo+Pj4gKyBmbGFnKGdj aV9ub19leHRlbmRlZF9wcmVjaXNpb25fcHJvY2Vzc2luZ19jb25zdHJhaW50X2ZsYWcpOwo+Pj4g KyBmbGFnKGdjaV9ub190c19yZXNpZHVhbF9jb2RpbmdfcmljZV9jb25zdHJhaW50X2ZsYWcpOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmxhZyhnY2lfbm9fcnJjX3JpY2VfZXh0ZW5zaW9u X2NvbnN0cmFpbnRfZmxhZyk7Cj4+PiArIGZsYWcoZ2NpX25vX3BlcnNpc3RlbnRfcmljZV9hZGFw dGF0aW9uX2NvbnN0cmFpbnRfZmxhZyk7Cj4+PiArIGZsYWcoZ2NpX25vX3JldmVyc2VfbGFzdF9z aWdfY29lZmZfY29uc3RyYWludF9mbGFnKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51 bV9hZGRpdGlvbmFsX2JpdHNfdXNlZCA9IDY7Cj4+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZmVyKGdjaV9hbGxfcmFwX3BpY3R1cmVzX2Nv bnN0cmFpbnRfZmxhZywgMCk7Cj4+PiArIGluZmVyKGdjaV9ub19leHRlbmRlZF9wcmVjaXNpb25f cHJvY2Vzc2luZ19jb25zdHJhaW50X2ZsYWcsIDApOwo+Pj4gKyBpbmZlcihnY2lfbm9fdHNfcmVz aWR1YWxfY29kaW5nX3JpY2VfY29uc3RyYWludF9mbGFnLCAwKTsKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGluZmVyKGdjaV9ub19ycmNfcmljZV9leHRlbnNpb25fY29uc3RyYWludF9mbGFn LCAwKTsKPj4+ICsgaW5mZXIoZ2NpX25vX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2NvbnN0 cmFpbnRfZmxhZywgMCk7Cj4+PiArIGluZmVyKGdjaV9ub19yZXZlcnNlX2xhc3Rfc2lnX2NvZWZm X2NvbnN0cmFpbnRfZmxhZywgMCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBudW1fYWRk aXRpb25hbF9iaXRzX3VzZWQgPSAwOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+ICsKPj4+ICvC oMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgY3VycmVudC0+Z2NpX251bV9yZXNlcnZlZF9i aXRzIC0gCj4+PiBudW1fYWRkaXRpb25hbF9iaXRzX3VzZWQ7IGkrKykgewo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZmxhZ3MoZ2NpX3Jlc2VydmVkX3plcm9fYml0W2ldLCAxLCBpKTsK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IEBAIC05NjMsNiAr OTgxLDIzIEBAIHN0YXRpYyBpbnQgRlVOQyh2cHMpIChDb2RlZEJpdHN0cmVhbUNvbnRleHQgCj4+ PiAqY3R4LCBSV0NvbnRleHQgKnJ3LAo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIH0K Pj4+IMKgICtzdGF0aWMgaW50IEZVTkMoc3BzX3JhbmdlX2V4dGVuc2lvbikoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsIAo+Pj4gUldDb250ZXh0ICpydywKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg SDI2NlJhd1NQUyAqY3VycmVudCkKPj4+ICt7Cj4+PiArwqDCoMKgIGludCBlcnI7Cj4+PiArCj4+ PiArwqDCoMKgIGZsYWcoc3BzX2V4dGVuZGVkX3ByZWNpc2lvbl9mbGFnKTsKPj4+ICvCoMKgwqAg aWYgKGN1cnJlbnQtPnNwc190cmFuc2Zvcm1fc2tpcF9lbmFibGVkX2ZsYWcpIHsKPj4+ICvCoMKg wqDCoMKgwqDCoCBmbGFnKHNwc190c19yZXNpZHVhbF9jb2RpbmdfcmljZV9wcmVzZW50X2luX3No X2ZsYWcpOwo+Pj4gK8KgwqDCoCB9IGVsc2Ugewo+Pj4gK8KgwqDCoMKgwqDCoMKgIGluZmVyKHNw c190c19yZXNpZHVhbF9jb2RpbmdfcmljZV9wcmVzZW50X2luX3NoX2ZsYWcsIDApOwo+Pj4gK8Kg wqDCoCB9Cj4+PiArwqDCoMKgIGZsYWcoc3BzX3JyY19yaWNlX2V4dGVuc2lvbl9mbGFnKTsKPj4+ ICvCoMKgwqAgZmxhZyhzcHNfcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFn KTsKPj4+ICvCoMKgwqAgZmxhZyhzcHNfcmV2ZXJzZV9sYXN0X3NpZ19jb2VmZl9lbmFibGVkX2Zs YWcpOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiDCoCDCoCBzdGF0aWMg aW50IEZVTkMoc3BzKShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEgyNjZSYXdT UFMgKmN1cnJlbnQpCj4+PiBAQCAtMTUxOCw5ICsxNTUzLDMzIEBAIHN0YXRpYyBpbnQgRlVOQyhz cHMpKENvZGVkQml0c3RyZWFtQ29udGV4dCAKPj4+ICpjdHgsIFJXQ29udGV4dCAqcncsCj4+PiDC oMKgwqDCoMKgIH0gZWxzZSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQ0hFQ0soRlVOQyh2dWlf cGFyYW1ldGVyc19kZWZhdWx0KSAoY3R4LCBydywgJmN1cnJlbnQtPnZ1aSkpOwo+Pj4gwqDCoMKg wqDCoCB9Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGZsYWcoc3BzX2V4dGVuc2lvbl9mbGFnKTsKPj4+ IC3CoMKgwqAgaWYgKGN1cnJlbnQtPnNwc19leHRlbnNpb25fZmxhZykKPj4+IC3CoMKgwqDCoMKg wqDCoCBDSEVDSyhGVU5DKGV4dGVuc2lvbl9kYXRhKSAoY3R4LCBydywgCj4+PiAmY3VycmVudC0+ ZXh0ZW5zaW9uX2RhdGEpKTsKPj4+ICvCoMKgwqAgaWYgKGN1cnJlbnQtPnNwc19leHRlbnNpb25f ZmxhZykgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIGZsYWcoc3BzX3JhbmdlX2V4dGVuc2lvbl9mbGFn KTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB1Yig3LCBzcHNfZXh0ZW5zaW9uXzdiaXRzKTsKPj4+ICsK Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoY3VycmVudC0+c3BzX3JhbmdlX2V4dGVuc2lvbl9mbGFn KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDSEVDSyhGVU5DKHNwc19yYW5nZV9leHRl bnNpb24pKGN0eCwgcncsIGN1cnJlbnQpKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5mZXIoc3BzX2V4dGVuZGVkX3ByZWNpc2lvbl9m bGFnLCAwKTsKPj4+ICsgaW5mZXIoc3BzX3RzX3Jlc2lkdWFsX2NvZGluZ19yaWNlX3ByZXNlbnRf aW5fc2hfZmxhZywgMCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZlcihzcHNfcnJj X3JpY2VfZXh0ZW5zaW9uX2ZsYWcsIDApOwo+Pj4gKyBpbmZlcihzcHNfcGVyc2lzdGVudF9yaWNl X2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnLCAwKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGluZmVyKHNwc19yZXZlcnNlX2xhc3Rfc2lnX2NvZWZmX2VuYWJsZWRfZmxhZywgMCk7Cj4+PiAr wqDCoMKgwqDCoMKgwqAgfQo+Pj4gK8KgwqDCoCB9IGVsc2Ugewo+Pj4gK8KgwqDCoMKgwqDCoMKg IGluZmVyKHNwc19yYW5nZV9leHRlbnNpb25fZmxhZywgMCk7Cj4+PiArwqDCoMKgwqDCoMKgwqAg aW5mZXIoc3BzX2V4dGVuc2lvbl83Yml0cywgMCk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaW5mZXIo c3BzX2V4dGVuZGVkX3ByZWNpc2lvbl9mbGFnLCAwKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpbmZl cihzcHNfdHNfcmVzaWR1YWxfY29kaW5nX3JpY2VfcHJlc2VudF9pbl9zaF9mbGFnLCAwKTsKPj4+ ICvCoMKgwqDCoMKgwqDCoCBpbmZlcihzcHNfcnJjX3JpY2VfZXh0ZW5zaW9uX2ZsYWcsIDApOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGluZmVyKHNwc19wZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9l bmFibGVkX2ZsYWcsIDApOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGluZmVyKHNwc19yZXZlcnNlX2xh c3Rfc2lnX2NvZWZmX2VuYWJsZWRfZmxhZywgMCk7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvC oMKgwqAgaWYgKGN1cnJlbnQtPnNwc19leHRlbnNpb25fN2JpdHMpCj4+PiArwqDCoMKgwqDCoMKg wqAgQ0hFQ0soRlVOQyhleHRlbnNpb25fZGF0YSkoY3R4LCBydywgCj4+PiAmY3VycmVudC0+ZXh0 ZW5zaW9uX2RhdGEpKTsKPj4+IMKgIMKgwqDCoMKgwqAgQ0hFQ0soRlVOQyhyYnNwX3RyYWlsaW5n X2JpdHMpIChjdHgsIHJ3KSk7Cj4+PiDCoCBAQCAtMzAwNSw2ICszMDY0LDE4IEBAIHN0YXRpYyBp bnQgRlVOQyhzbGljZV9oZWFkZXIpIAo+Pj4gKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBS V0NvbnRleHQgKnJ3LAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGZsYWcoc2hfdHNfcmVzaWR1YWxf Y29kaW5nX2Rpc2FibGVkX2ZsYWcpOwo+Pj4gwqDCoMKgwqDCoCBlbHNlCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgaW5mZXIoc2hfdHNfcmVzaWR1YWxfY29kaW5nX2Rpc2FibGVkX2ZsYWcsIDApOwo+ Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoIWN1cnJlbnQtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNh YmxlZF9mbGFnICYmCj4+PiArIHNwcy0+c3BzX3RzX3Jlc2lkdWFsX2NvZGluZ19yaWNlX3ByZXNl bnRfaW5fc2hfZmxhZykKPj4+ICvCoMKgwqDCoMKgwqDCoCB1YigzLCBzaF90c19yZXNpZHVhbF9j b2RpbmdfcmljZV9pZHhfbWludXMxKTsKPj4+ICvCoMKgwqAgZWxzZQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGluZmVyKHNoX3RzX3Jlc2lkdWFsX2NvZGluZ19yaWNlX2lkeF9taW51czEsIDApOwo+Pj4g Kwo+Pj4gK8KgwqDCoCBpZiAoc3BzLT5zcHNfcmV2ZXJzZV9sYXN0X3NpZ19jb2VmZl9lbmFibGVk X2ZsYWcpCj4+PiArwqDCoMKgwqDCoMKgwqAgZmxhZyhzaF9yZXZlcnNlX2xhc3Rfc2lnX2NvZWZm X2ZsYWcpOwo+Pj4gK8KgwqDCoCBlbHNlCj4+PiArwqDCoMKgwqDCoMKgwqAgaW5mZXIoc2hfcmV2 ZXJzZV9sYXN0X3NpZ19jb2VmZl9mbGFnLCAwKTsKPj4KPj4gRG8geW91IGtub3cgd2hhdCBzYW1w bGUgaWYgYW55IGluIHRoZSBjb25mb3JtYW5jZSBzdWl0ZSBjb3ZlcnMgdGhpcz8KPgo+IEEgbWF0 cml4IHNob3dpbmcgd2hpY2ggdGVzdCBiaXRzdHJlYW1zIHRlc3Qgd2hpY2ggcmFuZ2UgZXh0ZW5z aW9uIAo+IGZlYXR1cmVzIGlzIGF2YWlsYWJsZSBoZXJlOiAKPiBodHRwczovL2dpdGh1Yi5jb20v ZmZ2dmMvRkZtcGVnL2lzc3Vlcy84MyNpc3N1ZWNvbW1lbnQtMTU3NTY1ODIzMgpBcG9sb2dpZXMs IEkgc2VlIG5vdyB0aGlzIGlzIGluIHRoZSBzbGljZSBoZWFkZXIgcmF0aGVyIHRoYW4gdGhlIFNQ Uy4gClRoaXMgcGFydGljdWxhciBsb2dpYyBpcyB0ZXN0ZWQgYnkgdGhlIGZvbGxvd2luZyBiaXRz dHJlYW1zOgoKICAqIDEyYjQ0NHZ2YzFfRV9Tb255XzIKICAqIDEyYjQ0NElldHNyY19BX0t3YWlf MgogICogMTBiNDQ0UDE2X0RfU29ueV8yCiAgKiAxMmI0NDRJZXBwX0FfU2hhcnBfMgogICogMTJi NDQ0U1BldHNyY19CX0t3YWlfMgogICogMTBiNDQ0UDE2X0FfU29ueV8yCiAgKiAxMmI0NDR2dmMx X0RfU29ueV8yCiAgKiAxMGI0NDRQMTZfQ19Tb255XzIKICAqIDEyYjQ0NHZ2YzFfQV9Tb255XzIK ICAqIDEwYjQ0NFAxMl9DX1NvbnlfMgogICogMTJiNDQ0U1B2dmMxX0FfQWxpYmFiYV8yCiAgKiAx MmI0MjBTUHZ2YzFfQV9LRERJXzIKICAqIDEyYjQ0NFNQZXRzcmNfSF9Ld2FpXzIKICAqIDEwYjQ0 NFAxMl9BX1NvbnlfMgogICogMTJiNDQ0U1BlcHBfQV9TaGFycF8yCiAgKiAxMmI0NDRTUGV0c3Jj X0RfS3dhaV8yCiAgKiAxMmI0NDRTUGV0c3JjX0ZfS3dhaV8yCiAgKiAxMGI0NDRQMTZfRV9Tb255 XzIKICAqIDEyYjQ0NEl2dmMxX0FfQWxpYmFiYV8yCiAgKiAxMmI0NDR2dmMxX0JfU29ueV8yCiAg KiAxMGI0NDRQMTZfQl9Tb255XzIKICAqIDEyYjQyMEl2dmMxX0FfSW50ZXJEaWdpdGFsXzIKICAq IDEwYjQ0NFAxMl9FX1NvbnlfMgogICogMTJiNDQ0dnZjMV9DX1NvbnlfMgogICogMTJiNDIwdnZj MV9BX0FsaWJhYmFfMgogICogMTJiNDQ0U1BldHNyY19BX0t3YWlfMgogICogMTJiNDQ0U1BldHNy Y19DX0t3YWlfMgogICogMTJiNDQ0U1BldHNyY19FX0t3YWlfMgogICogMTJiNDQ0U1BldHNyY19H X0t3YWlfMgogICogSFJEX0FfRnVqaXRzdV80CiAgKiAxMmI0NDRldHNyY19BX0t3YWlfMgogICog MTBiNDQ0UDEyX0JfU29ueV8yCiAgKiAxMmI0NDRlcHBfQV9TaGFycF8yCiAgKiAxMGI0NDRQMTJf RF9Tb255XzIKCj4KPj4KPj4+ICsKPj4+IMKgwqDCoMKgwqAgaWYgKHBwcy0+cHBzX3NsaWNlX2hl YWRlcl9leHRlbnNpb25fcHJlc2VudF9mbGFnKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdWUo c2hfc2xpY2VfaGVhZGVyX2V4dGVuc2lvbl9sZW5ndGgsIDAsIDI1Nik7Cj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IGN1cnJlbnQtPnNoX3NsaWNlX2hlYWRlcl9leHRlbnNp b25fbGVuZ3RoOyAKPj4+IGkrKykKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+PiBmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZwo+PiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKPj4KPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWls Cj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNj cmliZSIuCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxp bmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1h bi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3Zl LCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAi dW5zdWJzY3JpYmUiLgo=