From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v1 05/12] tmem: Delete deduplication (and tze) code. Date: Wed, 28 Sep 2016 05:42:19 -0400 Message-ID: <1475055746-22401-6-git-send-email-konrad.wilk@oracle.com> References: <1475055746-22401-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bpBO2-000066-RL for xen-devel@lists.xenproject.org; Wed, 28 Sep 2016 09:42:47 +0000 In-Reply-To: <1475055746-22401-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org Cc: Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org Q291cGxlIG9mIHJlYXNvbnM6CiAtIEl0IGNhbiBsZWFkIHRvIHNlY3VyaXR5IGlzc3VlcyAoc2Vl IHJvdy1oYW1tZXIsIEtTTSBhbmQgc3VjaAogICBhdHRhY2tzKS4KIC0gQ29kZSBpcyBxdWl0ZSBj b21wbGV4LgogLSBEZWR1cGxpY2F0aW9uIGlzIGdvb2QgaWYgdGhlIHBhZ2VzIHRoZW1zZWx2ZXMg YXJlIHRoZSBzYW1lCiAgIGJ1dCB0aGF0IGlzIGhhcmRseSBndWFyYW50ZWVkLgogLSBXZSBnb3Qg c29tZSBnYWlucyAoaWYgcGFnZXMgYXJlIGRlZHVwZWQpIGJ1dCBhdCB0aGUgY29zdCBvZgogICBt YWtpbmcgY29kZSBsZXNzIG1haW50YWluYWJsZS4KIC0gdHplIGRlcGVuZHMgb24gZGVkdXBsaWNh dGlvbiBjb2RlLgoKQXMgc3VjaCwgZGVsZXRpbmcgaXQuCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQg Unplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Ci0tLQp2MTogRmlyc3Qgc3Vi bWlzc2lvbi4KLS0tCiBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICAgNiAt CiB4ZW4vY29tbW9uL3RtZW0uYyAgICAgICAgICAgICAgICAgICB8IDM2MSArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9jb21tb24vdG1lbV9jb250cm9sLmMgICAgICAg ICAgIHwgICA5IC0KIHhlbi9jb21tb24vdG1lbV94ZW4uYyAgICAgICAgICAgICAgIHwgIDM0IC0t LS0KIHhlbi9pbmNsdWRlL3hlbi90bWVtX3hlbi5oICAgICAgICAgIHwgMTIzIC0tLS0tLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTMyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KaW5kZXggOGZmNTdmYS4uY2Q5NTM0YiAxMDA2NDQK LS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KKysrIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTE1MDAsMTUgKzE1MDAsOSBAQCBwYWdlcykg bXVzdCBhbHNvIGJlIHNwZWNpZmllZCB2aWEgdGhlIHRidWZcX3NpemUgcGFyYW1ldGVyLgogIyMj IHRtZW1cX2NvbXByZXNzCiA+IGA9IDxib29sZWFuPmAKIAotIyMjIHRtZW1cX2RlZHVwCi0+IGA9 IDxib29sZWFuPmAKLQogIyMjIHRtZW1cX3NoYXJlZFxfYXV0aAogPiBgPSA8Ym9vbGVhbj5gCiAK LSMjIyB0bWVtXF90emUKLT4gYD0gPGludGVnZXI+YAotCiAjIyMgdHNjCiA+IGA9IHVuc3RhYmxl IHwgc2tld2VkIHwgc3RhYmxlOnNvY2tldGAKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi90bWVt LmMgYi94ZW4vY29tbW9uL3RtZW0uYwppbmRleCBiNjczMTIwLi5jZjUyNzFjIDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3RtZW0uYworKysgYi94ZW4vY29tbW9uL3RtZW0uYwpAQCAtNzEsMTQgKzcx LDcgQEAgc3RydWN0IHRtZW1fcGFnZV9kZXNjcmlwdG9yIHsKICAgICBwYWdlc2l6ZV90IHNpemU7 IC8qIDAgPT0gUEFHRV9TSVpFIChwZnApLCAtMSA9PSBkYXRhIGludmFsaWQsCiAgICAgICAgICAg ICAgICAgICAgIGVsc2UgY29tcHJlc3NlZCBkYXRhIChjZGF0YSkuICovCiAgICAgdWludDMyX3Qg aW5kZXg7Ci0jaWZkZWYgQ09ORklHX1RNRU1fREVEVVAKLSAgICAvKiBNdXN0IGhvbGQgcGNkX3Ry ZWVfcndsb2Nrc1tmaXJzdGJ5dGVdIHRvIHVzZSBwY2QgcG9pbnRlci9zaWJsaW5ncy4gKi8KLSAg ICB1aW50MTZfdCBmaXJzdGJ5dGU7IC8qIE5PTl9TSEFSRUFCTEUtPnBmcCAgb3RoZXJ3aXNlLT5w Y2QuICovCi0jZW5kaWYKICAgICBib29sX3QgZXZpY3Rpb25fYXR0ZW1wdGVkOyAgLyogQ0hBTkdF IFRPIGxpZmV0aW1lcz8gKHNldHRhYmxlKS4gKi8KLSNpZmRlZiBDT05GSUdfVE1FTV9ERURVUAot ICAgIHN0cnVjdCBsaXN0X2hlYWQgcGNkX3NpYmxpbmdzOwotI2VuZGlmCiAgICAgdW5pb24gewog ICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZnA7ICAvKiBQYWdlIGZyYW1lIHBvaW50ZXIuICov CiAgICAgICAgIGNoYXIgKmNkYXRhOyAvKiBDb21wcmVzc2VkIGRhdGEuICovCkBAIC05NiwyNSAr ODksMTIgQEAgc3RydWN0IHRtZW1fcGFnZV9jb250ZW50X2Rlc2NyaXB0b3IgewogICAgIHVuaW9u IHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGZwOyAgLyogUGFnZSBmcmFtZSBwb2ludGVy LiAqLwogICAgICAgICBjaGFyICpjZGF0YTsgLyogSWYgY29tcHJlc3Npb25fZW5hYmxlZC4gKi8K LSNpZmRlZiBDT05GSUdfVE1FTV9UWkUKLSAgICAgICAgY2hhciAqdHplOyAvKiBJZiAhY29tcHJl c3Npb25fZW5hYmxlZCwgdHJhaWxpbmcgemVyb2VzIGVsaW1pbmF0ZWQuICovCi0jZW5kaWYKICAg ICB9OwotI2lmZGVmIENPTkZJR19UTUVNX0RFRFVQCi0gICAgc3RydWN0IGxpc3RfaGVhZCBwZ3Bf bGlzdDsKLSAgICBzdHJ1Y3QgcmJfbm9kZSBwY2RfcmJfdHJlZV9ub2RlOwotICAgIHVpbnQzMl90 IHBncF9yZWZfY291bnQ7Ci0jZW5kaWYKICAgICBwYWdlc2l6ZV90IHNpemU7IC8qIElmIGNvbXBy ZXNzaW9uX2VuYWJsZWQgLT4gMDxzaXplPFBBR0VfU0laRSAoKmNkYXRhKQogICAgICAgICAgICAg ICAgICAgICAgKiBlbHNlIGlmIHR6ZSwgMDw9c2l6ZTxQQUdFX1NJWkUsIHJvdW5kZWQgdXAgdG8g bXVsdCBvZiA4CiAgICAgICAgICAgICAgICAgICAgICAqIGVsc2UgUEFHRV9TSVpFIC0+ICpwZnAu ICovCiB9OwogCi0jaWZkZWYgQ09ORklHX1RNRU1fREVEVVAKLXN0cnVjdCByYl9yb290IHBjZF90 cmVlX3Jvb3RzWzI1Nl07IC8qIENob29zZSBiYXNlZCBvbiBmaXJzdCBieXRlIG9mIHBhZ2UuICov Ci1yd2xvY2tfdCBwY2RfdHJlZV9yd2xvY2tzWzI1Nl07IC8qIFBvb3IgbWFuJ3MgY29uY3VycmVu Y3kgZm9yIG5vdy4gKi8KLSNlbmRpZgotCiBzdGF0aWMgaW50IHRtZW1faW5pdGlhbGl6ZWQgPSAw OwogCiBzdHJ1Y3QgeG1lbV9wb29sICp0bWVtX21lbXBvb2wgPSAwOwpAQCAtMjczLDIzMiArMjUz LDYgQEAgc3RhdGljIHZvaWQgdG1lbV9wZXJzaXN0ZW50X3Bvb2xfcGFnZV9wdXQodm9pZCAqcGFn ZV92YSkKICAqLwogI2RlZmluZSBOT1RfU0hBUkVBQkxFICgodWludDE2X3QpLTFVTCkKIAotI2lm ZGVmIENPTkZJR19UTUVNX0RFRFVQCi1zdGF0aWMgaW50IHBjZF9jb3B5X3RvX2NsaWVudCh4ZW5f cGZuX3QgY21mbiwgc3RydWN0IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3ApCi17Ci0gICAgdWlu dDhfdCBmaXJzdGJ5dGUgPSBwZ3AtPmZpcnN0Ynl0ZTsKLSAgICBzdHJ1Y3QgdG1lbV9wYWdlX2Nv bnRlbnRfZGVzY3JpcHRvciAqcGNkOwotICAgIGludCByZXQ7Ci0KLSAgICBBU1NFUlQodG1lbV9k ZWR1cF9lbmFibGVkKCkpOwotICAgIHJlYWRfbG9jaygmcGNkX3RyZWVfcndsb2Nrc1tmaXJzdGJ5 dGVdKTsKLSAgICBwY2QgPSBwZ3AtPnBjZDsKLSAgICBpZiAoIHBncC0+c2l6ZSA8IFBBR0VfU0la RSAmJiBwZ3AtPnNpemUgIT0gMCAmJgotICAgICAgICAgcGNkLT5zaXplIDwgUEFHRV9TSVpFICYm IHBjZC0+c2l6ZSAhPSAwICkKLSAgICAgICAgcmV0ID0gdG1lbV9kZWNvbXByZXNzX3RvX2NsaWVu dChjbWZuLCBwY2QtPmNkYXRhLCBwY2QtPnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0bWVtX2NsaV9idWZfbnVsbCk7Ci0gICAgZWxzZSBpZiAoIHRtZW1fdHpl X2VuYWJsZWQoKSAmJiBwY2QtPnNpemUgPCBQQUdFX1NJWkUgKQotICAgICAgICByZXQgPSB0bWVt X2NvcHlfdHplX3RvX2NsaWVudChjbWZuLCBwY2QtPnR6ZSwgcGNkLT5zaXplKTsKLSAgICBlbHNl Ci0gICAgICAgIHJldCA9IHRtZW1fY29weV90b19jbGllbnQoY21mbiwgcGNkLT5wZnAsIHRtZW1f Y2xpX2J1Zl9udWxsKTsKLSAgICByZWFkX3VubG9jaygmcGNkX3RyZWVfcndsb2Nrc1tmaXJzdGJ5 dGVdKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi0vKgotICogRW5zdXJlIHBncCBubyBsb25nZXIg cG9pbnRzIHRvIHBjZCwgbm9yIHZpY2UtdmVyc2EuCi0gKiBUYWtlIHBjZCByd2xvY2sgdW5sZXNz IGhhdmVfcGNkX3J3bG9jayBpcyBzZXQsIGFsd2F5cyB1bmxvY2sgd2hlbiBkb25lLgotICovCi1z dGF0aWMgdm9pZCBwY2RfZGlzYXNzb2NpYXRlKHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAq cGdwLCBzdHJ1Y3QgdG1lbV9wb29sICpwb29sLCBib29sX3QgaGF2ZV9wY2Rfcndsb2NrKQotewot ICAgIHN0cnVjdCB0bWVtX3BhZ2VfY29udGVudF9kZXNjcmlwdG9yICpwY2QgPSBwZ3AtPnBjZDsK LSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZnAgPSBwZ3AtPnBjZC0+cGZwOwotICAgIHVpbnQxNl90 IGZpcnN0Ynl0ZSA9IHBncC0+Zmlyc3RieXRlOwotICAgIGNoYXIgKnBjZF90emUgPSBwZ3AtPnBj ZC0+dHplOwotICAgIHBhZ2VzaXplX3QgcGNkX3NpemUgPSBwY2QtPnNpemU7Ci0gICAgcGFnZXNp emVfdCBwZ3Bfc2l6ZSA9IHBncC0+c2l6ZTsKLSAgICBjaGFyICpwY2RfY2RhdGEgPSBwZ3AtPnBj ZC0+Y2RhdGE7Ci0gICAgcGFnZXNpemVfdCBwY2RfY3NpemUgPSBwZ3AtPnBjZC0+c2l6ZTsKLQot ICAgIEFTU0VSVCh0bWVtX2RlZHVwX2VuYWJsZWQoKSk7Ci0gICAgQVNTRVJUKGZpcnN0Ynl0ZSAh PSBOT1RfU0hBUkVBQkxFKTsKLSAgICBBU1NFUlQoZmlyc3RieXRlIDwgMjU2KTsKLQotICAgIGlm ICggaGF2ZV9wY2Rfcndsb2NrICkKLSAgICAgICAgQVNTRVJUX1dSSVRFTE9DSygmcGNkX3RyZWVf cndsb2Nrc1tmaXJzdGJ5dGVdKTsKLSAgICBlbHNlCi0gICAgICAgIHdyaXRlX2xvY2soJnBjZF90 cmVlX3J3bG9ja3NbZmlyc3RieXRlXSk7Ci0gICAgbGlzdF9kZWxfaW5pdCgmcGdwLT5wY2Rfc2li bGluZ3MpOwotICAgIHBncC0+cGNkID0gTlVMTDsKLSAgICBwZ3AtPmZpcnN0Ynl0ZSA9IE5PVF9T SEFSRUFCTEU7Ci0gICAgcGdwLT5zaXplID0gLTE7Ci0gICAgaWYgKCAtLXBjZC0+cGdwX3JlZl9j b3VudCApCi0gICAgewotICAgICAgICB3cml0ZV91bmxvY2soJnBjZF90cmVlX3J3bG9ja3NbZmly c3RieXRlXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvKiBObyBtb3JlIHJlZmVy ZW5jZXMgdG8gdGhpcyBwY2QsIHJlY3ljbGUgaXQgYW5kIHRoZSBwaHlzaWNhbCBwYWdlLiAqLwot ICAgIEFTU0VSVChsaXN0X2VtcHR5KCZwY2QtPnBncF9saXN0KSk7Ci0gICAgcGNkLT5wZnAgPSBO VUxMOwotICAgIC8qIFJlbW92ZSBwY2QgZnJvbSByYnRyZWUuICovCi0gICAgcmJfZXJhc2UoJnBj ZC0+cGNkX3JiX3RyZWVfbm9kZSwmcGNkX3RyZWVfcm9vdHNbZmlyc3RieXRlXSk7Ci0gICAgLyog UmVpbml0IHRoZSBzdHJ1Y3QgZm9yIHNhZmV0eSBmb3Igbm93LiAqLwotICAgIFJCX0NMRUFSX05P REUoJnBjZC0+cGNkX3JiX3RyZWVfbm9kZSk7Ci0gICAgLyogTm93IGZyZWUgdXAgdGhlIHBjZCBt ZW1vcnkuICovCi0gICAgdG1lbV9mcmVlKHBjZCwgTlVMTCk7Ci0gICAgYXRvbWljX2RlY19hbmRf YXNzZXJ0KGdsb2JhbF9wY2RfY291bnQpOwotICAgIGlmICggcGdwX3NpemUgIT0gMCAmJiBwY2Rf c2l6ZSA8IFBBR0VfU0laRSApCi0gICAgewotICAgICAgICAvKiBDb21wcmVzc2VkIGRhdGEuICov Ci0gICAgICAgIHRtZW1fZnJlZShwY2RfY2RhdGEsIHBvb2wpOwotICAgICAgICB0bWVtX3N0YXRz LnBjZF90b3RfY3NpemUgLT0gcGNkX2NzaXplOwotICAgIH0KLSAgICBlbHNlIGlmICggcGNkX3Np emUgIT0gUEFHRV9TSVpFICkKLSAgICB7Ci0gICAgICAgIC8qIFRyYWlsaW5nIHplcm8gZGF0YS4g Ki8KLSAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X3R6ZV9zaXplIC09IHBjZF9zaXplOwotICAg ICAgICBpZiAoIHBjZF9zaXplICkKLSAgICAgICAgICAgIHRtZW1fZnJlZShwY2RfdHplLCBwb29s KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBSZWFsIHBoeXNpY2FsIHBhZ2UuICovCi0gICAg ICAgIGlmICggdG1lbV90emVfZW5hYmxlZCgpICkKLSAgICAgICAgICAgIHRtZW1fc3RhdHMucGNk X3RvdF90emVfc2l6ZSAtPSBQQUdFX1NJWkU7Ci0gICAgICAgIGlmICggdG1lbV9jb21wcmVzc2lv bl9lbmFibGVkKCkgKQotICAgICAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X2NzaXplIC09IFBB R0VfU0laRTsKLSAgICAgICAgdG1lbV9mcmVlX3BhZ2UocG9vbCxwZnApOwotICAgIH0KLSAgICB3 cml0ZV91bmxvY2soJnBjZF90cmVlX3J3bG9ja3NbZmlyc3RieXRlXSk7Ci19Ci0KLQotc3RhdGlj IGludCBwY2RfYXNzb2NpYXRlKHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdwLCBjaGFy ICpjZGF0YSwgcGFnZXNpemVfdCBjc2l6ZSkKLXsKLSAgICBzdHJ1Y3QgcmJfbm9kZSAqKm5ldywg KnBhcmVudCA9IE5VTEw7Ci0gICAgc3RydWN0IHJiX3Jvb3QgKnJvb3Q7Ci0gICAgc3RydWN0IHRt ZW1fcGFnZV9jb250ZW50X2Rlc2NyaXB0b3IgKnBjZDsKLSAgICBpbnQgY21wOwotICAgIHBhZ2Vz aXplX3QgcGZwX3NpemUgPSAwOwotICAgIHVpbnQ4X3QgZmlyc3RieXRlID0gKGNkYXRhID09IE5V TEwpID8gdG1lbV9nZXRfZmlyc3RfYnl0ZShwZ3AtPnBmcCkgOiAqY2RhdGE7Ci0gICAgaW50IHJl dCA9IDA7Ci0KLSAgICBpZiAoICF0bWVtX2RlZHVwX2VuYWJsZWQoKSApCi0gICAgICAgIHJldHVy biAwOwotICAgIEFTU0VSVChwZ3AtPnVzLm9iaiAhPSBOVUxMKTsKLSAgICBBU1NFUlQocGdwLT51 cy5vYmotPnBvb2wgIT0gTlVMTCk7Ci0gICAgQVNTRVJUKCFwZ3AtPnVzLm9iai0+cG9vbC0+cGVy c2lzdGVudCk7Ci0gICAgaWYgKCBjZGF0YSA9PSBOVUxMICkKLSAgICB7Ci0gICAgICAgIEFTU0VS VChwZ3AtPnBmcCAhPSBOVUxMKTsKLSAgICAgICAgcGZwX3NpemUgPSBQQUdFX1NJWkU7Ci0gICAg ICAgIGlmICggdG1lbV90emVfZW5hYmxlZCgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcGZw X3NpemUgPSB0bWVtX3R6ZV9wZnBfc2NhbihwZ3AtPnBmcCk7Ci0gICAgICAgICAgICBpZiAoIHBm cF9zaXplID4gUENEX1RaRV9NQVhfU0laRSApCi0gICAgICAgICAgICAgICAgcGZwX3NpemUgPSBQ QUdFX1NJWkU7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHBmcF9zaXplIDw9IFBBR0VfU0la RSk7Ci0gICAgICAgIEFTU0VSVCghKHBmcF9zaXplICYgKHNpemVvZih1aW50NjRfdCktMSkpKTsK LSAgICB9Ci0gICAgd3JpdGVfbG9jaygmcGNkX3RyZWVfcndsb2Nrc1tmaXJzdGJ5dGVdKTsKLQot ICAgIC8qIExvb2sgZm9yIHBhZ2UgbWF0Y2guICovCi0gICAgcm9vdCA9ICZwY2RfdHJlZV9yb290 c1tmaXJzdGJ5dGVdOwotICAgIG5ldyA9ICYocm9vdC0+cmJfbm9kZSk7Ci0gICAgd2hpbGUgKCAq bmV3ICkKLSAgICB7Ci0gICAgICAgIHBjZCA9IGNvbnRhaW5lcl9vZigqbmV3LCBzdHJ1Y3QgdG1l bV9wYWdlX2NvbnRlbnRfZGVzY3JpcHRvciwgcGNkX3JiX3RyZWVfbm9kZSk7Ci0gICAgICAgIHBh cmVudCA9ICpuZXc7Ci0gICAgICAgIC8qIENvbXBhcmUgbmV3IGVudHJ5IGFuZCByYnRyZWUgZW50 cnksIHNldCBjbXAgYWNjb3JkaW5nbHkuICovCi0gICAgICAgIGlmICggY2RhdGEgIT0gTlVMTCAp Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICggcGNkLT5zaXplIDwgUEFHRV9TSVpFICkKLSAg ICAgICAgICAgICAgICAvKiBCb3RoIG5ldyBlbnRyeSBhbmQgcmJ0cmVlIGVudHJ5IGFyZSBjb21w cmVzc2VkLiAqLwotICAgICAgICAgICAgICAgIGNtcCA9IHRtZW1fcGNkX2NtcChjZGF0YSxjc2l6 ZSxwY2QtPmNkYXRhLHBjZC0+c2l6ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgLyogTmV3IGVudHJ5IGlzIGNvbXByZXNzZWQsIHJidHJlZSBlbnRyeSBpcyBub3QuICovCi0g ICAgICAgICAgICAgICAgY21wID0gLTE7Ci0gICAgICAgIH0gZWxzZSBpZiAoIHBjZC0+c2l6ZSA8 IFBBR0VfU0laRSApCi0gICAgICAgICAgICAvKiBSYnRyZWUgZW50cnkgaXMgY29tcHJlc3NlZCwg cmJ0cmVlIGVudHJ5IGlzIG5vdC4gKi8KLSAgICAgICAgICAgIGNtcCA9IDE7Ci0gICAgICAgIGVs c2UgaWYgKCB0bWVtX3R6ZV9lbmFibGVkKCkgKSB7Ci0gICAgICAgICAgICBpZiAoIHBjZC0+c2l6 ZSA8IFBBR0VfU0laRSApCi0gICAgICAgICAgICAgICAgLyogQm90aCBuZXcgZW50cnkgYW5kIHJi dHJlZSBlbnRyeSBhcmUgdHJhaWxpbmcgemVyby4gKi8KLSAgICAgICAgICAgICAgICBjbXAgPSB0 bWVtX3R6ZV9wZnBfY21wKHBncC0+cGZwLHBmcF9zaXplLHBjZC0+dHplLHBjZC0+c2l6ZSk7Ci0g ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgLyogTmV3IGVudHJ5IGlzIHRyYWlsaW5n IHplcm8sIHJidHJlZSBlbnRyeSBpcyBub3QuICovCi0gICAgICAgICAgICAgICAgY21wID0gdG1l bV90emVfcGZwX2NtcChwZ3AtPnBmcCxwZnBfc2l6ZSxwY2QtPnBmcCxQQUdFX1NJWkUpOwotICAg ICAgICB9IGVsc2UgIHsKLSAgICAgICAgICAgIC8qIEJvdGggbmV3IGVudHJ5IGFuZCByYnRyZWUg ZW50cnkgYXJlIGZ1bGwgcGh5c2ljYWwgcGFnZXMuICovCi0gICAgICAgICAgICBBU1NFUlQocGdw LT5wZnAgIT0gTlVMTCk7Ci0gICAgICAgICAgICBBU1NFUlQocGNkLT5wZnAgIT0gTlVMTCk7Ci0g ICAgICAgICAgICBjbXAgPSB0bWVtX3BhZ2VfY21wKHBncC0+cGZwLHBjZC0+cGZwKTsKLSAgICAg ICAgfQotCi0gICAgICAgIC8qIFdhbGsgdHJlZSBvciBtYXRjaCBkZXBlbmRpbmcgb24gY21wLiAq LwotICAgICAgICBpZiAoIGNtcCA8IDAgKQotICAgICAgICAgICAgbmV3ID0gJigoKm5ldyktPnJi X2xlZnQpOwotICAgICAgICBlbHNlIGlmICggY21wID4gMCApCi0gICAgICAgICAgICBuZXcgPSAm KCgqbmV3KS0+cmJfcmlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg IC8qCi0gICAgICAgICAgICAgKiBNYXRjaCEgaWYgbm90IGNvbXByZXNzZWQsIGZyZWUgdGhlIG5v LWxvbmdlci1uZWVkZWQgcGFnZQotICAgICAgICAgICAgICogYnV0IGlmIGNvbXByZXNzZWQsIGRh dGEgaXMgYXNzdW1lZCBzdGF0aWMgc28gZG9uJ3QgZnJlZSEKLSAgICAgICAgICAgICAqLwotICAg ICAgICAgICAgaWYgKCBjZGF0YSA9PSBOVUxMICkKLSAgICAgICAgICAgICAgICB0bWVtX2ZyZWVf cGFnZShwZ3AtPnVzLm9iai0+cG9vbCxwZ3AtPnBmcCk7Ci0gICAgICAgICAgICB0bWVtX3N0YXRz LmRlZHVwZWRfcHV0cysrOwotICAgICAgICAgICAgZ290byBtYXRjaDsKLSAgICAgICAgfQotICAg IH0KLQotICAgIC8qIEV4aXRlZCB3aGlsZSBsb29wIHdpdGggbm8gbWF0Y2gsIHNvIGFsbG9jIGEg cGNkIGFuZCBwdXQgaXQgaW4gdGhlIHRyZWUuICovCi0gICAgaWYgKCAocGNkID0gdG1lbV9tYWxs b2Moc2l6ZW9mKHN0cnVjdCB0bWVtX3BhZ2VfY29udGVudF9kZXNjcmlwdG9yKSwgTlVMTCkpID09 IE5VTEwgKQotICAgIHsKLSAgICAgICAgcmV0ID0gLUVOT01FTTsKLSAgICAgICAgZ290byB1bmxv Y2s7Ci0gICAgfSBlbHNlIGlmICggY2RhdGEgIT0gTlVMTCApIHsKLSAgICAgICAgaWYgKCAocGNk LT5jZGF0YSA9IHRtZW1fbWFsbG9jKGNzaXplLHBncC0+dXMub2JqLT5wb29sKSkgPT0gTlVMTCAp Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRtZW1fZnJlZShwY2QsIE5VTEwpOwotICAgICAgICAg ICAgcmV0ID0gLUVOT01FTTsKLSAgICAgICAgICAgIGdvdG8gdW5sb2NrOwotICAgICAgICB9Ci0g ICAgfQotICAgIGF0b21pY19pbmNfYW5kX21heChnbG9iYWxfcGNkX2NvdW50KTsKLSAgICBSQl9D TEVBUl9OT0RFKCZwY2QtPnBjZF9yYl90cmVlX25vZGUpOyAgLyogSXMgdGhpcyBuZWNlc3Nhcnk/ ICovCi0gICAgSU5JVF9MSVNUX0hFQUQoJnBjZC0+cGdwX2xpc3QpOyAgLyogSXMgdGhpcyBuZWNl c3Nhcnk/ICovCi0gICAgcGNkLT5wZ3BfcmVmX2NvdW50ID0gMDsKLSAgICBpZiAoIGNkYXRhICE9 IE5VTEwgKQotICAgIHsKLSAgICAgICAgbWVtY3B5KHBjZC0+Y2RhdGEsY2RhdGEsY3NpemUpOwot ICAgICAgICBwY2QtPnNpemUgPSBjc2l6ZTsKLSAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X2Nz aXplICs9IGNzaXplOwotICAgIH0gZWxzZSBpZiAoIHBmcF9zaXplID09IDAgKSB7Ci0gICAgICAg IEFTU0VSVCh0bWVtX3R6ZV9lbmFibGVkKCkpOwotICAgICAgICBwY2QtPnNpemUgPSAwOwotICAg ICAgICBwY2QtPnR6ZSA9IE5VTEw7Ci0gICAgfSBlbHNlIGlmICggcGZwX3NpemUgPCBQQUdFX1NJ WkUgJiYKLSAgICAgICAgICgocGNkLT50emUgPSB0bWVtX21hbGxvYyhwZnBfc2l6ZSxwZ3AtPnVz Lm9iai0+cG9vbCkpICE9IE5VTEwpICkgewotICAgICAgICB0bWVtX3R6ZV9jb3B5X2Zyb21fcGZw KHBjZC0+dHplLHBncC0+cGZwLHBmcF9zaXplKTsKLSAgICAgICAgcGNkLT5zaXplID0gcGZwX3Np emU7Ci0gICAgICAgIHRtZW1fc3RhdHMucGNkX3RvdF90emVfc2l6ZSArPSBwZnBfc2l6ZTsKLSAg ICAgICAgdG1lbV9mcmVlX3BhZ2UocGdwLT51cy5vYmotPnBvb2wscGdwLT5wZnApOwotICAgIH0g ZWxzZSB7Ci0gICAgICAgIHBjZC0+cGZwID0gcGdwLT5wZnA7Ci0gICAgICAgIHBjZC0+c2l6ZSA9 IFBBR0VfU0laRTsKLSAgICAgICAgaWYgKCB0bWVtX3R6ZV9lbmFibGVkKCkgKQotICAgICAgICAg ICAgdG1lbV9zdGF0cy5wY2RfdG90X3R6ZV9zaXplICs9IFBBR0VfU0laRTsKLSAgICAgICAgaWYg KCB0bWVtX2NvbXByZXNzaW9uX2VuYWJsZWQoKSApCi0gICAgICAgICAgICB0bWVtX3N0YXRzLnBj ZF90b3RfY3NpemUgKz0gUEFHRV9TSVpFOwotICAgIH0KLSAgICByYl9saW5rX25vZGUoJnBjZC0+ cGNkX3JiX3RyZWVfbm9kZSwgcGFyZW50LCBuZXcpOwotICAgIHJiX2luc2VydF9jb2xvcigmcGNk LT5wY2RfcmJfdHJlZV9ub2RlLCByb290KTsKLQotbWF0Y2g6Ci0gICAgcGNkLT5wZ3BfcmVmX2Nv dW50Kys7Ci0gICAgbGlzdF9hZGQoJnBncC0+cGNkX3NpYmxpbmdzLCZwY2QtPnBncF9saXN0KTsK LSAgICBwZ3AtPmZpcnN0Ynl0ZSA9IGZpcnN0Ynl0ZTsKLSAgICBwZ3AtPmV2aWN0aW9uX2F0dGVt cHRlZCA9IDA7Ci0gICAgcGdwLT5wY2QgPSBwY2Q7Ci0KLXVubG9jazoKLSAgICB3cml0ZV91bmxv Y2soJnBjZF90cmVlX3J3bG9ja3NbZmlyc3RieXRlXSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLSNl bmRpZgotCiAvKioqKioqKioqKioqIFBBR0UgREVTQ1JJUFRPUiBNQU5JUFVMQVRJT04gUk9VVElO RVMgKioqKioqKioqKioqKioqKioqKi8KIAogLyogQWxsb2NhdGUgYSBzdHJ1Y3QgdG1lbV9wYWdl X2Rlc2NyaXB0b3IgYW5kIGFzc29jaWF0ZSBpdCB3aXRoIGFuIG9iamVjdC4gKi8KQEAgLTUxNiwx NCArMjcwLDYgQEAgc3RhdGljIHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdwX2FsbG9j KHN0cnVjdCB0bWVtX29iamVjdF9yb290ICpvYmopCiAgICAgSU5JVF9MSVNUX0hFQUQoJnBncC0+ Z2xvYmFsX2VwaF9wYWdlcyk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJnBncC0+dXMuY2xpZW50X2Vw aF9wYWdlcyk7CiAgICAgcGdwLT5wZnAgPSBOVUxMOwotI2lmZGVmIENPTkZJR19UTUVNX0RFRFVQ Ci0gICAgaWYgKCB0bWVtX2RlZHVwX2VuYWJsZWQoKSApCi0gICAgewotICAgICAgICBwZ3AtPmZp cnN0Ynl0ZSA9IE5PVF9TSEFSRUFCTEU7Ci0gICAgICAgIHBncC0+ZXZpY3Rpb25fYXR0ZW1wdGVk ID0gMDsKLSAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnBncC0+cGNkX3NpYmxpbmdzKTsKLSAgICB9 Ci0jZW5kaWYKICAgICBwZ3AtPnNpemUgPSAtMTsKICAgICBwZ3AtPmluZGV4ID0gLTE7CiAgICAg cGdwLT50aW1lc3RhbXAgPSBnZXRfY3ljbGVzKCk7CkBAIC01NDgsMTEgKzI5NCw2IEBAIHN0YXRp YyB2b2lkIHBncF9mcmVlX2RhdGEoc3RydWN0IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3AsIHN0 cnVjdCB0bWVtX3Bvb2wgKnBvCiAKICAgICBpZiAoIHBncC0+cGZwID09IE5VTEwgKQogICAgICAg ICByZXR1cm47Ci0jaWZkZWYgQ09ORklHX1RNRU1fREVEVVAKLSAgICBpZiAoIHRtZW1fZGVkdXBf ZW5hYmxlZCgpICYmIHBncC0+Zmlyc3RieXRlICE9IE5PVF9TSEFSRUFCTEUgKQotICAgICAgICBw Y2RfZGlzYXNzb2NpYXRlKHBncCxwb29sLDApOyAvKiBwZ3AtPnNpemUgbG9zdC4gKi8KLSAgICBl bHNlCi0jZW5kaWYKICAgICBpZiAoIHBncF9zaXplICkKICAgICAgICAgdG1lbV9mcmVlKHBncC0+ Y2RhdGEsIHBvb2wpOwogICAgIGVsc2UKQEAgLTExMDMsOCArODQ0LDYgQEAgc3RhdGljIHN0cnVj dCBjbGllbnQgKmNsaWVudF9jcmVhdGUoZG9taWRfdCBjbGlfaWQpCiAKICAgICBjbGllbnQtPmNs aV9pZCA9IGNsaV9pZDsKICAgICBjbGllbnQtPmNvbXByZXNzID0gdG1lbV9jb21wcmVzc2lvbl9l bmFibGVkKCk7Ci0jaWZkZWYgQ09ORklHX1RNRU1fREVEVVAKLSNlbmRpZgogICAgIGNsaWVudC0+ c2hhcmVkX2F1dGhfcmVxdWlyZWQgPSB0bWVtX3NoYXJlZF9hdXRoKCk7CiAgICAgZm9yICggaSA9 IDA7IGkgPCBNQVhfR0xPQkFMX1NIQVJFRF9QT09MUzsgaSsrKQogICAgICAgICBjbGllbnQtPnNo YXJlZF9hdXRoX3V1aWRbaV1bMF0gPQpAQCAtMTE2MSwzNSArOTAwLDExIEBAIHN0YXRpYyBib29s X3QgdG1lbV90cnlfdG9fZXZpY3RfcGdwKHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdw LCBib29sX3QgKmhvCiB7CiAgICAgc3RydWN0IHRtZW1fb2JqZWN0X3Jvb3QgKm9iaiA9IHBncC0+ dXMub2JqOwogICAgIHN0cnVjdCB0bWVtX3Bvb2wgKnBvb2wgPSBvYmotPnBvb2w7Ci0jaWZkZWYg Q09ORklHX1RNRU1fREVEVVAKLSAgICBzdHJ1Y3QgY2xpZW50ICpjbGllbnQgPSBwb29sLT5jbGll bnQ7Ci0gICAgdWludDE2X3QgZmlyc3RieXRlID0gcGdwLT5maXJzdGJ5dGU7Ci0jZW5kaWYKIAog ICAgIGlmICggcG9vbC0+aXNfZHlpbmcgKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIHNw aW5fdHJ5bG9jaygmb2JqLT5vYmpfc3BpbmxvY2spICkKICAgICB7Ci0jaWZkZWYgQ09ORklHX1RN RU1fREVEVVAKLSAgICAgICAgaWYgKCB0bWVtX2RlZHVwX2VuYWJsZWQoKSApCi0gICAgICAgIHsK LSAgICAgICAgICAgIGZpcnN0Ynl0ZSA9IHBncC0+Zmlyc3RieXRlOwotICAgICAgICAgICAgaWYg KCBmaXJzdGJ5dGUgPT0gIE5PVF9TSEFSRUFCTEUgKQotICAgICAgICAgICAgICAgIGdvdG8gb2Jq X3VubG9jazsKLSAgICAgICAgICAgIEFTU0VSVChmaXJzdGJ5dGUgPCAyNTYpOwotICAgICAgICAg ICAgaWYgKCAhd3JpdGVfdHJ5bG9jaygmcGNkX3RyZWVfcndsb2Nrc1tmaXJzdGJ5dGVdKSApCi0g ICAgICAgICAgICAgICAgZ290byBvYmpfdW5sb2NrOwotICAgICAgICAgICAgaWYgKCBwZ3AtPnBj ZC0+cGdwX3JlZl9jb3VudCA+IDEgJiYgIXBncC0+ZXZpY3Rpb25fYXR0ZW1wdGVkICkKLSAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgICBwZ3AtPmV2aWN0aW9uX2F0dGVtcHRlZCsrOwotICAg ICAgICAgICAgICAgIGxpc3RfZGVsKCZwZ3AtPmdsb2JhbF9lcGhfcGFnZXMpOwotICAgICAgICAg ICAgICAgIGxpc3RfYWRkX3RhaWwoJnBncC0+Z2xvYmFsX2VwaF9wYWdlcywmdG1lbV9nbG9iYWwu ZXBoZW1lcmFsX3BhZ2VfbGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdF9kZWwoJnBncC0+dXMu Y2xpZW50X2VwaF9wYWdlcyk7Ci0gICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcGdwLT51 cy5jbGllbnRfZXBoX3BhZ2VzLCZjbGllbnQtPmVwaGVtZXJhbF9wYWdlX2xpc3QpOwotICAgICAg ICAgICAgICAgIGdvdG8gcGNkX3VubG9jazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vu ZGlmCiAgICAgICAgIGlmICggb2JqLT5wZ3BfY291bnQgPiAxICkKICAgICAgICAgICAgIHJldHVy biAxOwogICAgICAgICBpZiAoIHdyaXRlX3RyeWxvY2soJnBvb2wtPnBvb2xfcndsb2NrKSApCkBA IC0xMTk3LDEyICs5MTIsNiBAQCBzdGF0aWMgYm9vbF90IHRtZW1fdHJ5X3RvX2V2aWN0X3BncChz dHJ1Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncCwgYm9vbF90ICpobwogICAgICAgICAgICAg KmhvbGRfcG9vbF9yd2xvY2sgPSAxOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0K LSNpZmRlZiBDT05GSUdfVE1FTV9ERURVUAotcGNkX3VubG9jazoKLSAgICAgICAgaWYgKCB0bWVt X2RlZHVwX2VuYWJsZWQoKSApCi0gICAgICAgICAgICB3cml0ZV91bmxvY2soJnBjZF90cmVlX3J3 bG9ja3NbZmlyc3RieXRlXSk7Ci1vYmpfdW5sb2NrOgotI2VuZGlmCiAgICAgICAgIHNwaW5fdW5s b2NrKCZvYmotPm9ial9zcGlubG9jayk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTI1OCwx MyArOTY3LDYgQEAgZm91bmQ6CiAgICAgQVNTRVJUX1NQSU5MT0NLKCZvYmotPm9ial9zcGlubG9j ayk7CiAgICAgcGdwX2RlbCA9IHBncF9kZWxldGVfZnJvbV9vYmoob2JqLCBwZ3AtPmluZGV4KTsK ICAgICBBU1NFUlQocGdwX2RlbCA9PSBwZ3ApOwotI2lmZGVmIENPTkZJR19UTUVNX0RFRFVQCi0g ICAgaWYgKCB0bWVtX2RlZHVwX2VuYWJsZWQoKSAmJiBwZ3AtPmZpcnN0Ynl0ZSAhPSBOT1RfU0hB UkVBQkxFICkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChwZ3AtPnBjZC0+cGdwX3JlZl9jb3VudCA9 PSAxIHx8IHBncC0+ZXZpY3Rpb25fYXR0ZW1wdGVkKTsKLSAgICAgICAgcGNkX2Rpc2Fzc29jaWF0 ZShwZ3AscG9vbCwxKTsKLSAgICB9Ci0jZW5kaWYKIAogICAgIC8qIHBncCBhbHJlYWR5IGRlbGlz dCwgc28gY2FsbCBwZ3BfZnJlZSBkaXJlY3RseS4gKi8KICAgICBwZ3BfZnJlZShwZ3ApOwpAQCAt MTMzMSwxMSArMTAzMyw2IEBAIHN0YXRpYyBpbnQgZG9fdG1lbV9wdXRfY29tcHJlc3Moc3RydWN0 IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3AsIHhlbl9wZm5fdCBjbWZuCiAgICAgZWxzZSBpZiAo IChzaXplID09IDApIHx8IChzaXplID49IHRtZW1fbWVtcG9vbF9tYXhhbGxvYykgKSB7CiAgICAg ICAgIHJldCA9IDA7CiAgICAgICAgIGdvdG8gb3V0OwotI2lmZGVmIENPTkZJR19UTUVNX0RFRFVQ Ci0gICAgfSBlbHNlIGlmICggdG1lbV9kZWR1cF9lbmFibGVkKCkgJiYgIWlzX3BlcnNpc3RlbnQo cGdwLT51cy5vYmotPnBvb2wpICkgewotICAgICAgICBpZiAoIChyZXQgPSBwY2RfYXNzb2NpYXRl KHBncCxkc3Qsc2l6ZSkpID09IC1FTk9NRU0gKQotICAgICAgICAgICAgZ290byBvdXQ7Ci0jZW5k aWYKICAgICB9IGVsc2UgaWYgKCAocCA9IHRtZW1fbWFsbG9jKHNpemUscGdwLT51cy5vYmotPnBv b2wpKSA9PSBOVUxMICkgewogICAgICAgICByZXQgPSAtRU5PTUVNOwogICAgICAgICBnb3RvIG91 dDsKQEAgLTEzOTUsMTMgKzEwOTIsNiBAQCBjb3B5X3VuY29tcHJlc3NlZDoKICAgICByZXQgPSB0 bWVtX2NvcHlfZnJvbV9jbGllbnQocGdwLT5wZnAsIGNtZm4sIHRtZW1fY2xpX2J1Zl9udWxsKTsK ICAgICBpZiAoIHJldCA8IDAgKQogICAgICAgICBnb3RvIGJhZF9jb3B5OwotI2lmZGVmIENPTkZJ R19QQUdFX0RFRFVQCi0gICAgaWYgKCB0bWVtX2RlZHVwX2VuYWJsZWQoKSAmJiAhaXNfcGVyc2lz dGVudChwb29sKSApCi0gICAgewotICAgICAgICBpZiAoIHBjZF9hc3NvY2lhdGUocGdwLE5VTEws MCkgPT0gLUVOT01FTSApCi0gICAgICAgICAgICBnb3RvIGZhaWxlZF9kdXA7Ci0gICAgfQotI2Vu ZGlmCiAKIGRvbmU6CiAgICAgLyogU3VjY2Vzc2Z1bGx5IHJlcGxhY2VkIGRhdGEsIGNsZWFuIHVw IGFuZCByZXR1cm4gc3VjY2Vzcy4gKi8KQEAgLTE1MzgsMTcgKzEyMjgsNiBAQCBjb3B5X3VuY29t cHJlc3NlZDoKICAgICBpZiAoIHJldCA8IDAgKQogICAgICAgICBnb3RvIGJhZF9jb3B5OwogCi0j aWZkZWYgQ09ORklHX1RNRU1fREVEVVAKLSAgICBpZiAoIHRtZW1fZGVkdXBfZW5hYmxlZCgpICYm ICFpc19wZXJzaXN0ZW50KHBvb2wpICkKLSAgICB7Ci0gICAgICAgIGlmICggcGNkX2Fzc29jaWF0 ZShwZ3AsIE5VTEwsIDApID09IC1FTk9NRU0gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXQg PSAtRU5PTUVNOwotICAgICAgICAgICAgZ290byBkZWxfcGdwX2Zyb21fb2JqOwotICAgICAgICB9 Ci0gICAgfQotI2VuZGlmCi0KIGluc2VydF9wYWdlOgogICAgIGlmICggIWlzX3BlcnNpc3RlbnQo cG9vbCkgKQogICAgIHsKQEAgLTE2MzUsMTIgKzEzMTQsNiBAQCBzdGF0aWMgaW50IGRvX3RtZW1f Z2V0KHN0cnVjdCB0bWVtX3Bvb2wgKnBvb2wsCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg ICBBU1NFUlQocGdwLT5zaXplICE9IC0xKTsKLSNpZmRlZiBDT05GSUdfVE1FTV9ERURVUAotICAg IGlmICggdG1lbV9kZWR1cF9lbmFibGVkKCkgJiYgIWlzX3BlcnNpc3RlbnQocG9vbCkgJiYKLSAg ICAgICAgICAgICAgcGdwLT5maXJzdGJ5dGUgIT0gTk9UX1NIQVJFQUJMRSApCi0gICAgICAgIHJj ID0gcGNkX2NvcHlfdG9fY2xpZW50KGNtZm4sIHBncCk7Ci0gICAgZWxzZQotI2VuZGlmCiAgICAg aWYgKCBwZ3AtPnNpemUgIT0gMCApCiAgICAgewogICAgICAgICByYyA9IHRtZW1fZGVjb21wcmVz c190b19jbGllbnQoY21mbiwgcGdwLT5jZGF0YSwgcGdwLT5zaXplLCBjbGlidWYpOwpAQCAtMjQw Miw0NCArMjA3NSwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X3RtZW0odm9pZCkKICAgICBp ZiAoICF0bWVtX2VuYWJsZWQoKSApCiAgICAgICAgIHJldHVybiAwOwogCi0jaWZkZWYgQ09ORklH X1RNRU1fREVEVVAKLSAgICBpZiAoIHRtZW1fZGVkdXBfZW5hYmxlZCgpICkKLSAgICB7Ci0gICAg ICAgIHVuc2lnbmVkIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKyAp Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBjZF90cmVlX3Jvb3RzW2ldID0gUkJfUk9PVDsKLSAg ICAgICAgICAgIHJ3bG9ja19pbml0KCZwY2RfdHJlZV9yd2xvY2tzW2ldKTsKLSAgICAgICAgfQot ICAgIH0KLSNlbmRpZgogICAgIGlmICggIXRtZW1fbWVtcG9vbF9pbml0KCkgKQogICAgICAgICBy ZXR1cm4gMDsKIAogICAgIGlmICggdG1lbV9pbml0KCkgKQogICAgIHsKLSAgICAgICAgcHJpbnRr KCJ0bWVtOiBpbml0aWFsaXplZCBjb21wPSVkIGRlZHVwPSVkIHR6ZT0lZFxuIiwKLSAgICAgICAg ICAgICAgIHRtZW1fY29tcHJlc3Npb25fZW5hYmxlZCgpLAotI2lmZGVmIENPTkZJR19UTUVNX0RF RFVQCi0gICAgICAgICAgICAgICB0bWVtX2RlZHVwX2VuYWJsZWQoKSwKLSNlbHNlCi0gICAgICAg ICAgICAgICAwLAotI2VuZGlmCi0jaWZkZWYgQ09ORklHX1RNRU1fVFpFCi0gICAgICAgICAgICAg ICB0bWVtX3R6ZV9lbmFibGVkKCkKLSNlbHNlCi0gICAgICAgICAgICAgICAwCi0jZW5kaWYKLSAg ICAgICAgICAgICk7Ci0KLSNpZiBkZWZpbmVkKENPTkZJR19UTUVNX0RFRFVQKSAmJiBkZWZpbmVk KENPTkZJR19UTUVNX1RaRSkKLSAgICAgICAgaWYgKCB0bWVtX2RlZHVwX2VuYWJsZWQoKSYmdG1l bV9jb21wcmVzc2lvbl9lbmFibGVkKCkmJnRtZW1fdHplX2VuYWJsZWQoKSApCi0gICAgICAgIHsK LSAgICAgICAgICAgIHRtZW1fdHplX2Rpc2FibGUoKTsKLSAgICAgICAgICAgIHByaW50aygidG1l bTogdHplIGFuZCBjb21wcmVzc2lvbiBub3QgY29tcGF0aWJsZSwgZGlzYWJsaW5nIHR6ZVxuIik7 Ci0gICAgICAgIH0KLSNlbmRpZgorICAgICAgICBwcmludGsoInRtZW06IGluaXRpYWxpemVkIGNv bXA9JWRcbiIsIHRtZW1fY29tcHJlc3Npb25fZW5hYmxlZCgpKTsKICAgICAgICAgdG1lbV9pbml0 aWFsaXplZCA9IDE7CiAgICAgfQogICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdG1l bV9jb250cm9sLmMgYi94ZW4vY29tbW9uL3RtZW1fY29udHJvbC5jCmluZGV4IDU2NWU1MGIuLmNk YTMyN2IgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdG1lbV9jb250cm9sLmMKKysrIGIveGVuL2Nv bW1vbi90bWVtX2NvbnRyb2wuYwpAQCAtMjc0LDE1ICsyNzQsNiBAQCBzdGF0aWMgaW50IF9fdG1l bWNfc2V0X3ZhcihzdHJ1Y3QgY2xpZW50ICpjbGllbnQsIHVpbnQzMl90IHN1Ym9wLCB1aW50MzJf dCBhcmcxKQogICAgICAgICBhdG9taWNfYWRkKGNsaWVudC0+d2VpZ2h0LCZ0bWVtX2dsb2JhbC5j bGllbnRfd2VpZ2h0X3RvdGFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBYRU5fU1lTQ1RM X1RNRU1fT1BfU0VUX0NPTVBSRVNTOgotI2lmZGVmIENPTkZJR19UTUVNX0RFRFVQCi0gICAgICAg IGlmICggdG1lbV9kZWR1cF9lbmFibGVkKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICB0bWVt X2NsaWVudF93YXJuKCJ0bWVtOiBjb21wcmVzc2lvbiAlcyBmb3IgYWxsICVzcywgY2Fubm90IGJl IGNoYW5nZWQgd2hlbiB0bWVtX2RlZHVwIGlzIGVuYWJsZWRcbiIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG1lbV9jb21wcmVzc2lvbl9lbmFibGVkKCkgPyAiZW5hYmxlZCIgOiAiZGlz YWJsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtZW1fY2xpZW50X3N0cik7Ci0g ICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBjbGllbnQt PmNvbXByZXNzID0gYXJnMSA/IDEgOiAwOwogICAgICAgICB0bWVtX2NsaWVudF9pbmZvKCJ0bWVt OiBjb21wcmVzc2lvbiAlcyBmb3IgJXM9JWRcbiIsCiAgICAgICAgICAgICBhcmcxID8gImVuYWJs ZWQiIDogImRpc2FibGVkIix0bWVtX2NsaV9pZF9zdHIsY2xpX2lkKTsKZGlmZiAtLWdpdCBhL3hl bi9jb21tb24vdG1lbV94ZW4uYyBiL3hlbi9jb21tb24vdG1lbV94ZW4uYwppbmRleCBkNDJkZWVm Li44NGFlN2ZkIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3RtZW1feGVuLmMKKysrIGIveGVuL2Nv bW1vbi90bWVtX3hlbi5jCkBAIC0yMCwxNiArMjAsNiBAQCBib29sZWFuX3BhcmFtKCJ0bWVtIiwg b3B0X3RtZW0pOwogYm9vbF90IF9fcmVhZF9tb3N0bHkgb3B0X3RtZW1fY29tcHJlc3MgPSAwOwog Ym9vbGVhbl9wYXJhbSgidG1lbV9jb21wcmVzcyIsIG9wdF90bWVtX2NvbXByZXNzKTsKIAotI2lm ZGVmIENPTkZJR19UTUVNX0RFRFVQCi1ib29sX3QgX19yZWFkX21vc3RseSBvcHRfdG1lbV9kZWR1 cCA9IDA7Ci1ib29sZWFuX3BhcmFtKCJ0bWVtX2RlZHVwIiwgb3B0X3RtZW1fZGVkdXApOwotI2Vu ZGlmCi0KLSNpZmRlZiBDT05GSUdfVE1FTV9UWkUKLWJvb2xfdCBfX3JlYWRfbW9zdGx5IG9wdF90 bWVtX3R6ZSA9IDA7Ci1ib29sZWFuX3BhcmFtKCJ0bWVtX3R6ZSIsIG9wdF90bWVtX3R6ZSk7Ci0j ZW5kaWYKLQogYm9vbF90IF9fcmVhZF9tb3N0bHkgb3B0X3RtZW1fc2hhcmVkX2F1dGggPSAwOwog Ym9vbGVhbl9wYXJhbSgidG1lbV9zaGFyZWRfYXV0aCIsIG9wdF90bWVtX3NoYXJlZF9hdXRoKTsK IApAQCAtMjIwLDMwICsyMTAsNiBAQCBpbnQgdG1lbV9kZWNvbXByZXNzX3RvX2NsaWVudCh4ZW5f cGZuX3QgY21mbiwgdm9pZCAqdG1lbV92YSwKICAgICByZXR1cm4gMTsKIH0KIAotI2lmZGVmIENP TkZJR19UTUVNX1RaRQotaW50IHRtZW1fY29weV90emVfdG9fY2xpZW50KHhlbl9wZm5fdCBjbWZu LCB2b2lkICp0bWVtX3ZhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFn ZXNpemVfdCBsZW4pCi17Ci0gICAgdm9pZCAqY2xpX3ZhOwotICAgIHVuc2lnbmVkIGxvbmcgY2xp X21mbjsKLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpjbGlfcGZwID0gTlVMTDsKLQotICAgIEFTU0VS VCghKGxlbiAmIChzaXplb2YodWludDY0X3QpLTEpKSk7Ci0gICAgQVNTRVJUKGxlbiA8PSBQQUdF X1NJWkUpOwotICAgIEFTU0VSVChsZW4gPiAwIHx8IHRtZW1fdmEgPT0gTlVMTCk7Ci0gICAgY2xp X3ZhID0gY2xpX2dldF9wYWdlKGNtZm4sICZjbGlfbWZuLCAmY2xpX3BmcCwgMSk7Ci0gICAgaWYg KCBjbGlfdmEgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAtRUZBVUxUOwotICAgIGlmICggbGVu ID4gMCApCi0gICAgICAgIG1lbWNweSgoY2hhciAqKWNsaV92YSwoY2hhciAqKXRtZW1fdmEsbGVu KTsKLSAgICBpZiAoIGxlbiA8IFBBR0VfU0laRSApCi0gICAgICAgIG1lbXNldCgoY2hhciAqKWNs aV92YStsZW4sMCxQQUdFX1NJWkUtbGVuKTsKLSAgICBjbGlfcHV0X3BhZ2UoY2xpX3ZhLCBjbGlf cGZwLCBjbGlfbWZuLCAxKTsKLSAgICBzbXBfbWIoKTsKLSAgICByZXR1cm4gMTsKLX0KLSNlbmRp ZgotCiAvKioqKioqKioqKioqKioqKioqICBYRU4tU1BFQ0lGSUMgSE9TVCBJTklUSUFMSVpBVElP TiAqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBpbnQgZHN0bWVtX29yZGVyLCB3b3JrbWVt X29yZGVyOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaCBiL3hlbi9p bmNsdWRlL3hlbi90bWVtX3hlbi5oCmluZGV4IDNiZTgwMDEuLjdhMWJiMDMgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3hlbi90bWVtX3hlbi5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi90bWVtX3hl bi5oCkBAIC00MSwyNyArNDEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2xfdCB0bWVtX2NvbXByZXNz aW9uX2VuYWJsZWQodm9pZCkKICAgICByZXR1cm4gb3B0X3RtZW1fY29tcHJlc3M7CiB9CiAKLSNp ZmRlZiBDT05GSUdfVE1FTV9ERURVUAotZXh0ZXJuIGJvb2xfdCBvcHRfdG1lbV9kZWR1cDsKLXN0 YXRpYyBpbmxpbmUgYm9vbF90IHRtZW1fZGVkdXBfZW5hYmxlZCh2b2lkKQotewotICAgIHJldHVy biBvcHRfdG1lbV9kZWR1cDsKLX0KLSNlbmRpZgotCi0jaWZkZWYgQ09ORklHX1RNRU1fVFpFCi1l eHRlcm4gYm9vbF90IG9wdF90bWVtX3R6ZTsKLXN0YXRpYyBpbmxpbmUgYm9vbF90IHRtZW1fdHpl X2VuYWJsZWQodm9pZCkKLXsKLSAgICByZXR1cm4gb3B0X3RtZW1fdHplOwotfQotCi1zdGF0aWMg aW5saW5lIHZvaWQgdG1lbV90emVfZGlzYWJsZSh2b2lkKQotewotICAgIG9wdF90bWVtX3R6ZSA9 IDA7Ci19Ci0jZW5kaWYKLQogZXh0ZXJuIGJvb2xfdCBvcHRfdG1lbV9zaGFyZWRfYXV0aDsKIHN0 YXRpYyBpbmxpbmUgYm9vbF90IHRtZW1fc2hhcmVkX2F1dGgodm9pZCkKIHsKQEAgLTE5NiwxMDUg KzE3NSw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNsaWVudCAqdG1lbV9jbGllbnRfZnJvbV9j bGlfaWQoZG9taWRfdCBjbGlfaWQpCiAgICAgcmV0dXJuIGM7CiB9CiAKLSNpZmRlZiBDT05GSUdf VE1FTV9ERURVUAotc3RhdGljIGlubGluZSB1aW50OF90IHRtZW1fZ2V0X2ZpcnN0X2J5dGUoc3Ry dWN0IHBhZ2VfaW5mbyAqcGZwKQotewotICAgIGNvbnN0IHVpbnQ4X3QgKnAgPSBfX21hcF9kb21h aW5fcGFnZShwZnApOwotICAgIHVpbnQ4X3QgYnl0ZSA9IHBbMF07Ci0KLSAgICB1bm1hcF9kb21h aW5fcGFnZShwKTsKLQotICAgIHJldHVybiBieXRlOwotfQotCi1zdGF0aWMgaW5saW5lIGludCB0 bWVtX3BhZ2VfY21wKHN0cnVjdCBwYWdlX2luZm8gKnBmcDEsIHN0cnVjdCBwYWdlX2luZm8gKnBm cDIpCi17Ci0gICAgY29uc3QgdWludDY0X3QgKnAxID0gX19tYXBfZG9tYWluX3BhZ2UocGZwMSk7 Ci0gICAgY29uc3QgdWludDY0X3QgKnAyID0gX19tYXBfZG9tYWluX3BhZ2UocGZwMik7Ci0gICAg aW50IHJjID0gbWVtY21wKHAxLCBwMiwgUEFHRV9TSVpFKTsKLQotICAgIHVubWFwX2RvbWFpbl9w YWdlKHAyKTsKLSAgICB1bm1hcF9kb21haW5fcGFnZShwMSk7Ci0KLSAgICByZXR1cm4gcmM7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgaW50IHRtZW1fcGNkX2NtcCh2b2lkICp2YTEsIHBhZ2VzaXplX3Qg bGVuMSwgdm9pZCAqdmEyLCBwYWdlc2l6ZV90IGxlbjIpCi17Ci0gICAgY29uc3QgY2hhciAqcDEg PSAoY2hhciAqKXZhMTsKLSAgICBjb25zdCBjaGFyICpwMiA9IChjaGFyICopdmEyOwotICAgIHBh Z2VzaXplX3QgaTsKLQotICAgIEFTU0VSVChsZW4xIDw9IFBBR0VfU0laRSk7Ci0gICAgQVNTRVJU KGxlbjIgPD0gUEFHRV9TSVpFKTsKLSAgICBpZiAoIGxlbjEgPCBsZW4yICkKLSAgICAgICAgcmV0 dXJuIC0xOwotICAgIGlmICggbGVuMSA+IGxlbjIgKQotICAgICAgICByZXR1cm4gMTsKLSAgICBB U1NFUlQobGVuMSA9PSBsZW4yKTsKLSAgICBmb3IgKCBpID0gbGVuMjsgaSAmJiAqcDEgPT0gKnAy OyBpLS0sIHAxKyssIHAyKysgKTsKLSAgICBpZiAoICFpICkKLSAgICAgICAgcmV0dXJuIDA7Ci0g ICAgaWYgKCAqcDEgPCAqcDIgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIDE7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgaW50IHRtZW1fdHplX3BmcF9jbXAoc3RydWN0IHBhZ2VfaW5mbyAq cGZwMSwgcGFnZXNpemVfdCBwZnBfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICp0dmEsIGNvbnN0IHBhZ2VzaXplX3QgdHplX2xlbikKLXsKLSAgICBjb25zdCB1 aW50NjRfdCAqcDEgPSBfX21hcF9kb21haW5fcGFnZShwZnAxKTsKLSAgICBjb25zdCB1aW50NjRf dCAqcDIgPSB0emVfbGVuID09IFBBR0VfU0laRSA/Ci0gICAgICAgIF9fbWFwX2RvbWFpbl9wYWdl KChzdHJ1Y3QgcGFnZV9pbmZvICopdHZhKSA6IHR2YTsKLSAgICBpbnQgcmM7Ci0KLSAgICBBU1NF UlQocGZwX2xlbiA8PSBQQUdFX1NJWkUpOwotICAgIEFTU0VSVCghKHBmcF9sZW4gJiAoc2l6ZW9m KHVpbnQ2NF90KS0xKSkpOwotICAgIEFTU0VSVCh0emVfbGVuIDw9IFBBR0VfU0laRSk7Ci0gICAg QVNTRVJUKCEodHplX2xlbiAmIChzaXplb2YodWludDY0X3QpLTEpKSk7Ci0gICAgaWYgKCBwZnBf bGVuIDwgdHplX2xlbiApCi0gICAgICAgIHJjID0gLTE7Ci0gICAgZWxzZSBpZiAoIHBmcF9sZW4g PiB0emVfbGVuICkKLSAgICAgICAgcmMgPSAxOwotICAgIGVsc2UKLSAgICAgICAgcmMgPSBtZW1j bXAocDEsIHAyLCB0emVfbGVuKTsKLQotICAgIGlmICggdHplX2xlbiA9PSBQQUdFX1NJWkUgKQot ICAgICAgICB1bm1hcF9kb21haW5fcGFnZShwMik7Ci0gICAgdW5tYXBfZG9tYWluX3BhZ2UocDEp OwotCi0gICAgcmV0dXJuIHJjOwotfQotCi0vKiByZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRhdGEg aW4gdGhlIHBmcCwgaWdub3JpbmcgdHJhaWxpbmcgemVyb2VzIGFuZAotICogcm91bmRlZCB1cCB0 byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA4ICovCi1zdGF0aWMgaW5saW5lIHBhZ2VzaXplX3Qg dG1lbV90emVfcGZwX3NjYW4oc3RydWN0IHBhZ2VfaW5mbyAqcGZwKQotewotICAgIGNvbnN0IHVp bnQ2NF90ICpjb25zdCBwYWdlID0gX19tYXBfZG9tYWluX3BhZ2UocGZwKTsKLSAgICBjb25zdCB1 aW50NjRfdCAqcCA9IHBhZ2U7Ci0gICAgcGFnZXNpemVfdCBieXRlY291bnQgPSBQQUdFX1NJWkU7 Ci0gICAgcGFnZXNpemVfdCBsZW4gPSBQQUdFX1NJWkUvc2l6ZW9mKHVpbnQ2NF90KTsKLQotICAg IHAgKz0gbGVuOwotICAgIHdoaWxlICggbGVuLS0gJiYgISotLXAgKQotICAgICAgICBieXRlY291 bnQgLT0gc2l6ZW9mKHVpbnQ2NF90KTsKLQotICAgIHVubWFwX2RvbWFpbl9wYWdlKHBhZ2UpOwot Ci0gICAgcmV0dXJuIGJ5dGVjb3VudDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHRtZW1fdHpl X2NvcHlfZnJvbV9wZnAodm9pZCAqdHZhLCBzdHJ1Y3QgcGFnZV9pbmZvICpwZnAsIHBhZ2VzaXpl X3QgbGVuKQotewotICAgIGNvbnN0IHVpbnQ2NF90ICpwID0gX19tYXBfZG9tYWluX3BhZ2UocGZw KTsKLQotICAgIEFTU0VSVCghKGxlbiAmIChzaXplb2YodWludDY0X3QpLTEpKSk7Ci0gICAgbWVt Y3B5KHR2YSwgcCwgbGVuKTsKLQotICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOwotfQotI2VuZGlm Ci0KIC8qIHRoZXNlIHR5cGVkZWZzIGFyZSBpbiB0aGUgcHVibGljL3RtZW0uaCBpbnRlcmZhY2UK IHR5cGVkZWYgWEVOX0dVRVNUX0hBTkRMRSh2b2lkKSBjbGlfbWZuX3Q7CiB0eXBlZGVmIFhFTl9H VUVTVF9IQU5ETEUoY2hhcikgY2xpX3ZhX3Q7CkBAIC0zNDIsOSArMjIyLDYgQEAgaW50IHRtZW1f Y29tcHJlc3NfZnJvbV9jbGllbnQoeGVuX3Bmbl90LCB2b2lkICoqLCBzaXplX3QgKiwKIAogaW50 IHRtZW1fY29weV9mcm9tX2NsaWVudChzdHJ1Y3QgcGFnZV9pbmZvICosIHhlbl9wZm5fdCwgdG1l bV9jbGlfdmFfcGFyYW1fdCk7CiBpbnQgdG1lbV9jb3B5X3RvX2NsaWVudCh4ZW5fcGZuX3QsIHN0 cnVjdCBwYWdlX2luZm8gKiwgdG1lbV9jbGlfdmFfcGFyYW1fdCk7Ci0jaWZkZWYgQ09ORklHX1RN RU1fVFpFCi1leHRlcm4gaW50IHRtZW1fY29weV90emVfdG9fY2xpZW50KHhlbl9wZm5fdCBjbWZu LCB2b2lkICp0bWVtX3ZhLCBwYWdlc2l6ZV90IGxlbik7Ci0jZW5kaWYKIAogI2RlZmluZSB0bWVt X2NsaWVudF9lcnIoZm10LCBhcmdzLi4uKSAgcHJpbnRrKFhFTkxPR19HX0VSUiBmbXQsICMjYXJn cykKICNkZWZpbmUgdG1lbV9jbGllbnRfd2FybihmbXQsIGFyZ3MuLi4pIHByaW50ayhYRU5MT0df R19XQVJOSU5HIGZtdCwgIyNhcmdzKQotLSAKMi40LjExCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==