From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3 2/4] drm/i915: Extend PARAMS_FOR_EACH macro with more data Date: Thu, 15 Jun 2017 22:24:10 +0300 Message-ID: <87k24dxdet.fsf@intel.com> References: <20170614181551.47136-1-michal.wajdeczko@intel.com> <20170614181551.47136-3-michal.wajdeczko@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4D00E6E7FC for ; Thu, 15 Jun 2017 19:24:17 +0000 (UTC) In-Reply-To: <20170614181551.47136-3-michal.wajdeczko@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxNCBKdW4gMjAxNywgTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0Bp bnRlbC5jb20+IHdyb3RlOgo+IEN1cnJlbnRseSBvdXIgUEFSQU1TX0ZPUl9FQUNIIG1hY3JvIGNv bnRhaW5zIG9ubHkgcGFyYW0gdHlwZSBhbmQgbmFtZS4KPiBXZSB1c2UgdGhpcyBtYWNybyB0byBk ZWZpbmUgc3RydWN0IG1lbWJlcnMsIGJ1dCBsYXRlciBvbiB3ZSBpbml0aWFsaXplCj4gdGhpcyBz dHJ1Y3QgdXNpbmcgaGFuZGNyYWZ0ZWQgY29kZSwgd2hpY2ggbGVhZHMgaW4gc29tZSBjYXNlcyB0 byB1c2UKPiBtaXNtYXRjaGVkIHZhbHVlIHZzLiB0eXBlLiBMZXQncyBleHRlbmQgb3VyIHJvb3Qg bWFjcm8gd2l0aCBwYXJhbQo+IGRlZmF1bHQgdmFsdWUgdG8ga2VlcCB0aGVtIGluIHN5bmMuIEFs c28gZHJvcCA7IGZyb20gdGhlIG1hY3JvIHRvIGFsbG93Cj4gbW9yZSBmbGV4aWJsZSB1c2FnZXMu Cj4KPiB2MjogQWRkIHVuc2FmZSB0YWcgKENocmlzKQo+ICAgICBBZGQgYWxsIG90aGVyIGRhdGEg dG8gYWxsb3cgY29tcGxldGUgYXV0b21hdGlvbiAoTWljaGFsKQo+Cj4gQXMgd2Ugbm93IGhhdmUg YWxsIGRhdGEgaW4gdGhlIHBhcmFtIG1hY3JvLCB3ZSBjYW4gYXV0b21hdGljYWxseQo+IGFkZCAn ZGVmYXVsdCcgaW5mbyB0byB0aGUgZGVzY3JpcHRpb24gYW5kIGF2b2lkIGFueSBtaXNtYXRjaGVz Lgo+Cj4gdjM6IEZpeCBwcmludGluZyBkZWZhdWx0IHZhbHVlIGluIHRoZSBkZXNjcmlwdGlvbiAo TWljaGFsKQo+IHY0OiBzL2Z1bmMvcGFyYW0gYW5kIHJlb3JkZXIgaXRlbXMgKENocmlzKQo+Cj4g U2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5j b20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgIHwgICA2ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgfCAgMTAgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgICB8IDIzNCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmggICAgfCAxODIg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0 aW9ucygrKSwgMjc1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBpbmRleCBhNmJhMjEwLi45ZmJiYTFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBAQCAtNDQsOSArNDQsOSBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQg c2VxX3ByaW50X3BhcmFtKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAgCQlzZXFfcHJpbnRmKG0sICJp OTE1LiVzPSVzXG4iLCBuYW1lLCB5ZXNubygqKGNvbnN0IGJvb2wgKil4KSk7Cj4gIAllbHNlIGlm ICghX19idWlsdGluX3N0cmNtcCh0eXBlLCAiaW50IikpCj4gIAkJc2VxX3ByaW50ZihtLCAiaTkx NS4lcz0lZFxuIiwgbmFtZSwgKihjb25zdCBpbnQgKil4KTsKPiAtCWVsc2UgaWYgKCFfX2J1aWx0 aW5fc3RyY21wKHR5cGUsICJ1bnNpZ25lZCBpbnQiKSkKPiArCWVsc2UgaWYgKCFfX2J1aWx0aW5f c3RyY21wKHR5cGUsICJ1aW50IikpCj4gIAkJc2VxX3ByaW50ZihtLCAiaTkxNS4lcz0ldVxuIiwg bmFtZSwgKihjb25zdCB1bnNpZ25lZCBpbnQgKil4KTsKPiAtCWVsc2UgaWYgKCFfX2J1aWx0aW5f c3RyY21wKHR5cGUsICJjaGFyICoiKSkKPiArCWVsc2UgaWYgKCFfX2J1aWx0aW5fc3RyY21wKHR5 cGUsICJjaGFycCIpKQo+ICAJCXNlcV9wcmludGYobSwgImk5MTUuJXM9JXNcbiIsIG5hbWUsICoo Y29uc3QgY2hhciAqKil4KTsKPiAgCWVsc2UKPiAgCQlCVUlMRF9CVUcoKTsKPiBAQCAtNjYsNyAr NjYsNyBAQCBzdGF0aWMgaW50IGk5MTVfY2FwYWJpbGl0aWVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgI3VuZGVmIFBSSU5UX0ZMQUcKPiAgCj4gIAlrZXJuZWxfcGFyYW1fbG9j ayhUSElTX01PRFVMRSk7Cj4gLSNkZWZpbmUgUFJJTlRfUEFSQU0oVCwgeCkgc2VxX3ByaW50X3Bh cmFtKG0sICN4LCAjVCwgJmk5MTUueCk7Cj4gKyNkZWZpbmUgUFJJTlRfUEFSQU0oWCwgVCwgViwg VSwgTSwgQiwgRCkgc2VxX3ByaW50X3BhcmFtKG0sICNYLCAjVCwgJmk5MTUuWCk7Cj4gIAlJOTE1 X1BBUkFNU19GT1JfRUFDSChQUklOVF9QQVJBTSk7Cj4gICN1bmRlZiBQUklOVF9QQVJBTQo+ICAJ a2VybmVsX3BhcmFtX3VubG9jayhUSElTX01PRFVMRSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jCj4gaW5kZXggZTE4ZjM1MC4uMDAwZjczMyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC01NTUsOSArNTU1LDkgQEAgc3RhdGljIF9fYWx3 YXlzX2lubGluZSB2b2lkIGVycl9wcmludF9wYXJhbShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGVfYnVmICptLAo+ICAJCWVycl9wcmludGYobSwgImk5MTUuJXM9JXNcbiIsIG5hbWUsIHllc25v KCooY29uc3QgYm9vbCAqKXgpKTsKPiAgCWVsc2UgaWYgKCFfX2J1aWx0aW5fc3RyY21wKHR5cGUs ICJpbnQiKSkKPiAgCQllcnJfcHJpbnRmKG0sICJpOTE1LiVzPSVkXG4iLCBuYW1lLCAqKGNvbnN0 IGludCAqKXgpOwo+IC0JZWxzZSBpZiAoIV9fYnVpbHRpbl9zdHJjbXAodHlwZSwgInVuc2lnbmVk IGludCIpKQo+ICsJZWxzZSBpZiAoIV9fYnVpbHRpbl9zdHJjbXAodHlwZSwgInVpbnQiKSkKPiAg CQllcnJfcHJpbnRmKG0sICJpOTE1LiVzPSV1XG4iLCBuYW1lLCAqKGNvbnN0IHVuc2lnbmVkIGlu dCAqKXgpOwo+IC0JZWxzZSBpZiAoIV9fYnVpbHRpbl9zdHJjbXAodHlwZSwgImNoYXIgKiIpKQo+ ICsJZWxzZSBpZiAoIV9fYnVpbHRpbl9zdHJjbXAodHlwZSwgImNoYXJwIikpCj4gIAkJZXJyX3By aW50ZihtLCAiaTkxNS4lcz0lc1xuIiwgbmFtZSwgKihjb25zdCBjaGFyICoqKXgpOwo+ICAJZWxz ZQo+ICAJCUJVSUxEX0JVRygpOwo+IEBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIF9fYWx3YXlz X2lubGluZSB2b2lkIGVycl9wcmludF9wYXJhbShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICptLAo+ICBzdGF0aWMgdm9pZCBlcnJfcHJpbnRfcGFyYW1zKHN0cnVjdCBkcm1faTkxNV9l cnJvcl9zdGF0ZV9idWYgKm0sCj4gIAkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfcGFyYW1zICpw KQo+ICB7Cj4gLSNkZWZpbmUgUFJJTlQoVCwgeCkgZXJyX3ByaW50X3BhcmFtKG0sICN4LCAjVCwg JnAtPngpOwo+ICsjZGVmaW5lIFBSSU5UKFgsIFQsIFYsIFUsIE0sIEIsIEQpIGVycl9wcmludF9w YXJhbShtLCAjWCwgI1QsICZwLT5YKTsKPiAgCUk5MTVfUEFSQU1TX0ZPUl9FQUNIKFBSSU5UKTsK PiAgI3VuZGVmIFBSSU5UCj4gIH0KPiBAQCAtODYwLDcgKzg2MCw3IEBAIHZvaWQgX19pOTE1X2dw dV9zdGF0ZV9mcmVlKHN0cnVjdCBrcmVmICplcnJvcl9yZWYpCj4gIAlrZnJlZShlcnJvci0+b3Zl cmxheSk7Cj4gIAlrZnJlZShlcnJvci0+ZGlzcGxheSk7Cj4gIAo+IC0jZGVmaW5lIEZSRUUoVCwg eCkgZnJlZV9wYXJhbSgjVCwgJmVycm9yLT5wYXJhbXMueCk7Cj4gKyNkZWZpbmUgRlJFRShYLCBU LCBWLCBVLCBNLCBCLCBEKSBmcmVlX3BhcmFtKCNULCAmZXJyb3ItPnBhcmFtcy5YKTsKPiAgCUk5 MTVfUEFSQU1TX0ZPUl9FQUNIKEZSRUUpOwo+ICAjdW5kZWYgRlJFRQo+ICAKPiBAQCAtMTY5NCw3 ICsxNjk0LDcgQEAgc3RhdGljIGludCBjYXB0dXJlKHZvaWQgKmRhdGEpCj4gIAkJCQkJICAgZXJy b3ItPmk5MTUtPmd0Lmxhc3RfaW5pdF90aW1lKSk7Cj4gIAo+ICAJZXJyb3ItPnBhcmFtcyA9IGk5 MTU7Cj4gLSNkZWZpbmUgRFVQKFQsIHgpIGR1cF9wYXJhbSgjVCwgJmVycm9yLT5wYXJhbXMueCk7 Cj4gKyNkZWZpbmUgRFVQKFgsIFQsIFYsIFUsIE0sIEIsIEQpIGR1cF9wYXJhbSgjVCwgJmVycm9y LT5wYXJhbXMuWCk7Cj4gIAlJOTE1X1BBUkFNU19GT1JfRUFDSChEVVApOwo+ICAjdW5kZWYgRFVQ Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+IGluZGV4IDZjMjdkMzMuLjU0N2U1 MTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBAQCAtMjYsMjMwICsyNiwx NiBAQAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgCj4gIHN0cnVjdCBpOTE1X3BhcmFtcyBp OTE1IF9fcmVhZF9tb3N0bHkgPSB7Cj4gLQkubW9kZXNldCA9IC0xLAo+IC0JLnBhbmVsX2lnbm9y ZV9saWQgPSAxLAo+IC0JLnNlbWFwaG9yZXMgPSAtMSwKPiAtCS5sdmRzX2NoYW5uZWxfbW9kZSA9 IDAsCj4gLQkucGFuZWxfdXNlX3NzYyA9IC0xLAo+IC0JLnZidF9zZHZvX3BhbmVsX3R5cGUgPSAt MSwKPiAtCS5lbmFibGVfcmM2ID0gLTEsCj4gLQkuZW5hYmxlX2RjID0gLTEsCj4gLQkuZW5hYmxl X2ZiYyA9IC0xLAo+IC0JLmVuYWJsZV9leGVjbGlzdHMgPSAtMSwKPiAtCS5lbmFibGVfaGFuZ2No ZWNrID0gdHJ1ZSwKPiAtCS5lbmFibGVfcHBndHQgPSAtMSwKPiAtCS5lbmFibGVfcHNyID0gLTEs Cj4gLQkuYWxwaGFfc3VwcG9ydCA9IElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0FMUEhBX1NV UFBPUlQpLAo+IC0JLmRpc2FibGVfcG93ZXJfd2VsbCA9IC0xLAo+IC0JLmVuYWJsZV9pcHMgPSAx LAo+IC0JLmZhc3Rib290ID0gMCwKPiAtCS5wcmVmYXVsdF9kaXNhYmxlID0gMCwKPiAtCS5sb2Fk X2RldGVjdF90ZXN0ID0gMCwKPiAtCS5mb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3QgPSAwLAo+IC0J LnJlc2V0ID0gdHJ1ZSwKPiAtCS5lcnJvcl9jYXB0dXJlID0gdHJ1ZSwKPiAtCS5pbnZlcnRfYnJp Z2h0bmVzcyA9IDAsCj4gLQkuZGlzYWJsZV9kaXNwbGF5ID0gMCwKPiAtCS5lbmFibGVfY21kX3Bh cnNlciA9IHRydWUsCj4gLQkudXNlX21taW9fZmxpcCA9IDAsCj4gLQkubW1pb19kZWJ1ZyA9IDAs Cj4gLQkudmVyYm9zZV9zdGF0ZV9jaGVja3MgPSAxLAo+IC0JLm51Y2xlYXJfcGFnZWZsaXAgPSAw LAo+IC0JLmVkcF92c3dpbmcgPSAwLAo+IC0JLmVuYWJsZV9ndWNfbG9hZGluZyA9IDAsCj4gLQku ZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMCwKPiAtCS5ndWNfbG9nX2xldmVsID0gLTEsCj4gLQku Z3VjX2Zpcm13YXJlX3BhdGggPSBOVUxMLAo+IC0JLmh1Y19maXJtd2FyZV9wYXRoID0gTlVMTCwK PiAtCS5lbmFibGVfZHBfbXN0ID0gdHJ1ZSwKPiAtCS5pbmplY3RfbG9hZF9mYWlsdXJlID0gMCwK PiAtCS5lbmFibGVfZHBjZF9iYWNrbGlnaHQgPSBmYWxzZSwKPiAtCS5lbmFibGVfZ3Z0ID0gZmFs c2UsCj4gKyNkZWZpbmUgTUVNQkVSKE5hbWUsIFR5cGUsIFZhbHVlLCBVbnNhZmUsIE1vZGUsIEJy aWVmLCBEZXRhaWxlZCkgLk5hbWUgPSBWYWx1ZSwKPiArCUk5MTVfUEFSQU1TX0ZPUl9FQUNIKE1F TUJFUikKPiArI3VuZGVmIE1FTUJFUgo+ICB9Owo+ICAKPiAtbW9kdWxlX3BhcmFtX25hbWVkKG1v ZGVzZXQsIGk5MTUubW9kZXNldCwgaW50LCAwNDAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhtb2Rl c2V0LAo+IC0JIlVzZSBrZXJuZWwgbW9kZXNldHRpbmcgW0tNU10gKDA9ZGlzYWJsZSwgIgo+IC0J IjE9b24sIC0xPWZvcmNlIHZnYSBjb25zb2xlIHByZWZlcmVuY2UgW2RlZmF1bHRdKSIpOwo+ICsj dW5kZWYgTlVMTCAvKiB3ZSBkb24ndCB3YW50IHRvIHNlZSAodm9pZCopMCBpbiB0aGUgZGVzY3Jp cHRpb24gKi8KPiArI2RlZmluZSBOVUxMICIiCgpZdWNrLgoKSSdtIG5vdCBvbmUgdG8gc2h5IGF3 YXkgZnJvbSBtYWNybyB0cmlja2VyeSwgYnV0IEknbSByZWFsbHkgc3RhcnRpbmcgdG8Kd29uZGVy IGFib3V0IHRoZSBtYWludGFpbmFiaWxpdHkgb2YgdGhlIGNvbXBsZXhpdHkgb2YgYWxsIHRoaXMg dnMuIHRoZQpkdXBsaWNhdGlvbiBvZiB0aGUgY3VycmVudCBvbmUuIEhvdyBhYm91dCB3YWl0aW5n IGZvciBEYW5pZWwgdG8gdGlwIHRoZQpzY2FsZXMgb25lIHdheSBvciB0aGUgb3RoZXI/CgpJZiBu b3RoaW5nIGVsc2UsIHRoaXMgcGF0Y2ggdW5kZXJsaW5lcyB0aGUgcmVhbCBtYWludGFpbmFiaWxp dHkgYnVyZGVuCnRoYXQgY29tZXMgd2l0aCB0aGUgc2hlZXIgbnVtYmVyIG9mIG1vZHVsZSBwYXJh bWV0ZXJzIHdlIGhhdmUuCgpOaXRwaWNrLCB0aGUgY2FwaXRhbGl6ZWQgcGFyYW0gbmFtZXMgYXJl bid0IGlkZWFsLgoKCkJSLApKYW5pLgoKCj4gKyNkZWZpbmUgUEFSQU0oTmFtZSwgVHlwZSwgVmFs dWUsIFVuc2FmZSwgTW9kZSwgQnJpZWYsIERldGFpbGVkKSBcCj4gKwltb2R1bGVfcGFyYW1fbmFt ZWQjI1Vuc2FmZShOYW1lLCBpOTE1Lk5hbWUsIFR5cGUsIE1vZGUpOyBcCj4gKwlNT0RVTEVfUEFS TV9ERVNDKE5hbWUsIEJyaWVmICIgIiBEZXRhaWxlZCAiW2RlZmF1bHQ6ICIgX19zdHJpbmdpZnko VmFsdWUpICJdIik7Cj4gK0k5MTVfUEFSQU1TX0ZPUl9FQUNIKFBBUkFNKQo+ICsjdW5kZWYgUEFS QU0KPiAgCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUocGFuZWxfaWdub3JlX2xpZCwgaTkx NS5wYW5lbF9pZ25vcmVfbGlkLCBpbnQsIDA2MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKHBhbmVs X2lnbm9yZV9saWQsCj4gLQkiT3ZlcnJpZGUgbGlkIHN0YXR1cyAoMD1hdXRvZGV0ZWN0LCAxPWF1 dG9kZXRlY3QgZGlzYWJsZWQgW2RlZmF1bHRdLCAiCj4gLQkiLTE9Zm9yY2UgbGlkIGNsb3NlZCwg LTI9Zm9yY2UgbGlkIG9wZW4pIik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHNl bWFwaG9yZXMsIGk5MTUuc2VtYXBob3JlcywgaW50LCAwNDAwKTsKPiAtTU9EVUxFX1BBUk1fREVT QyhzZW1hcGhvcmVzLAo+IC0JIlVzZSBzZW1hcGhvcmVzIGZvciBpbnRlci1yaW5nIHN5bmMgIgo+ IC0JIihkZWZhdWx0OiAtMSAodXNlIHBlci1jaGlwIGRlZmF1bHRzKSkiKTsKPiAtCj4gLW1vZHVs ZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX3JjNiwgaTkxNS5lbmFibGVfcmM2LCBpbnQsIDA0 MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9yYzYsCj4gLQkiRW5hYmxlIHBvd2VyLXNh dmluZyByZW5kZXIgQy1zdGF0ZSA2LiAiCj4gLQkiRGlmZmVyZW50IHN0YWdlcyBjYW4gYmUgc2Vs ZWN0ZWQgdmlhIGJpdG1hc2sgdmFsdWVzICIKPiAtCSIoMCA9IGRpc2FibGU7IDEgPSBlbmFibGUg cmM2OyAyID0gZW5hYmxlIGRlZXAgcmM2OyA0ID0gZW5hYmxlIGRlZXBlc3QgcmM2KS4gIgo+IC0J IkZvciBleGFtcGxlLCAzIHdvdWxkIGVuYWJsZSByYzYgYW5kIGRlZXAgcmM2LCBhbmQgNyB3b3Vs ZCBlbmFibGUgZXZlcnl0aGluZy4gIgo+IC0JImRlZmF1bHQ6IC0xICh1c2UgcGVyLWNoaXAgZGVm YXVsdCkiKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2RjLCBpOTE1 LmVuYWJsZV9kYywgaW50LCAwNDAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZGMsCj4g LQkiRW5hYmxlIHBvd2VyLXNhdmluZyBkaXNwbGF5IEMtc3RhdGVzLiAiCj4gLQkiKC0xPWF1dG8g W2RlZmF1bHRdOyAwPWRpc2FibGU7IDE9dXAgdG8gREM1OyAyPXVwIHRvIERDNikiKTsKPiAtCj4g LW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX2ZiYywgaTkxNS5lbmFibGVfZmJjLCBp bnQsIDA2MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9mYmMsCj4gLQkiRW5hYmxlIGZy YW1lIGJ1ZmZlciBjb21wcmVzc2lvbiBmb3IgcG93ZXIgc2F2aW5ncyAiCj4gLQkiKGRlZmF1bHQ6 IC0xICh1c2UgcGVyLWNoaXAgZGVmYXVsdCkpIik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRf dW5zYWZlKGx2ZHNfY2hhbm5lbF9tb2RlLCBpOTE1Lmx2ZHNfY2hhbm5lbF9tb2RlLCBpbnQsIDA0 MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGx2ZHNfY2hhbm5lbF9tb2RlLAo+IC0JICJTcGVjaWZ5 IExWRFMgY2hhbm5lbCBtb2RlICIKPiAtCSAiKDA9cHJvYmUgQklPUyBbZGVmYXVsdF0sIDE9c2lu Z2xlLWNoYW5uZWwsIDI9ZHVhbC1jaGFubmVsKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVk X3Vuc2FmZShwYW5lbF91c2Vfc3NjLCBpOTE1LnBhbmVsX3VzZV9zc2MsIGludCwgMDYwMCk7Cj4g LU1PRFVMRV9QQVJNX0RFU0MocGFuZWxfdXNlX3NzYywKPiAtCSJVc2UgU3ByZWFkIFNwZWN0cnVt IENsb2NrIHdpdGggcGFuZWxzIFtMVkRTL2VEUF0gIgo+IC0JIihkZWZhdWx0OiBhdXRvIGZyb20g VkJUKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZSh2YnRfc2R2b19wYW5lbF90 eXBlLCBpOTE1LnZidF9zZHZvX3BhbmVsX3R5cGUsIGludCwgMDQwMCk7Cj4gLU1PRFVMRV9QQVJN X0RFU0ModmJ0X3Nkdm9fcGFuZWxfdHlwZSwKPiAtCSJPdmVycmlkZS9JZ25vcmUgc2VsZWN0aW9u IG9mIFNEVk8gcGFuZWwgbW9kZSBpbiB0aGUgVkJUICIKPiAtCSIoLTI9aWdub3JlLCAtMT1hdXRv IFtkZWZhdWx0XSwgaW5kZXggaW4gVkJUIEJJT1MgdGFibGUpIik7Cj4gLQo+IC1tb2R1bGVfcGFy YW1fbmFtZWRfdW5zYWZlKHJlc2V0LCBpOTE1LnJlc2V0LCBib29sLCAwNjAwKTsKPiAtTU9EVUxF X1BBUk1fREVTQyhyZXNldCwgIkF0dGVtcHQgR1BVIHJlc2V0cyAoZGVmYXVsdDogdHJ1ZSkiKTsK PiAtCj4gLSNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKQo+IC1t b2R1bGVfcGFyYW1fbmFtZWQoZXJyb3JfY2FwdHVyZSwgaTkxNS5lcnJvcl9jYXB0dXJlLCBib29s LCAwNjAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlcnJvcl9jYXB0dXJlLAo+IC0JIlJlY29yZCB0 aGUgR1BVIHN0YXRlIGZvbGxvd2luZyBhIGhhbmcuICIKPiAtCSJUaGlzIGluZm9ybWF0aW9uIGlu IC9zeXMvY2xhc3MvZHJtL2NhcmQ8Tj4vZXJyb3IgaXMgdml0YWwgZm9yICIKPiAtCSJ0cmlhZ2lu ZyBhbmQgZGVidWdnaW5nIGhhbmdzLiIpOwo+IC0jZW5kaWYKPiAtCj4gLW1vZHVsZV9wYXJhbV9u YW1lZF91bnNhZmUoZW5hYmxlX2hhbmdjaGVjaywgaTkxNS5lbmFibGVfaGFuZ2NoZWNrLCBib29s LCAwNjQ0KTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfaGFuZ2NoZWNrLAo+IC0JIlBlcmlv ZGljYWxseSBjaGVjayBHUFUgYWN0aXZpdHkgZm9yIGRldGVjdGluZyBoYW5ncy4gIgo+IC0JIldB Uk5JTkc6IERpc2FibGluZyB0aGlzIGNhbiBjYXVzZSBzeXN0ZW0gd2lkZSBoYW5ncy4gIgo+IC0J IihkZWZhdWx0OiB0cnVlKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShlbmFi bGVfcHBndHQsIGk5MTUuZW5hYmxlX3BwZ3R0LCBpbnQsIDA0MDApOwo+IC1NT0RVTEVfUEFSTV9E RVNDKGVuYWJsZV9wcGd0dCwKPiAtCSJPdmVycmlkZSBQUEdUVCB1c2FnZS4gIgo+IC0JIigtMT1h dXRvIFtkZWZhdWx0XSwgMD1kaXNhYmxlZCwgMT1hbGlhc2luZywgMj1mdWxsLCAzPWZ1bGwgd2l0 aCBleHRlbmRlZCBhZGRyZXNzIHNwYWNlKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vu c2FmZShlbmFibGVfZXhlY2xpc3RzLCBpOTE1LmVuYWJsZV9leGVjbGlzdHMsIGludCwgMDQwMCk7 Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2V4ZWNsaXN0cywKPiAtCSJPdmVycmlkZSBleGVj bGlzdHMgdXNhZ2UuICIKPiAtCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9ZGlzYWJsZWQsIDE9ZW5h YmxlZCkiKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX3BzciwgaTkx NS5lbmFibGVfcHNyLCBpbnQsIDA2MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9wc3Is ICJFbmFibGUgUFNSICIKPiAtCQkgIigwPWRpc2FibGVkLCAxPWVuYWJsZWQgLSBsaW5rIG1vZGUg Y2hvc2VuIHBlci1wbGF0Zm9ybSwgMj1mb3JjZSBsaW5rLXN0YW5kYnkgbW9kZSwgMz1mb3JjZSBs aW5rLW9mZiBtb2RlKSAiCj4gLQkJICJEZWZhdWx0OiAtMSAodXNlIHBlci1jaGlwIGRlZmF1bHQp Iik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGFscGhhX3N1cHBvcnQsIGk5MTUu YWxwaGFfc3VwcG9ydCwgYm9vbCwgMDQwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoYWxwaGFfc3Vw cG9ydCwKPiAtCSJFbmFibGUgYWxwaGEgcXVhbGl0eSBkcml2ZXIgc3VwcG9ydCBmb3IgbGF0ZXN0 IGhhcmR3YXJlLiAiCj4gLQkiU2VlIGFsc28gQ09ORklHX0RSTV9JOTE1X0FMUEhBX1NVUFBPUlQu Iik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGRpc2FibGVfcG93ZXJfd2VsbCwg aTkxNS5kaXNhYmxlX3Bvd2VyX3dlbGwsIGludCwgMDQwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0Mo ZGlzYWJsZV9wb3dlcl93ZWxsLAo+IC0JIkRpc2FibGUgZGlzcGxheSBwb3dlciB3ZWxscyB3aGVu IHBvc3NpYmxlICIKPiAtCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9cG93ZXIgd2VsbHMgYWx3YXlz IG9uLCAxPXBvd2VyIHdlbGxzIGRpc2FibGVkIHdoZW4gcG9zc2libGUpIik7Cj4gLQo+IC1tb2R1 bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9pcHMsIGk5MTUuZW5hYmxlX2lwcywgaW50LCAw NjAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfaXBzLCAiRW5hYmxlIElQUyAoZGVmYXVs dDogdHJ1ZSkiKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9uYW1lZChmYXN0Ym9vdCwgaTkxNS5mYXN0 Ym9vdCwgYm9vbCwgMDYwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZmFzdGJvb3QsCj4gLQkiVHJ5 IHRvIHNraXAgdW5uZWNlc3NhcnkgbW9kZSBzZXRzIGF0IGJvb3QgdGltZSAoZGVmYXVsdDogZmFs c2UpIik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHByZWZhdWx0X2Rpc2FibGUs IGk5MTUucHJlZmF1bHRfZGlzYWJsZSwgYm9vbCwgMDYwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0Mo cHJlZmF1bHRfZGlzYWJsZSwKPiAtCSJEaXNhYmxlIHBhZ2UgcHJlZmF1bHRpbmcgZm9yIHByZWFk L3B3cml0ZS9yZWxvYyAoZGVmYXVsdDpmYWxzZSkuICIKPiAtCSJGb3IgZGV2ZWxvcGVycyBvbmx5 LiIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShsb2FkX2RldGVjdF90ZXN0LCBp OTE1LmxvYWRfZGV0ZWN0X3Rlc3QsIGJvb2wsIDA2MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGxv YWRfZGV0ZWN0X3Rlc3QsCj4gLQkiRm9yY2UtZW5hYmxlIHRoZSBWR0EgbG9hZCBkZXRlY3QgY29k ZSBmb3IgdGVzdGluZyAoZGVmYXVsdDpmYWxzZSkuICIKPiAtCSJGb3IgZGV2ZWxvcGVycyBvbmx5 LiIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShmb3JjZV9yZXNldF9tb2Rlc2V0 X3Rlc3QsIGk5MTUuZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0LCBib29sLCAwNjAwKTsKPiAtTU9E VUxFX1BBUk1fREVTQyhmb3JjZV9yZXNldF9tb2Rlc2V0X3Rlc3QsCj4gLQkiRm9yY2UgYSBtb2Rl c2V0IGR1cmluZyBncHUgcmVzZXQgZm9yIHRlc3RpbmcgKGRlZmF1bHQ6ZmFsc2UpLiAiCj4gLQki Rm9yIGRldmVsb3BlcnMgb25seS4iKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUo aW52ZXJ0X2JyaWdodG5lc3MsIGk5MTUuaW52ZXJ0X2JyaWdodG5lc3MsIGludCwgMDYwMCk7Cj4g LU1PRFVMRV9QQVJNX0RFU0MoaW52ZXJ0X2JyaWdodG5lc3MsCj4gLQkiSW52ZXJ0IGJhY2tsaWdo dCBicmlnaHRuZXNzICIKPiAtCSIoLTEgZm9yY2Ugbm9ybWFsLCAwIG1hY2hpbmUgZGVmYXVsdHMs IDEgZm9yY2UgaW52ZXJzaW9uKSwgcGxlYXNlICIKPiAtCSJyZXBvcnQgUENJIGRldmljZSBJRCwg c3Vic3lzdGVtIHZlbmRvciBhbmQgc3Vic3lzdGVtIGRldmljZSBJRCAiCj4gLQkidG8gZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZywgaWYgeW91ciBtYWNoaW5lIG5lZWRzIGl0LiAiCj4g LQkiSXQgd2lsbCB0aGVuIGJlIGluY2x1ZGVkIGluIGFuIHVwY29taW5nIG1vZHVsZSB2ZXJzaW9u LiIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkKGRpc2FibGVfZGlzcGxheSwgaTkxNS5kaXNh YmxlX2Rpc3BsYXksIGJvb2wsIDA0MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGRpc2FibGVfZGlz cGxheSwgIkRpc2FibGUgZGlzcGxheSAoZGVmYXVsdDogZmFsc2UpIik7Cj4gLQo+IC1tb2R1bGVf cGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9jbWRfcGFyc2VyLCBpOTE1LmVuYWJsZV9jbWRfcGFy c2VyLCBib29sLCAwNDAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfY21kX3BhcnNlciwK PiAtCQkgIkVuYWJsZSBjb21tYW5kIHBhcnNpbmcgKHRydWU9ZW5hYmxlZCBbZGVmYXVsdF0sIGZh bHNlPWRpc2FibGVkKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZSh1c2VfbW1p b19mbGlwLCBpOTE1LnVzZV9tbWlvX2ZsaXAsIGludCwgMDYwMCk7Cj4gLU1PRFVMRV9QQVJNX0RF U0ModXNlX21taW9fZmxpcCwKPiAtCQkgInVzZSBNTUlPIGZsaXBzICgtMT1uZXZlciwgMD1kcml2 ZXIgZGlzY3JldGlvbiBbZGVmYXVsdF0sIDE9YWx3YXlzKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFt X25hbWVkKG1taW9fZGVidWcsIGk5MTUubW1pb19kZWJ1ZywgaW50LCAwNjAwKTsKPiAtTU9EVUxF X1BBUk1fREVTQyhtbWlvX2RlYnVnLAo+IC0JIkVuYWJsZSB0aGUgTU1JTyBkZWJ1ZyBjb2RlIGZv ciB0aGUgZmlyc3QgTiBmYWlsdXJlcyAoZGVmYXVsdDogb2ZmKS4gIgo+IC0JIlRoaXMgbWF5IG5l Z2F0aXZlbHkgYWZmZWN0IHBlcmZvcm1hbmNlLiIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVk KHZlcmJvc2Vfc3RhdGVfY2hlY2tzLCBpOTE1LnZlcmJvc2Vfc3RhdGVfY2hlY2tzLCBib29sLCAw NjAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyh2ZXJib3NlX3N0YXRlX2NoZWNrcywKPiAtCSJFbmFi bGUgdmVyYm9zZSBsb2dzIChpZS4gV0FSTl9PTigpKSBpbiBjYXNlIG9mIHVuZXhwZWN0ZWQgaHcg c3RhdGUgY29uZGl0aW9ucy4iKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUobnVj bGVhcl9wYWdlZmxpcCwgaTkxNS5udWNsZWFyX3BhZ2VmbGlwLCBib29sLCAwNDAwKTsKPiAtTU9E VUxFX1BBUk1fREVTQyhudWNsZWFyX3BhZ2VmbGlwLAo+IC0JCSAiRm9yY2UgZW5hYmxlIGF0b21p YyBmdW5jdGlvbmFsaXR5IG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgZnVsbCBzdXBwb3J0 IHlldC4iKTsKPiAtCj4gLS8qIFdBIHRvIGdldCBhd2F5IHdpdGggdGhlIGRlZmF1bHQgc2V0dGlu ZyBpbiBWQlQgZm9yIGVhcmx5IHBsYXRmb3Jtcy5XaWxsIGJlIHJlbW92ZWQgKi8KPiAtbW9kdWxl X3BhcmFtX25hbWVkX3Vuc2FmZShlZHBfdnN3aW5nLCBpOTE1LmVkcF92c3dpbmcsIGludCwgMDQw MCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZWRwX3Zzd2luZywKPiAtCQkgIklnbm9yZS9PdmVycmlk ZSB2c3dpbmcgcHJlLWVtcGggdGFibGUgc2VsZWN0aW9uIGZyb20gVkJUICIKPiAtCQkgIigwPXVz ZSB2YWx1ZSBmcm9tIHZidCBbZGVmYXVsdF0sIDE9bG93IHBvd2VyIHN3aW5nKDIwMG1WKSwiCj4g LQkJICIyPWRlZmF1bHQgc3dpbmcoNDAwbVYpKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVk X3Vuc2FmZShlbmFibGVfZ3VjX2xvYWRpbmcsIGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nLCBpbnQs IDA0MDApOwo+IC1NT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9ndWNfbG9hZGluZywKPiAtCQkiRW5h YmxlIEd1QyBmaXJtd2FyZSBsb2FkaW5nICIKPiAtCQkiKC0xPWF1dG8sIDA9bmV2ZXIgW2RlZmF1 bHRdLCAxPWlmIGF2YWlsYWJsZSwgMj1yZXF1aXJlZCkiKTsKPiAtCj4gLW1vZHVsZV9wYXJhbV9u YW1lZF91bnNhZmUoZW5hYmxlX2d1Y19zdWJtaXNzaW9uLCBpOTE1LmVuYWJsZV9ndWNfc3VibWlz c2lvbiwgaW50LCAwNDAwKTsKPiAtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfZ3VjX3N1Ym1pc3Np b24sCj4gLQkJIkVuYWJsZSBHdUMgc3VibWlzc2lvbiAiCj4gLQkJIigtMT1hdXRvLCAwPW5ldmVy IFtkZWZhdWx0XSwgMT1pZiBhdmFpbGFibGUsIDI9cmVxdWlyZWQpIik7Cj4gLQo+IC1tb2R1bGVf cGFyYW1fbmFtZWQoZ3VjX2xvZ19sZXZlbCwgaTkxNS5ndWNfbG9nX2xldmVsLCBpbnQsIDA0MDAp Owo+IC1NT0RVTEVfUEFSTV9ERVNDKGd1Y19sb2dfbGV2ZWwsCj4gLQkiR3VDIGZpcm13YXJlIGxv Z2dpbmcgbGV2ZWwgKC0xOmRpc2FibGVkIChkZWZhdWx0KSwgMC0zOmVuYWJsZWQpIik7Cj4gLQo+ IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGd1Y19maXJtd2FyZV9wYXRoLCBpOTE1Lmd1Y19m aXJtd2FyZV9wYXRoLCBjaGFycCwgMDQwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZ3VjX2Zpcm13 YXJlX3BhdGgsCj4gLQkiR3VDIGZpcm13YXJlIHBhdGggdG8gdXNlIGluc3RlYWQgb2YgdGhlIGRl ZmF1bHQgb25lIik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGh1Y19maXJtd2Fy ZV9wYXRoLCBpOTE1Lmh1Y19maXJtd2FyZV9wYXRoLCBjaGFycCwgMDQwMCk7Cj4gLU1PRFVMRV9Q QVJNX0RFU0MoaHVjX2Zpcm13YXJlX3BhdGgsCj4gLQkiSHVDIGZpcm13YXJlIHBhdGggdG8gdXNl IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lIik7Cj4gLQo+IC1tb2R1bGVfcGFyYW1fbmFtZWRf dW5zYWZlKGVuYWJsZV9kcF9tc3QsIGk5MTUuZW5hYmxlX2RwX21zdCwgYm9vbCwgMDYwMCk7Cj4g LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2RwX21zdCwKPiAtCSJFbmFibGUgbXVsdGktc3RyZWFt IHRyYW5zcG9ydCAoTVNUKSBmb3IgbmV3IERpc3BsYXlQb3J0IHNpbmtzLiAoZGVmYXVsdDogdHJ1 ZSkiKTsKPiAtbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShpbmplY3RfbG9hZF9mYWlsdXJlLCBp OTE1LmluamVjdF9sb2FkX2ZhaWx1cmUsIHVpbnQsIDA0MDApOwo+IC1NT0RVTEVfUEFSTV9ERVND KGluamVjdF9sb2FkX2ZhaWx1cmUsCj4gLQkiRm9yY2UgYW4gZXJyb3IgYWZ0ZXIgYSBudW1iZXIg b2YgZmFpbHVyZSBjaGVjayBwb2ludHMgKDA6ZGlzYWJsZWQgKGRlZmF1bHQpLCBOOmZvcmNlIGZh aWx1cmUgYXQgdGhlIE50aCBmYWlsdXJlIGNoZWNrIHBvaW50KSIpOwo+IC1tb2R1bGVfcGFyYW1f bmFtZWQoZW5hYmxlX2RwY2RfYmFja2xpZ2h0LCBpOTE1LmVuYWJsZV9kcGNkX2JhY2tsaWdodCwg Ym9vbCwgMDYwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2RwY2RfYmFja2xpZ2h0LAo+ IC0JIkVuYWJsZSBzdXBwb3J0IGZvciBEUENEIGJhY2tsaWdodCBjb250cm9sIChkZWZhdWx0OmZh bHNlKSIpOwo+IC0KPiAtbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9ndnQsIGk5MTUuZW5hYmxl X2d2dCwgYm9vbCwgMDQwMCk7Cj4gLU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2d2dCwKPiAtCSJF bmFibGUgc3VwcG9ydCBmb3IgSW50ZWwgR1ZULWcgZ3JhcGhpY3MgdmlydHVhbGl6YXRpb24gaG9z dCBzdXBwb3J0KGRlZmF1bHQ6ZmFsc2UpIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGFyYW1zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5o Cj4gaW5kZXggMzQxNDhjYy4uODhiZjY0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BhcmFtcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuaAo+IEBAIC0yNyw1NSArMjcsMTUxIEBACj4gIAo+ICAjaW5jbHVkZSA8bGludXgvY2FjaGUu aD4gLyogZm9yIF9fcmVhZF9tb3N0bHkgKi8KPiAgCj4gLSNkZWZpbmUgSTkxNV9QQVJBTVNfRk9S X0VBQ0goZnVuYykgXAo+IC0JZnVuYyhpbnQsIG1vZGVzZXQpOyBcCj4gLQlmdW5jKGludCwgcGFu ZWxfaWdub3JlX2xpZCk7IFwKPiAtCWZ1bmMoaW50LCBzZW1hcGhvcmVzKTsgXAo+IC0JZnVuYyhp bnQsIGx2ZHNfY2hhbm5lbF9tb2RlKTsgXAo+IC0JZnVuYyhpbnQsIHBhbmVsX3VzZV9zc2MpOyBc Cj4gLQlmdW5jKGludCwgdmJ0X3Nkdm9fcGFuZWxfdHlwZSk7IFwKPiAtCWZ1bmMoaW50LCBlbmFi bGVfcmM2KTsgXAo+IC0JZnVuYyhpbnQsIGVuYWJsZV9kYyk7IFwKPiAtCWZ1bmMoaW50LCBlbmFi bGVfZmJjKTsgXAo+IC0JZnVuYyhpbnQsIGVuYWJsZV9wcGd0dCk7IFwKPiAtCWZ1bmMoaW50LCBl bmFibGVfZXhlY2xpc3RzKTsgXAo+IC0JZnVuYyhpbnQsIGVuYWJsZV9wc3IpOyBcCj4gLQlmdW5j KGludCwgZGlzYWJsZV9wb3dlcl93ZWxsKTsgXAo+IC0JZnVuYyhpbnQsIGVuYWJsZV9pcHMpOyBc Cj4gLQlmdW5jKGludCwgaW52ZXJ0X2JyaWdodG5lc3MpOyBcCj4gLQlmdW5jKGludCwgZW5hYmxl X2d1Y19sb2FkaW5nKTsgXAo+IC0JZnVuYyhpbnQsIGVuYWJsZV9ndWNfc3VibWlzc2lvbik7IFwK PiAtCWZ1bmMoaW50LCBndWNfbG9nX2xldmVsKTsgXAo+IC0JZnVuYyhjaGFyICosIGd1Y19maXJt d2FyZV9wYXRoKTsgXAo+IC0JZnVuYyhjaGFyICosIGh1Y19maXJtd2FyZV9wYXRoKTsgXAo+IC0J ZnVuYyhpbnQsIHVzZV9tbWlvX2ZsaXApOyBcCj4gLQlmdW5jKGludCwgbW1pb19kZWJ1Zyk7IFwK PiAtCWZ1bmMoaW50LCBlZHBfdnN3aW5nKTsgXAo+IC0JZnVuYyh1bnNpZ25lZCBpbnQsIGluamVj dF9sb2FkX2ZhaWx1cmUpOyBcCj4gKy8qCj4gKyAqIEVhY2ggaTkxNSBtb2R1bGUgcGFyYW0gaXMg ZGVmaW5lZCBhcyBzaW5nbGUgJ3BhcmFtJyBlbnRyeToKPiArICoJcGFyYW0oTmFtZSwgVHlwZSwg VmFsdWUsIFVuc2FmZSwgTW9kZSwgQnJpZWYsIERldGFpbGVkKQo+ICsgKiB3aGVyZToKPiArICoJ QE5hbWU6IHRoZSBuYW1lIG9mIHBhcmFtCj4gKyAqCUBUeXBlOiBpbnR8dWludHxib29sfGNoYXJw Cj4gKyAqCUBWYWx1ZTogdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtCj4gKyAqCUBVbnNh ZmU6IG11c3QgYmUgZWl0aGVyIGVtcHR5IG9yIF91bnNhZmUKPiArICoJQE1vZGU6IHRoZSBhY2Nl c3MgbW9kZSAodXN1YWxseSAwNjAwfDA0MDApCj4gKyAqCUBCcmllZjogc2hvcnQgZGVzY3JpcHRp b24gdGV4dCBvZiB0aGUgcGFyYW0KPiArICoJQERldGFpbGVkOiBtb3JlIGRldGFpbGVkIGRlc2Ny aXB0aW9uIG9mIHRoZSBwYXJhbSAobWF5IGJlIGVtcHR5KQo+ICsgKi8KPiArI2RlZmluZSBfSTkx NV9QQVJBTVNfRk9SX0VBQ0hfQkFTRShwYXJhbSkgXAo+ICsJcGFyYW0obW9kZXNldCwgaW50LCAt MSwgLypzYWZlKi8sIDA0MDAsIFwKPiArCSAgICAgICJVc2Uga2VybmVsIG1vZGVzZXR0aW5nIChL TVMpLiIsIFwKPiArCSAgICAgICIoMD1kaXNhYmxlLCAxPW9uLCAtMT1mb3JjZSB2Z2EgY29uc29s ZSBwcmVmZXJlbmNlKSIpIFwKPiArCXBhcmFtKHBhbmVsX2lnbm9yZV9saWQsIGludCwgMSwgX3Vu c2FmZSwgMDYwMCwgXAo+ICsJICAgICAgIk92ZXJyaWRlIGxpZCBzdGF0dXMuIiwgXAo+ICsJICAg ICAgIigwPWF1dG9kZXRlY3QsIDE9YXV0b2RldGVjdCBkaXNhYmxlZCwgLTE9Zm9yY2UgbGlkIGNs b3NlZCwgLTI9Zm9yY2UgbGlkIG9wZW4pIikgXAo+ICsJcGFyYW0oc2VtYXBob3JlcywgaW50LCAt MSwgX3Vuc2FmZSwgMDQwMCwgXAo+ICsJICAgICAgIlVzZSBzZW1hcGhvcmVzIGZvciBpbnRlci1y aW5nIHN5bmMuIiwgXAo+ICsJICAgICAgIigtMT11c2UgcGVyLWNoaXAgZGVmYXVsdHMpIikgXAo+ ICsJcGFyYW0obHZkc19jaGFubmVsX21vZGUsIGludCwgMCwgX3Vuc2FmZSwgMDQwMCwgXAo+ICsJ ICAgICAgIlNwZWNpZnkgTFZEUyBjaGFubmVsIG1vZGUuIiwgXAo+ICsJICAgICAgIigwPXByb2Jl IEJJT1MsIDE9c2luZ2xlLWNoYW5uZWwsIDI9ZHVhbC1jaGFubmVsKSIpIFwKPiArCXBhcmFtKHBh bmVsX3VzZV9zc2MsIGludCwgLTEsIF91bnNhZmUsIDA2MDAsIFwKPiArCSAgICAgICJVc2UgU3By ZWFkIFNwZWN0cnVtIENsb2NrIHdpdGggcGFuZWxzIFtMVkRTL2VEUF0uIiwgXAo+ICsJICAgICAg IigtMT1hdXRvIGZyb20gVkJUKSIpIFwKPiArCXBhcmFtKHZidF9zZHZvX3BhbmVsX3R5cGUsIGlu dCwgLTEsIF91bnNhZmUsIDA0MDAsIFwKPiArCSAgICAgICJPdmVycmlkZS9JZ25vcmUgc2VsZWN0 aW9uIG9mIFNEVk8gcGFuZWwgbW9kZSBpbiB0aGUgVkJULiIsIFwKPiArCSAgICAgICIoLTI9aWdu b3JlLCAtMT1hdXRvLCAwLi5uPWluZGV4IGluIFZCVCBCSU9TIHRhYmxlKSIpIFwKPiArCXBhcmFt KGVuYWJsZV9yYzYsIGludCwgLTEsIF91bnNhZmUsIDA0MDAsIFwKPiArCSAgICAgICJFbmFibGUg cG93ZXItc2F2aW5nIHJlbmRlciBDLXN0YXRlIDYuIiwgXAo+ICsJICAgICAgIigtMT11c2UgcGVy LWNoaXAgZGVmYXVsdCwgMD1kaXNhYmxlLCAxPWVuYWJsZSByYzYsIDI9ZW5hYmxlIGRlZXAgcmM2 LCA0PWVuYWJsZSBkZWVwZXN0IHJjNikiIFwKPiArCSAgICAgICJEaWZmZXJlbnQgc3RhZ2VzIGNh biBiZSBzZWxlY3RlZCB2aWEgYml0bWFzayB2YWx1ZXMuICIgXAo+ICsJICAgICAgIkZvciBleGFt cGxlLCAzIHdvdWxkIGVuYWJsZSByYzYgYW5kIGRlZXAgcmM2LCBhbmQgNyB3b3VsZCBlbmFibGUg ZXZlcnl0aGluZy4gIikgXAo+ICsJcGFyYW0oZW5hYmxlX2RjLCBpbnQsIC0xLCBfdW5zYWZlLCAw NDAwLCBcCj4gKwkgICAgICAiRW5hYmxlIHBvd2VyLXNhdmluZyBkaXNwbGF5IEMtc3RhdGVzLiIs IFwKPiArCSAgICAgICIoLTE9YXV0bywgMD1kaXNhYmxlLCAxPXVwIHRvIERDNSwgMj11cCB0byBE QzYpIikgXAo+ICsJcGFyYW0oZW5hYmxlX2ZiYywgaW50LCAtMSwgX3Vuc2FmZSwgMDYwMCwgXAo+ ICsJICAgICAgIkVuYWJsZSBmcmFtZSBidWZmZXIgY29tcHJlc3Npb24gZm9yIHBvd2VyIHNhdmlu Z3MuIiwgXAo+ICsJICAgICAgIigtMT11c2UgcGVyLWNoaXAgZGVmYXVsdCkiKSBcCj4gKwlwYXJh bShlbmFibGVfcHBndHQsIGludCwgLTEsIF91bnNhZmUsIDA0MDAsIFwKPiArCSAgICAgICJPdmVy cmlkZSBQUEdUVCB1c2FnZS4iLCBcCj4gKwkgICAgICAiKC0xPWF1dG8sIDA9ZGlzYWJsZWQsIDE9 YWxpYXNpbmcsIDI9ZnVsbCwgMz1mdWxsIHdpdGggZXh0ZW5kZWQgYWRkcmVzcyBzcGFjZSkiKSBc Cj4gKwlwYXJhbShlbmFibGVfZXhlY2xpc3RzLCBpbnQsIC0xLCBfdW5zYWZlLCAwNDAwLCBcCj4g KwkgICAgICAiT3ZlcnJpZGUgZXhlY2xpc3RzIHVzYWdlLiIsIFwKPiArCSAgICAgICIoLTE9YXV0 bywgMD1kaXNhYmxlZCwgMT1lbmFibGVkKSIpIFwKPiArCXBhcmFtKGVuYWJsZV9wc3IsIGludCwg LTEsIF91bnNhZmUsIDA2MDAsIFwKPiArCSAgICAgICJFbmFibGUgUFNSLiIsIFwKPiArCSAgICAg ICIoLTE9dXNlIHBlci1jaGlwIGRlZmF1bHQsICIgXAo+ICsJICAgICAgIjA9ZGlzYWJsZWQsIDE9 bGluayBtb2RlIGNob3NlbiBwZXItcGxhdGZvcm0sICIgXAo+ICsJICAgICAgIjI9Zm9yY2UgbGlu ay1zdGFuZGJ5IG1vZGUsIDM9Zm9yY2UgbGluay1vZmYgbW9kZSkiKSBcCj4gKwlwYXJhbShkaXNh YmxlX3Bvd2VyX3dlbGwsIGludCwgLTEsIF91bnNhZmUsIDA0MDAsIFwKPiArCSAgICAgICJEaXNh YmxlIGRpc3BsYXkgcG93ZXIgd2VsbHMgd2hlbiBwb3NzaWJsZS4iLCBcCj4gKwkgICAgICAiKC0x PWF1dG8sIDA9cG93ZXIgd2VsbHMgYWx3YXlzIG9uLCAxPXBvd2VyIHdlbGxzIGRpc2FibGVkIHdo ZW4gcG9zc2libGUpIikgXAo+ICsJcGFyYW0oZW5hYmxlX2lwcywgaW50LCAxLCBfdW5zYWZlLCAw NjAwLCBcCj4gKwkgICAgICAiRW5hYmxlIElQUy4iLCApIFwKPiArCXBhcmFtKGludmVydF9icmln aHRuZXNzLCBpbnQsIDAsIF91bnNhZmUsIDA2MDAsIFwKPiArCSAgICAgICJJbnZlcnQgYmFja2xp Z2h0IGJyaWdodG5lc3MuIiwgXAo+ICsJICAgICAgIlBsZWFzZSByZXBvcnQgUENJIGRldmljZSBJ RCwgc3Vic3lzdGVtIHZlbmRvciBhbmQgc3Vic3lzdGVtICIgXAo+ICsJICAgICAgImRldmljZSBJ RCB0byBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnLCBpZiB5b3VyIG1hY2hpbmUgIiBc Cj4gKwkgICAgICAibmVlZHMgaXQuIEl0IHdpbGwgdGhlbiBiZSBpbmNsdWRlZCBpbiBhbiB1cGNv bWluZyBtb2R1bGUgdmVyc2lvbi4gIiBcCj4gKwkgICAgICAiKC0xPWZvcmNlIG5vcm1hbCwgMD1t YWNoaW5lIGRlZmF1bHRzLCAxPWZvcmNlIGludmVyc2lvbikiKSBcCj4gKwlwYXJhbShlbmFibGVf Z3VjX2xvYWRpbmcsIGludCwgMCwgX3Vuc2FmZSwgMDQwMCwgXAo+ICsJICAgICAgIkVuYWJsZSBH dUMgZmlybXdhcmUgbG9hZGluZy4iLCBcCj4gKwkgICAgICAiKC0xPWF1dG8sIDA9bmV2ZXIsIDE9 aWYgYXZhaWxhYmxlLCAyPXJlcXVpcmVkKSIpIFwKPiArCXBhcmFtKGVuYWJsZV9ndWNfc3VibWlz c2lvbiwgaW50LCAwLCBfdW5zYWZlLCAwNDAwLCBcCj4gKwkgICAgICAiRW5hYmxlIEd1QyBzdWJt aXNzaW9uLiIsIFwKPiArCSAgICAgICIoLTE9YXV0bywgMD1uZXZlciwgMT1pZiBhdmFpbGFibGUs IDI9cmVxdWlyZWQpIikgXAo+ICsJcGFyYW0oZ3VjX2xvZ19sZXZlbCwgaW50LCAtMSwgX3Vuc2Fm ZSwgMDQwMCwgXAo+ICsJICAgICAgIkd1QyBmaXJtd2FyZSBsb2dnaW5nIGxldmVsLiIsIFwKPiAr CSAgICAgICIoLTE6ZGlzYWJsZWQsIDAtMzplbmFibGVkKSIpIFwKPiArCXBhcmFtKGd1Y19maXJt d2FyZV9wYXRoLCBjaGFycCwgTlVMTCwgX3Vuc2FmZSwgMDQwMCwgXAo+ICsJICAgICAgIkd1QyBm aXJtd2FyZSBwYXRoIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9uZS4iLCApIFwKPiAr CXBhcmFtKGh1Y19maXJtd2FyZV9wYXRoLCBjaGFycCwgTlVMTCwgX3Vuc2FmZSwgMDQwMCwgXAo+ ICsJICAgICAgIkh1QyBmaXJtd2FyZSBwYXRoIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0 IG9uZS4iLCApIFwKPiArCXBhcmFtKHVzZV9tbWlvX2ZsaXAsIGludCwgMCwgX3Vuc2FmZSwgMDYw MCwgXAo+ICsJICAgICAgIlVzZSBNTUlPIGZsaXBzLiIsIFwKPiArCSAgICAgICIoLTE9bmV2ZXIs IDA9ZHJpdmVyIGRpc2NyZXRpb24sIDE9YWx3YXlzKSIpIFwKPiArCXBhcmFtKG1taW9fZGVidWcs IGludCwgMCwgLypzYWZlKi8sIDA2MDAsIFwKPiArCSAgICAgICJFbmFibGUgdGhlIE1NSU8gZGVi dWcgY29kZSBmb3IgdGhlIGZpcnN0IE4gZmFpbHVyZXMuIiwgXAo+ICsJICAgICAgIlRoaXMgbWF5 IG5lZ2F0aXZlbHkgYWZmZWN0IHBlcmZvcm1hbmNlLiAiKSBcCj4gKwlwYXJhbShlZHBfdnN3aW5n LCBpbnQsIDAsIF91bnNhZmUsIDA0MDAsIFwKPiArCSAgICAgICJJZ25vcmUvT3ZlcnJpZGUgdnN3 aW5nIHByZS1lbXBoIHRhYmxlIHNlbGVjdGlvbiBmcm9tIFZCVC4iLCBcCj4gKwkgICAgICAiKDA9 dXNlIHZhbHVlIGZyb20gVkJULCAxPWxvdyBwb3dlciBzd2luZygyMDBtViksIDI9ZGVmYXVsdCBz d2luZyg0MDBtVikpIikgXAo+ICsJcGFyYW0oaW5qZWN0X2xvYWRfZmFpbHVyZSwgdWludCwgMCwg X3Vuc2FmZSwgMDQwMCwgXAo+ICsJICAgICAgIkZvciBkZXZlbG9wZXJzIG9ubHk6IEZvcmNlIGFu IGVycm9yIGFmdGVyIGEgbnVtYmVyIG9mIGZhaWx1cmUgY2hlY2sgcG9pbnRzLiIsIFwKPiArCSAg ICAgICIoMDpkaXNhYmxlZCwgTjpmb3JjZSBmYWlsdXJlIGF0IHRoZSBOdGggZmFpbHVyZSBjaGVj ayBwb2ludCkiKSBcCj4gIAkvKiBsZWF2ZSBib29scyBhdCB0aGUgZW5kIHRvIG5vdCBjcmVhdGUg aG9sZXMgKi8gXAo+IC0JZnVuYyhib29sLCBhbHBoYV9zdXBwb3J0KTsgXAo+IC0JZnVuYyhib29s LCBlbmFibGVfY21kX3BhcnNlcik7IFwKPiAtCWZ1bmMoYm9vbCwgZW5hYmxlX2hhbmdjaGVjayk7 IFwKPiAtCWZ1bmMoYm9vbCwgZmFzdGJvb3QpOyBcCj4gLQlmdW5jKGJvb2wsIHByZWZhdWx0X2Rp c2FibGUpOyBcCj4gLQlmdW5jKGJvb2wsIGxvYWRfZGV0ZWN0X3Rlc3QpOyBcCj4gLQlmdW5jKGJv b2wsIGZvcmNlX3Jlc2V0X21vZGVzZXRfdGVzdCk7IFwKPiAtCWZ1bmMoYm9vbCwgcmVzZXQpOyBc Cj4gLQlmdW5jKGJvb2wsIGVycm9yX2NhcHR1cmUpOyBcCj4gLQlmdW5jKGJvb2wsIGRpc2FibGVf ZGlzcGxheSk7IFwKPiAtCWZ1bmMoYm9vbCwgdmVyYm9zZV9zdGF0ZV9jaGVja3MpOyBcCj4gLQlm dW5jKGJvb2wsIG51Y2xlYXJfcGFnZWZsaXApOyBcCj4gLQlmdW5jKGJvb2wsIGVuYWJsZV9kcF9t c3QpOyBcCj4gLQlmdW5jKGJvb2wsIGVuYWJsZV9kcGNkX2JhY2tsaWdodCk7IFwKPiAtCWZ1bmMo Ym9vbCwgZW5hYmxlX2d2dCkKPiArCXBhcmFtKGFscGhhX3N1cHBvcnQsIGJvb2wsIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X0FMUEhBX1NVUFBPUlQpLCBfdW5zYWZlLCAwNDAwLCBcCj4gKwkg ICAgICAiRW5hYmxlIGFscGhhIHF1YWxpdHkgZHJpdmVyIHN1cHBvcnQgZm9yIGxhdGVzdCBoYXJk d2FyZS4iLCBcCj4gKwkgICAgICAiU2VlIGFsc28gQ09ORklHX0RSTV9JOTE1X0FMUEhBX1NVUFBP UlQuICIgKSBcCj4gKwlwYXJhbShlbmFibGVfY21kX3BhcnNlciwgYm9vbCwgdHJ1ZSwgX3Vuc2Fm ZSwgMDQwMCwgXAo+ICsJICAgICAgIkVuYWJsZSBjb21tYW5kIHBhcnNpbmcuIiwgXAo+ICsJICAg ICAiKHRydWU9ZW5hYmxlZCwgZmFsc2U9ZGlzYWJsZWQpIikgXAo+ICsJcGFyYW0oZW5hYmxlX2hh bmdjaGVjaywgYm9vbCwgdHJ1ZSwgX3Vuc2FmZSwgMDY0NCwgXAo+ICsJICAgICAiUGVyaW9kaWNh bGx5IGNoZWNrIEdQVSBhY3Rpdml0eSBmb3IgZGV0ZWN0aW5nIGhhbmdzLiIsIFwKPiArCSAgICAg IldBUk5JTkc6IERpc2FibGluZyB0aGlzIGNhbiBjYXVzZSBzeXN0ZW0gd2lkZSBoYW5ncyEgIikg XAo+ICsJcGFyYW0oZmFzdGJvb3QsIGJvb2wsIGZhbHNlLCAvKnNhZmUqLywgMDYwMCwgXAo+ICsJ ICAgICAiVHJ5IHRvIHNraXAgdW5uZWNlc3NhcnkgbW9kZSBzZXRzIGF0IGJvb3QgdGltZS4iLCAp IFwKPiArCXBhcmFtKHByZWZhdWx0X2Rpc2FibGUsIGJvb2wsIGZhbHNlLCBfdW5zYWZlLCAwNjAw LCBcCj4gKwkgICAgICJGb3IgZGV2ZWxvcGVycyBvbmx5OiBEaXNhYmxlIHBhZ2UgcHJlZmF1bHRp bmcgZm9yIHByZWFkL3B3cml0ZS9yZWxvYy4iLCApIFwKPiArCXBhcmFtKGxvYWRfZGV0ZWN0X3Rl c3QsIGJvb2wsIGZhbHNlLCBfdW5zYWZlLCAwNjAwLCBcCj4gKwkgICAgICJGb3IgZGV2ZWxvcGVy cyBvbmx5OiBGb3JjZS1lbmFibGUgdGhlIFZHQSBsb2FkIGRldGVjdCBjb2RlIGZvciB0ZXN0aW5n LiIsICkgXAo+ICsJcGFyYW0oZm9yY2VfcmVzZXRfbW9kZXNldF90ZXN0LCBib29sLCBmYWxzZSwg X3Vuc2FmZSwgMDYwMCwgXAo+ICsJICAgICAiRm9yIGRldmVsb3BlcnMgb25seTogRm9yY2UgYSBt b2Rlc2V0IGR1cmluZyBncHUgcmVzZXQgZm9yIHRlc3RpbmcuIiwgKSBcCj4gKwlwYXJhbShyZXNl dCwgYm9vbCwgdHJ1ZSwgX3Vuc2FmZSwgMDYwMCwgXAo+ICsJICAgICAiQXR0ZW1wdCBHUFUgcmVz ZXRzLiIsICkgXAo+ICsJcGFyYW0oZGlzYWJsZV9kaXNwbGF5LCBib29sLCBmYWxzZSwgLypzYWZl Ki8sIDA0MDAsIFwKPiArCSAgICAgIkRpc2FibGUgZGlzcGxheS4iLCApIFwKPiArCXBhcmFtKHZl cmJvc2Vfc3RhdGVfY2hlY2tzLCBib29sLCB0cnVlLCAvKnNhZmUqLywgMDYwMCwgXAo+ICsJICAg ICAiRW5hYmxlIHZlcmJvc2UgbG9ncyAoaWUuIFdBUk5fT04oKSkgaW4gY2FzZSBvZiB1bmV4cGVj dGVkIEhXIHN0YXRlIGNvbmRpdGlvbnMuIiwgKSBcCj4gKwlwYXJhbShudWNsZWFyX3BhZ2VmbGlw LCBib29sLCBmYWxzZSwgX3Vuc2FmZSwgMDQwMCwgXAo+ICsJICAgICAiRm9yY2UgZW5hYmxlIGF0 b21pYyBmdW5jdGlvbmFsaXR5IG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgZnVsbCBzdXBw b3J0IHlldC4iLCApIFwKPiArCXBhcmFtKGVuYWJsZV9kcF9tc3QsIGJvb2wsIHRydWUsIF91bnNh ZmUsIDA2MDAsIFwKPiArCSAgICAgIkVuYWJsZSBtdWx0aS1zdHJlYW0gdHJhbnNwb3J0IChNU1Qp IGZvciBuZXcgRGlzcGxheVBvcnQgc2lua3MuIiwgKSBcCj4gKwlwYXJhbShlbmFibGVfZHBjZF9i YWNrbGlnaHQsIGJvb2wsIGZhbHNlLCAvKnNhZmUqLywgMDYwMCwgXAo+ICsJICAgICAiRW5hYmxl IHN1cHBvcnQgZm9yIERQQ0QgYmFja2xpZ2h0IGNvbnRyb2wuIiwgKSBcCj4gKwlwYXJhbShlbmFi bGVfZ3Z0LCBib29sLCBmYWxzZSwgLypzYWZlKi8sIDA0MDAsIFwKPiArCSAgICAgIkVuYWJsZSBz dXBwb3J0IGZvciBJbnRlbCBHVlQtZyBncmFwaGljcyB2aXJ0dWFsaXphdGlvbiBob3N0IHN1cHBv cnQuIiwgKSBcCj4gKwkvKiBjb25zdW1lIFwgKi8KPiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJ R19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKQo+ICsjZGVmaW5lIF9JOTE1X1BBUkFNU19GT1JfRUFD SF9DT05GSUdfRVJST1IocGFyYW0pIFwKPiArCXBhcmFtKGVycm9yX2NhcHR1cmUsIGJvb2wsIHRy dWUsIC8qc2FmZSovLCAwNjAwLCBcCj4gKwkgICAgICAiUmVjb3JkIHRoZSBHUFUgc3RhdGUgZm9s bG93aW5nIGEgaGFuZy4iLCBcCj4gKwkgICAgICAiVGhpcyBpbmZvcm1hdGlvbiBpbiAvc3lzL2Ns YXNzL2RybS9jYXJkPE4+L2Vycm9yIGlzIHZpdGFsIGZvciB0cmlhZ2luZyBhbmQgZGVidWdnaW5n IGhhbmdzLiAiKQo+ICsjZWxzZQo+ICsjZGVmaW5lIF9JOTE1X1BBUkFNU19GT1JfRUFDSF9DT05G SUdfRVJST1IocGFyYW0pCj4gKyNlbmRpZgo+ICsKPiArI2RlZmluZSBJOTE1X1BBUkFNU19GT1Jf RUFDSChwYXJhbSkgXAo+ICsJX0k5MTVfUEFSQU1TX0ZPUl9FQUNIX0JBU0UocGFyYW0pIFwKPiAr CV9JOTE1X1BBUkFNU19GT1JfRUFDSF9DT05GSUdfRVJST1IocGFyYW0pIFwKPiArCS8qIGNvbnN1 bWUgXCAqLwo+ICAKPiAtI2RlZmluZSBNRU1CRVIoVCwgbWVtYmVyKSBUIG1lbWJlcgo+ICsjZGVm aW5lIGNoYXJwIGNoYXIqCj4gKyNkZWZpbmUgTUVNQkVSKE5hbWUsIFR5cGUsIFZhbHVlLCBVbnNh ZmUsIE1vZGUsIEJyaWVmLCBEZXRhaWxlZCkgVHlwZSBOYW1lOwo+ICBzdHJ1Y3QgaTkxNV9wYXJh bXMgewo+IC0JSTkxNV9QQVJBTVNfRk9SX0VBQ0goTUVNQkVSKTsKPiArCUk5MTVfUEFSQU1TX0ZP Ul9FQUNIKE1FTUJFUikKPiAgfTsKPiAgI3VuZGVmIE1FTUJFUgo+ICsjdW5kZWYgY2hhcnAKPiAg Cj4gIGV4dGVybiBzdHJ1Y3QgaTkxNV9wYXJhbXMgaTkxNSBfX3JlYWRfbW9zdGx5Owo+ICAKPiAg I2VuZGlmCj4gLQoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5 IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK