From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 067B7C54ED1 for ; Tue, 27 May 2025 19:37:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nUH/5Y/gSB4YPeE3Dt0/Zg4f5QrLswHGv5/snUY3pU4=; b=A6aq3ICk0jwKTDBjonXogoNmqD PPwlYNlrgoKG3Wm6+yCq0TfdHv3gLGifwGXlWBq5WU03vuLHeLEPyv/2jDxZV4KcO5E2FpvoYOAbo 7ftx3P3bEkoK4K3vMSiD8KBsW5AFahJJNeu/60fE+kqDobgXRq1IRFY7mhoPVrMlswk4bi8nddNMR vNH8tVYNwCfHxcTBAfnYguLMrztrzapsIwNCRGb/HnSOa0X2dHOlYl4VgCCPZlKjwJ/K9WGOVRhs3 d8Ydm++ZfXowsR/IltOy1RP+ToLkB+B0mwphXCo/pas1mcYfZBJeqmULNwGGR2ImhHxHP9FkCO+A3 P4tGVcLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uK07A-0000000BRtf-23WS; Tue, 27 May 2025 19:37:32 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uK049-0000000BRVt-17Ho for linux-riscv@lists.infradead.org; Tue, 27 May 2025 19:34:27 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-742c5eb7d1cso4098192b3a.3 for ; Tue, 27 May 2025 12:34:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1748374464; x=1748979264; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=1P8wviSIpWaow1NsRT/ogLPbbFdgZLYt3rtdLu9EAWE=; b=knK9gbtDOBqIoI2eAhHLwd3HTFYEYi3UbMHprhEUMImwbvYiDOU1om4tiyqZ3tHIwZ qkcytPzVimr/oxePTqMsXLSwVTLCG/dsjiy9XopZ+XJ/X2AwOOfhA+rNXek3dBf5OZNe yYS8J2ulj0Gl3uT6lAHAC6gqePO8M0fz+xs0VkrJZdZ8F8ll/g/r4Js7buK1Pb6i54Sd HKYfrwIs9zn4qpHnSgkTJwMqgmwARoV/Q7buVxiUB3+m1DIQMLEW87Rz1apWqce6t2yL 8w16pCYMgwMXOGTd5AIsh3+3vMRx29fwI+Z+Fn/HqivtlwWKO0fM4OaluvdgYjniiqUK mHoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748374464; x=1748979264; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1P8wviSIpWaow1NsRT/ogLPbbFdgZLYt3rtdLu9EAWE=; b=glH2A0tcn23Z9jZZmv3JFZL2aRQg7jNumjqR8kUudQZHvTFRfRNioomHQSUKiGS8vm p/w1OUg9jTwjOWyXXstqUvcY21jvE/FDIkf/KvfGuQ7BJ58jeKmB58Jq47opY1rP1olp fWhY3R+VwOEzyqajpUQXCCQttelQe2DOvdxJSdpoOXlv0jtdF+WEkwf0+789FXw9WP5n dtwISrrUolch5bXkWubFiDXJVl5LGnxxq0AYIgsiTnX156UYo3dyPFOzT8GXf66xDUVZ 17xhZ2jleeBN9UGhjNYKTj4SSRKLSzT6qTHhjPMQr9nY0zH2MjwSCQO5hzmqwQOrRA7o ncRQ== X-Forwarded-Encrypted: i=1; AJvYcCXsfI3fBk8OodsKjn3LAG20Wu1qtGY6PBDz+9d0s7g6JEE3D8hgVieT7BpwU0Tu+uNwZGeX9kvSxdGNdA==@lists.infradead.org X-Gm-Message-State: AOJu0Ywy/8aZdplGhZFyKDAm9QsDfU5gAkC130m9i+gZTSca7hwfkBy4 HnNQN+yP/YuPSFmp8v77Z+ssMTltsjZqiVjcQnWyN3m+Cje5A29aChdI1008Z9hkmic= X-Gm-Gg: ASbGncujAnaHpfdeKKtaw5nMWkllCDztm7t4j/X1JxSKb/HRfPxXjJamLV0kScExgZ7 +/ePU/sExKQmVZbW+6e/SS8GFBbNlRi2lFqPGfm/ZlRsGE6/OEPXKO/9pCKWrd7m3ucwTjyXsBO EMOpPhsyk64cCzLif2CdCsPOMAsDXTLpxLH5vTHLsJJoqy/cY11ht3QGDh9for+pYEWgmLiTSGR xk7eDD+ypFEvSA0VRfqGxbWG49fJ2FTsN+21wwLyufumWsVxG6SwUOeY1BidhH1LXxiZq416CnA oAPAtW1eAWU+wYkgy7QcPtc7LlMI+Ow1TOIrXZuBkvar/b1ddtgLdDr7/oYgqA== X-Google-Smtp-Source: AGHT+IGhiAc2S88LqU3AZTg06W4F3I4zbv9LpQL+vcsxFJ7RWKIdmAuTN4qnccomYwpiwslXi35tjA== X-Received: by 2002:a05:6a21:1084:b0:216:5f66:e309 with SMTP id adf61e73a8af0-2188c3b4932mr25186220637.41.1748374463700; Tue, 27 May 2025 12:34:23 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b2c3fbd6c0fsm2281075a12.52.2025.05.27.12.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 May 2025 12:34:23 -0700 (PDT) Date: Tue, 27 May 2025 12:34:20 -0700 From: Deepak Gupta To: Alexandre Ghiti Cc: Andy Chiu , Ben Dooks , Cyril Bur , palmer@dabbelt.com, aou@eecs.berkeley.edu, paul.walmsley@sifive.com, charlie@rivosinc.com, jrtc27@jrtc27.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, jszhang@kernel.org, syzbot+e74b94fe601ab9552d69@syzkaller.appspotmail.com Subject: Re: [PATCH v6 1/5] riscv: save the SR_SUM status over switches Message-ID: References: <20250410070526.3160847-2-cyrilbur@tenstorrent.com> <54d63ebf-b66f-41d4-85b1-ec0fa3401333@ghiti.fr> <1c49479f-d925-47b9-a373-6fd2ca90e68b@ghiti.fr> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1c49479f-d925-47b9-a373-6fd2ca90e68b@ghiti.fr> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250527_123425_593668_9D473073 X-CRM114-Status: GOOD ( 32.76 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBNYXkgMjMsIDIwMjUgYXQgMTA6MDA6MTFQTSArMDIwMCwgQWxleGFuZHJlIEdoaXRp IHdyb3RlOgo+Cj5PbiA1LzIzLzI1IDE5OjE0LCBEZWVwYWsgR3VwdGEgd3JvdGU6Cj4+T24gRnJp LCBNYXkgMjMsIDIwMjUgYXQgMDI6MjI6MjFQTSArMDIwMCwgQWxleGFuZHJlIEdoaXRpIHdyb3Rl Ogo+Pj5IaSBBbmR5LCBEZWVwYWssCj4+Pgo+Pj5PbiA1LzIzLzI1IDAwOjQzLCBEZWVwYWsgR3Vw dGEgd3JvdGU6Cj4+Pj5PbiBGcmksIE1heSAyMywgMjAyNSBhdCAwMTo0Mjo0OUFNICswODAwLCBB bmR5IENoaXUgd3JvdGU6Cj4+Pj4+T24gVGh1LCBNYXkgMjIsIDIwMjUgYXQgMTE6MDnigK9QTSBE ZWVwYWsgR3VwdGEgCj4+Pj4+PGRlYnVnQHJpdm9zaW5jLmNvbT4gd3JvdGU6Cj4+Pj4+Pgo+Pj4+ Pj5PbiBUaHUsIE1heSAyMiwgMjAyNSBhdCAwNzoyMzozMkFNICswMTAwLCBCZW4gRG9va3Mgd3Jv dGU6Cj4+Pj4+Pj5PbiAyMC8wNS8yMDI1IDE3OjQ5LCBEZWVwYWsgR3VwdGEgd3JvdGU6Cj4+Pj4+ Pj4+SSBkaWQgZ2l2ZSB0aGlzIHBhdGNoIG15IFJCIGFuZCBoYWQgcGxhbm5lZCB0byBjb21lIGJh Y2sgCj4+Pj4+Pj4+dG8gaXQgdG8gc2VlCj4+Pj4+Pj4+aWYgaXQgaW1wYWN0cyBjZmkgcmVsYXRl ZCBwYXRjaGVzLiBUaGFua3MgdG8gYWxleCBmb3IgCj4+Pj4+Pj4+YnJpbmlnbmcgdG8gbXkKPj4+ Pj4+Pj5hdHRlbnRpb24gYWdhaW4uIEFzIGl0IHN0YW5kcyB0b2RheSwgaXQgZG9lc24ndCBpbXBh Y3QgY2ZpIHJlbGF0ZWQKPj4+Pj4+Pj5jaGFuZ2VzIGJ1dCBJJ3ZlIHNvbWUgY29uY2VybnMuCj4+ Pj4+Pj4+Cj4+Pj4+Pj4+T3ZlcmFsbCBJIGRvIGFncmVlIHdlIHNob3VsZCByZWR1Y2UgbnVtYmVy IG9mIFNTVEFUVVMgYWNjZXNzZXMuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Q291cGxlIG9mIHF1ZXN0aW9u cyBvbiBpbnRyb2R1Y2luZyBuZXcgYHNzdGF0dXNgIGZpZWxkIChpbmxpbmUpCj4+Pj4+Pj4+Cj4+ Pj4+Pj4+T24gVHVlLCBBcHIgMjIsIDIwMjUgYXQgMDQ6MDE6MzVQTSAtMDcwMCwgRGVlcGFrIEd1 cHRhIHdyb3RlOgo+Pj4+Pj4+Pj5PbiBUaHUsIEFwciAxMCwgMjAyNSBhdCAwNzowNToyMkFNICsw MDAwLCBDeXJpbCBCdXIgd3JvdGU6Cj4+Pj4+Pj4+Pj5Gcm9tOiBCZW4gRG9va3MgPGJlbi5kb29r c0Bjb2RldGhpbmsuY28udWs+Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PldoZW4gdGhyZWFkcy90YXNr cyBhcmUgc3dpdGNoZWQgd2UgbmVlZCB0byBlbnN1cmUgCj4+Pj4+Pj4+Pj50aGUgb2xkCj4+Pj4+ PmV4ZWN1dGlvbidzCj4+Pj4+Pj4+Pj5TUl9TVU0gc3RhdGUgaXMgc2F2ZWQgYW5kIHRoZSBuZXcg dGhyZWFkIGhhcyB0aGUgb2xkIFNSX1NVTSBzdGF0ZQo+Pj4+Pj4+Pj4+cmVzdG9yZWQuCj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+PlRoZSBpc3N1ZSB3YXMgc2VlbiB1bmRlciBoZWF2eSBsb2FkIGVzcGVj aWFsbHkgd2l0aCAKPj4+Pj4+Pj4+PnRoZQo+Pj4+Pj5zeXotc3RyZXNzIHRvb2wKPj4+Pj4+Pj4+ PnJ1bm5pbmcsIHdpdGggY3Jhc2hlcyBhcyBmb2xsb3dzIGluIHNjaGVkdWxlX3RhaWw6Cj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+PlVuYWJsZSB0byBoYW5kbGUga2VybmVsIGFjY2VzcyB0byB1c2VyIG1l bW9yeSAKPj4+Pj4+Pj4+PndpdGhvdXQKPj4+Pj4+dWFjY2VzcyByb3V0aW5lcwo+Pj4+Pj4+Pj4+ YXQgdmlydHVhbCBhZGRyZXNzIDAwMDAwMDAwMjc0OWYwZDAKPj4+Pj4+Pj4+Pk9vcHMgWyMxXQo+ Pj4+Pj4+Pj4+TW9kdWxlcyBsaW5rZWQgaW46Cj4+Pj4+Pj4+Pj5DUFU6IDEgUElEOiA0ODc1IENv bW06IHN5ei1leGVjdXRvci4wIE5vdCB0YWludGVkCj4+Pj4+Pj4+Pj41LjEyLjAtcmMyLXN5emth bGxlci0wMDQ2Ny1nMGQ3NTg4YWI5ZWY5ICMwCj4+Pj4+Pj4+Pj5IYXJkd2FyZSBuYW1lOiByaXNj di12aXJ0aW8scWVtdSAoRFQpCj4+Pj4+Pj4+Pj5lcGMgOiBzY2hlZHVsZV90YWlsKzB4NzIvMHhi MiBrZXJuZWwvc2NoZWQvY29yZS5jOjQyNjQKPj4+Pj4+Pj4+PnJhIDogdGFza19waWRfdm5yIGlu Y2x1ZGUvbGludXgvc2NoZWQuaDoxNDIxIFtpbmxpbmVdCj4+Pj4+Pj4+Pj5yYSA6IHNjaGVkdWxl X3RhaWwrMHg3MC8weGIyIGtlcm5lbC9zY2hlZC9jb3JlLmM6NDI2NAo+Pj4+Pj4+Pj4+ZXBjIDog ZmZmZmZmZTAwMDA4YzhiMCByYSA6IGZmZmZmZmUwMDAwOGM4YWUgc3AgOiAKPj4+Pj4+Pj4+PmZm ZmZmZmUwMjVkMTdlYzAKPj4+Pj4+Pj4+PmdwIDogZmZmZmZmZTAwNWQyNTM3OCB0cCA6IGZmZmZm ZmUwMGYwZDAwMDAgdDAgOiAwMDAwMDAwMDAwMDAwMDAwCj4+Pj4+Pj4+Pj50MSA6IDAwMDAwMDAw MDAwMDAwMDEgdDIgOiAwMDAwMDAwMDAwMGY0MjQwIHMwIDogZmZmZmZmZTAyNWQxN2VlMAo+Pj4+ Pj4+Pj4+czEgOiAwMDAwMDAwMDI3NDlmMGQwIGEwIDogMDAwMDAwMDAwMDAwMDAyYSBhMSA6IDAw MDAwMDAwMDAwMDAwMDMKPj4+Pj4+Pj4+PmEyIDogMWZmZmZmZmMwY2ZhYzUwMCBhMyA6IGZmZmZm ZmUwMDAwYzgwY2MgYTQgOiA1YWU5ZGI5MWMxOWJiZTAwCj4+Pj4+Pj4+Pj5hNSA6IDAwMDAwMDAw MDAwMDAwMDAgYTYgOiAwMDAwMDAwMDAwZjAwMDAwIGE3IDogZmZmZmZmZTAwMDA4MmViYQo+Pj4+ Pj4+Pj4+czIgOiAwMDAwMDAwMDAwMDQwMDAwIHMzIDogZmZmZmZmZTAwZWVmOTZjMCBzNCA6IGZm ZmZmZmUwMjJjNzdmZTAKPj4+Pj4+Pj4+PnM1IDogMDAwMDAwMDAwMDAwNDAwMCBzNiA6IGZmZmZm ZmUwNjdkNzRlMDAgczcgOiBmZmZmZmZlMDY3ZDc0ODUwCj4+Pj4+Pj4+Pj5zOCA6IGZmZmZmZmUw NjdkNzNlMTggczkgOiBmZmZmZmZlMDY3ZDc0ZTAwIHMxMDogZmZmZmZmZTAwZWVmOTZlOAo+Pj4+ Pj4+Pj4+czExOiAwMDAwMDBhZTZjZGY4MzY4IHQzIDogNWFlOWRiOTFjMTliYmUwMCB0NCA6IGZm ZmZmZmM0MDQzY2FmYjIKPj4+Pj4+Pj4+PnQ1IDogZmZmZmZmYzQwNDNjYWZiYSB0NiA6IDAwMDAw MDAwMDAwNDAwMDAKPj4+Pj4+Pj4+PnN0YXR1czogMDAwMDAwMDAwMDAwMDEyMCBiYWRhZGRyOiAw MDAwMDAwMDI3NDlmMGQwIGNhdXNlOgo+Pj4+Pj4+Pj4+MDAwMDAwMDAwMDAwMDAwZgo+Pj4+Pj4+ Pj4+Q2FsbCBUcmFjZToKPj4+Pj4+Pj4+Pls8ZmZmZmZmZTAwMDA4YzhiMD5dIHNjaGVkdWxlX3Rh aWwrMHg3Mi8weGIyCj4+Pj4+Pmtlcm5lbC9zY2hlZC9jb3JlLmM6NDI2NAo+Pj4+Pj4+Pj4+Wzxm ZmZmZmZlMDAwMDA1NTcwPl0gcmV0X2Zyb21fZXhjZXB0aW9uKzB4MC8weDE0Cj4+Pj4+Pj4+Pj5E dW1waW5nIGZ0cmFjZSBidWZmZXI6Cj4+Pj4+Pj4+Pj4oZnRyYWNlIGJ1ZmZlciBlbXB0eSkKPj4+ Pj4+Pj4+Pi0tLVsgZW5kIHRyYWNlIGI1ZjhmOTIzMWRjODdkZGEgXS0tLQo+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj5UaGUgaXNzdWUgY29tZXMgZnJvbSB0aGUgcHV0X3VzZXIoKSBpbiBzY2hlZHVsZV90 YWlsCj4+Pj4+Pj4+Pj4oa2VybmVsL3NjaGVkL2NvcmUuYykgZG9pbmcgdGhlIGZvbGxvd2luZzoK Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+YXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCBzY2hlZHVsZV90 YWlsKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldikKPj4+Pj4+Pj4+PnsKPj4+Pj4+Pj4+Pi4uLgo+ Pj4+Pj4+Pj4+wqDCoMKgwqDCoCBpZiAoY3VycmVudC0+c2V0X2NoaWxkX3RpZCkKPj4+Pj4+Pj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB1dF91c2VyKHRhc2tfcGlkX3ZucihjdXJyZW50 KSwKPj4+Pj4+Y3VycmVudC0+c2V0X2NoaWxkX3RpZCk7Cj4+Pj4+Pj4+Pj4uLi4KPj4+Pj4+Pj4+ Pn0KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+dGhlIHB1dF91c2VyKCkgbWFjcm8gY2F1c2VzIHRoZSBj b2RlIHNlcXVlbmNlIHRvIAo+Pj4+Pj4+Pj4+Y29tZSBvdXQgYXMKPj4+Pj4+Zm9sbG93czoKPj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+MTrCoMKgwqAgX19lbmFibGVfdXNlcl9hY2Nlc3MoKQo+Pj4+Pj4+ Pj4+MjrCoMKgwqAgcmVnID0gdGFza19waWRfdm5yKGN1cnJlbnQpOwo+Pj4+Pj4+Pj4+MzrCoMKg wqAgKmN1cnJlbnQtPnNldF9jaGlsZF90aWQgPSByZWc7Cj4+Pj4+Pj4+Pj40OsKgwqDCoCBfX2Rp c2FibGVfdXNlcl9hY2Nlc3MoKQo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj5UaGUgcHJvYmxlbSBpcyB0 aGF0IHdlIG1heSBoYXZlIGEgc2xlZXBpbmcgZnVuY3Rpb24gCj4+Pj4+Pj4+Pj5hcwo+Pj4+Pj5h cmd1bWVudCB3aGljaAo+Pj4+Pj4+Pj4+Y291bGQgY2xlYXIgU1JfU1VNIGNhdXNpbmcgdGhlIHBh bmljIGFib3ZlLiBUaGlzIHdhcyBmaXhlZCBieQo+Pj4+Pj4+Pj4+ZXZhbHVhdGluZyB0aGUgYXJn dW1lbnQgb2YgdGhlIHB1dF91c2VyKCkgbWFjcm8gCj4+Pj4+Pj4+Pj5vdXRzaWRlIHRoZQo+Pj4+ Pj51c2VyLWVuYWJsZWQKPj4+Pj4+Pj4+PnNlY3Rpb24gaW4gY29tbWl0IDI4NWE3NmJiMmNmNSAo InJpc2N2OiBldmFsdWF0ZSAKPj4+Pj4+Pj4+PnB1dF91c2VyKCkKPj4+Pj4+YXJnIGJlZm9yZQo+ Pj4+Pj4+Pj4+ZW5hYmxpbmcgdXNlciBhY2Nlc3MiKSIKPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+SW4g b3JkZXIgZm9yIHJpc2N2IHRvIHRha2UgYWR2YW50YWdlIG9mIAo+Pj4+Pj4+Pj4+dW5zYWZlX2dl dC9wdXRfWFhYKCkKPj4+Pj4+bWFjcm9zIGFuZAo+Pj4+Pj4+Pj4+dG8gYXZvaWQgdGhlIHNhbWUg aXNzdWUgd2UgaGFkIHdpdGggcHV0X3VzZXIoKSBhbmQgCj4+Pj4+Pj4+Pj5zbGVlcGluZwo+Pj4+ Pj5mdW5jdGlvbnMgd2UKPj4+Pj4+Pj4+Pm11c3QgZW5zdXJlIGNvZGUgZmxvdyBjYW4gZ28gdGhy b3VnaCBzd2l0Y2hfdG8oKSAKPj4+Pj4+Pj4+PmZyb20gd2l0aGluCj4+Pj4+PmEgcmVnaW9uIG9m Cj4+Pj4+Pj4+Pj5jb2RlIHdpdGggU1JfU1VNIGVuYWJsZWQgYW5kIGNvbWUgYmFjayB3aXRoIFNS X1NVTSAKPj4+Pj4+Pj4+PnN0aWxsCj4+Pj4+PmVuYWJsZWQuIFRoaXMKPj4+Pj4+Pj4+PnBhdGNo IGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBhbGxvd2luZyBmdXR1cmUgd29yayB0byAKPj4+Pj4+Pj4+ PmVuYWJsZQo+Pj4+Pj5mdWxsIHVzZSBvZgo+Pj4+Pj4+Pj4+dW5zYWZlX2dldC9wdXRfWFhYKCkg bWFjcm9zIHdpdGhvdXQgbmVlZGluZyB0byB0YWtlIAo+Pj4+Pj4+Pj4+YSBDU1IKPj4+Pj4+Yml0 IGZsaXAgY29zdAo+Pj4+Pj4+Pj4+b24gZXZlcnkgYWNjZXNzLiBNYWtlIHN3aXRjaF90bygpIHNh dmUgYW5kIHJlc3RvcmUgU1JfU1VNLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj5SZXBvcnRlZC1ieTog Cj4+Pj4+Pj4+Pj5zeXpib3QrZTc0Yjk0ZmU2MDFhYjk1NTJkNjlAc3l6a2FsbGVyLmFwcHNwb3Rt YWlsLmNvbQo+Pj4+Pj4+Pj4+U2lnbmVkLW9mZi1ieTogQmVuIERvb2tzIDxiZW4uZG9va3NAY29k ZXRoaW5rLmNvLnVrPgo+Pj4+Pj4+Pj4+U2lnbmVkLW9mZi1ieTogQ3lyaWwgQnVyIDxjeXJpbGJ1 ckB0ZW5zdG9ycmVudC5jb20+Cj4+Pj4+Pj4+Pj4tLS0KPj4+Pj4+Pj4+PmFyY2gvcmlzY3YvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmggfCAxICsKPj4+Pj4+Pj4+PmFyY2gvcmlzY3Yva2VybmVsL2Fz bS1vZmZzZXRzLmPCoMKgwqAgfCA1ICsrKysrCj4+Pj4+Pj4+Pj5hcmNoL3Jpc2N2L2tlcm5lbC9l bnRyeS5TwqDCoMKgwqDCoMKgwqDCoMKgIHwgOCArKysrKysrKwo+Pj4+Pj4+Pj4+MyBmaWxlcyBj aGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PmRpZmYgLS1naXQg YS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCj4+Pj4+Pj4+Pj5iL2FyY2gvcmlz Y3YvaW5jbHVkZS8gYXNtL3Byb2Nlc3Nvci5oCj4+Pj4+Pj4+Pj5pbmRleCA1ZjU2ZWI5ZDExNGEu LjU4ZmQxMWM4OWZlOSAxMDA2NDQKPj4+Pj4+Pj4+Pi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgKPj4+Pj4+Pj4+PisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJv Y2Vzc29yLmgKPj4+Pj4+Pj4+PkBAIC0xMDMsNiArMTAzLDcgQEAgc3RydWN0IHRocmVhZF9zdHJ1 Y3Qgewo+Pj4+Pj4+Pj4+wqDCoMKgIHN0cnVjdCBfX3Jpc2N2X2RfZXh0X3N0YXRlIGZzdGF0ZTsK Pj4+Pj4+Pj4+PsKgwqDCoCB1bnNpZ25lZCBsb25nIGJhZF9jYXVzZTsKPj4+Pj4+Pj4+PsKgwqDC oCB1bnNpZ25lZCBsb25nIGVudmNmZzsKPj4+Pj4+Pj4+PivCoMKgwqAgdW5zaWduZWQgbG9uZyBz dGF0dXM7Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+RG8gd2UgcmVhbGx5IG5lZWQgYSBuZXcgbWVtYmVyIGZp ZWxkIGluIGB0aHJlYWRfc3RydWN0YC4gCj4+Pj4+Pj4+V2UKPj4+Pj4+YWxyZWFkeSBoYXZlCj4+ Pj4+Pj4+YHNzdGF0dXNgIGluIGBwdF9yZWdzYCB3aGljaCByZWZsZWN0cyBvdmVyYWxsIGV4ZWN1 dGlvbiBlbnZpcm9ubWVudAo+Pj4+Pj4+PnNpdHVhdGlvbgo+Pj4+Pj4+PmZvciBjdXJyZW50IHRo cmVhZC4gVGhpcyBnZXRzIHNhdmVkIGFuZCByZXN0b3JlZCBvbiB0cmFwIAo+Pj4+Pj4+PmVudHJ5 Cj4+Pj4+PmFuZCBleGl0Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PklmIHdlIHB1dCBgc3RhdHVzYCBpbiBg dGhyZWFkX3N0cnVjdGAgaXQgY3JlYXRlcyBhbWJpZ3VpdHkgaW4gdGVybXMKPj4+Pj4+Pj5vZiB3 aGljaAo+Pj4+Pj4+PmBzdGF0dXNgIHRvIHNhdmUgdG8gYW5kIHBpY2sgZnJvbSBmcm9tIGZ1dHVy ZSBtYWludGFpbmliaWxpdHkKPj4+Pj4+Pj5wdXJwb3NlcyBhcyB0aGUKPj4+Pj4+Pj5maWVsZHMg Z2V0IGludHJvZHVjZWQgdG8gdGhpcyBDU1IuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+V2h5IGNhbid0IHdl IGFjY2VzcyBjdXJyZW50IHRyYXAgZnJhbWUncyBgc3N0YXR1c2AgaW1hZ2UgaW4KPj4+Pj4+Pj5g X19zd2l0Y2hfdG9gIHRvCj4+Pj4+Pj4+c2F2ZSBhbmQgcmVzdG9yZT8KPj4+Pj4+Pj4KPj4+Pj4+ Pj5MZXQgbWUga25vdyBpZiBJIGFtIG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMgaGVyZS4gSWYg dGhlcmUgaXMgYQo+Pj4+Pj4+PmNvbXBsaWNhdGlvbiwKPj4+Pj4+Pj5JIGFtIG1pc3NpbmcgaGVy ZSBhbmQgd2UgZG8gZW5kIHVwIHVzaW5nIHRoaXMgbWVtYmVyIGZpZWxkLCBJIHdvdWxkCj4+Pj4+ Pj4+cmVuYW1lIGl0Cj4+Pj4+Pj4+dG8gc29tZXRoaW5nIGxpa2UgYHN0YXR1c19rZXJuZWxgIHRv IHJlZmxlY3QgdGhhdC4gU28gdGhhdCBmdXR1cmUKPj4+Pj4+Pj5jaGFuZ2VzIGFyZQo+Pj4+Pj4+ PmNvZ25pemFudCBvZiB0aGUgZmFjdCB0aGF0IHdlIGhhdmUgc3BsaXQgYHN0YXR1c2AuIE9uZSBm b3Iga2VybmVsCj4+Pj4+Pj4+ZXhlY3V0aW9uIGVudgo+Pj4+Pj4+PnBlciB0aHJlYWQgYW5kIG9u ZSBmb3IgY29udHJvbGxpbmcgdXNlciBleGVjdXRpb24gZW52IHBlciB0aHJlYWQuCj4+Pj4+Pj4K Pj4+Pj4+PlRoaXMgaXMgc28gbG9uZyBhZ28gbm93IEkgY2Fubm90IHJlbWVtYmVyIGlmIHRoZXJl IHdhcyBhbnkgCj4+Pj4+Pj5zc3RhdHVzIGluCj4+Pj4+Pj50aGUgcHRfcmVncyBmaWVsZCwKPj4+ Pj4+Cj4+Pj4+PkZTL1ZTIGJpdHMgZW5jb2RlIHN0YXR1cyBvZiBmbG9hdGluZyBwb2ludCBhbmQg dmVjdG9yIG9uIAo+Pj4+Pj5wZXItdGhyZWFkIGJhc2lzLgo+Pj4+Pj5TbyBgc3RhdHVzYCBoYXMg YmVlbiBwYXJ0IG9mIGBwdF9yZWdzYCBmb3IgcXVpdGUgYSB3aGlsZS4KPj4+Pj4+Cj4+Pj4+Pj5h bmQgaWYga2VybmVsIHRocmVhZHMgaGF2ZSB0aGUgc2FtZSBjb250ZXh0IGFzIHRoZWlyCj4+Pj4+ Pj51c2VybGFuZCBwYXJ0cy4KPj4+Pj4+Cj4+Pj4+PkkgZGlkbid0IG1lYW4ga2VybmVsIHRocmVh ZC4gV2hhdCBJIG1lYW50IHdhcyBrZXJuZWwgCj4+Pj4+PmV4ZWN1dGlvbiBlbnZpcm9ubWVudAo+ Pj4+Pj5wZXItdGhyZWFkLiBBIHVzZXJsYW5kIHRocmVhZCBkb2VzIHNwZW5kIHNvbWV0aW1lIGlu IGtlcm5lbCAKPj4+Pj4+YW5kIGtlcm5lbCBkb2VzCj4+Pj4+PnRoaW5ncyBvbiBpdHMgYmVoYWxm LiBPbmUgb2YgdGhvc2UgdGhpbmcgaXMgdG91Y2hpbmcgdXNlciAKPj4+Pj4+bWVtb3J5IGFuZCB0 aGF0Cj4+Pj4+PnJlcXVpcmVzIG11Y2tpbmcgd2l0aCB0aGlzIENTUi4gU28gd2hhdCBJIG1lYW50 IHdhcyBhcmUgd2UgCj4+Pj4+PnNwbGl0dGluZyBgc3RhdHVzYAo+Pj4+Pj5vbiBwZXItdGhyZWFk IGJhc2lzIGZvciB0aGVpciB0aW1lIHNwZW50IGluIHVzZXIgYW5kIGtlcm5lbC4KPj4+Pj4+Cj4+ Pj4+PkdldHRpbmcgYmFjayB0byBvcmlnaW5hbCBxdWVzdGlvbi0tCj4+Pj4+PkFzIEkgc2FpZCwg ZWFjaCB0aHJlYWQgc3BlbmRzIHNvbWV0aW1lIGluIHVzZXIgb3IgaW4ga2VybmVsLiAKPj4+Pj4+ YHN0YXR1c2AgaW4KPj4+Pj4+YHB0X3JlZ3NgIGlzIHNhdmVkIG9uIHRyYXAgZW50cnkgYW5kIHJl c3RvcmVkIG9uIHRyYXAgZXhpdC4gCj4+Pj4+PkluIGEgc2Vuc2UsCj4+Pj4+PmBzdGF0dXNgIGZp ZWxkIGluIGBwdF9yZWdzYCBpcyByZWZsZWN0aW5nIGV4ZWN1dGlvbiBzdGF0dXMgCj4+Pj4+Pm9m IHRoZSB0aHJlYWQgb24gcGVyCj4+Pj4+PnRyYXAgYmFzaXMuIEludHJvZHVjaW5nIGBzdGF0dXNg IGluIGB0aHJlYWRfc3RydWN0YCBjcmVhdGVzIAo+Pj4+Pj5hIGNvbmZ1c2lvbiAoaWYgbm90Cj4+ Pj4+PmZvciB0b2RheSwgY2VydGFpbmx5IGZvciBmdXR1cmUpIG9mIHdoaWNoIGBzdGF0dXNgIHRv IHBpY2sgCj4+Pj4+PmZyb20gd2hlbiB3ZSBhcmUKPj4+Pj4+ZG9pbmcgc2F2ZS9yZXN0b3JlLgo+ Pj4+Pgo+Pj4+PkkgYWdyZWUgdGhhdCBpdCdzIGEgY29uZnVzaW9uLiBzc3RhdHVzIGlzIGFscmVh ZHkgc2F2ZWQgb24gcHRfcmVncyBvbgo+Pj4+PnRyYXAgZW50cmllcy9yZXR1cm4sIGFkZGluZyBh bm90aGVyIGVudHJ5IGFkZHMgY29kZSBjb21wbGV4aXR5IGFuZAo+Pj4+Pm1ha2VzIGRhdGEgaW5j b25zaXN0ZW50LiBCdXQsIHBlcmhhcHMgd2UnZCBldmVudHVhbGx5IG5lZWQgc29tZXRoaW5nCj4+ Pj4+bGlrZSB0aGlzIChJIHdpbGwgZXhwbGFpbiB3aHkpLiBTdGlsbCwgdGhlcmUgbWlnaHQgYmUg YSBiZXR0ZXIKPj4+Pj5hcHByb2FjaC4KPj4+Pj4KPj4+Pj5ZZXMsIHdlIGNhbiBhbHdheXMgcmVm bGVjdCBwdF9yZWdzIGZvciBzc3RhdHVzLiBXZSBhbGwga25vdyB0aGF0Cj4+Pj4+cHRfcmVncyBy ZWZsZWN0cyBzc3RhdHVzIGF0IHRyYXAgZW50cnksIGFuZCB0aGUgcHRfcmVncyBhdCBzY2hlZHVs ZXIKPj4+Pj5wb2ludCByZWZlcnMgdG8gInVzZXIncyIgcHRfcmVncyB3aGVuZXZlciBpdCBmaXJz dCBlbnRlcnMgCj4+Pj4+a2VybmVsIG1vZGUuIEhlcmUKPj4+Pj5hcmUgcmVhc29ucyB3aHkgU1Jf U1VNIGhlcmUgbWF5IG9yIG1heSBub3QgYmUgcHJvcGVybHkgdHJhY2tlZC4gRmlyc3QsCj4+Pj4+ aWYgdGhpcyBpcyBhIHRyYXAgaW50cm9kdWNlZCBjb250ZXh0IHN3aXRjaCAoc3VjaCBhcyBpbnRl cnJ1cHRpbmcgaW4gYQo+Pj4+PnByZWVtcHRpYmxlIGNvbnRleHQgYWZ0ZXIgd2UgbWFudWFsbHkg ZW5hYmxlIHVzZXIgYWNjZXNzIGluIHB1dF91c2VyKSwKPj4+Pj50aGVuIFNSX1NVTSBpcyBzYXZl ZCBzb21ld2hlcmUgaW4gdGhlIGtlcm5lbCBzdGFjaywgYW5kIGlzIG5vdAo+Pj4+PnJlZmVyZW5j ZS1hYmxlIHdpdGggdGFza19wdF9yZWcgZHVyaW5nIGNvbnRleHQgc3dpdGNoLiBCdXQgd2UgYXJl IHNhZmUKPj4+Pj5iZWNhdXNlIHRoZSB0cmFwIGV4aXQgYXNtIHdvdWxkIGhlbHAgdXMgcmVzdG9y ZSB0aGUgY29ycmVjdCBTUl9TVU0KPj4+Pj5iYWNrLiBIb3dldmVyLCBpZiB0aGlzIGlzIGEgc2Vs Zi1pbml0aWF0aW5nIGNvbnRleHQgc3dpdGNoIChjYWxsaW5nCj4+Pj4+aW50byBzY2hlZHVsZSgp KSwgdGhlbiBTUl9TVU0gaXMgbm90IHNhdmVkIGFueXdoZXJlLCBhbmQgcG9zc2libHkKPj4+Pj5j YXVzaW5nIHRoaXMgZXJyb3IuCj4+Pj4+Cj4+Pj4+UHJlZW1wdGlibGUgVmVjdG9yIGluIHRoZSBr ZXJuZWwgbW9kZSBhbHNvIGhhZCB0aGlzIHByb2JsZW0gd2hlcmUgYQo+Pj4+PnNlbGYtaW5pdGlh dGluZyBjb250ZXh0IHN3aXRjaCBsb3NlcyB0aGUgdHJhY2sgb2Ygc3N0YXR1cy52cy4gVGhlIHdh eQo+Pj4+PkkgbWFuYWdlZCBpdCBpcyB0byB0cmFjayB0aGUgVlMgYml0IGF0IGNvbnRleHQgc3dp dGNoIHRpbWUuIEhvd2V2ZXIsCj4+Pj4+dGhpcyBidWcgc2hvd3MgdGhhdCBwZW9wbGUgYXJlIHJl cGVhdGVkbHkgZmFjaW5nIHRoZSBwcm9ibGVtLCBhbmQKPj4+Pj5tYXliZSBpdCBzdWdnZXN0cyB0 aGF0IHdlJ2QgbmVlZCBhIGJldHRlciB3YXkgb2YgbWFuYWdpbmcgc3N0YXR1cwo+Pj4+PmFjcm9z cyBjb250ZXh0IHN3aXRjaGVzLiBHaXZlbiB0aGUgY29tcGxleCBuYXR1cmUgb2YgdGhpcyByZWdp c3RlciwKPj4+Pj53aGljaCBhbHNvIHRvdWNoZXMgdGhlIGludGVycnVwdCBlbmFibGUgc3RhdHVz LCBJIGRvbid0IHRoaW5rIG5haXZlbHkKPj4+Pj5zYXZpbmcvcmVzdG9yaW5nIHRoZSBlbnRpcmUg cmVnaXN0ZXIgaXMgdGhlIHdheSB0byBnby4gTWF5YmUgdGhlCj4+Pj4+dmFyaWFibGUgZGVzZXJ2 ZXMgYSBtb3JlIHNwZWNpZmljIG5hbWluZyBhbmQgZG9jdW1lbnRhdGlvbi4gQW5kIGlmCj4+Pj4+ d2UnZCBuZWVkIGEgY2VudHJhbGl6ZWQgcGxhY2UgZm9yIG1hbmFnaW5nIHRoZXNlIHN0YXR1c2Vz LCB0aGVuIGl0Cj4+Pj4+YWxzbyBoYXMgdG8gdGFrZSBjYXJlIG9mIHNzdGF0dXMuVlMuCj4+Pgo+ Pj4KPj4+QW5keSwgdGhhbmtzIGZvciB0aGUgcHJlY2lzZSBleHBsYW5hdGlvbiBvZiB0aGUgcHJv YmxlbSA6KQo+Pj4KPj4+U28gaXQgdG9vayBtZSBzb21lIHRpbWUgYnV0IGhlcmUgYXJlIG15IHRo b3VnaHRzIG9uIHRoaXMuIFdlIAo+Pj5zaG91bGQgdHJlYXQgcHRfcmVncyBhbmQgdGhyZWFkX3N0 cnVjdCBkaWZmZXJlbnRseSBhcyB0aGV5IGRvIG5vdCAKPj4+cmVwcmVzZW50IHRoZSBzYW1lIHRo aW5nOgo+Pj4tIHB0X3JlZ3MgcmVwcmVzZW50cyB0aGUgY29udGV4dCBvZiBhIHRocmVhZCB3aGVu IGl0IHRha2VzIGEgdHJhcAo+Pj4tIHRocmVhZF9zdHJ1Y3QgcmVwcmVzZW50cyBhICJrZXJuZWwt aW5kdWNlZCIgKG9yIGEgImluLWtlcm5lbCIpIAo+Pj5jb250ZXh0IG5vdCBjYXVzZWQgYnkgdHJh cHMKPj4KPj5FeGFjdGx5IHRoZXkgcmVwcmVzZW50IGRpZmZlcmVudCBjb250ZXh0IG9mIGV4ZWN1 dGlvbi4gVHJhcCByZXByZXNlbnRzIGEKPj5ub24tbGluZWFyIGNvbnRyb2wgZmxvdyBjaGFuZ2Ug YW5kIHRodXMgYSBmcmVzaCBzdGFydCBvZiBleGVjdXRpb24gCj4+Y29udHJvbAo+PmZsb3cgaW50 byBrZXJuZWwgd2hpbGUgYGtlcm5lbC1pbmR1Y2VkYCBvbmUncyBhcmUgYWdhaW4gbm9uLWxpbmVh ciBidXQKPj5mdWxseSBhIGtlcm5lbC9zb2Z0d2FyZSBjb25zdHJ1Y3QuCj4+Cj4+QSBmcmVzaCB0 cmFwcGVkIGV4ZWN1dGlvbiBjb250ZXh0IHNob3VsZG4ndCBoYXZlIFNVTSBzZXQgd2hpY2ggaXMg Cj4+aG93IGl0IGlzCj4+Y3VycmVudGx5IGluIGtlcm5lbC4gVGhpcyBiaXQgZ2V0cyBjbGVhcmVk IGluIHRyYXAgZW50cnkgYW5kIAo+PmBzc3RhdHVzYCBnZXRzCj4+c2F2ZWQgaW4gYHB0X3JlZ3Ng IChpbmNsdWRpbmcgU1JfSUUpIHNvIHRoYXQgaXQgY291bGQgYmUgcmVzdG9yZWQgCj4+d2hlbmV2 ZXIKPj5gc3JldGAgaGFwcGVucy4KPj4KPj5UaGUgcHJvYmxlbSB3ZSdhcmUgc2VlaW5nIGhlcmUg aXMgdHdvIGZvbGQtLQo+Pgo+PjEpIFdlIGRvbid0IHdhbnQgdG8gc2V0IGFuZCBjbGVhciB3aGVu IHdlIGFyZSBhY2Nlc3NpbmcgYXJyYXkvc3RyaW5nIAo+PmZvciBlYWNoCj4+wqDCoCB3b3JkLiBU aGlzIGlzIHNvZnR3YXJlIHByb2JsZW0gYW5kIHRoaXMgZW50aXJlIHNlcmllcyBpcyAKPj5hZGRy ZXNzaW5nIGl0Lgo+Pgo+PjIpIFRvIGF2b2lkIGZpcnN0IHByb2JsZW0gd2UgYXJlIG9wdGltaXpp bmcgdGhlIGFjY2VzcyB0byBDU1IgYnkgCj4+c2V0dGluZyBpdAo+PsKgwqAgb25jZSBhbmQgY2xl YXJpbmcgaXQgb25jZS4gQnV0IG5vdyB3ZSBkb24ndCB3YW50IHRvIGxvb3NlIHRoaXMgCj4+Yml0 IGlmIHRoZXJlCj4+wqDCoCB3ZXJlOgo+Pgo+PsKgwqDCoMKgYSkgdHJhcCBpbiBiZXR3ZWVuIMKg wqDCoMKgwqDCoMKgIGIpIGtlcm5lbCBpbmR1Y2VkIHNjaGVkdWxlIG91dAo+PsKgwqDCoMKgwqDC oMKgIGMpIGEpIGZvbGxvd2VkIGJ5IGIpCj4+wqDCoMKgwqDCoMKgwqAgZCkgYSkgZm9sbG93ZWQg YnkgYW5vdGhlciBhKQo+PsKgwqDCoMKgwqDCoMKgIGUpIG5lc3RlZCB0cmFwcwo+Pgo+PklmIGEp IG9jY3Vycywgd2UgYXJlIGRlZmluaXRsZXkgbG9vc2luZyB0aGUgYml0IGFzIHBlciBjdXJyZW50 IGNvZGUuCj4KPgo+SWYgYSB0cmFwIG9jY3VycyB3aGlsZSB0aGUgU1VNIGJpdCBpcyBzZXQsIHRo ZSBTVU0gYml0IHdpbGwgYmUgc2F2ZWQgCj5pbiBwdF9yZWdzIGFuZCByZXN0b3JlZCB3aGVuIHdl IGNvbWUgYmFjayBzbyB3ZSBkb24ndCBsb3NlIGl0IHdoZW4gYSkgCj5vY2N1cnMuCgp5ZXMuIE15 IGJhZCBvbiB0aGF0LCBTb3JyeSBhYm91dCB0aGF0LgoKYSkgaXMgZmluZSB3aXRoIGN1cnJlbnQg YHN0YXR1c2Agc2F2ZS9yZXN0b3JlIG9uIHB0X3JlZ3Mgb24gdHJhcCBmcmFtZS4KCj4KPgo+Pklm IGIpCj4+aGFwcGVucyB0aGVuIGFsc28gdGhlIHNhbWUgc2l0dWF0aW9uLgo+Cj4KPkN1cnJlbnRs eSwgd2UgZG8gbG9zZSBpdCBpbiB0aGF0IGNhc2UgaW5kZWVkLgo+Cj4KPj4KPj5TYXZpbmcgaXQg aW4gYHRocmVhZF9zdHJ1Y3RgIG9ubHkgYWRkcmVzc2VzIGBiYC4gQW5kIG5vdCBgYWAsIGBjYCwg Cj4+YGRgIGFuZAo+PmBlYC4gSU1ITyBgZWAgaXMgZmFyLWZldGNoZWQgc2l0dWF0aW9uIGJ1dCBJ IGJlbGlldmUgYGFgLCBgYmAsIGBjYCAKPj5hbmQgYGRgIGhhcHBlbgo+PmR1cmluZyBub3JtYWwg cnVudGltZSBvZiBrZXJuZWwuCj4+Cj4+U28gaXQgYWxsIGRlcGVuZHMgb24gbmVzdGluZyBsZXZl bCBvZiB0cmFwcyBzdXBwb3J0ZWQgYnkgcmlzY3Yga2VybmVsLgo+Pgo+PklsbHVzdHJhaW5nIGBj ICsgZGAgZXhhbXBsZSwgaWYga2VybmVsIGNhbiB0YWtlIDIgbmVzdGVkIGxldmVsIG9mIAo+PnRy YXBzIHdpdGgKPj5maXJzdCB0cmFwIGNvbnRleHQgaGF2aW5nIGhhZCB0aGUgU1VNIGJpdCBzZXQs IGJ1dCB0aGUgc2Vjb25kIHRyYXAgCj4+aGFkIGl0IGNsZWFyCj4+YW5kIG5vdyBjb21lcyB0aGUg c3dpdGNoIG91dCBvZiB0aGlzIHRocmVhZCwgYXQgdGhpcyBwb2ludCBpZiBpdCAKPj53ZXJlIHNh dmVkIGluCj4+YHRocmVhZF9zdHJ1Y3RgIFNVTSB3b3VsZCBiZSBsb3N0IGZvciB0aGUgZmlyc3Qg dHJhcC4KPj4KPj5MYXRlciB3aGVuIHRoZSB0aHJlYWQgZ2V0cyBzd2l0Y2hlZCBpbiBhZ2Fpbiwg eW91IHdvdWxkIGdvIGluIDJuZCB0cmFwCj4+Y29udGV4dCB3aXRob3V0IFNVTSAoYmVjYXVzZSBg dGhyZWFkX2NvbnRleHRgIGRpZG50IGhhZCBpdCBzYXZlZCksIAo+PndoaWNoIGlzCj4+ZmluZS4g QWx0aG91Z2ggd2hlbiAybmQgdHJhcCBjb250ZXh0IGV2ZW50dWFsbHkgcGVyZm9ybXMgYHNyZXRg LCBpdCB3aWxsCj4+Z28gYmFjayB0byBmaXJzdCB0cmFwIGNvbnRleHQgd2hlcmUgU1VNIHdhcyBl eHBlY3RlZCB0byBiZSBzZXQgYmVjYXVzZSBpdAo+PnRvdWNoaW5nIGEgdXNlciBtZW1vcnkuCj4+ Cj4+QSBnb29kIGV4YW1wbGUgd291bGQgYmUgYSBzeXNjYWxsLCBzbyB0aGF0J3MgdGhlIGZpcnN0 IHRyYXAuIFNVTSBiaXQgCj4+aXMgc2V0LAo+PnRvdWNoZWQgdXNlciBtZW1vcnkgYW5kIHRvb2sg YSB0cmFwIChwYWdlIGZhdWx0KS4gTm93IGNvZGUgaXMgaW4gCj4+c2Vjb25kIHRyYXAKPj53aGlj aCBzaG91bGQgY2xlYXIgdGhlIFNVTSBiaXQuIFNvbWV3aGVyZSBpbiBtZW1vcnkgbWFuYWdlciBz dGFjaywgCj4+dGhyZWFkIGlzCj4+c2NoZWR1bGVkIG91dCBhbmQgbm93IGBzc3RhdHVzYCBpcyBz YXZlZCBpbiBgdGhyZWFkX3N0cnVjdGAuIFRoaXMgaXMgb25seQo+PnNlcnZpbmcgY3VycmVudCB0 cmFwIGNvbnRleHQgbmVlZHMgYW5kIG5vdCB0aGUgb25lIHdoZXJlIGBTVU1gIAo+Pm5lZWRlZCB0 byBiZQo+PnNldC4KPgo+Cj5IbW0gdG8gbWUgd2UgZG9uJ3QgbG9zZSB0aGUgU1VNIGJpdCBpbiBj YXNlIG9mIGEgdHJhcCwgb25seSB3aGVuIGVhZ2VyIAo+c2NoZWR1bGUgaGFwcGVuczoKPgo+dGhy ZWFkIEEKPnwKPnwtPiBzeXNjYWxsCj7CoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqAgU1VNIGJpdCBp cyBzZXQKPsKgwqDCoMKgwqAgfAo+wqDCoMKgwqDCoMKgIC0+IHBhZ2UgZmF1bHQgKHRyYXApCj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzc3RhdHVz IHdpdGggU1VNIGJpdCBzZXQgaXMgc2F2ZWQgb24gcHRfcmVncwo+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFNVTSBiaXQgaXMgY2xlYXJlZAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLT4gZWFnZXIgc2NoZWR1bGUKPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0+IHdl IHNhdmUgU1VNIGJpdCBjbGVhcmVkIGluIHRocmVhZF9zdHJ1Y3QKPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c2NoZWR1bGUgdGhyZWFkIEIuLi4uCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPC0gc3dpdGNoX3RvIHRocmVhZCBB IGFnYWluCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB3ZSByZXN0b3JlIFNVTSBiaXQgY2xlYXJlZCBmcm9tIHRocmVh ZF9zdHJ1Y3QKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgPC0gd2UgcmVzdW1lIGV4ZWN1dGlvbiBvZiBwYWdlIGZhdWx0IHRy YXAKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNvIHdlIHJlc3RvcmUgU1VNIGJpdCBzYXZlZCBvbiBwdF9yZWdzIHdoaWNoICpoYXMqIFNV TSAKPmJpdCBzZXQKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPC0gc3JldAo+wqDCoMKgwqDCoMKgwqDCoMKgIHwKPsKgwqDCoMKgwqDCoMKgwqDC oCBTVU0gYml0IGlzIHNldCBhbmQgd2UgY29udGludWUgdGhlIGZpcnN0IHN5c2NhbGwuCj4KPlNv IGJhc2VkIG9uIG15IHdvbmRlcmZ1bCBhc2NpaSBhcnQsIGl0IHdvcmtzIDopIE9yIGRpZCBJIG1p c3Mgc29tZXRoaW5nPwoKQWdhaW4gSSB0aGluayBJIG1pc3NlZC9jb25mdXNlZCBpdCBpbiBteSBo ZWFkIHdoZW4gSSB3YXMgdHJ5aW5nIHRvIGFzY2VydGFpbgp3aGljaCBgc3RhdHVzYCB3aWxsIGJl IHBpY2tlZCBpbiB3aGljaCBzaXR1YXRpb24uCgpUd28gcXVlc3Rpb25zOgoKMSkgSW4gdGhpcyBw YXJ0aWN1bGFyIGNhc2UsIHRoZXJlIHdvbid0IGJlIGFueSB5aWVsZGluZyAoa2VybmVsIGluZHVj ZWQpIGJldHdlZW4KICAgIGBzZXQgU1VNYCBhbmQgYGNsZWFyIFNVTWAsIHJpZ2h0PwoKCjIpIFdp bGwgdGhlcmUgYmUgbmVzdGluZyBvZiBrZXJuZWwgaW5kdWNlZCBldmVudHM/IElmIG5vdCwgdGhl biBJIGJlbGlldmUgY3VycmVudAogICAgcGF0Y2ggaXMgZ29vZCBlbm91Z2guIAoKCklmIEkgaGF2 ZSB0byBzdW1tYXJpemUtLQotIE5lc3Rpbmcgb2YgYFNVTWAgc2F2ZS9yZXN0b3JlIGFjcm9zcyB0 cmFwcyBpcyBhbHJlYWR5IHNlcnZlZCBieSB0cmFwIGVudHJ5L2V4aXQuCi0gS2VybmVsIGluZHVj ZWQgY29udHJvbCBmbG93IGNoYW5nZXMgKHNjaGVkdWxpbmcpIGFyZSBub3QgYWxsb3dlZCBiZXR3 ZWVuIHNldAogICBhbmQgY2xlYXIgb2YgU1VNIChhbmQgbGlrZWx5IGZ1dHVyZSBzdGF0dXMgYml0 cykKLSBJZiBuZXN0aW5nIG9mIGtlcm5lbCBpbmR1Y2VkIGV2ZW50cyBkb250IG5lZWQgdG8gYmUg c3VwcG9ydGVkIGFuZCB0aGVpcgogICBpbnZvY2F0aW9uIGZvbGxvdyB0aGUgMm5kIHJ1bGUsIHRo ZW4gaGF2aW5nIGl0IGluIHRocmVhZF9zdHJ1Y3QgbWFrZXMgc2Vuc2UuCiAgIEkgd291bGQgaWRl YWxseSBjYWxsIGl0IHNvbWV0aGluZyBlbHNlIHRvIGluZGljYXRlIGludGVudGlvbmFsaXR5LgoK CkxldCBtZSBrbm93IGlmIEkgZ290IGl0IHJpZ2h0IHRoaXMgdGltZT8KCgo+Cj4KPj4KPj5XZSBj YW4gc3VwcG9ydCBzdWNoIG5lc3Rpbmcgb25seSBieSBlbnN1cmluZyBiZWxvdwo+Pgo+Pk9uIHRy YXAgZW50cnkgZG8gLSBzYXZlIGBzdGF0dXNgIGluIGBwdF9yZWdzYCBvciBzb21lIG90aGVyIEZJ TE8gCj4+ZGF0YSBzdHJ1Y3R1cmUKPj4tIGNsZWFyIFNVTSAoYW5kIG90aGVyIGJpdHMgbmVlZGVk IHRvIGJlIGNsZWFyZWQpCj4+Cj4+T24gdHJhcCByZXR1cm4gZG8KPj4tIHJlbG9hZCBgc3RhdHVz YCBmcm9tIGBwdF9yZWdzYCBvciBzb21lIEZJTE8gZGF0YSBzdHJ1Y3R1cmUKPj4KPj5RdWl0ZSBh bmFsb2dvdXMgdG8gd2hhdCB3ZSBkbyBmb3IgU1JfSUUgYXMgd2VsbC4KPj4KPj4+Cj4+PlRoYXQn cyB3aHkgSSBkb24ndCByZWFsbHkgbGlrZSBEZWVwYWsncyBwcm9wb3NhbCBiZWxvdyBhcyBpdCBt aXhlcyAKPj4+Ym90aCBhbmQgSSBmaW5kIGl0IHRyaWNreS4KPj4+Cj4+PkkgY2FuJ3QgZmluZCBh IHNpdHVhdGlvbiB3aGVyZSBzYXZpbmcvcmVzdG9yaW5nIHRoZSBlbnRpcmUgc3N0YXR1cyAKPj4+ YXQgY29udGV4dC1zd2l0Y2ggaXMgYSBwcm9ibGVtIHRob3VnaCwgZG9lcyBhbnlvbmUgaGF2ZSBz dWNoIHRoaW5nIAo+Pj5pbiBtaW5kPwo+Pj4KPj4+RmluYWxseSBJIHVuZGVyc3RhbmQgdGhhdCBo YXZpbmcgYW5vdGhlciBjb3B5IG9mIHNzdGF0dXMgaW4gCj4+PnRocmVhZF9zdHJ1Y3QgaXMgbm90 IGludHVpdGl2ZSBhbmQgd2Ugc2hvdWxkLCBlaXRoZXIgZXhwbGFpbiB3aHkgCj4+Pm9yIG9ubHkg c3RvcmUgdGhlIFNVTSBiaXQgKGxpa2UgZm9yIHNzdGF0dXMuVlMpLgo+Pj4KPj4+UGxlYXNlIGNv bnRpbnVlIHRoZSBkaXNjdXNzaW9uIGFzIHdlIG5lZWQgdG8gZmluZCBhIHNvbHV0aW9uIHRoYXQg Cj4+PnBsZWFzZXMgZXZlcnlvbmUgc29vbiA6KQo+Pj4KPj4+VGhhbmtzIGFsbCBmb3IganVtcGlu ZyBpbiwKPj4+Cj4+PkFsZXgKPj4+Cj4+Pgo+Pj4+Cj4+Pj4KPj4+PklNSE8sIHRoZSBwcm9ibGVt IHdlIGFyZSB0cnlpbmcgdG8gc29sdmUgaW4gdGhpcyBwYXRjaCBpcyBlYXNpbHkgCj4+Pj5zb2x2 YWJsZSBpbgo+Pj4+YmVsb3cgbWFubmVyLgo+Pj4+Cj4+Pj4KPj4+PmRpZmYgLS1naXQgYS9hcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIAo+Pj4+Yi9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL3N3aXRjaF90by5oCj4+Pj5pbmRleCAwZTcxZWI4MmY5MjAuLjQ5OWQwMGE2ZmI2NyAxMDA2 NDQKPj4+Pi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKPj4+PisrKyBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKPj4+PkBAIC01OCw2ICs1OCwyMCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZnB1KHN0cnVjdCAKPj4+PnRhc2tfc3Ry dWN0ICpwcmV2LAo+Pj4+wqDCoMKgwqDCoMKgwqAgZnN0YXRlX3Jlc3RvcmUobmV4dCwgdGFza19w dF9yZWdzKG5leHQpKTsKPj4+PsKgfQo+Pj4+Cj4+Pj4rc3RhdGljIGlubGluZSB2b2lkIF9fc3dp dGNoX3RvX3N0YXR1cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsCj4+Pj4rwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkKPj4+Pit7Cj4+Pj4rwqDCoMKgwqDCoMKgIHN0cnVjdCBw dF9yZWdzICpyZWdzOwo+Pj4+Kwo+Pj4+K8KgwqDCoMKgwqDCoCAvKiBzYXZlIHN0YXR1cyAqLwo+ Pj4+K8KgwqDCoMKgwqDCoCByZWdzID0gdGFza19wdF9yZWdzKHByZXYpOwo+Pj4+K8KgwqDCoMKg wqDCoCByZWdzLT5zdGF0dXMgPSBjc3JfcmVhZChDU1JfU1RBVFVTKTsKPj4+PisKPj4+PivCoMKg wqDCoMKgwqAgLyogcmVzdG9yZSBzdGF0dXMgKi8KPj4+PivCoMKgwqDCoMKgwqAgcmVncyA9IHRh c2tfcHRfcmVncyhuZXh0KTsKPj4+PivCoMKgwqDCoMKgwqAgY3NyX3dyaXRlKENTUl9TVEFUVVMs IHJlZ3MtPnN0YXR1cyk7Cj4+Pj4rfQo+Pj4+Kwo+Pj4+wqBzdGF0aWMgX19hbHdheXNfaW5saW5l IGJvb2wgaGFzX2ZwdSh2b2lkKQo+Pj4+wqB7Cj4+Pj7CoMKgwqDCoMKgwqDCoCByZXR1cm4gcmlz Y3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNBX0VYVF9mKSB8fAo+Pj4+QEAgLTExNSw2 ICsxMjksNyBAQCBkbyAKPj4+PnvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4+Pj7CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg Kl9fcHJldiA9IChwcmV2KTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4+PsKgwqDCoMKgwqDC oMKgIHN0cnVjdCB0YXNrX3N0cnVjdCAqX19uZXh0ID0gKG5leHQpO8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXAo+Pj4+wqDCoMKgwqDCoMKgwqAgX19zZXRfcHJldl9jcHUoX19wcmV2LT50aHJlYWQp O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4+PivCoMKgwqDCoMKgwqAgX19z d2l0Y2hfdG9fc3RhdHVzKF9fcHJldiwgX19uZXh0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKPj4+PsKgwqDCoMKgwqDCoMKgIGlmIChoYXNfZnB1KCkpwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4+PsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX3N3aXRjaF90b19mcHUoX19wcmV2LCBfX25leHQp O8KgwqDCoMKgwqDCoMKgIFwKPj4+PsKgwqDCoMKgwqDCoMKgIGlmIChoYXNfdmVjdG9yKCkgfHwg aGFzX3h0aGVhZHZlY3RvcigpKcKgwqDCoMKgwqDCoMKgwqAgXAo+Pj4+ZGlmZiAtLWdpdCBhL2Fy Y2gvcmlzY3Yva2VybmVsL2VudHJ5LlMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9lbnRyeS5TCj4+Pj5p bmRleCA4ZDI1ODM3YTkzODQuLmEzYjk4YzFiZTA1NSAxMDA2NDQKPj4+Pi0tLSBhL2FyY2gvcmlz Y3Yva2VybmVsL2VudHJ5LlMKPj4+PisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2VudHJ5LlMKPj4+ PkBAIC0xNjIsMTcgKzE2Miw4IEBAIFNZTV9DT0RFX1NUQVJUKGhhbmRsZV9leGNlcHRpb24pCj4+ Pj7CoMKgwqDCoMKgwqDCoCBSRUdfUyB4NSzCoCBQVF9UMChzcCkKPj4+PsKgwqDCoMKgwqDCoMKg IHNhdmVfZnJvbV94Nl90b194MzEKPj4+Pgo+Pj4+LcKgwqDCoMKgwqDCoCAvKgo+Pj4+LcKgwqDC oMKgwqDCoMKgICogRGlzYWJsZSB1c2VyLW1vZGUgbWVtb3J5IGFjY2VzcyBhcyBpdCBzaG91bGQg b25seSBiZSAKPj4+PnNldCBpbiB0aGUKPj4+Pi3CoMKgwqDCoMKgwqDCoCAqIGFjdHVhbCB1c2Vy IGNvcHkgcm91dGluZXMuCj4+Pj4twqDCoMKgwqDCoMKgwqAgKgo+Pj4+LcKgwqDCoMKgwqDCoMKg ICogRGlzYWJsZSB0aGUgRlBVL1ZlY3RvciB0byBkZXRlY3QgaWxsZWdhbCB1c2FnZSBvZiAKPj4+ PmZsb2F0aW5nIHBvaW50Cj4+Pj4twqDCoMKgwqDCoMKgwqAgKiBvciB2ZWN0b3IgaW4ga2VybmVs IHNwYWNlLgo+Pj4+LcKgwqDCoMKgwqDCoMKgICovCj4+Pj4twqDCoMKgwqDCoMKgIGxpIHQwLCBT Ul9TVU0gfCBTUl9GU19WUyB8IFNSX0VMUAo+Pj4+LQo+Pj4+wqDCoMKgwqDCoMKgwqAgUkVHX0wg czAsIFRBU0tfVElfVVNFUl9TUCh0cCkKPj4+Pi3CoMKgwqDCoMKgwqAgY3NycmMgczEsIENTUl9T VEFUVVMsIHQwCj4+Pj4rwqDCoMKgwqDCoMKgIGNzcnIgczEsIENTUl9TVEFUVVMKPj4+PsKgwqDC oMKgwqDCoMKgIHNhdmVfdXNlcnNzcCBzMiwgczEKPj4+PsKgwqDCoMKgwqDCoMKgIGNzcnIgczIs IENTUl9FUEMKPj4+PsKgwqDCoMKgwqDCoMKgIGNzcnIgczMsIENTUl9UVkFMCj4+Pj5AQCAtMTg1 LDYgKzE3NiwxNiBAQCBTWU1fQ09ERV9TVEFSVChoYW5kbGVfZXhjZXB0aW9uKQo+Pj4+wqDCoMKg wqDCoMKgwqAgUkVHX1MgczQsIFBUX0NBVVNFKHNwKQo+Pj4+wqDCoMKgwqDCoMKgwqAgUkVHX1Mg czUsIFBUX1RQKHNwKQo+Pj4+Cj4+Pj4rwqDCoMKgwqDCoMKgIC8qCj4+Pj4rwqDCoMKgwqDCoMKg wqAgKiBJdCBpcyBmcmVzaCB0cmFwIGVudHJ5LiBEaXNhYmxlIHVzZXItbW9kZSBtZW1vcnkgCj4+ Pj5hY2Nlc3MgYXMgaXQgc2hvdWxkIG9ubHkgYmUgc2V0IGluIHRoZQo+Pj4+K8KgwqDCoMKgwqDC oMKgICogYWN0dWFsIHVzZXIgY29weSByb3V0aW5lcy4KPj4+PivCoMKgwqDCoMKgwqDCoCAqCj4+ Pj4rwqDCoMKgwqDCoMKgwqAgKiBEaXNhYmxlIHRoZSBGUFUvVmVjdG9yIHRvIGRldGVjdCBpbGxl Z2FsIHVzYWdlIG9mIAo+Pj4+ZmxvYXRpbmcgcG9pbnQKPj4+PivCoMKgwqDCoMKgwqDCoCAqIG9y IHZlY3RvciBpbiBrZXJuZWwgc3BhY2UuCj4+Pj4rwqDCoMKgwqDCoMKgwqAgKi8KPj4+PivCoMKg wqDCoMKgwqAgbGkgdDAsIFNSX1NVTSB8IFNSX0ZTX1ZTIHwgU1JfRUxQCj4+Pj4rwqDCoMKgwqDC oMKgIGNzcnJjIHMxLCBDU1JfU1RBVFVTLCB0MAo+Pj4+Kwo+Pj4+wqDCoMKgwqDCoMKgwqAgLyoK Pj4+PsKgwqDCoMKgwqDCoMKgwqAgKiBTZXQgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgdG8gMCwgc28g dGhhdCBpZiBhIHJlY3Vyc2l2ZSAKPj4+PmV4Y2VwdGlvbgo+Pj4+wqDCoMKgwqDCoMKgwqDCoCAq IG9jY3VycywgdGhlIGV4Y2VwdGlvbiB2ZWN0b3Iga25vd3MgaXQgY2FtZSBmcm9tIHRoZSBrZXJu ZWwKPj4+Pgo+Pj4+Cj4+Pj4KPj4+PkR1cmluZyB0aGUgdGltZSBzcGVudCBpbiBrZXJuZWwgaWYg c2V0cyBTVU0gYml0IGluIHN0YXR1cyB0aGVuLCBhYm92ZQo+Pj4+YF9fc3dpdGNoX3RvX3N0YXR1 c2Agd2lsbCBlbnN1cmUgdGhhdCBgc3RhdHVzYCB3aWxsIGdldCBzYXZlZCAKPj4+PmZvciBjdXJy ZW50Cj4+Pj50aHJlYWQgYW5kIHJlc3RvcmVkIGZvciBuZXh0IHRocmVhZC4KPj4+Pgo+Pj4+RnVy dGhlcm1vcmUsIGN1cnJlbnQgdHJhcCBlbnRyeSBjb2RlIGNsZWFycyBGUy9WUy9TVU0gKGZvciBy aWdodCAKPj4+PnJlYXNvbnMpLiBJdAo+Pj4+cmVwcmVzZW50cyBub24tbGluZWFyIGNoYW5nZSBv ZiBjb250cm9sIGZsb3cgYW5kIHRodXMgd2hhdGV2ZXIgCj4+Pj53aWxsIGV4ZWN1dGUgbmV4dAo+ Pj4+c2hvdWxkbid0IG5lZWQgU1VNL0ZTL1ZTIHVubGVzcyBpdCB3YW50cyB0byBzZXQgaXQpLiBU aGlzIHBhdGNoIAo+Pj4+c2xpZ2h0bHkKPj4+Pm1vZGlmaWVzIHRoZSBmbG93IGJ5IGZpcnN0IHNh dmluZyB0aGUgYHN0YXR1c2Agb24gdHJhcCBmcmFtZSAKPj4+Pih0aHVzIGlmIHByZXZpb3VzCj4+ Pj50cmFwIGZyYW1lIGhhZCBTVU09MSwgaXQgd2lsbCBiZSBzYXZlZCBhbmQgcmVzdG9yZWQpLiBB bmQgdGhlbiBpdAo+Pj4+dW5jb25kaXRpb25hbGx5IGNsZWFycyB0aGUgU1VNL0ZTL1ZTIHRvIGVu c3VyZSB0aGF0IHRoaXMgbmV3IAo+Pj4+dHJhcCBjb250ZXh0IHJ1bnMKPj4+PndpdGhvdXQgbmVl ZGluZyBTVU09MS4gVGhpcyBlbnN1cmVzIG5lc3Rpbmcgb2YgdHJhcCBmcmFtZXMgCj4+Pj53aXRo b3V0IGRpbHV0aW5nCj4+Pj5zZWN1cml0eSBwcm9wZXJ0aWVzIG9mIFNVTS4KPj4+Pgo+Pj4+Pgo+ Pj4+PlRoYW5rcywKPj4+Pj5BbmR5Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+Pgo+Pj4+ Pj5TbyBteSBmaXJzdCBxdWVzdGlvbiB3YXMgd2h5IG5vdCB0byB1c2UgYHN0YXR1c2AgaW4gCj4+ Pj4+PmBwdF9yZWdzYC4gSXQgaXMgZ3JhbnVsYXIKPj4+Pj4+YXMgaXQgY2FuIGdldCAoaXQgaXMg YXZhaWxhYmxlIHBlciB0aHJlYWQgY29udGV4dCBwZXIgdHJhcCBiYXNpcykuCj4+Pj4+Pgo+Pj4+ Pj4KPj4+Pj4+SSBkaWQgYXNrIEFsZXggYXMgd2VsbC4gSSdsbCBwaW5nIGhpbSBhZ2Fpbi4KPj4+ Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PkRvZXMgYW55b25lIGVsc2UgaGF2ZSBhbnkgY29tbWVudCBvbiB0 aGlzPwo+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj7CoMKgwqAgdTMyIHJpc2N2X3ZfZmxhZ3M7 Cj4+Pj4+Pj4+Pj7CoMKgwqAgdTMyIHZzdGF0ZV9jdHJsOwo+Pj4+Pj4+Pj4+wqDCoMKgIHN0cnVj dCBfX3Jpc2N2X3ZfZXh0X3N0YXRlIHZzdGF0ZTsKPj4+Pj4+Pj4+PmRpZmYgLS1naXQgYS9hcmNo L3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jCj4+Pj4+Pj4+Pj5iL2FyY2gvcmlzY3Yva2VybmVs L2FzbS0gb2Zmc2V0cy5jCj4+Pj4+Pj4+Pj5pbmRleCAxNjQ5MDc1NTMwNGUuLjk2OWM2NWIxZmU0 MSAxMDA2NDQKPj4+Pj4+Pj4+Pi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMK Pj4+Pj4+Pj4+PisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMKPj4+Pj4+Pj4+ PkBAIC0zNCw2ICszNCw3IEBAIHZvaWQgYXNtX29mZnNldHModm9pZCkKPj4+Pj4+Pj4+PsKgwqDC oCBPRkZTRVQoVEFTS19USFJFQURfUzksIHRhc2tfc3RydWN0LCB0aHJlYWQuc1s5XSk7Cj4+Pj4+ Pj4+Pj7CoMKgwqAgT0ZGU0VUKFRBU0tfVEhSRUFEX1MxMCwgdGFza19zdHJ1Y3QsIHRocmVhZC5z WzEwXSk7Cj4+Pj4+Pj4+Pj7CoMKgwqAgT0ZGU0VUKFRBU0tfVEhSRUFEX1MxMSwgdGFza19zdHJ1 Y3QsIHRocmVhZC5zWzExXSk7Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+X19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+Pj5saW51eC1yaXNjdiBtYWlsaW5nIGxp c3QKPj4+Pj4+Pj5saW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCj4+Pj4+Pj4+aHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo+Pj4+Pj4+ Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pi0tIAo+Pj4+Pj4+QmVuIERvb2tzIGh0dHA6Ly93d3cu Y29kZXRoaW5rLmNvLnVrLwo+Pj4+Pj4+U2VuaW9yIEVuZ2luZWVywqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ29kZXRoaW5rIC0K Pj4+Pj4+UHJvdmlkaW5nIEdlbml1cwo+Pj4+Pj4+Cj4+Pj4+Pj5odHRwczovL3d3dy5jb2RldGhp bmsuY28udWsvcHJpdmFjeS5odG1sCj4+Pj4+Pgo+Pj4+Pj5fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj5saW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK Pj4+Pj4+bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwo+Pj4+Pj5odHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cj4+Pj4KPj4+Pl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj5saW51eC1yaXNj diBtYWlsaW5nIGxpc3QKPj4+PmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+Pmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YKPj4K Pj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PmxpbnV4 LXJpc2N2IG1haWxpbmcgbGlzdAo+PmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKPj5o dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==